第4章SQL关系数据库查询语言课件.ppt

上传人(卖家):晟晟文业 文档编号:3861182 上传时间:2022-10-19 格式:PPT 页数:56 大小:1,012.01KB
下载 相关 举报
第4章SQL关系数据库查询语言课件.ppt_第1页
第1页 / 共56页
第4章SQL关系数据库查询语言课件.ppt_第2页
第2页 / 共56页
第4章SQL关系数据库查询语言课件.ppt_第3页
第3页 / 共56页
第4章SQL关系数据库查询语言课件.ppt_第4页
第4页 / 共56页
第4章SQL关系数据库查询语言课件.ppt_第5页
第5页 / 共56页
点击查看更多>>
资源描述

1、第4章 SQL关系数据库查询语言 4.1 SQL语言的特点语言的特点 v SQL是英文(是英文(Structured Query Language)的缩写,意思)的缩写,意思为为结构化查询语言结构化查询语言,是对存放在计算机数据库中的数据进行,是对存放在计算机数据库中的数据进行组织、管理和查询的一种工具,是一种对关系数据库操作的组织、管理和查询的一种工具,是一种对关系数据库操作的语言。语言。v 需要掌握的需要掌握的SQL语句:语句:(1)数据查询)数据查询 SELECT(2)数据定义)数据定义 CREATE、DROP、ALTER(3)数据修改)数据修改 INSERT、UPDATE、DELETE

2、4.2 SQL的查询功能的查询功能 v SQL语法格式语法格式SELECT ALL|DISTINCT TOP|PERCENT,AS FROM,WHERE GROUP BY HAVING ORDER BY ASC|DESCINTO ARRAY|INTO CURSOR|INTO DBF|TABLE|TO FILE ADDITIVE|TO PRINTERPROMPT4.2.2 简单查询简单查询v 简单查询是指对简单查询是指对单表单表的简单查询。的简单查询。v 利用利用WHERE语句筛选出符合条件的记录;语句筛选出符合条件的记录;v 利用利用AS语句显示出虚拟字段。语句显示出虚拟字段。v 格式格式SE

3、LECT FROM SELECT FROM WHERE SELECT AS FROM 4.2.2 简单查询简单查询1.显示部分或全部字段显示部分或全部字段【例】显示教师表中所有人的姓名和性别信息【例】显示教师表中所有人的姓名和性别信息SELECT FROM姓名姓名,性别性别教师教师【例】显示教师表中所有信息【例】显示教师表中所有信息SELECT FROM教师号教师号,姓名姓名,性别性别,职称职称,党员否党员否教师教师*【例】显示教师表中男教师的姓名、职称和性别信息。【例】显示教师表中男教师的姓名、职称和性别信息。SELECT 姓名姓名,职称职称,性别性别 FROM 教师教师 WHERE 性别性

4、别=男男【例】显示学生表中入学成绩小于【例】显示学生表中入学成绩小于500的日语生或英语生的信息。的日语生或英语生的信息。SELECT*FROM 学生学生;WHERE 入学成绩入学成绩500 AND 专业专业=日语日语 OR 专业专业=英语英语SELECT*FROM 学生学生;WHERE 入学成绩入学成绩500 AND(专业专业=日语日语 OR 专业专业=英语英语)SELECT*FROM 学生学生 WHERE(入学成绩入学成绩500 AND 专业专业=日语日语);OR(入学成绩入学成绩500 AND 专业专业=英语英语)注意注意Where后面条件的写法后面条件的写法=DATE()YEAR()虚

