关系数据语言SQL.ppt
《关系数据语言SQL.ppt》由会员分享,可在线阅读,更多相关《关系数据语言SQL.ppt(129页珍藏版)》请在三一办公上搜索。
1、数据库系统基础教程(第2版),叶小平 汤 庸 汤 娜 潘 明 编著,普通高等教育“十一五”国家级规划教材,清华大学出版社,2,关系数据库作为当前数据库的主流有着很多商业化的产品,例如Oracle、Sybase、Informix、Cobase和SQL Server等。不同产品有着各自不同的界面和操作方式,但它们的核心部分都是相同的,就都采用标准化的结构化数据查询语言SQL。,第3章 关系数据库语义SQL,3.1 SQL概述,3.1.1 SQL产生与标准,3,SQL原型来自于1972年IBM为实验型关系数据库管理系统System R配置的查询语言称为SQUARE(Specifying Querie
2、s as Relation Expression),其中使用了较多的数学符号。经过多年改进与演变,1999年ISO发布了标准化文件ISO/IEC9075:数据库语言SQL-99,延续SQL的叫法,人们称之为SQL3。,3.1.1 SQL产生与标准,4,作为数据库语言国际标准,SQL经历四个发展阶段。1987年,国际标准化组织(International Organization for Standardization,ISO)通过ANSI的SQL-86标准,并于1989年公布了SQL-89标准。1992年,ISO公布了SQL-92标准,习惯上称之为SQL2。SQL2集关系数据库查询语言之大成,
3、标志着SQL已经成为功能比较齐全、内容相当完善的关系数据库语言。,3.1.1 SQL产生与标准,5,1999年:ISO发布了标准化文件ISO/IEC9075:数据库语言SQL-99,延续SQL的习惯称呼,人们称之为SQL3。SQL3的重要特点是反映了关系数据模型到对象模型的重要扩充。2003年:ISO发布了SQL:2003,其标志着传统关系模型到非关系模型的第二次重要扩充(对象模型和XML模型)。在通常情况下,SQL标准每三年左右修订一次,3.1.1 SQL产生与标准,6,1.基本功能特征(1)综合统一性 DDL、DML和DCL的统一 操作过程的统一(2)非过程化语言 只要提出“做什么”,不需
4、说明“如何做”,3.1.2 SQL功能与组成,7,(3)面向集合操作方式SQL语句以接收集合作为输入,返回集合作为输出,一次一集合(4)一种语法,两种使用方式 SQL是“自含式”语言也是“嵌入式”语言,3.1.2 SQL功能与组成,8,3.1.2 SQL语言功能,(5)结构简洁,易学易用 SQL语言功能极强,但设计构思却非常巧妙,语言结构简洁明快。在SQL中,完成所有核心功能只使用如图3-1所示的9个动词。,9,3.1.2 SQL语言功能,(6)支持三级模式结构,10,(1)数据定义语言(DDL),3.1.3 SQL基本构成,SQL模式(数据库)的创建、撤销与更改 基本表的创建、撤销与更改。索
5、引的创建与撤销。域、触发器和自定义类型的创建于撤销。,11,(2)数据操纵语言(DML),3.1.3 SQL基本构成,数据查询:单表查询,多表查询,其中包括连接查询和嵌套查询。数据更新:数据插入、删除和修改。查询所需的附加功能:求和函数 SUM、平均函数AVG、元组个数求和 COUNT;最大函数 MAX和最小函数 MIN等。,12,(3)数据控制语言(DCL),3.1.3 SQL基本构成,数据库保护:数据库的安全性和完整性保护。事务管理:数据库故障恢复和并发事务处理。,13,(4)嵌入式与会话规则,3.1.3 SQL基本构成,嵌入式与主语言接口:嵌入式和动态SQL规则规定了SQL语句在高级程序
6、设计语言中使用的规范与标准。调用与会话规则:SQL还提供远程调用功能,在远程方式下客户机中的应用可通过网络调用服务器数据库中的存储过程,14,3.1.4 语句类型与数据类型,模式语句 模式语句功能是创建、更新和撤销模式及其对象。其基本语句为:CREATE SCHEMA、CREATE TABLE、CREATE VIEW;CREATE DOMAIN、CREATE TRIGGER、CREATE TYPE等,1.语句类型,15,3.1.4 语句类型与数据类型,数据语句 数据语句功能是完成数据库的查询和更新操作。其主要语句为:SELECT(查询);INSERT(插入)、UPDATE(修改)和DELETE
7、(删除)。,1.语句类型,16,3.1.4 语句类型与数据类型,事务与控制语句 该语句功能为完成数据库的授权、事务管理和控制SQL语句集合的运行,其主要语句为:GRANT;START TRANSATION,REVOKE,COMMIT,ROLLBACK,SAVEPOINT;LOCK,UNLOCK,CALL等,1.语句类型,17,3.1.4 语句类型与数据类型,链接、会话与诊断语句 该语句功能为建立数据库链接,为SQL会话设置参数、获取诊断等,其主要语句为:SET CONNECTION;SET TIME ZONE;SET SESSIONAUTHORIZATION;GET DLAGNOSTICS等。
8、,1.语句类型,18,3.1.4 语句类型与数据类型,SQL在定义表的各个属性的时候,要求指明其中数据类型和长度。一般而言,在SQL中规定了三种数据类型,即预定义数据类型,构造数据类型和用户自定义数据类型(user defined type,UDT)。但具体来说,除了各种DBMS都支持的一些基本数据类型之外,不同的DBMS支持的数据类型不尽完全相同。下图列举了Microsoft SQL Server 支持的主要数据类型。,2.数据类型,19,3.1.4 语句类型与数据类型,20,3.2.1 SQL模式(数据库)定义,3.2 数据定义,SQL模式由CREATE语句定义,其一般格式如下:CREAT
9、E SCHEMA AUTHORIZATION子句|子句|子句|例如,教学数据库的SQL模式定义如下:CREATE SCHEMA JIAOXUE AUTHORIZATION JOHN,21,3.2.1 SQL模式(数据库)定义,当一个SQL模式不需要时,可以用DROP语句予以撤销。DROP语句的使用格式如下:DROP SCHEMA CASCADE|RESTRICT例如,需要撤销SQL模式“JIAOXUE”以及下属所有元素,可以用下属语句实现:DROP SCHEMA JIAOXUE CASCADE,22,1基本表创建,基本表定义,SQL使用CREATE TABLE 语句创建基本表,一般格式为:CR
10、EATE TABLE模式名(列级完整性约束条件,列级完整性约束条件,)其中 内的内容“”是可选项,是所要定义的基本表名称。,23,2基本表更新,基本表定义,(1)增加属性列增加新的属性列使用“ALTERADD”语句,基本格式为:ALTER TABLE ADD完整性约束条件 例3-2 在基本表S中添加一个新的地址属性ADDRESS:ALTER TABLE S ADD ADDRESS VARCHAR(30);,24,1基本表更新,基本表定义,(2)删除属性列删除已有属性列使用“ALTERDROP”语句,其基本格式为:ALTER TABLE DROP CASCADE|RESTRICT 例3-3 在S
11、中删除属性列Sa:ALTER TABLE S DROP Sa CASCADE;,25,1基本表更新,基本表定义,(3)修改属性列修改已有属性列类型及宽度使用“ALTERMODIFY”语句,其基本格式为:ALTER TABLE MODIFY 例3-4 在S中将S#的长度修改为“6”:ALTER TABLE S MODIFY S#CHAR(6);,26,2基本表更新,基本表定义,(4)补充定义主键在SQL中,并不要求每个表都需定义主键,可以在需要情况下随时定义,这称为主键的补充定义。补充定义主键的语句格式为ALTER TABLEADD PRIMARY KEY(),27,2基本表更新,基本表定义,例
12、3-5 设有全体男生的表Smale,其结构与S表相同,补充定义Smale的主键的SQl语句如下:ALTER TEBLE SmaleADD PRIMARY KEY(S#);,28,2基本表更新,基本表定义,(5)删除主键由于一个表可以不定义主键,所以可以从一个表中删除主键。删除主键的SQL语句格式为:ALTER TABLEDROP PRIMARY KEY()例3-6 删除S表中主键S#的SQL语句如下:ALTER TEBLE SDROP PRIMARY KEY(S#);,29,3撤销基本表,基本表定义,SQL使用“DROP TABLE”语句撤销基本表,一般格式为DROP TABLE CASCAD
13、E|RESTRICT例3-7 撤消基本表S,但要求只有在没有视图或约束引用S的属性列时才能撤销,否则拒绝撤销,则其实现语句为:DROP TABLE S RESTRICT;,30,1创建索引,3.2.3 索引定义,SQL使用CREATE INDEX 语句创建索引,一般格式为:CREATE UNIQUE CLUSTERED INDEX ON(,),31,1创建索引,3.2.3 索引定义,例3-8 在S(S#)上建立一个按升序排列的索引S_XSNO:CREATE UNIQUE INDEX S_XSNO ON S(S#);例3-9 在SC上建立一个按(S#,C#)升序排列名为SC_XSC的索引:CRE
14、ATE INDEX SC_XSC ON SC(S#,C#);,32,3.3.1 SQL映像语句,3.3 数据查询,SQL中查询的基本语句映像(Mapping)语句由SELECT、FROM和WHERE三个子句构成。SELECT子句 表示查询的目标属性,指定做投影 运算。FROM子句 表示查询所涉及的关系,指定多个关系做连接运算。WHERE子句 表示查询的逻辑条件,指定做选择运算。,1.SQL映像语句,33,3.3.1 SQL映像语句,由这3个子句组成的映像语句的一般格式为:SELECTALL|DISTINCT,FROM,WHEREGROUP BY HAVINGORDER BYASC|DESC,3
15、4,3.3.1 SQL映像语句,上述整个映像语句的含义是:首先,根据WHERE子句的条件表达式;其次,从FROM子句指定的基本表或视图中找出满足条件的元组;最后,再按SELECT子句中的目标列表达式,选出元组中的属性值形成结果关系表。,35,3.3.1 SQL映像语句,例3-1 创建关系数据库S(S#,Sn,Sa,Se,Sd);C(C#,Cn,P#);SC(S#,C#,G),其中S表示学生关系,S#表示学号,Sn表示学生姓名,Sa 表示学生年龄,Se表示学生性别,Sd表示学生所在的系别;C表示课程关系,C#表示课程编号,Cn表示课程名称,P#表示课程的先修课程编号;SC表示学生选课关系,G表示
16、课程的考试成绩。,36,3.3.1 SQL映像语句,CREATE TABLE S(S#CHAR(4)NOT NULL UNIQUE,Sn CHAR(20)NOT NULL,Sa SMALLINT,Se CHAR(2),Sd CHAR(20)PRIMARY KEY(S#),CHECK(Sa BETWEEN 15 AND 25);,37,3.3.1 SQL映像语句,CREATE TABLE C(C#CHAR(4)NOT NULL,Cn CHAR(10)NOT NULL,P#CHAR(4)PRIMARY KEY(C#);,38,3.3.1 SQL映像语句,CREATE TABLE SC(S#CHAR
17、(4),NOT NULL,C#(CHAR(4),NOT NULL,G SMALLINT,PRIMARY KEY(S#,C#),FOREIGN KEY(S#)REFERENCES S(S#)ON DELETE CASCADE,FOREIGN KEY(C#)REFERENCES C(C#)ON DELETE RESTRICT);,39,3.3.1 SQL映像语句,由上述语句可以知道:基本表的定义就是并列说明属性列名称和属性列类型,并且可以指明主键和多个外键。在定义外键时,用保留字REFERENCES指出外键来自的表名,即主表。另外引用完整性中的任选项ON DELETE指出当主表中被引用主属性删除时
18、,可采用如下方法保证完整性要求:,40,3.3.1 SQL映像语句,选用RESTRICT选项:表明被基本表所引用的主属性不得删除。选用CASCADE选项:表明若主表中删除被引用的主属性,则基本表中引用该外键的对应行随之被删除。选用SET NULL选项:当然此时该列在前面说明应没有NOT NULL限制。在基本表定义时,可以使用CHECK语句,说明各列中值应当满足的条件,例如基本表S定义中要求“大学生年龄应当在1525周岁之间”。,41,2.WHERE子句表现能力,3.3.1 SQL映像语句,映像语句在数据查询中有着强大的检索功能,这在很大程度上得益于WHERE子句丰富的表现能力。这主要表现在:映
19、像语句在WHERE子句中可以进行嵌套。WHERE子句中的逻辑条件不仅具有命题公式形式,还具有一阶谓词公式形式以及集合表达式形式,42,3.3.1 SQL映像语句,43,1.不具条件的列查询,3.3.2 单表查询,不带条件的列的查询是指查询表的全部列或者指定列,这里一般仅使用SELECT子句和FROM子句。例3-11(查询所有列)查询S所有列的情形:SELECT*FROM S;,44,2.具条件的列查询,3.3.2 单表查询,带条件的列的查询可以看作是先查询指定列,在结果中按照给定的条件对元组进行选择。此类查询需要用到整个映像语句。例3-14 查询计算机科学系(CS)全体学生姓名与年龄:SELE
20、CT Sn,SaFROM SWHERE Sd=CS;,45,2.具条件的列查询,3.3.2 单表查询,例3-15 查询所有成绩不及格的学生学号:SELECT S#FROM SCWHERE G 60;例3-16 查询所有年龄不在20岁以下的学生姓名和年龄:SELECT Sn,SaFROM SWHERE NOT Sa=20,46,2.具条件的列查询,3.3.2 单表查询,例3-17 查询年龄不在18至21岁的学生姓名与年龄:SELECT Sn,SaFROM SWHERE Sa NOT BETWEEN 18 AND 21;例3-18 查询信息系(IS),数学系(MA)和计算机科学系(CS)的学生姓名
21、和年龄:SELECT Sn,SaFROM SWHERE Sd IN(IS,MA,CS);,47,2.具条件的列查询,3.3.2 单表查询,例3-19 查询既不是信息系(IS)、数学系(MA),也不是计算机科学系(CS)的学生姓名和年龄:SELECT Sn,SaFROM SWHERE Sd NOT IN(IS,MA,CS);例3-20 查询课程分数为空的学号和课程号:SELECT S#,C#FROM SCWHERE G IS NULL;,48,2.具条件的列查询,3.3.2 单表查询,例3-21 查询计算机系年龄在20岁以下的学生姓名:SELECT SnFROM SWHERE Sd=CSAND
22、Sa 20;,49,3.查询结果排序,3.3.2 单表查询,例3-22 查询计算机系(CS)所有学生的名单并按学号升序显示:SELECT S#,SnFROM SWHERE Sd=CSORDER BY S#ASC;例3-23 查询全体学生情况,结果按学生年龄降序排列:SELECT*FROM SORDER BY Sa DESC;,50,4.查询通配符,3.3.2 单表查询,关键词“LIKE”可以看作谓词,用以进行字符串的匹配,其一般格式如下:NOTLIKEESCAPE匹配串设置方式是:通配字符%表示可以与任意长的字符匹配。例如a%b表示以a开头,以b 结尾的任意长度的字符串。像acb,affrrd
23、,ab等。,51,4.查询通配符,3.3.2 单表查询,通配字符“_”(下横线)表示可以与单个的任意字符相配;其他字符表示其本身。例如a_b表示以a开头,以b 结尾的长度为3的任意字符串。像acb,afb,abb等。如果LIKE之后的匹配串中不含通配符,则可以用“=”运算符代替LIKE谓词,用代替NOT LIKE谓词。,52,4.查询通配符,3.3.2 单表查询,例3-24 查询姓名以A打头,且第3个字符必须为P的学生的姓名与系别:SECLET Sn,SdFROM SWHERE Sn LIKE A_P%;例3-25 查询姓名以A开头的学生姓名及所在系别:SELECT Sn,SaFROM SWH
24、ERE Sn LIKE A%;,53,4.查询通配符,3.3.2 单表查询,例3-26 查询课程名以“数据_”开头,且倒数第2个汉字为“原”的课程情形。SELECT*FROM CWHERE Cn LIKE 数据-%_ _ESCAPE;,54,3.3.3 基于集合运算多表查询,在查询中,如果同时涉及到两个或者两个以上的表,就称其为多表查询。关系数据查询结果是一个(元组)集合。关系数据多表查询就是考察相应多个查询结果集合之间的联系与制约。此时,多表查询所涉及到的逻辑条件就表现为“元素x与集合S”或者“集合S1与集合S2”之间关系的表示问题。,55,3.3.3 基于集合运算多表查询,集合S1与集合S
25、2之间的关系主要表现为:集合S1与集合S2之间的包含或相等关系。集合S1与集合S2之间的代数运算关系。元素x与集合S间的关系主要表现为:不带量词的元素x相对集合S的属于或不属于关系:xS或S。带量词的元素x相对集合S的属于或不属于关系:xS、xS或xS、xS。,56,基于集合运算多表查询,按照上述的思路,多表查询实现有三种基本途径,即基于传统集合运算的多表查询、基于连接运算的多表查询和基于嵌套的多表查询。,57,3.3.3 基于集合运算多表查询,如果将多表查询涉及到的表“平等”看待,则可以通过集合间传统运算来描述查询结果集合间的某些关系。集合间包含关系 集合与集合间的包含关系可以通过WHERE
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 关系 数据 语言 SQL
链接地址:https://www.31ppt.com/p-6553395.html