第三章 关系数据库标准语言SQL 单表查询

上传人:鲁** 文档编号:570029643 上传时间:2024-08-01 格式:PPT 页数:105 大小:315.02KB
返回 下载 相关 举报
第三章 关系数据库标准语言SQL 单表查询_第1页
第1页 / 共105页
第三章 关系数据库标准语言SQL 单表查询_第2页
第2页 / 共105页
第三章 关系数据库标准语言SQL 单表查询_第3页
第3页 / 共105页
第三章 关系数据库标准语言SQL 单表查询_第4页
第4页 / 共105页
第三章 关系数据库标准语言SQL 单表查询_第5页
第5页 / 共105页
点击查看更多>>
资源描述

《第三章 关系数据库标准语言SQL 单表查询》由会员分享,可在线阅读,更多相关《第三章 关系数据库标准语言SQL 单表查询(105页珍藏版)》请在金锄头文库上搜索。

1、数据库系统概论数据库系统概论An Introduction to Database System第三章第三章 关系数据库标准语言关系数据库标准语言SQLSQL第三章第三章 关系数据库标准语言关系数据库标准语言SQL3.1SQL概述3.2学生课程数据库3.3数据定义3.4数据查询3.5数据更新3.6视图3.7小结3.1 SQL概述概述SQL的产生与发展n1970年,美国IBM研究中心的E.F.Codd连续发表多篇论文,提出关系模型。n1972年,IBM公司开始研制实验型关系数据库管理系统SYSTEM R,配制的查询语言称为SQUARE (Specifying Queries As Relatio

2、nal Expression )语言,在语言中使用了较多的数学符号。n1974年,Boyce和Chamberlin把SQUARE修改为SEQUEL (Structured English QUEry Language )语言。后来SEQUEL简称为SQL (Structured Query Language ),即“结构式查询语言”,SQL的发音仍为“sequel”。现在SQL已经成为一个标准 。SQLSQL数据库的体系结构数据库的体系结构 用户用户1用户用户2用户用户3用户用户4视图视图1视图视图1基本表基本表1基本表基本表2基本表基本表3基本表基本表4存储文件存储文件1存储文件存储文件2存

3、储文件存储文件3存储文件存储文件4图图3.1 SQL3.1 SQL数据库的体系结构数据库的体系结构SQL用户用户ViewBase tableStored filenSQL的特点n1.综合统一n2.高度非过程化n3.面向集合的操作方式n4.以同一种语法结构提供两种使用方法n5.语言简洁,易学易用n1.综合统一:SQL语言综合:数据定义语言DDL数据操纵语言DML数据控制语言DCL“什么事都可以用SQL语言来做”n2、高度非过程化只须说“做什么”,不用管“怎么做”减轻了用户的负担,有利于提高数据独立性n3、面向集合的操作方式n非关系数据模型:面向记录nSQL:集合操作n4、以同一种语法结构提供两种

4、使用方式n既可联机交互操作,n也可以嵌入到高级语言中去5. 语言简捷,易学易用语言简捷,易学易用 核心功能九个动词开头核心功能九个动词开头第三章第三章 关系数据库标准语言关系数据库标准语言SQL3.1SQL概述3.2学生课程数据库(课本P82)3.3数据定义3.4数据查询3.5数据更新3.6视图3.7小结3.2 数数 据据 定定 义义 3.3.1 3.3.1 模式的定义与删除模式的定义与删除 nSQL模式的定义(创建)可用CREATE SCHEMA语句定义,其基本句法如下: CREATE SCHEMA模式名AUTHORIZATION用户名 n删除:DROP语句的句法如下:DROP SCHEMA

