SQL高级查询语句.ppt_第1页
SQL高级查询语句.ppt_第2页
SQL高级查询语句.ppt_第3页
SQL高级查询语句.ppt_第4页
SQL高级查询语句.ppt_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1,第七讲 SQL高级查询语句,鲁 宁 学时:2节,2,教学内容,7.1 特殊查询语句 7.2 联接查询 7.2.1 Where联接 7.2.2 JOIN联接 7.2.3 自联接 7.3 嵌套查询 7.4 查询结果输出 7.5 数据定义语言,3,教学目标及重点难点,教学目标 掌握特殊查询语句的使用方法 掌握联接查询的使用方法 掌握嵌套查询中IN关键字的使用方法 了解数据表创表语句 掌握视图的创建和使用方法 能灵活应用SQL语句解决实际问题 重点难点 联接查询、子查询的理解及应用 创表语句灵活使用,4,7.1.1 空值查询,空值判断查询条件常用来搜索某一字段值为空值的记录,可以使用IS NULL

2、或IS NOT NULL关键字来指定这种查询条件。 注:NULL值表示字段的数据值未知或不可用,它并不表示零(数字值或二进制值)、零长度的字符串或空白(字符值)。 Select * From ClassInfo Where ClassDesc is null Select * From ClassInfo Where ClassDesc is Not null,5,7.1.2 集合的并运算(Union),UNION 运算符将两个或多个 SELECT 语句的结果组合成一个结果集。使用 UNION 组合的结果集都必须满足下列条件: 具有相同的结构 字段数目相同 结果集中相应字段的数据类型必须兼容

3、UNION运算符的指定格式如下: SELECT 语句 UNION ALL SELECT 语句,6,UNION示例,-Union联接多个结果集 Select * From StudScoreInfo Where StudScore=60 And StudScore=90 And StudScore=90 And StudScore=60 And StudScore=70,7,学生各分数段等级人数,Select 优秀,Count(*) From StudScoreInfo; Where StudNo=99070470 And StudScore=90; Union All; Select 良好,C

4、ount(*) From StudScoreInfo; Where StudNo=99070470 And StudScore=80 And StudScore=70 And StudScore80; Union All; Select 不及格,Count(*) From StudScoreInfo; Where StudNo=99070470 And StudScore60,8,7.2 联接查询,当一个查询同时涉及两个以上的表时,称为联接查询。 联接查询是通过各个表之间共同属性列的关联来查询数据,数据表之间的联系是通过表的字段值来体现的 联接操作的目的就是通过加在联接字段上的条件将多个表联接

5、起来,以便从多个表中查询数据。 联接查询是关系数据库中最主要的查询,包括等值与非等值联接查询、自身联接查询、外联接查询等。 表的联接方法有两种: 方法1:表之间满足一定条件的行进行联接,此时FROM子句中指明进行联接的表名,WHERE子句指明联接的列名及其联接条件。 方法2:利用关键字JOIN进行联接。,9,7.2.1 Where联接,Select StudInfo.StudNo,StudInfo.StudName,StudInfo.ClassID,ClassInfo.ClassName From StudInfo,ClassInfo Where StudInfo.ClassID=ClassI

6、nfo.ClassID And StudInfo.StudNo in(99070470,99070401) StudInfo.StudNo in(99070470,99070401)为查询条件,而“StudInfo.ClassID=ClassInfo.ClassID为联接条件,“ClassID”为联接字段。 联接条件的一般格式为: . . 其中,比较运算符主要有:、!。 引用两个表中的列名相同的字段时必须用表名前缀限制字段来自于哪个表,10,Where联接,Select S.Studno,S.StudName,C.ClassName,SI.CourseID,SI.StudScore From

7、StudInfo S,ClassInfo C,StudScoreInfo SI Where S.Studno=SI.StudNo And C.ClassID=S.ClassID And S.StudNo=99070470,11,7.2.2 JOIN联接,具体分为以下几种: INNER JOIN :显示符合条件的记录,此为默认值; LEFT JOIN:显示符合条件的数据行以及左边表中不符合条件的数据行,此时右边数据行会以NULL来显示,此称为左联接; RIGHT JOIN:显示符合条件的数据行以及右边表中不符合条件的数据行,此时左边数据行会以NULL来显示,此称为右联接; FULL JOIN:显

8、示符合条件的数据行以及左边表和右边表中不符合条件的数据行,此时缺乏数据的数据行会以NULL来显示; 当将JOIN 关键词放于FROM子句中时,应有关键词ON与之相对应,以表明联接的条件。,12,Join联接,Select StudInfo.StudNo,StudInfo.StudName,StudInfo.ClassID,ClassInfo.ClassName From StudInfo Inner Join ClassInfo On StudInfo.ClassID=ClassInfo.ClassID Classinfo.classname, Courseinfo.courseid, Cou

