关系数据库标准语言-SQL课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《关系数据库标准语言-SQL课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 关系 数据库 标准 语言 SQL 课件
- 资源描述:
-
1、周口师范学院计算机科学系02级教育专业2022年12月20日20时47分周口师范学院计算机科学系1第3章 关系数据库标准语言SQL周口师范学院计算机科学系02级教育专业2022年12月20日20时47分周口师范学院计算机科学系2在数据库系统中,数据查询是最常用的操作。SQL是目前使用最广泛的数据库语言。利用SQL可以通过功能强大而又简捷的查询语言与数据库打交道,从数据库中得到想要的数据。SQL语句主要被用于进行数据库的查询、定义、操纵和控制几个方面,是一种功能齐全的数据库语言。SQL的数据定义是指对关系模式一级的定义。数据操纵是指对关系中的具体数据进行增、删、改等更新操作。数据控制是指对数据访
2、问权限的授予与取消。周口师范学院计算机科学系02级教育专业2022年12月20日20时47分周口师范学院计算机科学系33.1 SQL语言基本知识3.1.1 SQL的发展史1 9 7 4 年 I B M 圣 约 瑟 实 验 室 的 B o y c e 和Chamberlin为关系数据库管理系统System-R设计的一种查询语言,当时称为SEQUEL语言(Structured English Query Language),后简称为SQL。1981年IBM推出关系数据库系统SQL/DS后,SQL得到了广泛应用。1986年美国国家标准协会(ANSI)公布了第一个SQL标准SQL86。1987年,IS
3、O通过SQL86标准。周口师范学院计算机科学系02级教育专业2022年12月20日20时47分周口师范学院计算机科学系41989年,ISO制定SQL89标准,SQL89标准在SQL86基础上增补了完整性描述。1990年,我国制定等同SQL89的国家标准。1992年,ISO制定SQL92标准,即SQL2。1999年,ANSI制定SQL3标准。SQL成为国际标准后,对数据库以外的领域产生了很大的影响,有不少软件产品将SQL语言的数据查询功能与图形功能、软件工程工具、软件开发工具、人工智能程序结合起来。SQL已成为数据库领域中一个主流语言。周口师范学院计算机科学系02级教育专业2022年12月20日
4、20时47分周口师范学院计算机科学系5在许多软件产品中,软件厂商都对SQL的基本命令集进行了扩充,将其扩展成嵌入式SQL语言。SQL Server 2000中使用Transact-SQL语言与数据库服务器打交道。周口师范学院计算机科学系02级教育专业2022年12月20日20时47分周口师范学院计算机科学系63.1.2 SQL的特点SQL具有如下特点:1综合统一。2高度非过程化。3面向集合的操作方式。4以同一种语法结构提供两种使用方式5.语言简捷、易学易用。SQL语言功能极强,但由于设计巧妙,语言十分简捷,完成核心功能只用了9个动词,如下表示,SQL语言接近英语口语,因此容易学习,容易使用。周
5、口师范学院计算机科学系02级教育专业2022年12月20日20时47分周口师范学院计算机科学系7SQL的功能动词数据查询SELECT数据定义CREATE,DROP,ALTER数据操纵INSERT,UPDATE,DELETE数据控制GRANT,REVOKESQL语言的动词语言的动词周口师范学院计算机科学系02级教育专业2022年12月20日20时47分周口师范学院计算机科学系8SQL语言支持关系数据库三级模式结构,如下图示。其中外模式对应于视图和部分基本表,模式对应于基本表,内模式对应于存储文件。基本表是本身独立存在的表,在SQL中一个关系就对应一个表。一个(或多个)基本表对应一个存储文件。一个
6、表可以带若干个索引,索引也存放在存储文件中。存储文件的逻辑结构组成了关系数据库的内模式,存储文件的物理结构是任意的,对用户是透明的。视图是从一个或几个基本表导出的表。它本身不独立存储在数据库中,是一个虚表。即数据库中只存放视图的定义而不存放视图对应的数据。周口师范学院计算机科学系02级教育专业2022年12月20日20时47分周口师范学院计算机科学系9SQL 视 图 1 视 图 2 基 本 表 1 基 本 表 2 基 本 表 4 存 储 文 件 1 存 储 文 件 2 基 本 表 3 外模式外模式内模式内模式模式模式周口师范学院计算机科学系02级教育专业2022年12月20日20时47分周口师
7、范学院计算机科学系103.1.3 SQL的分类1、数据定义语言(DDL:Data Definition Language)创建、修改或删除数据库中各种对象,包括表、视图、索引等。2、查询语言(QL:Query Language)按照指定的组合、条件表达式或排序检索已存在的数据库中的数据,但并不改变数据库中数据。3、数据操纵语言(DML:Data Manipulation Language)对已经存在的数据库进行记录的插入、删除、修改等操作周口师范学院计算机科学系02级教育专业2022年12月20日20时47分周口师范学院计算机科学系114、数据控制语言(DCL:Data Control Lan
8、guage)用来授予或收回访问数据库的某种特权、控制数据操纵事务的发生时间及效果、对数据库进行监视注意:在书写各种SQL 命令时,命令中所涉及的标点符号,如括号、逗号、分号、圆点(英文句号)等都应是英文半角,如果写成中文全角符号,则会在执行命令时出错。周口师范学院计算机科学系02级教育专业2022年12月20日20时47分周口师范学院计算机科学系123.2 数据定义数据定义命令用于建立数据库和建立、修改、删除基本表。表CREATE TABLEDROP TABLEALTER TABLE视图CREATE VIEWDROP VIEW索引CREATE INDEXDROP INDEX操作对象操作方式 创
9、建 删除 修改SQL的数据定义语句的数据定义语句周口师范学院计算机科学系02级教育专业2022年12月20日20时47分周口师范学院计算机科学系133.2.1 定义、删除与修改基本表一、定义基本表 建立数据库最重要的一步就是定义一些基本表。SQL语言使用CREATE TABLE 语句定义基本表,其一般格式如下:CREATE TABLE (列级完整性约束条件 列级完整性约束条件表级完整性约束条件);其中是所要定义的基本表的名字,它可以由一个或多个属性(列)组成。周口师范学院计算机科学系02级教育专业2022年12月20日20时47分周口师范学院计算机科学系14建表的同时通常还可以定义与该表有关的
10、完整性约束条件。这些完整性约束条件被存入系统的数据字典中,当用户操作表中数据时由DBMS自动检查该操作是否违背这些完整性约束条件。如果完整性约束条件涉及到该表的多个属性列,则必须定义在表级上,否则既可以定义在列级上也可以定义在表级上周口师范学院计算机科学系02级教育专业2022年12月20日20时47分周口师范学院计算机科学系15例1 建立一个“学生”表Student,它由学号Sno,姓名Sname,性别Ssex,年龄Sdept、所在系Sdept五个属性组成。其中学号不能为空,值是唯一的,并且姓名取值也唯一。CREATE TABLE Student (Sno CHAR(5)NOT NULL U
11、NIQUE,Sname CHAR(20)UNIQUE,Ssex CHAR(1),Sage INT,Sdept CHAR(15);其中:NOT NULL指的是该列的值不能为空值,UNIQUE指的是该列的值唯一。周口师范学院计算机科学系02级教育专业2022年12月20日20时47分周口师范学院计算机科学系16SnoSnameSsexSageSdeptStudent周口师范学院计算机科学系02级教育专业2022年12月20日20时47分周口师范学院计算机科学系17例2:建立如下表所示学生基本情况表的命令是:create table jbqk(number char(8)not null,name
12、char(8)not null,sex char(2)not null,Birthday datetime,department char(12);numbernamesexBirthday departmentjbqk周口师范学院计算机科学系02级教育专业2022年12月20日20时47分周口师范学院计算机科学系18数据类型说明符备注整数INT字长32位短整数SMALLINT字长16位十进制数DEC(m,n)m为总十进制位数,n为小数位数浮点数FLOAT一般指双精度浮点数 64位定长字符串 CHAR(n)变长字符串 VARCHAR(n)位串BIT(n)二进制位串,长度为n.变长位串BIT A
13、RYINT(n)日期DATE日期加时间 DATESTAMP周口师范学院计算机科学系02级教育专业2022年12月20日20时47分周口师范学院计算机科学系19建立课程表的命令是:create table course(c_number char(4)not null,c_name char(20)not null,period decimal(3,0),t_number char(4)not null);建立教师表(teacher)的命令是::create table teacher(t_number char(4)not null,t_name char(8),title char(10);
14、建立选课表(sle_course)的命令是::Create table sle_course(s_number char(8)not null,c_number char(4),score decimal(3,0);周口师范学院计算机科学系02级教育专业2022年12月20日20时47分周口师范学院计算机科学系20二、修改基本表随着应用环境和应用需求的变化,有时需要修改已建立好的基本表,SQL语言使用ALTER TABLE 语句定义基本表,其一般格式如下:ALTERTABLE ADD 列级完整 性约束条件 DROP MODIFY ;周口师范学院计算机科学系02级教育专业2022年12月20日2
15、0时47分周口师范学院计算机科学系21例1:向Student表中增加“入学时间”列,其数据类型为日期型。ALTER TABLE Student ADD Scome DATE;不论基本表中原来是否已有数据,新增加的列一律为空值。例2:将Student表中年龄的数据类型改为短整型 ALTER TABLE Student MODIFY Sage SMALLINT;周口师范学院计算机科学系02级教育专业2022年12月20日20时47分周口师范学院计算机科学系22例3 将Student表中学生姓名必须取唯一值的约束删除 ALTER TABLE Student DROP UNIQUE(Sname);SQ
16、L没有提供删除属性列的语句,用户只能间接实现这一功能,即先把表中要保留的列及其内容复制到一个新表中,然后删除原表,再将新表重命名为原表名。周口师范学院计算机科学系02级教育专业2022年12月20日20时47分周口师范学院计算机科学系23三、数据表的删除 DROP TABLE;例4:删除Student表,使用如下命令格式:DROP TABLE Student;注意注意:基本表定义一旦删除,表中的数据、此表上建立的索引和视图都将自动被删除掉。因此执行删除基本表的操作一定要格外小心。周口师范学院计算机科学系02级教育专业2022年12月20日20时47分周口师范学院计算机科学系243.2.2 索引
17、的建立与删除索引是对数据库表中一个或多个列的值进行排序的结构。可以利用索引快速访问数据库表中的特定信息。一、建立索引语句CREATE UNIQUECLUSTER INDEX ON(列名次序,列名次序);说明说明:索引可以建立在一列和多列之上,索引顺序可以是ASC(升序)或DESC(降序),缺省值是ASC(升序)。UNIQUE表示每一个索引值对应唯一的数据记录。周口师范学院计算机科学系02级教育专业2022年12月20日20时47分周口师范学院计算机科学系25UNIQUE表明此索引的每一个索引值只对应唯一的数据记录。CLUSTER表示要建立的索引是聚簇索引。所谓聚簇索引是指索引项的顺序与表中记录
18、的物理顺序一致的索引组织。例如,执行下面的索引语句:CREATE CLUSTER INDEX Stusname ON Student(Sname);将会在Student表的Sname列上建立一个聚簇索引,而且Student表中的记录将按照Sname值的升序存放。周口师范学院计算机科学系02级教育专业2022年12月20日20时47分周口师范学院计算机科学系26用户可以在最常查询的列上建立聚簇索引以提高查询效率。显然在一个基本表上最多只能建立一个聚簇索引。建立聚簇索引后,更新索引列数据时,往往导致表中记录的物理顺序的变更,代价较大,因此对于经常更新的列不宜建立聚簇索引。周口师范学院计算机科学系0
19、2级教育专业2022年12月20日20时47分周口师范学院计算机科学系27例1:为学生数据库中的Student,Course,SC三个表建立索引,其中,Student表按学号升序建唯一索引,Course表按课程号升序建唯一索引,SC表按学号升序和课程号降序建唯一索引。CREATE UNIQUE INDEX Stusno ON Student(Sno);CREATE UNIQUE INDEX Coucno ON Course(Cno);CREATE UNIQUE INDEX SCno ON SC(Sno ASC,Cno DESC);周口师范学院计算机科学系02级教育专业2022年12月20日20
20、时47分周口师范学院计算机科学系28学号Sno姓名Sname性别Ssex年龄Sage系别Sdept95001李勇男20CS95002刘晨女19IS95003王敏女18MA95004张立男19ISStudent(a)设有一个学生设有一个学生-课程数据库,包括学生关系课程数据库,包括学生关系Student课程关系课程关系Course和选修关系和选修关系SC。如下图示。如下图示6868周口师范学院计算机科学系02级教育专业2022年12月20日20时47分周口师范学院计算机科学系29课程号Cno课程名Cname先行课Cpno学分Ccredit1数据库542数学23信息系统144操作系统635数据结构
21、746数据处理27PASCAL语言64Course(b)周口师范学院计算机科学系02级教育专业2022年12月20日20时47分周口师范学院计算机科学系30学号Sno课程号Cno成绩Grade9500119295001285950013889500229095002380(c)SC周口师范学院计算机科学系02级教育专业2022年12月20日20时47分周口师范学院计算机科学系31二、删除索引索引一经建立,就由系统使用和维护它,不需用户干预。建立索引是为了减少查询操作时间,但如果数据增、删、改频繁,系统会花费许多时间来维护索引,这时,可以删除一些不必要的索引DROP INDEX;注意:该命令不能
22、删除由CREATE TABLE或者ALTER TABLE命令创建的主键和唯一性约束索引,也不能删除系统表中的索引。例2、删除例1中建立的索引Stusno DROP INDEX Stusno;周口师范学院计算机科学系02级教育专业2022年12月20日20时47分周口师范学院计算机科学系323.3 数据查询语言数据库查询是数据库的核心操作。SQL语言提供了SELECT语句进行数据库的查询,该语句具有灵活的使用方式和丰富的功能。周口师范学院计算机科学系02级教育专业2022年12月20日20时47分周口师范学院计算机科学系33SQL语言的查询语句一般格式是:SELECT ALL|DISTINCT
23、,FROM,WHERE GROUP BY HAVING ORDER BY ASC|DESC;下面对该命令进行一些说明:周口师范学院计算机科学系02级教育专业2022年12月20日20时47分周口师范学院计算机科学系341命令含义 从FROM子句指定的基本表或视图中,根据WHERE子句的条件表达式查找出满足该条件的元组(记录),再按照SELECT子句指定的目标列表达式,选出元组中的属性值形成结果表。如果有GROUP BY子句,则将结果按“列名1”的值进行分组,该属性列值相等的元组为一个组;如果GROUP BY子句带有短语HAVING,则只有满足短语指定条件的分组才会输出。如果有ORDER BY子
24、句,则结果表要按照的值进行升序和降序排列。周口师范学院计算机科学系02级教育专业2022年12月20日20时47分周口师范学院计算机科学系35SELECT ALL|DISTINCT实现的是对表的投影操作,WHERE 中实现的是选择操作。FROM,实现的是对指定表的广义笛卡尔积 周口师范学院计算机科学系02级教育专业2022年12月20日20时47分周口师范学院计算机科学系362目标列表达式列表达式可以是“列名1,列名2”的形式;如果FROM子句指定了多个表,则列名应是“表名.列名”的形式。列表达式可以使用SQL提供的库函数形成表达式,常用的函数如下:COUNT(*):统计记录条数。COUNT(
25、列名):统计一列值得个数。SUM(列名):计算某一数值型列的值的总和。AVG(列名):计算某一数值型列的值的平均值MAX(列名):计算某一数值型列的值的最大值DISTINCT参数:表示在结果集中,查询出的内容相同的记录只留下一条。MIN(列名):计算某一数值型列的值的最小值周口师范学院计算机科学系02级教育专业2022年12月20日20时47分周口师范学院计算机科学系373.3.1 单表查询单表查询是指仅涉及一个表的查询。一、选择表中的若干列选择表中的全部列和部分列,就是投影运算。1、查询指定列 在很多情况下,用户只对表中的一部分属性列感兴趣,这时可以通过在SELECT子句的中指定要查询的属性
展开阅读全文