5、 模 式 名 CASCADERESTRICTn其方式有两种:CASCADE (级联式)方式。RESTRICT (约束式)方式。3.3.2 基本表的定义、删除与修改基本表的定义、删除与修改CREATETABLE(,);n:所要定义的基本表的名字n:组成该表的各个属性(列)n:涉及相应属性列的完整性约束条件n:涉及一个或多个属性列的完整性约束条件例题例题 例1建立一个“学生”表Student,它由学号Sno、姓名Sname、性别Ssex、年龄Sage、所在系Sdept五个属性组成。其中学号不能为空,值是唯一的,并且姓名取值也唯一。CREATETABLEStudent(SnoCHAR(5)NOTNU

6、LLUNIQUE,SnameCHAR(20)UNIQUE,SsexCHAR(1),SageINT,SdeptCHAR(15);例题例题 (续)(续)定义基本表(续)定义基本表(续)n常用完整性约束n主码约束:PRIMARYKEYn唯一性约束:UNIQUEn非空值约束:NOTNULLn参照完整性约束:FOREIGNKEYPRIMARYKEY与UNIQUE的区别?nPrimarykey在建立的时候会默认地建立此field的索引,且此primarykey可以作为作为另外的表的foreignkey,nprimarykey跟unique的区别区别是:Primarykey一定是notnull,而uniqu

7、e则无此限制n例2建立一个“课程”表C,它由课程号Cno,课程名称Cname,教师Teacher组成,其中Cno为主码。nCREATETABLEC(nCnoCHAR(5),nCnameCHAR(10),nTeacherCHAR(10),nPrimarykey(Cno);n或像书上写的将Primarykey直接定义在属性列后。例题例题 (续)(续)n例3建立一个“学生选课”表SC,它由学号Sno、课程号Cno,修课成绩Grade组成,其中(Sno,Cno)为主码。nCREATETABLESC(nSnoCHAR(5),nCnoCHAR(3),nGradeint,nPrimarykey(Sno,Cn

8、o),nFOREIGNKEY(Sno)REFERENCESS(Sno),nFOREIGNKEY(Cno)REFERENCESC(Cno)n);基本数据类型基本数据类型n(1)数值型(DB2)nSMALLINT半字长二进制整数nINTEGER全字长二进制整数nDECIMAL(P,q)或者DEC(p,q)n压缩十进制数,共p位,其中小数点后q位nFLOAT双字长浮点数n(2)字符串型nCHARTER(n)或CHAR(n)nVARCHAR(n)n(3)时间型nDATEnTIME二、修改基本表二、修改基本表ALTERTABLEADD完整性约束DROPMODIFY;n:要修改的基本表nADD子句:增加新

9、列和新的完整性约束条件nDROP子句:删除指定的完整性约束条件nMODIFY子句:用于修改列名和数据类型例题例题 例2向Student表增加“入学时间”列,其数据类型为日期型。ALTERTABLEStudentADDS_entenceDATE;n不论基本表中原来是否已有数据,新增加的列一律为空值。 例3将年龄的数据类型改为半字长整数(假定原来为INT)。ALTERTABLEStudentALTERCOLUMNSageSMALLINT;或ALTERTABLEStudentMODIFYSageSMALLINT;n注:修改原有的列定义有可能会破坏已有数据例题例题 例4删除学生姓名必须取唯一值的约束。

10、ALTERTABLEStudentDROPUNIQUE(Sname);语句格式(续)语句格式(续)n删除属性列直接删除属性列可能引起违反完整性约束规则例:ALTERTABLEStudentDropScome;ALTERTABLEStudentDropCOLUMNSdept;(sqlserver)3.2 数数 据据 定定 义义 三、删除基本表三、删除基本表 DROPTABLE;基本表删除后,数据、表上的视图、索引都删除。有的系统如ORACLE,基本表删除后,在表上的视图往往仍然保留,但无法引用。例题例题例5删除Student表DROPTABLEStudent;3.3.3 建立与删除索引建立与删除

11、索引 n建立索引是加快查询速度的有效手段n建立索引nDBA或表的属主(即建立表的人)根据需要建立n有些DBMS自动建立以下列上的索引nPRIMARYKEYnUNIQUEn维护索引nDBMS自动完成n使用索引nDBMS自动选择是否使用索引以及使用哪些索引n在SQL86和SQL89标准中,基本表没有关键码概念,可以用索引机制来弥补。n索引属于物理存储的路径概念,而不是逻辑的概念。n在定义基本表时,还要定义索引,就把数据库的物理结构和逻辑结构混在一块了。n因此在SQL2中引入了主码(主键)的概念,用户在创建基本表时用主码子句Primarykey直接定义主码。n但至今大多数DBMS仍使用索引机制,有索

12、引创建和撤销语句,其功能仅限于查询时起作用。一、建立索引一、建立索引 n语句格式CREATEUNIQUECLUSTERINDEXON(,);n用指定要建索引的基本表名字n索引可以建立在该表的一列或多列上,各列名之间用逗号分隔n用指定索引值的排列次序,升序:ASC,降序:DESC。缺省值:ASCnUNIQUE表明此索引的每一个索引值只对应唯一的数据记录nCLUSTER表示要建立的索引是聚簇索引(P90)nCREATEUNIQUECLUSTERINDEXON(,);例题例题 例6为学生-课程数据库中的Student,Course,SC三个表建立索引。其中Student表按学号升序建唯一索引,Cou

13、rse表按课程号升序建唯一索引,SC表按学号升序和课程号降序建唯一索引。CREATEUNIQUEINDEXStusnoONStudent(Sno);CREATEUNIQUEINDEXCoucnoONCourse(Cno);CREATEUNIQUEINDEXSCnoONSC(SnoASC,CnoDESC);建立索引建立索引 (续)(续)n唯一值索引n对于已含重复值的属性列不能建UNIQUE索引n对某个列建立UNIQUE索引后,插入新记录时DBMS会自动检查新记录在该列上是否取了重复值。这相当于增加了一个UNIQUE约束建立索引建立索引 (续(续)n聚簇索引n建建立立聚聚簇簇索索引引后后,基基表表

14、中中数数据据也也需需要要按按指指定定的的聚聚簇簇属属性性值值的的升升序序或或降降序序存存放放。也也即即聚聚簇簇索索引引的的索索引引项项顺顺序序与与表表中中记记录录的的物物理理顺序一致顺序一致例:CREATECLUSTERINDEXStusnameONStudent(Sname);在在Student表的表的Sname(姓名)列上建立一个聚簇索引,而姓名)列上建立一个聚簇索引,而且且Student表中的记录表中的记录将按照将按照Sname值的升序存放值的升序存放建立索引建立索引 (续)(续)n在一个基本表上最多只能建立一个聚簇索引n聚簇索引的用途:对于某些类型的查询,可以提高查询效率n聚簇索引的适

15、用范围n很少对基表进行增删操作n很少对其中的变长列进行修改操作二、删除索引二、删除索引 DROPINDEX;n删除索引时,系统会从数据字典中删去有关该索引的描述。例7删除Student表的Stusname索引。DROPINDEXStusname;索引一经建立,就由系统来维护它,不需要用户干预。建立索引减少查询操作的时间,但如果数据增加删改频繁,系统会花费许多时间来维护索引。所以,这时需要删除一些不必要的索引。3.4 数据查询数据查询 3.4.1单表查询3.3.2连接查询3.3.3嵌套查询3.3.4集合查询3.3.5SELECT语句的一般格式数据查询语句格式数据查询语句格式概述概述 SELECT

16、ALL|DISTINCT,FROM,WHEREGROUPBYHAVINGORDERBYASC|DESC;语句格式语句格式nSELECT子句:指定要显示的属性列nFROM子句:指定查询对象(基本表或视图)nWHERE子句:指定查询条件nGROUPBY子句:对查询结果按指定列的值分组,该属性列值相等的元组为一个组。通常会在每组中作用集函数。nHAVING短语:筛选出只有满足指定条件的组nORDERBY子句:对查询结果表按指定列值的升序或降序排序 SELECTSELECT查询语句查询语句nSELECTFROMWHERE句型在关系代数中最常用的式子是下列表达式: A1,An(F(R1Rm) 这里R1、

17、Rm为关系,F是公式,A1、An为属性。针 对 上 述 表 达 式 , SQL为 此 设 计 了 SELECTFROMWHERE句型:SELECT A1,AnFROM R1,RmWHERE F 这个句型是从关系代数表达式演变来的,但WHERE子句中的条件表达式F要比关系代数中公式更灵活。示例数据库示例数据库 学生-课程数据库n学生表:Student(Sno,Sname,Ssex,Sage,Sdept)n课程表:Course(Cno,Cname,Cpno,Ccredit)n学生选课表:SC(Sno,Cno,Grade)3.4.1 单表查询单表查询 查询仅涉及一个表,是一种最简单的查询操作一、选择

18、表中的若干列二、选择表中的若干元组三、对查询结果排序四、使用集函数五、对查询结果分组SELECTSELECT语句完整的句法语句完整的句法n语句格式SELECTALL|DISTINCT,FROM,WHEREGROUPBYHAVINGORDERBYASC|DESC;查询指定列查询指定列例1查询全体学生的学号与姓名。SELECTSno,SnameFROMStudent;例2查询全体学生的姓名、学号、所在系。SELECTSname,Sno,SdeptFROMStudent;查询全部列查询全部列例3查询全体学生的详细记录。SELECTSno,Sname,Ssex,Sage,SdeptFROMStuden

19、t;或SELECT*FROMStudent;3. 查询经过计算的值查询经过计算的值 SELECT子句的为表达式n算术表达式n字符串常量n函数:n列别名n等3. 查询经过计算的值查询经过计算的值例4查全体学生的姓名及其出生年份。SELECTSname,2000-SageFROMStudent;输出结果:Sname2000-Sage-李勇1976刘晨1977王名1978张立19783. 查询经过计算的值查询经过计算的值例5查询全体学生的姓名、出生年份和所有系,要求用小写字母表示所有系名。SELECTSname,YearofBirth:,2000-Sage,ISLOWER(Sdept)FROMStu

20、dent;例题(续)例题(续)输出结果:SnameYearofBirth:2000-SageISLOWER(Sdept)-李勇YearofBirth:1976cs刘晨YearofBirth:1977is王名YearofBirth:1978ma张立YearofBirth:1977is例例5.1 使用列使用列别名别名改变查询结果的列标题改变查询结果的列标题SELECTSnameNAME,YearofBirth:BIRTH,2000-SageBIRTHDAY,ISLOWER(Sdept)DEPARTMENTFROMStudent;输出结果:NAMEBIRTHBIRTHDAYDEPARTMENT-李勇

21、YearofBirth:1976cs刘晨YearofBirth:1977is王名YearofBirth:1978ma张立YearofBirth:1977is二、选择表中的若干元组二、选择表中的若干元组 (投影优化投影优化)n消除取值重复的行n查询满足条件的元组1. 消除取值重复的行消除取值重复的行n在SELECT子句中使用DISTINCT短语假设SC表中有下列数据SnoCnoGrade-9500119295001285950013889500229095002380ALL 与与 DISTINCT 例6查询选修了课程的学生学号。(1)SELECTSnoFROMSC;或(默认ALL)SELECTA

22、LLSnoFROMSC;结果:Sno-9500195001950019500295002例题(续)例题(续)(2)SELECTDISTINCTSnoFROMSC;结果:Sno-9500195002例题(续)例题(续)n注意DISTINCT短语的作用范围是所有目标列所有目标列例:查询选修课程的各种成绩错误的写法SELECTDISTINCTCno,DISTINCTGradeFROMSC;正确的写法SELECTDISTINCTCno,GradeFROMSC;2.查询满足条件的元组查询满足条件的元组WHERE子句常用的查询条件子句常用的查询条件(1) 比较大小比较大小在WHERE子句的中使用比较运算符

23、n=,=,=,!=或,!,!,n逻辑运算符NOT+比较运算符例8查询所有年龄在20岁以下的学生姓名及其年龄。SELECTSname,SageFROMStudentWHERESage=20;(2) 确定范围确定范围n使用谓词BETWEENANDNOTBETWEENAND例10查询年龄在2023岁(包括20岁和23岁)之间的学生的姓名、系别和年龄。SELECTSname,Sdept,SageFROMStudentWHERESageBETWEEN20AND23;例题(续)例题(续)例11查询年龄不在2023岁之间的学生姓名、系别和年龄。SELECTSname,Sdept,SageFROMStuden

24、tWHERESageNOTBETWEEN20AND23;(3) 确定集合确定集合使用谓词IN,NOTIN:用逗号分隔的一组取值例12查询信息系(IS)、数学系(MA)和计算机科学系(CS)学生的姓名和性别。SELECTSname,SsexFROMStudentWHERESdeptIN(IS,MA,CS);(3) 确定集合确定集合例13查询既不是信息系、数学系,也不是计算机科学系的学生的姓名和性别。SELECTSname,SsexFROMStudentWHERESdeptNOTIN(IS,MA,CS);(4) 字符串匹配字符串匹配nNOTLIKEESCAPE:指定匹配模板匹配模板:固定字符串或含

25、通配符的字符串当匹配模板为固定字符串时,可以用=运算符取代LIKE谓词用!=或运算符取代NOTLIKE谓词通配符通配符w%(百分号)代表任意长度(长度可以为0)的字符串n例:a%b表示以a开头,以b结尾的任意长度的字符串。如acb,addgb,ab等都满足该匹配串_(下横线)代表任意单个字符n例:a_b表示以a开头,以b结尾的长度为3的任意字符串。如acb,afb等都满足该匹配串ESCAPE 短语:短语:n当用户要查询的字符串本身就含有%或_时,要使用ESCAPE短语对通配符进行转义。例题例题1)匹配模板为固定字符串例14查询学号为95001的学生的详细情况。SELECT*FROMStuden

26、tWHERESnoLIKE95001;等价于:SELECT*FROMStudentWHERESno=95001;例题(续)例题(续)2)匹配模板为含通配符的字符串例15查询所有姓刘学生的姓名、学号和性别。SELECTSname,Sno,SsexFROMStudentWHERESnameLIKE刘%;例题(续)例题(续)匹配模板为含通配符的字符串(续)例16查询姓欧阳且全名为三个汉字的学生的姓名。SELECTSnameFROMStudentWHERESnameLIKE欧阳_;例题(续)例题(续)匹配模板为含通配符的字符串(续)例17查询名字中第2个字为阳字的学生的姓名和学号。SELECTSnam

27、e,SnoFROMStudentWHERESnameLIKE_阳%;例题(续)例题(续)匹配模板为含通配符的字符串(续)例18查询所有不姓刘的学生姓名。SELECTSname,Sno,SsexFROMStudentWHERESnameNOTLIKE刘%;例题(续)例题(续)3)使用换码字符将通配符转义为普通字符例19查询DB_Design课程的课程号和学分。SELECTCno,CcreditFROMCourseWHERECnameLIKEDB_DesignESCAPE;例题(续)例题(续)使用换码字符将通配符转义为普通字符(续)例20查询以DB_开头,且倒数第3个字符为i的课程的详细情况。SE

