数据库sql基础知识大全学习教案.pptx
会计学1数据库数据库sql基础知识大全基础知识大全(dqun)第一页,共74页。第三章第三章 关系数据库语关系数据库语言言(yyn)SQLn n 概述n n SQL的数据定义n n SQL的数据操纵n n SQL的视图(sht)定义n n SQL的数据控制n n 嵌入式SQL第三章关系数据库语言(yyn)SQL第1页/共74页第二页,共74页。概述概述(i sh)n nSQLSQL(Structured Query LanguageStructured Query Language)是)是19741974年由年由BoydeBoyde和和ChamberlinChamberlin提出的提出的n n19741974年年 IBM IBM的的System RSystem Rn n19791979年年 Oracle Oraclen n19821982年年 IBM IBM的的DB2DB2n n19841984年年 Sybase Sybasen n19861986年年1010月月ANSIANSI公布公布(gngb)SQL-86(gngb)SQL-86标准标准n n19891989年年ISOISO公布公布(gngb)SQL-89(gngb)SQL-89标准(标准(120120页)页)n n19921992年公布年公布(gngb)SQL-92(gngb)SQL-92标准(标准(622622页)页)n n19991999年公布年公布(gngb)SQL-99(gngb)SQL-99标准(标准(17001700页)页)n n20032003年公布年公布(gngb)SQL-2003(gngb)SQL-2003标准(标准(36003600页)页)第三章关系数据库语言SQL3.1 概述第2页/共74页第三页,共74页。SQL语言语言(yyn)的特的特点点n n综合统一综合统一n n集集DDLDDL、DMLDML、DCLDCL为一体为一体n n实体和联系都是关系,因此每种操作只需一种操作符实体和联系都是关系,因此每种操作只需一种操作符n n高度非过程化高度非过程化n n面向集合的操作方式面向集合的操作方式n n以同一种语法结构提供两种使用方式(交互式和嵌入式)以同一种语法结构提供两种使用方式(交互式和嵌入式)n n语言简捷,易学易用语言简捷,易学易用n n数据定义数据定义 CREATE CREATE、DROPDROP、ALTERALTERn n数据查询数据查询(chxn)SELECT(chxn)SELECTn n数据更新数据更新 INSERT INSERT、UPDATEUPDATE、DELETEDELETEn n数据控制数据控制 GRANT GRANT、REVOKEREVOKE第三章关系数据库语言SQL3.1 概述第3页/共74页第四页,共74页。SQL语言语言(yyn)的特点的特点n n支持(zhch)三级模式结构n n 视图 外模式n n 基本表(的集合)模式n n 存储文件和索引 内模式第三章关系数据库语言SQL3.1 概述第4页/共74页第五页,共74页。SQL数据库体系结构数据库体系结构用户2用户3用户4视图V1视图V2基本表B1基本表B2基本表B3基本表B4存储文件S1存储文件S2存储文件S3存储文件S4用户1SQLSQL用户用户视图视图基本表基本表存储文件存储文件第三章关系数据库语言SQL3.1 概述第5页/共74页第六页,共74页。SQL的组成的组成(z chn)数据定义语言数据定义语言(The Data Definition Language,DDL)(The Data Definition Language,DDL)数据操作语言数据操作语言(The Data Manipulation Language,DML)(The Data Manipulation Language,DML)嵌入式和动态嵌入式和动态SQLSQL事务管理事务管理安全性管理安全性管理触发器和高级完整性约束触发器和高级完整性约束客户服务器执行和远程客户服务器执行和远程(yunchng)(yunchng)数据库存取数据库存取高级特性高级特性第三章关系数据库语言SQL3.1 概述第6页/共74页第七页,共74页。SQL的数据的数据(shj)定义定义n n定义和修改基本定义和修改基本(jbn)(jbn)表(定义模式中的关系):表(定义模式中的关系):n n CREATE TABLE CREATE TABLEn n DROP TABLE DROP TABLEn n ALTER TABLE ALTER TABLEn n定义视图(定义外模式):定义视图(定义外模式):n n CREATE VIEW CREATE VIEWn n DROP VIEW DROP VIEWn n定义索引(定义内模式):定义索引(定义内模式):n n CREATE INDEX CREATE INDEXn n DROP INDEX DROP INDEX第三章关系数据库语言SQL3.2 SQL的数据定义第7页/共74页第八页,共74页。基本基本(jbn)表的定义表的定义n n基本格式基本格式n n CREATE TABLE CREATE TABLE n n (n n ,n n ,););n n :所要定义的基本表的名字:所要定义的基本表的名字n n :组成该表的各个:组成该表的各个(gg)(gg)属性(列)属性(列)n n :涉及相应属性列:涉及相应属性列的完整性约束条件的完整性约束条件n n :涉及一个或多个:涉及一个或多个属性列的完整性约束条件属性列的完整性约束条件 第三章关系数据库语言SQL3.2 SQL的数据定义第8页/共74页第九页,共74页。例1 建立一个“学生”表Student,它由学号Sno、姓名Sname、性别Ssex、年龄Sage、所在系Sdept五个属性组成(z chn)。其中学号不能为空,值是唯一的,并且姓名取值也唯一。CREATE TABLE Student (Sno CHAR(5)NOT NULL UNIQUE,Sname CHAR(20)UNIQUE,Ssex CHAR(1),Sage INT,Sdept CHAR(15);基本基本(jbn)表的定义表的定义第三章关系数据库语言SQL3.2 SQL的数据定义第9页/共74页第十页,共74页。基本基本(jbn)表的定义表的定义n n说明(shumng):n nSQL支持空值的概念。允许空值的列未输入数据时系统自动置为空值。n n SQL支持的数据类型随系统不同而有所差异,但一般都有:n n全字长整型、半字长整型、定点实型、浮点实型、CHAR(n)、VARCHAR(n)、TEXT、DATE第三章关系数据库语言SQL3.2 SQL的数据定义第10页/共74页第十一页,共74页。基本基本(jbn)表的定义表的定义n n常用完整性约束常用完整性约束(yush)(yush)n n主码约束主码约束(yush)(yush):PRIMARY KEY PRIMARY KEYn n唯一性约束唯一性约束(yush)(yush):UNIQUEUNIQUEn n非空值约束非空值约束(yush)(yush):NOT NULLNOT NULLn n参照完整性约束参照完整性约束(yush)FOREIGN KEY(yush)FOREIGN KEYn ncheckcheck约束约束(yush)(yush)n n思考:思考:PRIMARY KEYPRIMARY KEY与与 UNIQUE UNIQUE的区别?的区别?n nPrimary keyPrimary key在建立的时候会默认地建立此在建立的时候会默认地建立此fieldfield的索引,且此的索引,且此primary keyprimary key可以作为作为另可以作为作为另外的表的外的表的foreign keyforeign key;n n再者再者primary keyprimary key跟跟uniqueunique的区别是的区别是Primary key Primary key 一定是一定是not nullnot null,而,而uniqueunique则没有此限制则没有此限制第三章关系数据库语言SQL3.2 SQL的数据定义第11页/共74页第十二页,共74页。SQL Server 2005中的数据类型中的数据类型精确精确(jngqu)(jngqu)数字数字bigintdecimalintnumericsmallintmoneytinyintsmallmoneybit近似近似(jn(jn s)s)数字数字floatreal日期日期(rq)(rq)和时间和时间datetimesmalldatetime字符串字符串chartextvarcharUnicode字符串字符串ncharntextnvarchar二进制字符串二进制字符串binaryimagevarbinary其他数据类型其他数据类型cursortimestampsql_variantuniqueidentifiertablexml第12页/共74页第十三页,共74页。n n例2 建立(jinl)一个“课程”表C,它由课程号Cno,课程名称Cname,教师Teacher组成,其中Cno为主码。n nCREATE TABLE C(n n Cno CHAR(5),n n Cname CHAR(10),n n Teacher CHAR(10),n n Primary key(Cno);n n或像书上写的将Primary key 直接定义在属性列后。第13页/共74页第十四页,共74页。基本基本(jbn)表的定义表的定义n n 例例3 3 建立一个建立一个“学生选课学生选课”表表SCSC,它由学号,它由学号SnoSno、课程号、课程号CnoCno,修课成绩,修课成绩GradeGrade组成组成(z(z chn chn),其中,其中(Sno,Cno)(Sno,Cno)为主码。为主码。n nCREATE TABLE SC(CREATE TABLE SC(n n Sno CHAR(5),Sno CHAR(5),n n Cno CHAR(3),Cno CHAR(3),n n Grade int,Grade int,n n Primary key(Sno,Cno),Primary key(Sno,Cno),n n FOREIGN KEY(Sno)REFERENCES S(Sno),FOREIGN KEY(Sno)REFERENCES S(Sno),n n FOREIGN KEY(Cno)REFERENCES C(Cno)FOREIGN KEY(Cno)REFERENCES C(Cno)n n););第三章关系数据库语言SQL3.2 SQL的数据定义第14页/共74页第十五页,共74页。基本基本(jbn)数据类型数据类型n n(1)(1)数值型(数值型(DB2)DB2)n nSMALLINT SMALLINT 半字长二进制整数半字长二进制整数n nINTEGER INTEGER 全字长二进制整数全字长二进制整数n nDECIMAL(P,qDECIMAL(P,q)或者)或者(huzh)DEC(huzh)DEC(p,q)p,q)n n压缩十进制数,共压缩十进制数,共p p位,其中小数点后位,其中小数点后q q位位n nFLOAT FLOAT 双字长浮点数双字长浮点数n n(2)2)字符串型字符串型n nCHARTER(n)CHARTER(n)或或CHAR(n)CHAR(n)n nVARCHAR(n)VARCHAR(n)n n(3)(3)时间型时间型n nDATEDATEn nTIMETIMEn n(4)(4)位串型位串型n nBITBIT(n n)第15页/共74页第十六页,共74页。基本基本(jbn)表的删除表的删除n n基本格式(g shi)n n DROP TABLE 表名;n n示例 n nDROP TABLE S;第三章关系数据库语言SQL3.2 SQL的数据定义第16页/共74页第十七页,共74页。基本基本(jbn)表的修改表的修改n n基本(jbn)格式n n ALTER TABLE n n ADD 完整性约束 n n DROP n n ALTER COLUMN ;n n:要修改的基本(jbn)表n nADD子句:增加新列和新的完整性约束条件n nDROP子句:删除指定的完整性约束条件n nALTER COLUMN子句:用于修改列名和数据类型第三章关系数据库语言SQL3.2 SQL的数据定义第17页/共74页第十八页,共74页。基本基本(jbn)表的修改表的修改n n增加列基本增加列基本(jbn)(jbn)格式格式n nALTER TABLE ALTER TABLE 表名表名 ADD ADD 列名列名 类型;类型;n n示例示例 ALTER TABLE S ADD ADDRESS VARCHAR(30)ALTER TABLE S ADD ADDRESS VARCHAR(30)n n修改列基本修改列基本(jbn)(jbn)格式格式n n ALTER TABLE ALTER TABLE 表名表名 ALTER COLUMN ALTER COLUMN 列名列名 类型;类型;n nALTER TABLE S ALTER COLUMN SA SMALLINTALTER TABLE S ALTER COLUMN SA SMALLINT;n n删除列基本删除列基本(jbn)(jbn)格式格式n n ALTER TABLE ALTER TABLE 表名表名 DROP DROP 列名;列名;n nALTER TABLE S DROP UNIQUE(Sn)ALTER TABLE S DROP UNIQUE(Sn);第三章关系数据库语言SQL3.2 SQL的数据定义第18页/共74页第十九页,共74页。例子例子(l zi)修改表修改表ALTER TABLE studentALTER TABLE studentADD sno CHAR(5)NULL -ADD sno CHAR(5)NULL -向向studentstudent表中添加一列表中添加一列(y(y li)snoli)snoALTER TABLE student -ALTER TABLE student -修改修改snosno的定义保障此列不为空的定义保障此列不为空MODIFY sno CHAR(5)NOT NULL MODIFY sno CHAR(5)NOT NULL ALTER TABLE student -ALTER TABLE student -向向studentstudent表添加主键约束表添加主键约束ADD PRIMARY KEY(sno)ADD PRIMARY KEY(sno)ALTER TABLE student -ALTER TABLE student -从从studentstudent表删除列表删除列sexsexDROP COLUMN sexDROP COLUMN sex第19页/共74页第二十页,共74页。例子例子(l zi)修改表修改表-向向studystudy表中添加表中添加(tin ji)(tin ji)外键约束外键约束ALTER TABLE studyALTER TABLE studyADD CONSTRAINT fkcno FOREIGN KEY(cno)REFERENCES course(cno)ADD CONSTRAINT fkcno FOREIGN KEY(cno)REFERENCES course(cno)ON DELETE CASCADE ON UPDATE CASCADEON DELETE CASCADE ON UPDATE CASCADE-向向studystudy表中添加表中添加(tin ji)(tin ji)外键约束外键约束 ALTER TABLE studyALTER TABLE study ADD CONSTRAINT fksno FOREIGN KEY(sno)REFERENCES student(sno)ADD CONSTRAINT fksno FOREIGN KEY(sno)REFERENCES student(sno)ON DELETE CASCADE ON UPDATE CASCADEON DELETE CASCADE ON UPDATE CASCADE第20页/共74页第二十一页,共74页。视图的定义视图的定义(dngy)和修改和修改n n基本操作基本操作n n CREATE VIEW CREATE VIEWn n DROP VIEW DROP VIEWn n后面详细后面详细(xingx)(xingx)讨论讨论第三章关系数据库语言SQL3.2 SQL的数据定义第21页/共74页第二十二页,共74页。索引的建立索引的建立(jinl)和删除和删除n n建立索引是加快建立索引是加快(ji kui)(ji kui)查询速度的有效手段查询速度的有效手段n n建立索引建立索引n nDBADBA或表的属主(即建立表的人)根据需要建立或表的属主(即建立表的人)根据需要建立n n有些有些DBMSDBMS自动建立以下列上的索引自动建立以下列上的索引n n PRIMARY KEY PRIMARY KEYn n UNIQUE UNIQUEn n维护索引维护索引n n DBMS DBMS自动完成自动完成 n n使用索引使用索引n n DBMS DBMS自动选择是否使用索引以及使用哪些索引自动选择是否使用索引以及使用哪些索引第三章关系数据库语言SQL3.2 SQL的数据定义第22页/共74页第二十三页,共74页。索引索引(suyn)的建立和删除的建立和删除n n索引的结构索引的结构n nRDBMSRDBMS中,索引一般采用中,索引一般采用B+B+树或树或HASHHASH索引实现,具体由索引实现,具体由RDBMSRDBMS决决定。定。n nB+B+树具有动态平衡的优点树具有动态平衡的优点n nHASHHASH索引查找速度快。索引查找速度快。n n索引是关系数据库的内部实现技术,属内模式索引是关系数据库的内部实现技术,属内模式(msh)(msh)范畴。范畴。n n用户创建索引时,可创建唯一索引、非唯一索引或聚簇索引。用户创建索引时,可创建唯一索引、非唯一索引或聚簇索引。第23页/共74页第二十四页,共74页。n n在在SQL86SQL86和和SQL89SQL89标准中,基本表没有关键码概念,可以用索引机制来弥补。标准中,基本表没有关键码概念,可以用索引机制来弥补。n n索引属于物理存储的路径概念,而不是逻辑索引属于物理存储的路径概念,而不是逻辑(lu j)(lu j)的概念。的概念。n n在定义基本表时,还要定义索引,就把数据库的物理结构和逻辑在定义基本表时,还要定义索引,就把数据库的物理结构和逻辑(lu j)(lu j)结构混在一块结构混在一块了。了。n n因此在因此在SQL2SQL2中引入了主码(主键)的概念,用户在创建基本表时用主码子句中引入了主码(主键)的概念,用户在创建基本表时用主码子句Primary Primary keykey直接定义主码。直接定义主码。n n但至今大多数但至今大多数DBMSDBMS仍使用索引机制,有索引创建和撤销语句,其功能仅限于查询时起仍使用索引机制,有索引创建和撤销语句,其功能仅限于查询时起作用。作用。第24页/共74页第二十五页,共74页。索引索引(suyn)的建立的建立n n索引建立的基本索引建立的基本(jbn)(jbn)格式格式n n ASCDESC,列名,列名ASCDESC););一个索引项对应一个记录一个索引项对应一个记录升序或降序升序或降序CREATEUNIQUECLUSTERINDEX索引名索引名ON表名(列名表名(列名第三章关系数据库语言SQL3.2 SQL的数据定义聚簇索引(suyn)UniqueUnique 索引索引表明此索引的每个索引值只对应唯一的数据记录ClusterCluster索引索引又称聚簇索引,必须维护表中行的物理存储顺序和索引顺序一致,经常进行更新操作的表不宜建立聚簇索引。第25页/共74页第二十六页,共74页。索引索引(suyn)的建立的建立例、为学生-课程(kchng)数据库中的S,C,SC三个表建立索引。其中S表按学号升序建唯一索引,C表按课程(kchng)号升序建唯一索引,SC表按学号升序和课程(kchng)号降序建唯一索引。CREATE UNIQUE INDEX Ssno ON S(Sno);CREATE UNIQUE INDEX Ccno ON C(Cno);CREATE UNIQUE INDEX SCno ON SC(Sno ASC,Cno DESC);第三章关系数据库语言SQL3.2 SQL的数据定义第26页/共74页第二十七页,共74页。索引索引(suyn)的建立的建立n n唯一值索引唯一值索引n n对对于于(duy)(duy)已已含含重重复复值值的的属属性性列列不不能能建建UNIQUEUNIQUE索索引引n n对对某某个个列列建建立立UNIQUEUNIQUE索索引引后后,插插入入新新记记录录时时DBMSDBMS会会自自动动检检查查新新记记录录在在该该列列上上是是否否取取了了重重复复值值。这这相相当当于增加了一个于增加了一个UNIQUEUNIQUE约束约束第三章关系数据库语言SQL3.2 SQL的数据定义第27页/共74页第二十八页,共74页。索引索引(suyn)的建立的建立n n聚簇索引n n建立聚簇索引后,基表中数据也需要按指定的聚簇属性值的升序或降序存放。也即聚簇索引的索引项顺序与表中记录的物理顺序一致(yzh)n n例:n nCREATE CLUSTER INDEX Ssname ON S(SN);n n在S表的SN(姓名)列上建立一个聚簇索引,而n n且S表中的记录将按照SN值的升序存放 第三章关系数据库语言SQL3.2 SQL的数据定义第28页/共74页第二十九页,共74页。索引索引(suyn)的建立的建立n n在一个基本表上最多只能建立一个聚簇索引n n聚簇索引的用途:对于某些类型的查询(chxn),可以提高查询(chxn)效率n n聚簇索引的适用范围n n 很少对基表进行增删操作n n 很少对其中的变长列进行修改操作 第三章关系数据库语言SQL3.2 SQL的数据定义第29页/共74页第三十页,共74页。索引索引(suyn)的删除的删除n n索引索引(su(su y y n)n)删除的基本格式删除的基本格式n n DROP INDEX DROP INDEX 索引索引(su(su y y n)n)名名n n删除索引删除索引(su(su y y n)n)时,系统会从数据字典中删去有关时,系统会从数据字典中删去有关该索引该索引(su(su y y n)n)的描述。的描述。第三章关系数据库语言SQL3.2 SQL的数据定义第30页/共74页第三十一页,共74页。SQL的数据的数据(shj)操纵操纵n nSQL的数据(shj)查询(检索)n n SELECTn nSQL的数据(shj)更新(增、删、改)n n INSERT,DELETE,UPDATE第三章关系数据库语言SQL3.3 SQL的数据操纵第31页/共74页第三十二页,共74页。SQL的数据的数据(shj)查询查询n n一般(ybn)格式SELECT目标目标(mbio)列列FROM基本表(或视图)基本表(或视图)WHERE条件表达式条件表达式GROUPBY列名列名1HAVING内部函数表达式内部函数表达式ORDERBY列名列名2ASCDESC相当于投影相当于投影相当于选择或连接相当于选择或连接被查询的关系被查询的关系对查询结果排序对查询结果排序分组分组统计统计第三章关系数据库语言SQL3.3 SQL的数据操纵第32页/共74页第三十三页,共74页。SQL的数据(shj)查询n常用格式常用格式(SELECT-FROM-WHERE句型句型)nSELECTA1,A2,AnnFROMR1,R2,RmnWHEREFn其中,条件表达式其中,条件表达式F可使用下列操作符:可使用下列操作符:n算术比较运算符(算术比较运算符(,=,=,)n逻辑运算符(逻辑运算符(AND,OR,NOT)n集合运算符集合运算符(UNION,INTERSECT,EXCEPT)n集合成员资格运算符集合成员资格运算符(IN,NOTIN)n谓词谓词(wic)(EXISTS,ALL,SOME,UNIQUE)n聚合函数聚合函数(AVG,MIN,MAX,SUM,COUNT)n嵌套的嵌套的SELECT语句语句第三章关系数据库语言SQL3.3 SQL的数据操纵第33页/共74页第三十四页,共74页。示例示例(shl)数据库数据库学生(xu sheng)-课程数据库学 生(xu sheng)表:Student(Sno,Sname,Ssex,Sage,Sdept)课程表:Course(Cno,Cname,Cpno,Ccredit)学 生(xu sheng)选 课 表:SC(Sno,Cno,Grade)第三章关系数据库语言SQL3.3 SQL的数据操纵第34页/共74页第三十五页,共74页。一、单表查询一、单表查询(chxn)n n查询仅涉及一个表,是一种最简单的查询操作n n选择表中的若干(rugn)列n n选择表中的若干(rugn)元组n n对查询结果排序n n使用集函数n n对查询结果分组 第三章关系数据库语言SQL3.3 SQL的数据操纵第35页/共74页第三十六页,共74页。查询查询(chxn)指定列指定列例1 查询(chxn)全体学生的学号与姓名。SELECT Sno,SnameFROM Student;例2 查询(chxn)全体学生的姓名、学号、所在系。SELECT Sname,Sno,SdeptFROM Student;第三章关系数据库语言SQL3.3 SQL的数据操纵第36页/共74页第三十七页,共74页。查询查询(chxn)全部列全部列例3 查询(chxn)全体学生的详细记录。SELECT Sno,Sname,Ssex,Sage,Sdept FROM Student;或SELECT *FROM Student;第三章关系数据库语言SQL3.3 SQL的数据操纵第37页/共74页第三十八页,共74页。查询查询(chxn)经过计算的值经过计算的值 例例4 4 查全体学生的姓名及其出生查全体学生的姓名及其出生(chshng)(chshng)年份。年份。SELECT SnameSELECT Sname,2009-Sage2009-SageFROM StudentFROM Student;输出结果:输出结果:Sname 2009-Sage Sname 2009-Sage -李勇李勇 1976 1976 刘晨刘晨 1977 1977 王名王名 1978 1978 张立张立 1978 1978 第三章关系数据库语言SQL3.3 SQL的数据操纵第38页/共74页第三十九页,共74页。查询查询(chxn)经过计算的值经过计算的值 例例5 5 查查询询全全体体学学生生的的姓姓名名、出出生生(chshng)(chshng)年年份份和和所所有有系系,要求用小写字母表示所有系名。要求用小写字母表示所有系名。SELECT SnameSELECT Sname,Year of Birth:Year of Birth:,2009-Sage2009-Sage,ISLOWER(Sdept)ISLOWER(Sdept)FROM StudentFROM Student;第三章关系数据库语言SQL3.3 SQL的数据操纵第39页/共74页第四十页,共74页。查询查询(chxn)经过计算的值经过计算的值输出输出(shch)(shch)结果:结果:Sname Year of Birth:2009-Sage ISLOWER(Sdept)Sname Year of Birth:2009-Sage ISLOWER(Sdept)-李勇李勇 Year of Birth:1976 cs Year of Birth:1976 cs 刘晨刘晨 Year of Birth:1977 is Year of Birth:1977 is 王名王名 Year of Birth:1978 ma Year of Birth:1978 ma 张立张立 Year of Birth:1977 is Year of Birth:1977 is第三章关系数据库语言SQL3.3 SQL的数据操纵第40页/共74页第四十一页,共74页。使用列别名改变使用列别名改变使用列别名改变使用列别名改变(g(g ibin)ibin)查询结果的列标题查询结果的列标题查询结果的列标题查询结果的列标题SELECT Sname NAMESELECT Sname NAME,Year of Birth:BIRTHYear of Birth:BIRTH,2009-Sage BIRTHDAY 2009-Sage BIRTHDAY,ISLOWER(Sdept)DEPARTMENTISLOWER(Sdept)DEPARTMENTFROM StudentFROM Student;输出输出(shch)(shch)结果:结果:NAME BIRTH BIRTHDAY DEPARTMENT NAME BIRTH BIRTHDAY DEPARTMENT -李勇李勇 Year of Birth:1976 cs Year of Birth:1976 cs 刘晨刘晨 Year of Birth:1977 is Year of Birth:1977 is 王名王名 Year of Birth:1978 ma Year of Birth:1978 ma 张立张立 Year of Birth:1977 is Year of Birth:1977 is第三章关系数据库语言SQL3.3 SQL的数据操纵第41页/共74页第四十二页,共74页。选择选择(xunz)表中的若干元组表中的若干元组n n消除取值重复(chngf)的行n n查询满足条件的元组 第三章关系数据库语言SQL3.3 SQL的数据操纵第42页/共74页第四十三页,共74页。1.消除消除(xioch)取值重复的行取值重复的行n n在SELECT子句中使用(shyng)DISTINCT短语n n假设SC表中有下列数据n n Sno Cno Graden n -n n 95001 1 92n n 95001 2 85n n 95001 3 88n n 95002 2 90n n 95002 3 80第三章关系数据库语言SQL3.3 SQL的数据操纵第43页/共74页第四十四页,共74页。ALL 与与 DISTINCT 例例6 6 查询选修了课程的学生学号。查询选修了课程的学生学号。(1)SELECT Sno(1)SELECT Sno FROM SC;FROM SC;或或(默认默认(mrn)ALL)(mrn)ALL)SELECT ALL Sno SELECT ALL Sno FROM SC;FROM SC;结果:结果:Sno Sno -95001 95001 95001 95001 95001 95001 95002 95002 95002 95002(2)SELECTDISTINCTSnoFROMSC;结果结果(jigu):Sno-9500195002第三章关系数据库语言SQL3.3 SQL的数据操纵第44页/共74页第四十五页,共74页。ALL 与与 DISTINCTn n注意注意 DISTINCT DISTINCT短语的作用范围是所有目标列短语的作用范围是所有目标列n n例:查询选修课程的各种例:查询选修课程的各种(zh zh n n)成绩成绩n n错误写法错误写法n nSELECT DISTINCT CnoSELECT DISTINCT Cno,DISTINCT GradeDISTINCT Graden nFROM SC;FROM SC;n n正确写法正确写法n n SELECT DISTINCT Cno SELECT DISTINCT Cno,GradeGraden n FROM SC;FROM SC;第三章关系数据库语言SQL3.3 SQL的数据操纵第45页/共74页第四十六页,共74页。2.查询查询(chxn)满足条件的元组满足条件的元组FF比较大小FF确定(qudng)范围FF确定(qudng)集合FF字符串匹配FF涉及空值的查询FF多重条件查询第三章关系数据库语言SQL3.3 SQL的数据操纵第46页/共74页第四十七页,共74页。比较比较(bjio)大小大小在在WHEREWHERE子句的子句的 中使用比较运算符中使用比较运算符=,=,=,!=!=或或 ,!,!,逻辑运算符逻辑运算符NOT +NOT +比较运算符比较运算符 例例8 8 查询查询(chxn)(chxn)所有年龄在所有年龄在2020岁以下的学生姓名及其年岁以下的学生姓名及其年龄。龄。SELECT SnameSELECT Sname,Sage Sage FROM Student FROM Student WHERE Sage 20WHERE Sage=20WHERE NOT Sage=20;第三章关系数据库语言SQL3.3 SQL的数据操纵第47页/共74页第四十八页,共74页。确定确定(qudng)范围范围使用谓词使用谓词(wi c)BETWEEN AND (wi c)BETWEEN AND NOT BETWEEN AND NOT BETWEEN AND 例例10 10 查询年龄在查询年龄在20232023岁(包括岁(包括2020岁和岁和2323岁)之间的学生的姓名、系别和年龄。岁)之间的学生的姓名、系别和年龄。SELECT Sname SELECT Sname,SdeptSdept,SageSageFROM StudentFROM StudentWHERE Sage BETWEEN 20 AND 23WHERE Sage BETWEEN 20 AND 23;相当于若干相当于若干(rugn)AND的缩写的缩写第三章关系数据库语言SQL3.3 SQL的数据操纵第48页/共74页第四十九页,共74页。确定确定(qudng)范围范围 例例11 11 查询年龄不在查询年龄不在20232023岁之间的学生岁之间的学生(xu sheng)(xu sheng)姓名、系别和年龄。姓名、系别和年龄。SELECT SnameSELECT Sname,SdeptSdept,SageSageFROM StudentFROM StudentWHERE Sage NOT BETWEEN 20 AND 23WHERE Sage NOT BETWEEN 20 AND 23;第三章关系数据库语言SQL3.3 SQL的数据操纵第49页/共74页第五十页,共74页。确定确定(qudng)集合集合使用谓词使用谓词 IN IN,NOT IN,NOT IN :用逗号分隔的一组取值:用逗号分隔的一组取值 例例1212查询信息系(查询信息系(ISIS)、数学系()、数学系(MAMA)和计)和计 算机科学系(算机科学系(CSCS)学生的姓名)学生的姓名(xngmng)(xngmng)和性别。和性别。SELECT SnameSELECT Sname,SsexSsexFROM StudentFROM StudentWHERE Sdept IN(ISWHERE Sdept IN(IS,MAMA,CS);CS);相当相当(xingdng)与若干与若干OR的缩写的缩写第三章关系数据库语言SQL3.3 SQL的数据操纵第50页/共74页第五十一页,共74页。字符串匹配字符串匹配(ppi)n nNOT LIKE NOT LIKE ESCAPE ESCAPE n nDB2DB2中,下划线中,下划线 _ _表示匹配任何单个字符表示匹配任何单个字符n n 百分号百分号%