5、拟字段虚拟字段2.查询结果可以是通过某一字段或几个字段计算得到的虚拟字段。查询结果可以是通过某一字段或几个字段计算得到的虚拟字段。【例】显示学生表中所有人的学号、姓名和【例】显示学生表中所有人的学号、姓名和年龄年龄信息。信息。年龄年龄=?2007年出生的人的年龄年出生的人的年龄=2010-2007=2年龄年龄=现在年份现在年份-出生年份出生年份-YEAR(出生年月出生年月)SELECT AS FROM SELECT 学号学号,姓名姓名,年龄年龄FROM 学生学生 YEAR(DATE()-YEAR(出生年月出生年月)AS 年龄年龄;注意:注意:WHERE语句后不能使用虚拟字段进行条件限定。语句后

6、不能使用虚拟字段进行条件限定。【例】显示学生表中年龄大于【例】显示学生表中年龄大于19岁女生的学号、姓名和岁女生的学号、姓名和年龄年龄信息。信息。SELECT 学号学号,姓名姓名,YEAR(DATE()-YEAR(出生年月出生年月)AS 年龄年龄;FROM 学生学生 WHERE 性别性别=“女女”AND 年龄年龄19 SELECT 学号学号,姓名姓名,YEAR(DATE()-YEAR(出生年月出生年月)年龄年龄 FROM 学生学生;WHERE 性别性别=女女 AND YEAR(DATE()-YEAR(出生年月出生年月)19去掉重复记录去掉重复记录3.去掉查询结果中的重复记录去掉查询结果中的重复

7、记录【例】显示学生表中都有哪些专业。【例】显示学生表中都有哪些专业。SELECT DISTINCT 专业专业 FROM 学生学生SELECT 专业专业 FROM 学生学生利用利用DISTINCT去掉查询结果中的重复记录。去掉查询结果中的重复记录。4.2.3 联接查询(简单联接)联接查询(简单联接)1.简单联接查询简单联接查询【例】显示学生的学号、姓名和成绩的信息。【例】显示学生的学号、姓名和成绩的信息。SELECT 学生学生.学号学号,学生学生.姓名姓名,选课选课.成绩成绩 FROM 学生学生,选课选课;在一个数据库中多个表之间一般都存在着某些联系,在一在一个数据库中多个表之间一般都存在着某些

8、联系,在一个查询语句中如果同时涉及到两个或两个以上的表时,这种查个查询语句中如果同时涉及到两个或两个以上的表时,这种查询称之为联接查询(也称为多表查询)。询称之为联接查询(也称为多表查询)。v WHERE后是联接条件后是联接条件,通常表示为两个表中共有字段相等。通常表示为两个表中共有字段相等。v 当不同表中含有当不同表中含有相同的字段名相同的字段名时,必须指明是哪个表的字段。时,必须指明是哪个表的字段。WHERE 学生学生.学号学号=选课选课.学号学号4.2.3 联接查询(简单联接)联接查询(简单联接)【例】显示学生的学号、姓名、课程名和成绩的信息。【例】显示学生的学号、姓名、课程名和成绩的信

9、息。SELECT 学生学生.学号学号,姓名姓名,课程名课程名,成绩成绩 FROM 学生学生,选课选课,课程课程;WHERE 学生学生.学号学号=选课选课.学号学号 AND 课程课程.课程号课程号=选课选课.课程号课程号超联接查询超联接查询3.超联接查询超联接查询SELECTFROM INNER|LEFT|RIGHT|FULL JOIN ON v INNER JOIN或或JOIN为内联接(等值联接)为内联接(等值联接)v LEFT JOIN 为左联接为左联接v RIGHT JOIN 为右联接为右联接v FULL JOIN 为全联接为全联接v ON 指明联接条件指明联接条件内联接内联接v SELE

10、CTFROM INNER JOIN ON v INNER JOIN 或或JOIN为内联接,也称为等值联接。为内联接,也称为等值联接。v 按照条件进行联接,按照条件进行联接,不满足条件的记录不会出现在查询结果中不满足条件的记录不会出现在查询结果中。【例】显示学生的学号、姓名和成绩的信息。【例】显示学生的学号、姓名和成绩的信息。SELECT 学生学生.学号学号,姓名姓名,成绩成绩;SELECT 学生学生.学号学号,姓名姓名,成绩成绩 FROM 学生学生,选课选课;WHERE 学生学生.学号学号=选课选课.学号学号FROM 学生学生 JOIN 选课选课 ON 学生学生.学号学号=选课选课.学号学号简

11、单联接简单联接=内联接内联接内联接内联接SELECT 学生学生.学号学号,姓名姓名,课程名课程名,成绩成绩;FROM 学生学生 JOIN 选课选课 JOIN 课程课程;ON 选课选课.课程号课程号=课程课程.课程号课程号 ON 学生学生.学号学号=选课选课.学号学号v注意:多个表用注意:多个表用“JOIN”语句联接的顺序要与联接条件语句联接的顺序要与联接条件“ON”的顺序恰好相反。的顺序恰好相反。【例】显示学生的学号、姓名、课程名和成绩的信息。【例】显示学生的学号、姓名、课程名和成绩的信息。SELECT*FROM A JOIN B JOIN C ON B.*=C.*ON A.*=B.*左联接左

12、联接v LEFT JOIN 为左联接,除按照联接条件进行联接外,为左联接,除按照联接条件进行联接外,第一个表不满足条件的记录也会出现在查询结果中第一个表不满足条件的记录也会出现在查询结果中。【例】左联接查询【例】左联接查询SELECT 学生学生.学号学号,姓名姓名,成绩成绩;FROM 学生学生 LEFT JOIN 选课选课 ON 学生学生.学号学号=选课选课.学号学号右联接右联接v RIGHT JOIN 为右联接,除按照联接条件进行联接外,为右联接,除按照联接条件进行联接外,最最后一个表不满足条件的记录也会出现在查询结果中后一个表不满足条件的记录也会出现在查询结果中。【例】右联接查询【例】右联

13、接查询SELECT 学号学号,课程名课程名,成绩成绩;FROM 选课选课 RIGHT JOIN 课程课程 ON 选课选课.课程号课程号=课程课程.课程号课程号全联接全联接v FULL JOIN 为全联接,除按照联接条件进行联接外,为全联接,除按照联接条件进行联接外,两个表中不满足条件的记录也会出现在查询结果中两个表中不满足条件的记录也会出现在查询结果中。全联接查询的结果是全联接查询的结果是左联接左联接查查询和询和右联接右联接查询结果的查询结果的并集并集。【例】全联接查询【例】全联接查询SELECT 学生学生.学号学号,姓名姓名,课程名课程名,成绩成绩;FROM 学生学生 FULL JOIN 选

14、课选课 FULL JOIN 课程课程;ON 选课选课.课程号课程号=课程课程.课程号课程号 ON 学生学生.学号学号=选课选课.学号学号别名别名v 在联接操作中,经常需要使用关系名用前缀,有时显得很麻烦。在联接操作中,经常需要使用关系名用前缀,有时显得很麻烦。【例】显示学生的学号、姓名、课程名和成绩的信息。【例】显示学生的学号、姓名、课程名和成绩的信息。SELECT 学生学生.学号学号,姓名姓名,课程名课程名,成绩成绩 FROM 学生学生,选课选课,课程课程;WHERE 学生学生.学号学号=选课选课.学号学号 AND 课程课程.课程号课程号=选课选课.课程号课程号v 在联接操作中,可在在联接操

15、作中,可在FROM语句中定义别名来代替关系名。语句中定义别名来代替关系名。【格式】【格式】SELECT A.学号学号,姓名姓名,课程名课程名,成绩成绩;FROM 学生学生 A,选课选课 B,课程课程 C;WHERE A.学号学号=B.学号学号 AND C.课程号课程号=B.课程号课程号v 别名并不是必须的,但在关系的自联接操作中,就必不可少了。别名并不是必须的,但在关系的自联接操作中,就必不可少了。SELECT A.课程名课程名,B.课程名课程名 FROM 课程表课程表 A,课程表课程表 B;WHERE B.课程号课程号=A.先行课先行课自联接查询自联接查询2.自联接查询自联接查询【例】查询所

16、有课程的先行课信息。【例】查询所有课程的先行课信息。n当一个表自己与自己联接时,可以当一个表自己与自己联接时,可以给表取两个别名给表取两个别名n别名为:课程表别名为:课程表 A和课程表和课程表 BA BSELECT A.课程名课程名,的先行课是的先行课是,B.课程名课程名;FROM 课程表课程表 A,课程表课程表 B WHERE B.课程号课程号=A.先行课先行课SELECT A.课程名课程名,的先行课是的先行课是 AS 先行课程先行课程,B.课程名课程名;FROM 课程表课程表 A,课程表课程表 B WHERE B.课程号课程号=A.先行课先行课A.课程号课程号=B.先行课先行课4.2.4

17、嵌套查询嵌套查询v 当查询的条件依赖于另一个查询的结果时,就要在查询条当查询的条件依赖于另一个查询的结果时,就要在查询条件件WHERE短语中嵌套一个子查询。短语中嵌套一个子查询。【例】查询与王志伟同一年出生的学生的学号、姓名和出生日期。【例】查询与王志伟同一年出生的学生的学号、姓名和出生日期。SELECT 学号学号,姓名姓名,出生日期出生日期 FROM 学生学生 WHERE(SELECTYEAR(出生日期出生日期)=;姓名姓名=王志伟王志伟)YEAR(出生日期出生日期)FROM 学生学生 WHERE1988量词查询量词查询【例】查询大于等于【例】查询大于等于“07010002”的所有科成绩的学

18、号和课程号。的所有科成绩的学号和课程号。SELECT 学号学号,课程号课程号 FROM 选课选课 WHERE 成绩成绩=(SELECT 成绩成绩 FROM 选课选课 WHERE 学号学号=07010002)11ALL注意:注意:n在使用在使用、=、!=等比较运算符时,子查询的结等比较运算符时,子查询的结果只能是一条记录或一个字段(即唯一值)。果只能是一条记录或一个字段(即唯一值)。n当子查询结果是多条记录或多个字段时当子查询结果是多条记录或多个字段时,应使用带应使用带有量词(有量词(ANY、SOME、ALL)的查询语句。)的查询语句。ANY9095、85查询就是依次查找满足字段(列)上条件的所

19、有记录查询就是依次查找满足字段(列)上条件的所有记录谓词查询谓词查询v NOT IN和和NOT EXISTS谓词运算谓词运算 IN和和NOT IN表示某个表示某个字段值字段值是否在子查询中出现过。是否在子查询中出现过。【例】查询选修了【例】查询选修了“C001”或或“C004”课程的学生的学号。课程的学生的学号。SELECT 学号学号 FROM 选课选课 WHERE 课程号课程号=C001 OR 课程号课程号=C004SELECT 学号学号 FROM 选课选课 WHERE 课程号课程号 IN(C001,C004)SELECT 学号学号 FROM 选课选课 WHERE 课程号课程号=C001 A

20、ND 课程号课程号=C004SELECT 学号学号 FROM 选课选课 WHERE 课程号课程号=C001 AND;学号学号 IN(SELECT 学号学号 FROM 选课选课 WHERE 课程号课程号=C004)【例】查询同时选修了【例】查询同时选修了“C001”和和“C004”课程的学生的学号。课程的学生的学号。学号学号=(SELECT)?C001070100010701000207010003C004070100010701000507010006谓词查询谓词查询EXISTS和和NOT EXISTS:子查询中是否有结果返回子查询中是否有结果返回(是否存在子查询的结果是否存在子查询的结果)。

21、【例】查询没有选修任何一门课的学生信息。【例】查询没有选修任何一门课的学生信息。SELECT*FROM 学生学生 WHERE NOT EXISTS;(SELECT*FROM 选课选课 WHERE 学号学号=学生学生.学号学号)注意:注意:NOT EXISTS前前没有相应的字段名没有相应的字段名。谓词查询谓词查询【例】查询至少选修一门课的学生信息。【例】查询至少选修一门课的学生信息。SELECT*FROM 学生学生 WHERE EXISTS;(SELECT*FROM 选课选课 WHERE 学号学号=学生学生.学号学号)EXISTS等同于等同于简单联接简单联接SELECT DISTINCT 学生学

22、生.学号学号,姓名姓名 FROM 学生学生,选课选课;WHERE 学生学生.学号学号=选课选课.学号学号NOTEXISTS与与NOTIN的区别的区别两者的区别两者的区别:v NOTEXISTS:指定一个子查询,检测最终结果中是否存在子查询的结果。指定一个子查询,检测最终结果中是否存在子查询的结果。子查询子查询:根据根据两个表的关系两个表的关系进行查询进行查询,可以查询可以查询多个字段多个字段 如如:NOT EXISTS(SELECT*FROM 选课选课 WHERE 学号学号=学生学生.学号学号)NOTEXISTS前前没有没有字段名字段名v NOTIN:确定给定的值是否与子查询或列表中的值相匹配

23、。确定给定的值是否与子查询或列表中的值相匹配。子查询子查询:只对表中的只对表中的某个字段某个字段进行查询进行查询,如如:学号学号 IN(SELECT 学号学号 FROM 选课选课 WHERE 课程号课程号=C004)NOT IN 前必须前必须有有字段名字段名4.2.5 几个特殊的运算符几个特殊的运算符 vNOT BETWEENAND 查询的值介于什么范围之内查询的值介于什么范围之内(小数在前小数在前,大数在后大数在后);【例】查询入学成绩在【例】查询入学成绩在500到到520之间的学生信息。之间的学生信息。SELECT*FROM 学生学生 WHERE SELECT*FROM 学生学生 WHER

24、E 入学成绩入学成绩 BETWEEN 500 AND 520入学成绩入学成绩=500 AND 入学成绩入学成绩=520【例】查询入学成绩小于【例】查询入学成绩小于500或大于或大于520的学生信息。的学生信息。SELECT*FROM 学生学生 WHERE 入学成绩入学成绩 NOT BETWEEN 500 AND 520vNOT LIKE 对查询内容进行字符串匹配;对查询内容进行字符串匹配;通配符通配符%(百分号)表示任意长度的字符串(百分号)表示任意长度的字符串;通配符通配符 _(下划线)表示任意单个字符(下划线)表示任意单个字符;查询汉字时查询汉字时,_表示一个汉字表示一个汉字;特殊运算符特

25、殊运算符【例】查询学生表中所有姓王的学生信息。【例】查询学生表中所有姓王的学生信息。SELECT*FROM 学生学生 WHERE 姓名姓名 LIKE 王王%【例】查询课程表中所有课程名中没有【例】查询课程表中所有课程名中没有”大学大学”的信息。的信息。SELECT*FROM 课程课程 WHERE 课程名课程名 NOT LIKE%大学大学%vIS NOT NULL 空值查询空值查询。特殊运算符特殊运算符【例】【例】查询课程查询课程1表中有哪些课程还没有选定老师来上课。表中有哪些课程还没有选定老师来上课。SELECT*FROM 课程课程1 WHERE 教师号教师号 IS NULL注意注意:空值不是

26、一个确定的值空值不是一个确定的值,所以不能用所以不能用=NULL进行比较。进行比较。4.2.6 排序排序【格式】【格式】ORDER BY|ASC|DESC ,|ASC|DESCv 对对最终查询结果最终查询结果中的某些字段中的某些字段(或虚拟字段或虚拟字段)进行排序,不能在子查询中使用。进行排序,不能在子查询中使用。v ASC为升序,为升序,DESC为降序,默认为升序排列。为降序,默认为升序排列。v ORDER BY语句不能按某个表达式的运算结果进行排序。语句不能按某个表达式的运算结果进行排序。【例】查询国际贸易专业的学生信息,查询结果按入学成绩升序排列。【例】查询国际贸易专业的学生信息,查询结

27、果按入学成绩升序排列。SELECT*FROM 学生学生WHERE 专业专业=国际贸易国际贸易ORDER BY 入学成绩入学成绩【例】查询国际贸易专业的学生信息,查询结果按性别降序、入学成绩升序排列。【例】查询国际贸易专业的学生信息,查询结果按性别降序、入学成绩升序排列。SELECT*FROM 学生学生 WHERE 专业专业=“外语外语 ORDER BY 性别性别 DESC,入学成绩入学成绩SELECT*FROM 学生学生 ORDER BY(YEAR(DATE()-YEAR(出生年月出生年月)6SELECT 学号学号,入学成绩入学成绩 FROM 学生学生 WHERE 专业专业=国际贸易国际贸易

28、24.2.6 排序排序【格式】【格式】ORDER BY|ASC|DESC ,|ASC|DESCv 对于对于空值空值排序,升序时空值记录在最前显示,降序时在最后显示。排序,升序时空值记录在最前显示,降序时在最后显示。SELECT*FROM 学生学生 ORDER BY 入学成绩入学成绩SELECT*FROM 学生学生 ORDER BY 入学成绩入学成绩 DESC4.2.6 排序排序【格式】【格式】SELECT TOPPERCENT FROM ORDER BYASC|DESCv 满足条件的前几个满足条件的前几个前百分之几的前百分之几的记录。记录。TOP要与要与ORDER BY同时使用。同时使用。v

29、TOP:1N32767v TOP PERCENT:0.01N99.99SELECT*TOP 4 FROM 学生学生1 ORDER BY 入学成绩入学成绩SELECT*TOP 30 PERCENT FROM 学生学生1 ORDER BY 入学成绩入学成绩【例】查询入学成绩最高的【例】查询入学成绩最高的4个人的信息。个人的信息。DESC【例】查询入学成绩最低的那【例】查询入学成绩最低的那30%学生的信息。学生的信息。4.2.7 计算查询计算查询SQL不仅具有一般的检索能力,而且还有计算方式的检索。不仅具有一般的检索能力,而且还有计算方式的检索。vCOUNT()统计记录的个数。统计记录的个数。vSU

30、M()计算某一列值的总和计算某一列值的总和(此列必须是数值型此列必须是数值型)。vAVG()计算某一列值的平均值计算某一列值的平均值(此列必须是数值型此列必须是数值型)。vMAX()计算某一列值的最大值。计算某一列值的最大值。vMIN()计算某一列值的最小值。计算某一列值的最小值。4.2.7 计算查询计算查询【例】查询选修了课程的学生人数。【例】查询选修了课程的学生人数。SELECT COUNT(学号学号)FROM 选课选课DISTINCT【说明】除非对关系中记录的个数进行计数,否则都应该使用【说明】除非对关系中记录的个数进行计数,否则都应该使用DISTINCTSELECT COUNT(*)F

31、ROM 选课选课【例】查询所有成绩之和。【例】查询所有成绩之和。SELECT SUM(成绩成绩)FROM 选课选课SUM(*)SELECT SUM(DISTINCT成绩成绩)FROM 选课选课4.2.7 计算查询计算查询【例】查询国际贸易专业最高的入学成绩。【例】查询国际贸易专业最高的入学成绩。SELECT MAX(入学成绩入学成绩)FROM 学生学生 WHERE 专业专业=国际贸易国际贸易【例】查询日语专业的平均入学成绩。【例】查询日语专业的平均入学成绩。SELECT AVG(入学成绩入学成绩)FROM 学生学生 WHERE 专业专业=日语日语4.2.7 计算查询计算查询【例】查询大于等于【

32、例】查询大于等于“07010001”的所有科成绩的学号。的所有科成绩的学号。SELECT 学号学号FROM 选课选课 WHERE 成绩成绩=(SELECT 成绩成绩 FROM 选课选课 WHERE 学号学号=07010001)ALL等价于:等价于:(SELECT MAX(成绩成绩)FROM 选课选课 WHERE 学号学号=07010001)SELECT 学号学号FROM 选课选课 WHERE 成绩成绩=4.2.7 计算查询计算查询【例】查询课程名为【例】查询课程名为“大学计算基础大学计算基础”的所有成绩之和。的所有成绩之和。SELE SUM(成绩成绩)FROM 选课选课 WHERE 课程号;课

33、程号;(SELECT 课程号课程号 FROM 课程课程 WHERE 课程名课程名=大学计算机基础大学计算机基础)【例】查询课程名中带有【例】查询课程名中带有“大学大学”的所有成绩之和。的所有成绩之和。(SELECT 课程号课程号 FROM 课程课程 WHERE 课程名课程名SELE SUM(成绩成绩)FROM 选课选课 WHERE 课程号;课程号;LIKE%大学大学%)IN IN 4.2.8 分组查询分组查询【格式】【格式】GROUP BY,字段字段2,虚拟字段虚拟字段 HAVINGv GROUP BY语句把记录分组,并分别对每组进行计算。语句把记录分组,并分别对每组进行计算。v HAVING

34、语句对每组的记录限定条件,语句对每组的记录限定条件,WHERE是对所有的记录限定条件。是对所有的记录限定条件。v WHERE限定记录限定记录GROUP BY进行分组进行分组HAVING限定分组限定分组【例】求每个专业的平均入学成绩。【例】求每个专业的平均入学成绩。SELECT 专业专业,AVG(入学成绩入学成绩)FROM 学生学生 GROUP BY 专业专业【例】求每个专业的男女平均入学成绩。【例】求每个专业的男女平均入学成绩。SELECT 专业专业,性别性别,AVG(入学成绩入学成绩)FROM 学生学生 GROUP BY 专业专业,性别性别4.2.8 分组查询分组查询SELECT 性别性别,

35、专业专业,AVG(入学成绩入学成绩)FROM 学生学生;【例】求所有男生各专业的平均入学成绩。【例】求所有男生各专业的平均入学成绩。WHERE 性别性别=男男 GROUP BY 专业专业SELECT 专业专业,AVG(入学成绩入学成绩)FROM 学生学生;WHERE 性别性别=“男男”GROUP BY 专业专业 HAVING COUNT(*)=2SELECT 学号学号,AVG(成绩成绩)AS 平均成绩平均成绩 FROM 选课选课【例】查询选修了两门以上课程的学生平均成绩等信息。【例】查询选修了两门以上课程的学生平均成绩等信息。HAVING COUNT(*)=2GROUP BY 学号学号4.2.

36、9 集合的并运算集合的并运算vUNION:并运算并运算v 把两个查询结果合成一个结果把两个查询结果合成一个结果v 为了完成并运算,两个查询的结果要求具有相同的字段数,为了完成并运算,两个查询的结果要求具有相同的字段数,并且对应字段的数据类型和取值范围应该一致。并且对应字段的数据类型和取值范围应该一致。【例】查询选修了【例】查询选修了C001或或C007这两课程的学生信息。这两课程的学生信息。SELECT*FROM 选课选课 WHERE 课程号课程号=C001;UNION;SELECT*FROM 选课选课 WHERE 课程号课程号=C0074.2.10 查询去向查询去向v 默认情况下默认情况下,

37、查询结果显示在查询窗口中,如果想保存查查询结果显示在查询窗口中,如果想保存查询结果,应该使用询结果,应该使用INTO语句。语句。v 将结果存放在变量(将结果存放在变量(数组数组)中:)中:INTO ARRAY SELE*FROM 员工表员工表 WHERE 性别性别=女女 SELE*FROM 员工表员工表 WHERE 性别性别=女女 INTO ARRAY aaaa(1,1)aa(1,2)aa(1,3)aa(1,4)aa(1,5)aa(1,6)aa(1,7)“00001002”“王晓丽王晓丽”“女女”1969/02/03.T.“0003”1aa(4,7)4.2.10 查询去向查询去向v 将结果存放

38、在临时表中:将结果存放在临时表中:INTO CURSORSELE*FROM 学生学生 INTO CURSOR cc【说明】【说明】临时表自动打开,是一个只读的表文件。临时表自动打开,是一个只读的表文件。程序关闭后该表自动删除。程序关闭后该表自动删除。表名后不能写文件扩展名表名后不能写文件扩展名.DBF。SELE*FROM 学生学生 INTO CURSOR cc.DBF SELE COUNT(*)FROM 员工表员工表 INTO ARRAY bbbb(1)10SELE COUNT(*)FROM 员工表员工表 INTO ARRAY bb(1,1)【例】统计员工的个数,并存放到数组【例】统计员工的个

39、数,并存放到数组BB中。中。4.2.10 查询去向查询去向v 将结果存放在永久表中:将结果存放在永久表中:INTO DBF|TABLE SELE*FROM 学生学生 INTO DBF dd.DBF【说明】【说明】表文件自动打开。表文件自动打开。扩展名扩展名.DBF可以省略。可以省略。v 将结果存放在文本文件中:将结果存放在文本文件中:TO FILE SELE*FROM 学生学生 TO FILE ee.txt【说明】【说明】有有ADDITIVE,结果追加到文件尾部,否则将覆盖原文件。,结果追加到文件尾部,否则将覆盖原文件。扩展名扩展名.TXT可以省略。可以省略。SELE*FROM 学生学生 IN

40、TO DBF dd TO FILE ee练习:基本操作练习:基本操作71.3SELECT DISTINCT*FROM TABA INTO TABLE TABC 注意:注意:SELECT INTO TABLE具有复制的功能具有复制的功能练习:简单应用练习:简单应用36.1select distinct 学号学号 from score1 into table tempselect count(*)as 学生人数学生人数 from temp into table new_tableselect count(distinct 学号学号)as 学生人数学生人数 from score1 练习:基本操作练习

41、:基本操作65.4 SELECT 顾客号顾客号,顾客点菜表顾客点菜表.菜编号菜编号,菜名菜名,单价单价,数量数量;FROM 顾客点菜表顾客点菜表 JOIN 菜单表菜单表;ON 顾客点菜表顾客点菜表.菜编号菜编号=菜单表菜单表.菜编号菜编号;WHERE 单价单价=40;ORDER BY 顾客点菜表顾客点菜表.菜编号菜编号 DESC;INTO TABLE taba练习练习select year(出生日期出生日期)as 年份年份,count(*)as 人数人数;from customers group by 年份年份 order by 年份年份;into dbf tableone简单应用简单应用50

42、.2SELECT 课程名称课程名称 FROM course,score;WHERE course.课程编号课程编号=score.课程编号课程编号 AND 成绩成绩60);TO FILE new SELECT 课程名称课程名称 FROM course WHERE 课程编号课程编号 IN;(SELECT 课程编号课程编号 FROM score WHERE 成绩成绩=5;INTO DBF STU_TEMP 简单应用简单应用18.1SELECT*FROM orders ORDER BY 金额金额 WHERE;职工号职工号+str(金额金额)IN(SELECT 职工号职工号+str(MAX(金额金额);

43、FROM orders GROUP BY 职工号职工号)INTO TABLE results 简单应用简单应用40.1SELECT 姓名姓名 FROM 学生学生 WHERE 学号学号 IN(SELECT 学号学号 FROM 选课选课;WHERE 成绩成绩=70 GROUP BY 学号学号 HAVING COUNT(*)=3);ORDER BY 姓名姓名 INTO TABLE RESULTS 简单应用简单应用24.1 SELECT Order_detail.*;FROM customer JOIN order_list JOIN order_detail;ON Order_list.订单号订单号

44、=Order_detail.订单号订单号;ON Customer.客户号客户号=Order_list.客户号客户号;WHERE Customer.客户名客户名=三益贸易公司三益贸易公司;ORDER BY Order_detail.订单号订单号,Order_detail.单价单价 DESC;INTO TABLE results.dbf简单应用简单应用15select 外汇汇率外汇汇率.*,外汇代码外汇代码.外币代码外币代码 as 币种币种1代码代码 from 外汇汇率外汇汇率,外汇代码外汇代码;where 外汇汇率外汇汇率.币种币种1=外汇代码外汇代码.外币名称外币名称 into dbf t1select 外汇汇率外汇汇率.*,外汇代码外汇代码.外币代码外币代码 as 币种币种2代码代码 from 外汇汇率外汇汇率,外汇代码外汇代码;where 外汇汇率外汇汇率.币种币种2=外汇代码外汇代码.外币名称外币名称 into dbf t2select 币种币种1代码代码,币种币种2代码代码,t1.买入价买入价,t1.卖出价卖出价 from t1,t2;where t1.币种币种1=t2.币种币种1 and t1.币种币种2=t2.币种币种2 into dbf t3use rateappend from t3 into dbf rate?

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(第4章SQL关系数据库查询语言课件.ppt)为本站会员(晟晟文业)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|