28、LECT*FROMCourseWHERECnameLIKEDB_%i_ESCAPE;(5) 涉及空值的查询涉及空值的查询n使用谓词ISNULL或ISNOTNULLn“ISNULL”不能用“=NULL”代替,因为空值不可跟其它东西作比较。例21某些学生选修课程后没有参加考试,所以有选课记录,但没有考试成绩。查询缺少成绩的学生的学号和相应的课程号。SELECTSno,CnoFROMSCWHEREGradeISNULL;例题例题(续续) 例22查所有有成绩的学生学号和课程号。SELECTSno,CnoFROMSCWHEREGradeISNOTNULL;(6) 多重条件查询多重条件查询用逻辑运算符AN

29、D和OR来联结多个查询条件nAND的优先级高于ORn可以用括号改变优先级可用来实现多种其他谓词nNOTINnNOTBETWEENAND例题例题例23查询计算机系年龄在20岁以下的学生姓名。SELECTSnameFROMStudentWHERESdept=CSANDSage=20ANDSage=23;SELECTSELECT语句完整的句法语句完整的句法SELECTALL|DISTINCT,FROM,WHEREORDERBYASC|DESC;GROUPBYHAVING三、对查询结果排序三、对查询结果排序 使用ORDERBY子句n可以按一个或多个属性列排序n升序:ASC;降序:DESC;缺省值为升序

