《数据库sql基础知识大全.ppt》由会员分享,可在线阅读,更多相关《数据库sql基础知识大全.ppt(74页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、Spring,2009.1数据库原理主讲:赵海霞主讲:赵海霞河南科技大学电信学院河南科技大学电信学院Spring,2009.2第三章关系数据库语言SQLn概述概述nSQL的数据定义的数据定义nSQL的数据操纵的数据操纵nSQL的视图定义的视图定义nSQL的数据控制的数据控制n嵌入式嵌入式SQL第三章关系数据库语言SQLSpring,2009.3概述nSQL(StructuredQueryLanguage)是)是1974年由年由Boyde和和Chamberlin提出的提出的F1974年年IBM的的SystemRF1979年年OracleF1982年年IBM的的DB2F1984年年Sybasen1
2、986年年10月月ANSI公布公布SQL-86标准标准n1989年年ISO公布公布SQL-89标准(标准(120页)页)n1992年公布年公布SQL-92标准(标准(622页)页)n1999年公布年公布SQL-99标准(标准(1700页)页)n2003年公布年公布SQL-2003标准(标准(3600页)页)第三章关系数据库语言SQL3.1概述Spring,2009.4SQL语言的特点n综合统一综合统一F集集DDL、DML、DCL为一体为一体F实体和联系都是关系,因此每种操作只需一种操作符实体和联系都是关系,因此每种操作只需一种操作符n高度非过程化高度非过程化n面向集合的操作方式面向集合的操作方
3、式n以同一种语法结构提供两种使用方式(以同一种语法结构提供两种使用方式(交互式和嵌入式交互式和嵌入式)n语言简捷,易学易用语言简捷,易学易用F数据定义数据定义CREATE、DROP、ALTERF数据查询数据查询SELECTF数据更新数据更新INSERT、UPDATE、DELETEF数据控制数据控制GRANT、REVOKE第三章关系数据库语言SQL3.1概述Spring,2009.5SQL语言的特点n支持三级模式结构支持三级模式结构视图视图外模式外模式基本表(的集合)基本表(的集合)模式模式存储文件和索引存储文件和索引内模式内模式第三章关系数据库语言SQL3.1概述Spring,2009.6SQ
4、L数据库体系结构SQLSQL用户用户视图视图基本表基本表存储文件存储文件第三章关系数据库语言SQL3.1概述Spring,2009.7SQL的组成数据定义语言(The Data Definition Language,DDL)数据操作语言(The Data Manipulation Language,DML)嵌入式和动态SQL事务管理安全性管理触发器和高级完整性约束客户服务器执行和远程数据库存取高级特性第三章关系数据库语言SQL3.1概述Spring,2009.8SQL的数据定义n定义和修改基本表(定义模式中的关系):定义和修改基本表(定义模式中的关系):FCREATETABLEFDROPTA
5、BLEFALTERTABLEn定义视图(定义外模式):定义视图(定义外模式):FCREATEVIEWFDROPVIEWn定义索引(定义内模式):定义索引(定义内模式):FCREATEINDEXFDROPINDEX第三章关系数据库语言SQL3.2SQL的数据定义Spring,2009.9基本表的定义n基本格式基本格式CREATETABLE(,););:所要定义的基本表的名字:所要定义的基本表的名字:组成该表的各个属性(列):组成该表的各个属性(列):涉及相应属性列的完整性约束条件:涉及相应属性列的完整性约束条件:涉及一个或多个属性列的完整性约:涉及一个或多个属性列的完整性约束条件束条件第三章关系
6、数据库语言SQL3.2SQL的数据定义Spring,2009.10例例1建建立立一一个个“学学生生”表表Student,它它由由学学号号Sno、姓姓名名Sname、性性别别Ssex、年年龄龄Sage、所所在在系系Sdept五五个个属属性性组组成成。其其中中学学号号不不能能为为空空,值是唯一的,并且姓名取值也唯一。值是唯一的,并且姓名取值也唯一。CREATETABLEStudent(SnoCHAR(5)NOTNULLUNIQUE,SnameCHAR(20)UNIQUE,SsexCHAR(1),SageINT,SdeptCHAR(15);基本表的定义第三章关系数据库语言SQL3.2SQL的数据定义
7、Spring,2009.11基本表的定义n说明:说明:FSQL支持空值的概念。允许空值的列未输入支持空值的概念。允许空值的列未输入数据时系统自动置为空值。数据时系统自动置为空值。FSQL支持的数据类型随系统不同而有所差支持的数据类型随系统不同而有所差异,但一般都有:异,但一般都有:全字长整型、半字长整型、定点实型、全字长整型、半字长整型、定点实型、浮点实型、浮点实型、CHAR(n)、)、VARCHAR(n)、TEXT、DATE第三章关系数据库语言SQL3.2SQL的数据定义Spring,2009.12基本表的定义n常用完整性约束常用完整性约束F主码约束:主码约束:PRIMARYKEYF唯一性约
8、束:唯一性约束:UNIQUEF非空值约束:非空值约束:NOTNULLF参照完整性约束参照完整性约束FOREIGNKEYFcheckcheck约束约束思考:思考:PRIMARYKEY与与UNIQUE的区别?的区别?nPrimarykey在建立的时候会默认地建立此在建立的时候会默认地建立此field的索引,的索引,且此且此primarykey可以作为作为另外的表的可以作为作为另外的表的foreignkey;n再者再者primarykey跟跟unique的区别是是Primarykey一定是一定是notnull,而,而unique则没有此限制则没有此限制第三章关系数据库语言SQL3.2SQL的数据定义
9、Spring,2009.13SQLServer2005中的数据类型精确数字精确数字bigintdecimalintnumericsmallintmoneytinyintsmallmoneybit近似数字近似数字floatreal日期和时间日期和时间datetimesmalldatetime字符串字符串chartextvarcharUnicode字符串字符串ncharntextnvarchar二进制字符串二进制字符串binaryimagevarbinary其他数据类型其他数据类型cursortimestampsql_variantuniqueidentifiertablexmlSpring,20
10、09.14n例例2建立一个建立一个“课程课程”表表C,它由课程,它由课程号号Cno,课程名称,课程名称Cname,教师,教师Teacher组成,其中组成,其中Cno为主码。为主码。FCREATETABLEC(FCnoCHAR(5),FCnameCHAR(10),FTeacherCHAR(10),FPrimarykey(Cno);F或像书上写的将或像书上写的将Primarykey直接定义在属性列后。直接定义在属性列后。Spring,2009.15基本表的定义n例例3建立一个建立一个“学生选课学生选课”表表SC,它由学号,它由学号Sno、课程号、课程号Cno,修课成绩,修课成绩Grade组成,其中
11、组成,其中(Sno,Cno)为主码。为主码。FCREATETABLESC(FSnoCHAR(5),FCnoCHAR(3),FGradeint,FPrimarykey(Sno,Cno),FFOREIGNKEY(Sno)REFERENCESS(Sno),FFOREIGNKEY(Cno)REFERENCESC(Cno)F);第三章关系数据库语言SQL3.2SQL的数据定义Spring,2009.16基本数据类型n(1)数值型(数值型(DB2)FSMALLINT半字长二进制整数半字长二进制整数FINTEGER全字长二进制整数全字长二进制整数FDECIMAL(P,q)或者)或者DEC(p,q)压缩十进制
12、数,共p位,其中小数点后q位FFLOAT双字长浮点数双字长浮点数n(2)字符串型字符串型FCHARTER(n)或或CHAR(n)FVARCHAR(n)n(3)时间型时间型FDATEFTIMEn(4)位串型位串型FBIT(n)Spring,2009.17基本表的删除n基本格式基本格式DROPTABLE表名表名;n示例示例DROPTABLES;第三章关系数据库语言SQL3.2SQL的数据定义Spring,2009.18基本表的修改n基本格式基本格式ALTERTABLEADD完整性约束完整性约束DROPALTERCOLUMN;:要修改的基本表要修改的基本表ADD子句子句:增加新列和新的完整性约束条件
13、增加新列和新的完整性约束条件DROP子句子句:删除指定的完整性约束条件删除指定的完整性约束条件ALTERCOLUMN子句子句:用于修改列名和数据类型用于修改列名和数据类型第三章关系数据库语言SQL3.2SQL的数据定义Spring,2009.19基本表的修改n增加列基本格式增加列基本格式ALTERTABLE表名表名ADD列名列名类型;类型;F示例示例ALTERTABLESADDADDRESSVARCHAR(30)n修改列基本格式修改列基本格式ALTERTABLE表名表名ALTERCOLUMN列名列名类型;类型;FALTERTABLESALTERCOLUMNSASMALLINT;n删除列基本格式
14、删除列基本格式ALTERTABLE表名表名DROP列名;列名;FALTERTABLESDROPUNIQUE(Sn);第三章关系数据库语言SQL3.2SQL的数据定义Spring,2009.20例子例子修改表ALTERTABLEstudentADDsnoCHAR(5)NULL-向向student表中添加一列表中添加一列snoALTERTABLEstudent-修改修改sno的定义保障此列不为空的定义保障此列不为空MODIFYsnoCHAR(5)NOTNULLALTERTABLEstudent-向向student表添加主键约束表添加主键约束ADDPRIMARYKEY(sno)ALTERTABLEs
15、tudent-从从student表删除列表删除列sexDROPCOLUMNsexSpring,2009.21例子例子修改表-向向study表中添加外键约束表中添加外键约束ALTERTABLEstudyADDCONSTRAINTfkcnoFOREIGNKEY(cno)REFERENCEScourse(cno)ONDELETECASCADEONUPDATECASCADE-向向study表中添加外键约束表中添加外键约束ALTERTABLEstudyADDCONSTRAINTfksnoFOREIGNKEY(sno)REFERENCESstudent(sno)ONDELETECASCADEONUPDAT
16、ECASCADESpring,2009.22视图的定义和修改n基本操作基本操作FCREATEVIEWFDROPVIEWn后面详细讨论后面详细讨论第三章关系数据库语言SQL3.2SQL的数据定义Spring,2009.23索引的建立和删除n建立索引是加快查询速度的有效手段建立索引是加快查询速度的有效手段n建立索引建立索引FDBA或表的属主(即建立表的人)根据需要建立或表的属主(即建立表的人)根据需要建立F有些有些DBMS自动建立以下列上的索引自动建立以下列上的索引PRIMARYKEYUNIQUEn维护索引维护索引FDBMS自动完成自动完成n使用索引使用索引FDBMS自动选择是否使用索引以及使用哪
17、些索引自动选择是否使用索引以及使用哪些索引第三章关系数据库语言SQL3.2SQL的数据定义Spring,2009.24索引的建立和删除n索引的结构RDBMS中,索引一般采用中,索引一般采用B+树或树或HASH索引实现,具体由索引实现,具体由RDBMS决定。决定。B+树具有动态平衡的优点树具有动态平衡的优点HASH索引查找速度快。索引查找速度快。索引是关系数据库的内部实现技术,属内索引是关系数据库的内部实现技术,属内模式范畴。模式范畴。用户创建索引时,可创建唯一索引、非唯用户创建索引时,可创建唯一索引、非唯一索引或聚簇索引。一索引或聚簇索引。Spring,2009.25n在在SQL86和和SQL
18、89标准中,基本表没有关键码概念,标准中,基本表没有关键码概念,可以用可以用索引索引机制来弥补。机制来弥补。n索引属于物理存储的路径概念,而不是逻辑的概念。索引属于物理存储的路径概念,而不是逻辑的概念。n在定义基本表时,还要定义索引,就把数据库的物理在定义基本表时,还要定义索引,就把数据库的物理结构和逻辑结构混在一块了。结构和逻辑结构混在一块了。n因此在因此在SQL2中引入了主码(主键)的概念,用户在创中引入了主码(主键)的概念,用户在创建基本表时用主码子句建基本表时用主码子句Primarykey直接定义主码。直接定义主码。n但至今大多数但至今大多数DBMS仍使用索引机制,有索引创建和仍使用索
19、引机制,有索引创建和撤销语句,其功能仅限于查询时起作用。撤销语句,其功能仅限于查询时起作用。Spring,2009.26索引的建立n索引建立的基本格式索引建立的基本格式ASCDESC,列名,列名ASCDESC););一个索引项对应一个记录一个索引项对应一个记录升序或降序升序或降序CREATEUNIQUECLUSTERINDEX索引名索引名ON表名(列名表名(列名第三章关系数据库语言SQL3.2SQL的数据定义聚簇索引UniqueUnique索引索引表明此索引的每个索引值只对应唯一的数据记录ClusterCluster索引索引又称聚簇索引,必须维护表中行的物理存储顺序和索引顺序一致,经常进行更新
20、操作的表不宜建立聚簇索引。Spring,2009.27索引的建立例例、为为学学生生-课课程程数数据据库库中中的的S,C,SC三三个个表表建建立立索索引引。其其中中S表表按按学学号号升升序序建建唯唯一一索索引引,C表表按按课课程程号号升升序序建建唯唯一一索索引引,SC表表按按学学号号升升序序和和课程号降序建唯一索引。课程号降序建唯一索引。CREATEUNIQUEINDEXSsnoONS(Sno);CREATEUNIQUEINDEXCcnoONC(Cno);CREATEUNIQUEINDEXSCnoONSC(SnoASC,CnoDESC);第三章关系数据库语言SQL3.2SQL的数据定义Sprin
21、g,2009.28索引的建立n唯一值索引唯一值索引F对于已含重复值的属性列不能建对于已含重复值的属性列不能建UNIQUE索引索引F对对某某个个列列建建立立UNIQUE索索引引后后,插插入入新新记记录录时时DBMS会会自自动动检检查查新新记记录录在在该该列列上上是是否否取取了了重重复复值值。这相当于增加了一个这相当于增加了一个UNIQUE约束约束第三章关系数据库语言SQL3.2SQL的数据定义Spring,2009.29索引的建立n聚簇索引聚簇索引F建建立立聚聚簇簇索索引引后后,基基表表中中数数据据也也需需要要按按指指定定的的聚聚簇簇属属性性值值的的升升序序或或降降序序存存放放。也也即即聚聚簇簇
22、索索引引的的索索引引项项顺序与表中记录的物理顺序一致顺序与表中记录的物理顺序一致例:例:CREATECLUSTERINDEXSsnameONS(SN);在在S表的表的SN(姓名)列上建立一个聚簇索引,而(姓名)列上建立一个聚簇索引,而且且S表中的记录将按照表中的记录将按照SN值的升序存放值的升序存放第三章关系数据库语言SQL3.2SQL的数据定义Spring,2009.30索引的建立F在一个基本表上最多只能建立一个聚簇索引在一个基本表上最多只能建立一个聚簇索引F聚簇索引的用途:对于某些类型的查询,可以提高聚簇索引的用途:对于某些类型的查询,可以提高查询效率查询效率F聚簇索引的适用范围聚簇索引的
23、适用范围很少对基表进行增删操作很少对基表进行增删操作 很少对其中的变长列进行修改操作很少对其中的变长列进行修改操作第三章关系数据库语言SQL3.2SQL的数据定义Spring,2009.31索引的删除n索引删除的基本格式索引删除的基本格式DROPINDEX索引名索引名F删除索引时,系统会从数据字典中删去有关该索引删除索引时,系统会从数据字典中删去有关该索引的描述。的描述。第三章关系数据库语言SQL3.2SQL的数据定义Spring,2009.32SQL的数据操纵nSQL的数据查询(检索)的数据查询(检索)SELECTnSQL的数据更新(增、删、改)的数据更新(增、删、改)INSERT,DELE
24、TE,UPDATE第三章关系数据库语言SQL3.3SQL的数据操纵Spring,2009.33SQL的数据查询n一般格式一般格式SELECT目标列目标列FROM基本表(或视图)基本表(或视图)WHERE条件表达式条件表达式GROUPBY列名列名1HAVING内部函数表达式内部函数表达式ORDERBY列名列名2ASCDESC相当于投影相当于投影相当于选择或连接相当于选择或连接被查询的关系被查询的关系对查询结果排序对查询结果排序分组分组统计统计第三章关系数据库语言SQL3.3SQL的数据操纵Spring,2009.34SQL的数据查询n常用格式常用格式(SELECT-FROM-WHERE句型句型)
25、SELECTA1,A2,AnFROMR1,R2,RmWHEREF其中,条件表达式其中,条件表达式F可使用下列操作符:可使用下列操作符:F算术比较运算符(算术比较运算符(,=,=,)F逻辑运算符(逻辑运算符(AND,OR,NOT)F集合运算符集合运算符(UNION,INTERSECT,EXCEPT)F集合成员资格运算符集合成员资格运算符(IN,NOTIN)F谓词谓词(EXISTS,ALL,SOME,UNIQUE)F聚合函数聚合函数(AVG,MIN,MAX,SUM,COUNT)F嵌套的嵌套的SELECT语句语句第三章关系数据库语言SQL3.3SQL的数据操纵Spring,2009.35示例数据库学
26、生学生-课程数据库课程数据库n学生表:学生表:Student(Sno,Sname,Ssex,Sage,Sdept)n课程表:课程表:Course(Cno,Cname,Cpno,Ccredit)n学生选课表:学生选课表:SC(Sno,Cno,Grade)第三章关系数据库语言SQL3.3SQL的数据操纵Spring,2009.36一、单表查询n查询仅涉及一个表,是一种最简单的查查询仅涉及一个表,是一种最简单的查询操作询操作F选择表中的若干列选择表中的若干列F选择表中的若干元组选择表中的若干元组F对查询结果排序对查询结果排序F使用集函数使用集函数F对查询结果分组对查询结果分组第三章关系数据库语言SQ
27、L3.3SQL的数据操纵Spring,2009.37查询指定列例例1查询全体学生的学号与姓名。查询全体学生的学号与姓名。SELECTSno,SnameFROMStudent;例例2查查询询全全体体学学生生的的姓姓名名、学学号号、所所在在系。系。SELECTSname,Sno,SdeptFROMStudent;第三章关系数据库语言SQL3.3SQL的数据操纵Spring,2009.38查询全部列例例3查询全体学生的详细记录。查询全体学生的详细记录。SELECTSno,Sname,Ssex,Sage,SdeptFROMStudent;或或SELECT*FROMStudent;第三章关系数据库语言S
28、QL3.3SQL的数据操纵Spring,2009.39查询经过计算的值例例4查全体学生的姓名及其出生年份。查全体学生的姓名及其出生年份。SELECTSname,2009-SageFROMStudent;输出结果:输出结果:Sname2009-Sage-李勇李勇1976刘晨刘晨1977王名王名1978张立张立1978第三章关系数据库语言SQL3.3SQL的数据操纵Spring,2009.40查询经过计算的值例例5查查询询全全体体学学生生的的姓姓名名、出出生生年年份份和和所所有有系系,要要求求用用小小写写字字母母表表示示所有系名。所有系名。SELECTSname,YearofBirth:,2009
29、-Sage,ISLOWER(Sdept)FROMStudent;第三章关系数据库语言SQL3.3SQL的数据操纵Spring,2009.41查询经过计算的值输出结果:输出结果:SnameYearofBirth:2009-SageISLOWER(Sdept)-李勇李勇YearofBirth:1976cs刘晨刘晨YearofBirth:1977is王名王名YearofBirth:1978ma张立张立YearofBirth:1977is第三章关系数据库语言SQL3.3SQL的数据操纵Spring,2009.42使用列别名改变查询结果的列标题SELECTSnameNAME,YearofBirth:BI
30、RTH,2009-SageBIRTHDAY,ISLOWER(Sdept)DEPARTMENTFROMStudent;输出结果:输出结果:NAMEBIRTHBIRTHDAYDEPARTMENT-李勇李勇YearofBirth:1976cs刘晨刘晨YearofBirth:1977is王名王名YearofBirth:1978ma张立张立YearofBirth:1977is第三章关系数据库语言SQL3.3SQL的数据操纵Spring,2009.43选择表中的若干元组n消除取值重复的行消除取值重复的行n查询满足条件的元组查询满足条件的元组第三章关系数据库语言SQL3.3SQL的数据操纵Spring,20
31、09.441.消除取值重复的行n在在SELECT子句中使用子句中使用DISTINCT短语短语假设假设SC表中有下列数据表中有下列数据SnoCnoGrade-9500119295001285950013889500229095002380第三章关系数据库语言SQL3.3SQL的数据操纵Spring,2009.45ALL与DISTINCT例例6查询选修了课程的学生学号。查询选修了课程的学生学号。(1)SELECTSnoFROMSC;或或(默认默认ALL)SELECTALLSnoFROMSC;结果:结果:Sno-9500195001950019500295002(2)SELECTDISTINCTSn
32、oFROMSC;结果:结果:Sno-9500195002第三章关系数据库语言SQL3.3SQL的数据操纵Spring,2009.46ALL与DISTINCTn注意注意DISTINCT短语的作用范围是所有目标列短语的作用范围是所有目标列例:查询选修课程的各种成绩例:查询选修课程的各种成绩F错误写法错误写法SELECTDISTINCTCno,DISTINCTGradeFROMSC;F正确写法正确写法SELECTDISTINCTCno,GradeFROMSC;第三章关系数据库语言SQL3.3SQL的数据操纵Spring,2009.472.查询满足条件的元组F比较大小比较大小F确定范围确定范围F确定集
33、合确定集合F字符串匹配字符串匹配F涉及空值的查询涉及空值的查询F多重条件查询多重条件查询第三章关系数据库语言SQL3.3SQL的数据操纵Spring,2009.48比较大小在在WHERE子句的子句的中使用比较运算符中使用比较运算符F=,=,=,!=或或,!,!,F逻辑运算符逻辑运算符NOT+比较运算符比较运算符例例8查询所有年龄在查询所有年龄在20岁以下的学生姓名及其年龄。岁以下的学生姓名及其年龄。SELECTSname,SageFROMStudentWHERESage=20;第三章关系数据库语言SQL3.3SQL的数据操纵Spring,2009.49确定范围使用谓词使用谓词BETWEENAN
34、DNOTBETWEENAND例例10查询年龄在查询年龄在2023岁(包括岁(包括20岁和岁和23岁)之间的学岁)之间的学生的姓名、系别和年龄生的姓名、系别和年龄。SELECTSname,Sdept,SageFROMStudentWHERESageBETWEEN20AND23;相当于若干相当于若干AND的缩写的缩写第三章关系数据库语言SQL3.3SQL的数据操纵Spring,2009.50确定范围例例11查查询询年年龄龄不不在在2023岁岁之之间间的的学学生生姓姓名名、系别和年龄。系别和年龄。SELECTSname,Sdept,SageFROMStudentWHERESageNOTBETWEEN
35、20AND23;第三章关系数据库语言SQL3.3SQL的数据操纵Spring,2009.51确定集合使用谓词使用谓词IN,NOTIN:用逗号分隔的一组取值例例12查询信息系(查询信息系(IS)、数学系()、数学系(MA)和计)和计算机科学系(算机科学系(CS)学生的姓名和性别。)学生的姓名和性别。SELECTSname,SsexFROMStudentWHERESdeptIN(IS,MA,CS);相当与若干相当与若干OR的缩写的缩写第三章关系数据库语言SQL3.3SQL的数据操纵Spring,2009.52字符串匹配nNOTLIKEESCAPEFDB2中,下划线中,下划线_表示匹配任何单个字符表
36、示匹配任何单个字符百分号百分号%表示匹配任何字符串表示匹配任何字符串F当当用用户户要要查查询询的的字字符符串串本本身身含含有有%或或 _ 时时,要要使使用用ESCAPE短语对通配符进行转义短语对通配符进行转义第三章关系数据库语言SQL3.3SQL的数据操纵Spring,2009.53字符串匹配匹配模板为固定字符串匹配模板为固定字符串例例14查询学号为查询学号为95001的学生的详细情况。的学生的详细情况。SELECT*FROMStudentWHERESnoLIKE95001;等价于:等价于:SELECT*FROMStudentWHERESno=95001;第三章关系数据库语言SQL3.3SQL
37、的数据操纵Spring,2009.54字符串匹配匹配模板为含通配符的字符串匹配模板为含通配符的字符串例例15查询所有(不)姓刘学生的姓名、查询所有(不)姓刘学生的姓名、学号和性别。学号和性别。SELECTSname,Sno,SsexFROMStudentWHERESname(NOT)LIKE刘刘%;第三章关系数据库语言SQL3.3SQL的数据操纵Spring,2009.55匹配模板为含通配符的字符串(续)匹配模板为含通配符的字符串(续)例例16查询姓查询姓欧阳欧阳且全名为三个汉字的且全名为三个汉字的学生的姓名。学生的姓名。SELECTSnameFROMStudentWHERESnameLIKE
38、欧阳欧阳_;第三章关系数据库语言SQL3.3SQL的数据操纵Spring,2009.56字符串匹配匹配模板为含通配符的字符串(续)匹配模板为含通配符的字符串(续)例例17查询名字中第查询名字中第2个字为个字为阳阳字的学字的学生的姓名和学号。生的姓名和学号。SELECTSname,SnoFROMStudentWHERESnameLIKE_阳阳%;第三章关系数据库语言SQL3.3SQL的数据操纵Spring,2009.57字符串匹配使用换码字符将通配符转义为普通字符使用换码字符将通配符转义为普通字符例例19查询查询DB_Design课程的课程号和学分。课程的课程号和学分。SELECTCno,Ccr
39、editFROMCourseWHERECnameLIKEDB_DesignESCAPE第三章关系数据库语言SQL3.3SQL的数据操纵Spring,2009.58涉及空值的查询n使用谓词使用谓词ISNULL或或ISNOTNULLn“ISNULL”不能用不能用“=NULL”代替代替例例21某些学生选修课程后没有参加考试,所以有选课某些学生选修课程后没有参加考试,所以有选课记录,但没有考试成绩。查询缺少成绩的学生的学号记录,但没有考试成绩。查询缺少成绩的学生的学号和相应的课程号。和相应的课程号。SELECTSno,CnoFROMSCWHEREGradeISNULL;第三章关系数据库语言SQL3.3
40、SQL的数据操纵Spring,2009.59涉及空值的查询例例22查所有有成绩的学生学号和课程号。查所有有成绩的学生学号和课程号。SELECTSno,CnoFROMSCWHEREGradeISNOTNULL;第三章关系数据库语言SQL3.3SQL的数据操纵Spring,2009.60多重条件查询用逻辑运算符用逻辑运算符AND和和OR来联结多个查询条件来联结多个查询条件FAND的优先级高于的优先级高于ORF可以用括号改变优先级可以用括号改变优先级可用来实现多种其他谓词可用来实现多种其他谓词FNOTINFNOTBETWEENAND第三章关系数据库语言SQL3.3SQL的数据操纵Spring,200
41、9.61多重条件查询例例23查询计算机系年龄在查询计算机系年龄在20岁以下岁以下的学生姓名。的学生姓名。SELECTSnameFROMStudentWHERESdept=CSANDSage3;第三章关系数据库语言SQL3.3SQL的数据操纵Spring,2009.71使用HAVING短语例例32查询有查询有3门以上课程是门以上课程是90分以上的分以上的学生的学号及(学生的学号及(90分以上的)课程数分以上的)课程数SELECTSno,COUNT(*)FROMSCWHEREGrade=90GROUPBYSnoHAVINGCOUNT(*)=3;HAVING是选择分组的条件,且是选择分组的条件,且必
42、须和必须和GROUPBY一起使用一起使用WHERE是选择记录的条件;是选择记录的条件;第三章关系数据库语言SQL3.3SQL的数据操纵Spring,2009.72使用HAVING短语n只有满足只有满足HAVING短语指定条件的组才输出短语指定条件的组才输出nHAVING短短语语与与WHERE子子句句的的区区别别:作作用用对对象不同象不同FWHERE子子句句作作用用于于基基表表或或视视图图,从从中中选选择择满满足足条条件的元组件的元组FHAVING短语作用于组,从中选择满足条件的组短语作用于组,从中选择满足条件的组第三章关系数据库语言SQL3.3SQL的数据操纵Spring,2009.73使用聚
43、合函数对数据进行汇总和统计使用聚合函数对数据进行汇总和统计n聚合函数常见的几种用法:聚合函数常见的几种用法:n nSUMSUM(ALL|DISTINCTexpression)返回返回表达式中所有值的和,或只返回表达式中所有值的和,或只返回DISTINCT值。值。SUM只能用于数字列。空值将被忽略。只能用于数字列。空值将被忽略。n nCOUNTCOUNT(ALL|DISTINCTexpression|*)返回组中项目的数量。返回组中项目的数量。n nCOUNT(*)COUNT(*)返回组中项目的数量,这些项目包返回组中项目的数量,这些项目包括括NULL值和重复值。值和重复值。n nCOUNT(A
44、LLexpression)COUNT(ALLexpression)对组中的每一行都计对组中的每一行都计算相应的算相应的expression的值,并返回非空值的的值,并返回非空值的expression的数量。的数量。n nCOUNT(DISTINCTexpression)COUNT(DISTINCTexpression)对组中的每一对组中的每一行都计算行都计算expression并返回唯一的非空值的数量。并返回唯一的非空值的数量。Spring,2009.74使用聚合函数对数据进行汇总和统计使用聚合函数对数据进行汇总和统计n nAVGAVG(ALL|DISTINCTexpression)返回组中值
45、的返回组中值的平均值。空值将被忽略。平均值。空值将被忽略。n nMAXMAX(ALL|DISTINCTexpression)返回表达式的返回表达式的最大值最大值n nMINMIN(ALL|DISTINCTexpression)返回表达式的返回表达式的最小值。最小值。聚合函数一般仅能出现在聚合函数一般仅能出现在SELECT和和HAVING子句中。子句中。不同的不同的DBMS系统对聚合函数有不同的扩充。系统对聚合函数有不同的扩充。使用聚合函数之后,使用聚合函数之后,SELECT子句中所出现的列名或列子句中所出现的列名或列名表达式必须出现在名表达式必须出现在GROUPBY子句中或者为聚合函数子句中或者为聚合函数表达式。表达式。