9、rseinfo.coursename, Studscoreinfo.studscore; FROM classinfo INNER JOIN StudInfo; INNER JOIN studscoreinfo INNER JOIN courseinfo ; ON Courseinfo.courseid = Studscoreinfo.courseid ; ON Studinfo.studno = Studscoreinfo.studno ; ON Classinfo.classid = Studinfo.classid And StudInfo.StudNo=99070470,15,Join

10、联接,Select StudInfo.StudNo,StudInfo.StudName,StudSex,StudScoreInfo.CourseID,StudScore From StudInfo left join StudScoreInfo On StudInfo.Studno=StudScoreinfo.StudNo Select StudInfo.StudNo,StudInfo.StudName,StudSex,StudScoreInfo.CourseID,StudScore From StudInfo Right join StudScoreInfo On StudInfo.Stud

11、no=StudScoreinfo.StudNo Select StudInfo.StudNo,StudInfo.StudName,StudSex,StudScoreInfo.CourseID,StudScore From StudInfo Full join StudScoreInfo On StudInfo.Studno=StudScoreinfo.StudNo,16,7.2.3 自联接,当一个表与其自已进行联接操作时,称为表的自联接。表的自身联接主要用于同一个表中数据的比较。 Select Si.StudNo,Si.StudName,Si.StudSex From StudInfo S,S

12、tudInfo SI Where S.StudNo=99070478 And SI.StudNameS.StudName Select Si.StudNo,Si.StudName,Si.StudSex From StudInfo S,StudInfo SI Where S.StudNo=99070478 And S.StudSex=SI.StudSex,17,自联接,select * from studinfoback Select A.StudNo,A.StudName,A.StudSex,B.StudNo,B.StudName,B.Manager From StudInfoBack A,S

13、tudInfoBack B Where A.StudName=B.Manager,18,7.3 嵌套查询,在WHERE子句中包含一个形如SELECT-FROM-WHERE的查询块,此查询块称为嵌套查询或子查询,包含子查询的语句称为父查询或外部查询,子查询的嵌套层次最多可达到255层 嵌套查询在执行时由里向外处理,即先执行子查询再执行父查询,父查询要用到子查询的结果。 1. 返回一个值的子查询 当子查询的返回值只有一个时,可以使用比较运算符(=, , =, (Select Avg(StudScore) From StudScoreInfo Where StudNo=99070470),19,2.

14、返回一组值的子查询,如果子查询的返回值不止一个,而是一个集合时,则不能直接使用比较运算符,可以在比较运算符和子查询之间插入ANY或ALL。其具体含义详见以下各例。 (1)使用ANY, 含义为任意一个 Select * From StudScoreInfo Where StudScore= Any(Select StudScore From StudScoreInfo Where StudNo=99070470) ( StudNo C (15) PRIMARY KEY NOT NULL; StudName C (20) NOT NULL,; StudSex C (2) DEFAULT 男 CHE

15、CK StudSex=男 OR StudSex=女 ERROR StudSEX必须是男或女 ,; StudBirthDay D CHECK(StudBirthDay=1970-01-01,; StudScore N (5,1) ,; Level L.; StudDesc M,; Photo G ) 为续行号,字段之间用逗号隔开,31,7.5.2 修改数据表,SQL语言使用ALTER TABLE命令修改基本表的结构,增加、删除和修改字段,还可以增加、删除和修改如主索引、侯选索引、有效性规则等结构 主要有两种格式 语法一: ALTER TABLE ADD /ALTERCOLUMN ,小数位 NUL

16、L/NOT NULL CHECK ERROR DEFAULT PRIMARY KEY/UNIQUE 功能:修改基本表的结构。 ADD用于增加新列。 ALTER用于修改某列。,32,修改表结构命令2,ALTER TABLE DROPCOLUMN SET DEFAULT DROP DEFAULT SET CHECK ERROR DROP CHECK ADD PRIMARY KEY DROP PRIMARY KEY ADD UNIQUE DROP UNIQUE TAG RENAME COLUMN TO 说明 DROP用于删除列、默认值、有效性规则、主键、候选索引。 SET 用于为已有的字段设置默认值和有效性规则。 ADD 用于添加主索引和候选索引。 RENAME 用于修改表中的一个字段名。,33,修改表示例,ALTER TABLE StudInfo1; ALT

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论