30、当排序列含空值时nASC:排序列为空值的元组最后显示nDESC:排序列为空值的元组最先显示对查询结果排序(续)对查询结果排序(续) 例24查询选修了3号课程的学生的学号及其成绩,查询结果按分数降序排列。SELECTSno,GradeFROMSCWHERECno=3ORDERBYGradeDESC;查询结果查询结果SnoGrade空值先显示-9501095024950079295003829501082950097595014619500255对查询结果排序(续)对查询结果排序(续) 例25查询全体学生情况,查询结果按所在系的系号升序排列,同一系中的学生按年龄降序排列。SELECT*FROMSt

31、udentORDERBYSdept,SageDESC;按系号升序排列的基础上,(同一系内)年龄降序排列四、使用集函数四、使用集函数 5类主要集函数n计数COUNT(DISTINCT|ALL*)COUNT(DISTINCT|ALL)n计算总和SUM(DISTINCT|ALL)n计算平均值AVG(DISTINCT|ALL)使用集函数(续)使用集函数(续) 求最大值MAX(DISTINCT|ALL)求最小值MIN(DISTINCT|ALL)DISTINCT短语:在计算时要取消指定列中的重复值ALL短语:不取消重复值ALL为缺省值使用集函数使用集函数 (续)(续)例26查询学生总人数。SELECTCO

32、UNT(*)FROMStudent;例27查询选修了课程的学生人数。SELECTCOUNT(DISTINCTSno)FROMSC;注:用DISTINCT以避免重复计算学生人数使用集函数使用集函数 (续)(续)例28计算1号课程的学生平均成绩。SELECTAVG(Grade)FROMSCWHERECno=1;例29查询选修1号课程的学生最高分数。SELECTMAX(Grade)FROMSCWHERECno=1;例30查询学生200215012选修课程的总学分数。SELECT SUM(Ccredit) FROM SC,Course WHERE Sno=200215012 AND SC.Cno= C

33、ourse.Cno; (此例用到后面介绍的多表连接查询)五、对查询结果分组五、对查询结果分组 使用GROUPBY子句分组细化集函数的作用对象n未对查询结果分组,集函数将作用于整个查询结果n对查询结果分组后,集函数将分别作用于每个组使用使用GROUP BY子句分组子句分组例31求各个课程号及相应的选课人数。SELECTCno,COUNT(Sno)FROMSCGROUPBYCno;结果 Cno COUNT(Sno) 1 22 2 34 3 44 4 33 5 48对查询结果分组对查询结果分组 (续)(续)nGROUPBY子句的作用对象是查询的中间结果表。n分组方法:按指定的一列或多列值分组,值相等

34、的为一组。n使用GROUPBY子句后,SELECT子句的列名列表中只能出现分组属性和集函数。使用使用HAVING短语筛选最终输出结果短语筛选最终输出结果例32查询选修了3门以上课程的学生学号。SELECTSnoFROMSCGROUPBYSnoHAVINGCOUNT(*)3;例题例题例查询有3门以上课程是90分以上的学生的学号及(90分以上的)课程数SELECT Sno, COUNT(*) FROM SC WHERE Grade=90 GROUP BY Sno HAVING COUNT(*)=3;使用使用HAVING短语筛选最终输出结果短语筛选最终输出结果n只有满足HAVING短语指定条件的组才

35、输出nHAVING短语与WHERE子句的区别:作用对象不同nWHERE子句作用于基表或视图,从中选择满足条件的元组(分组前对元组进行过滤)。nHAVING短语作用于组,从中选择满足条件的组(分组后对分组进行过滤)。SELECTSELECT语句完整的句法语句完整的句法 (1)nSELECT语句完整的句法如下: SELECT 目标表的列名或列表达式序列 FROM 基本表名和(或)视图序列 WHERE 行条件表达式 GROUP BY 列名序列 HAVING 组条件表达式 ORDER BY 列名 ASC|DESC , SELECTSELECT语句完整的句法语句完整的句法(2)(2)n整个语句的执行过程

36、如下:(1)读取FROM子句中基本表、视图的数据,执行笛卡尔积操作。(2)选取满足WHERE子句中给出的条件表达式的元组。(3)按GROUP子句中指定列的值分组,同时提取满足HAVING子句中组条件表达式的那些组。(4)按SELECT子句中给出的列名或列表达式求值输出。(5)ORDER子句对输出的目标表进行排序,按附加说明ASC升序排列,或按DESC降序排列。SELECTSELECT语句完整的句法语句完整的句法 (3)n例3.11 对教学数据库的基本表S、SC、C中数据进行查询和计算。统计每一年龄选修课程的学生人数 SELECT AGE,COUNT(DISTINCT S.S#) FROM S,

37、SC WHERE S.S#=SC.S# GROUP BY AGE; 由于要统计每一个年龄的学生人数,因此要把满足WHERE子句中条件的查询结果按年龄分组,在每一组中的学生年龄相同。此时的SELECT子句应对每一组分开进行操作,在每一组中,年龄只有一个值,统计的人数是这一组中的学生人数。SELECTSELECT语句完整的句法语句完整的句法 (4)n求基本表S中男同学的每一年龄组(超过50人)有多少人?要求查询结果按人数升序排列,人数相同按年龄降序排列。SELECT AGE,COUNT(S#)FROM SWHERE SEX=MGROUP BY AGEHAVING COUNT(*) 50ORDER

38、BY 2,AGE DESC;SELECTSELECT语句中的限定语句中的限定 (1)n SELECT子句中的规定 SELECT子句描述查询输出的表格结构,即输出值的列名或表达式。其形式如下:SELECT ALL|DISTINCT | *n 条件表达式中的算术比较操作 条件表达式中可出现算术比较运算符(,!),也可以用“BETWEEN AND ”比较运算符限定一个值的范围。n 列和基本表的改名操作SELECTSELECT语句中的限定语句中的限定 (2)n字符串的匹配操作条件表达式中字符串匹配操作符是“LIKE”。在表达式中可使用两个通配符:百分号(%):与零个或多个字符组成的字符串匹配。下划线(

39、_):与单个字符匹配。n集合的并、交、差操作 当两个子查询结果的结构完全一致时,可以让这两个子查询执行并、交、差操作。并、交、差的运算符为UNION、INTERSECT和EXCEPT。 n空值的比较操作SQL中允许列值为空,空值用保留字NULL表示。SELECTSELECT语句中的限定语句中的限定 (3)n集合的比较操作SQL提供SELECT语句的嵌套子查询机制。子查询是嵌套在另一个查询中的SELECT语句。 (1)集合成员资格的比较(2) 集合成员的算术比较(3) 空关系的测试(4) 重复元组的测试n导出表的使用 SQL2允许在FROM子句中使用子查询。如果在FROM子句中使用了子查询,那么要给子查询的结果起个表名和相应的列名。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 工作计划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号