数据库技术与应用第06章.ppt
《数据库技术与应用第06章.ppt》由会员分享,可在线阅读,更多相关《数据库技术与应用第06章.ppt(54页珍藏版)》请在三一办公上搜索。
1、第6章 查询管理 本章导读 查询管理主要介绍如何从数据库中使用SELECT语句查询数据的方法。本章详细介绍了SELECT语句的条件子句、排序子句和分组子句,实现了数据的排序,分组汇总。,6.1 SELECT查询语句,6.1.1 SELECT语句的执行窗口,方法一:使用查询设计器,方法二:使用SQL编辑器,6.1 SELECT查询语句,1SELECT-FROM-WHERE句型,1)格式SELECT INTO FROM(或视图序列)WHERE 2)功能“”指定要选择的属性或表达式,子句“INTO”将查询结果存放到指定新表“FROM(或视图序列)”指定数据来源表“WHERE”指定查询出的记录行需满足
2、的条件,6.1.2 简单查询,2简单查询示例,6.1.2 简单查询,1)选择指定的属性列,【例6.1】查询所有学生可选的课程信息。SELECT*FROM C-“*”表示选择当前表的所有属性列【例6.2】查询数据库studentcourse学生基本信息表s中学生的学号,姓名,所在系。SELECT 学号,姓名,系 FROM S2)消除结果集中的重复行格式SELECT DISTINCT 属性列表【例6.3】查询所有被选修的课程。SELECT DISTINCT 课程号 FROM SC,2简单查询示例,6.1.2 简单查询,3)设置属性列的别名,【例6.4】查询表s的学号和姓名信息,其中设置学号的别名为
3、xh,设置姓名的别名为xmSELECT 学号 AS xh,姓名 AS xm FROM S或SELECT 学号 AS xh,姓名 AS xm FROM S或SELECT 学号 AS xh,姓名 AS xm FROM S或SELECT xh=学号,xm=姓名 FROM S,2简单查询示例,6.1.2 简单查询,【例6.5】列出表S中学生的学号和出生年份情况。SELECT 学号,出生年份=year(出生日期)FROM s 或SELECT 学号,year(出生日期)as 出生年份 FROM s 5)通过TOP子句限制结果集输出的行数(1)命令格式SELECT TOP n PERCENT 属性列表(2)
4、功能 n是为正整数,如果指定PERCENT关键字,则返回前百分之n条记录(向上取整),n必须介于0到100之间的正整数。比如“SELECT TOP 3”表示输出查询结果集的前3行,“SELECT TOP 3 PERCENT”表示输出查询结果集的前3%记录行。,4)使用查询表达式查询语句SELECT可直接查询表达式的值。,2简单查询示例,6.1.2 简单查询,6)INTO子句的使用【例6.8】将课程成绩70分以下的同学的成绩提高5分,然后把结果存储到新数据表“最新成绩”中。SELECT 成绩+5 AS 最新成绩 INTO 最新成绩 FROM sc WHERE 成绩70【例6.9】求管理信息系学生
5、的详细信息,并将这些信息另存到数据表“管理信息系”中。SELECT*INTO 管理信息系 FROM S WHERE 系=管理信息系,【例6.10】在基本表S中检索1978-01-06出生的学生情况。SELECT*FROM s WHERE 出生日期=1978-01-06【例6.11】在基本表S中检索1978年及以后出生的学生情况。SELECT*FROM s WHERE year(出生日期)=1978或SELECT*FROM s WHERE year(出生日期)!1985-01-05或SELECT*FROM s WHERE 出生日期1985.01.05,6.1.3 表达式运算符,1)比较运算符,【
6、例6.13】在基本表S中检索1980-04-15以前出生的学生情况。SELECT*FROM s WHERE 出生日期4/15/1980或SELECT*FROM s WHERE 出生日期19800415【例6.14】列出表S中管理信息系年龄小于28岁的学生的学号和出生年份情况。SELECT 学号,year(出生日期)as 出生年份 FROM s WHERE 系=管理信息系 and(year(getdate()-year(出生日期)28,1)比较运算符,6.1.3 表达式运算符,(1)字符串比较运算符“LIKE”格式如下:s NOT LIKE p ESCAPE通配符字符【例6.15】在表S中查询管
7、理信息系学生的姓名。SELECT 姓名 as 姓名,系 as 所在院系 FROM S WHERE 系 LIKE 管理信息系【例6.16】查询陈老师所教的课程信息。SELECT*FROM c WHERE 教师 LIKE 陈%,6.1.3 表达式运算符,2)字符串运算符,【例6.17】在基本表S中检索出生日期包含13的学生情况。SELECT*FROM s WHERE 出生日期 like%13%【例6.18】如果要找出其姓名中不含有“红”的学生情况,则在LIKE前增加NOT。SELECT*FROM s WHERE 姓名 NOT LIKE%红%【例6.19】在基本表S中检索以“王”姓打头,名字由1个汉
8、字组成的学生姓名。SELECT 姓名 FROM s WHERE 姓名 LIKE 王_【例6.20】在学生基本信息表S中检索姓名为“王_”的学生。SELECT 姓名 FROM s WHERE 姓名 LIKE 王/_ escape/,6.1.3 表达式运算符,2)字符串运算符,【例6.21】在基本表S中检索1975年出生或者姓王的学生情况。SELECT*FROM s WHERE year(出生日期)=1975 OR 姓名 LIKE 王%【例6.22】在基本表S中检索在1970年到1980年之间出生的学生情况。SELECT*FROM s WHERE year(出生日期)1970 and year(出
9、生日期)1980【例6.23】在基本表S中检索不在管理信息系的学生情况。SELECT*FROM s WHERE not(系=管理信息系)或SELECT*FROM s WHERE 系!=管理信息系,6.1.3 表达式运算符,3)逻辑运算符,(1)格式表达式1 NOT BETWEEN 表达式2 AND 表达式3(2)功能注意,表达式2的值不能大于表达式3的值。表达式“成绩 BETWEEN 65 AND 70”与表达式“成绩=65 and 成绩=65 AND 成绩=70,6.1.3 表达式运算符,4)指定范围运算符,【例6.25】在S中检索不在1980年出生的学生学号与姓名信息。SELECT*FRO
10、M s WHERE 出生日期not BETWEEN 1980-01-01 AND 1980-12-315)集合成员资格运算符 集合成员资格运算符IN可以比较表达式的值与值表中的值是否匹配,如果匹配,则返回TRUE,否则返回FALSE。格式如下:表达式1 NOT IN(表达式2,n)【例6.26】查询成绩为70、80、90分的学生学号、课程号、成绩。SELECT 学号,课程号,成绩 FROM sc WHERE 成绩 IN(70,80,90),6.1.3 表达式运算符,6.1.2 简单查询,【例6.27】在S中检索学生学号不是G0401,G0402,J0403的学生信息。SELECT*FROM s
11、 WHERE 学号 not in(G0401,G0402,J0403)等价于SELECT*FROM s WHERE 学号 G0401and 学号 G0402and 学号 J0403【例6.28】在SC中检索课程号是C01,C02,C03的学生成绩信息。SELECT 学号,成绩 FROM sc WHERE 课程号 in(c01,c02,c03)等价于SELECT 学号,成绩 FROM sc WHERE 课程号=c01or 课程号=c02 or 课程号=c03,6.1.2 简单查询,6)空值比较运算符SQL中允许列值为空,空值用保留字NULL表示。查询空值操作不是=null,而是用 IS NULL
12、来测试。格式表达式 IS NOT NULL功能缺省NOT时,当表达式的值为空时,返回TRUE,否则返回FLASE。【例6.29】查询缺少成绩的学生的学号和相应的课程号。(某些学生选修课程后没有参加考试,所以有选课记录,但没有考试成绩。)SELECT 学号,课程号 FROM sc WHERE 成绩 IS NULL【例6.30】查询有选修成绩的学生的学号和相应的课程号。SELECT 学号,课程号 FROM sc WHERE 成绩 IS NOT NULL,6.2排序子句,1格式SELECT INTO FROM(或视图序列)WHERE ORDER BY属性名ASC|DESC,n-排序子句 2功能 排序
13、子句“ORDER BY属性名ASC|DESC,n”设置信息输出的排序规则,用户可以按照一个或多个属性列升序(ASC)或降序(DESC)排列查询结果。缺省ASC|DESC选项时,系统默认为升序排列。当指定ASC选项时,将最后显示属性列为空值的记录。当指定DESC选项时,将最先显示属性列为空值的记录。,【例6.31】将所有女生按年龄升序排序。SELECT*FROM s WHERE 性别=女 ORDER BY 出生日期 ASC【例6.32】将SC数据表中的信息按学生学号升序,课程号降序排列。【例6.33】在SC表中,查询学号为J0401的同学获得最高成绩的课程号。【例6.34】在SC表中,找出选修了
14、课程号为C02的课程,而且课程成绩最高的前两位同学。,6.2排序子句,1条件连接在WHERE子句中使用比较运算符给出连接条件对表进行连接。1)格式WHERE 表名1.列名1 比较运算符 表名2.列名22)功能 其中,各连接列名的类型必须是可比的。当查询的信息涉及多张数据表时,往往先读取FORM子句中基本表或视图的数据,执行广义笛卡尔积,在广义笛卡尔积中选取满足WHERE子句中给出的条件表达式的记录行。当引用一个在多张数据表中均存在的属性时,则要明确指出这个属性的来源表。关系中属性的引用格式为.。当比较运算符是“=”时,就是自然连接,即按照两个表中的相同属性进行等值连接,并且目标列中去掉了重复的
15、属性列,保留了所有不重复的属性列。,6.3 连接运算,6.3.1 谓词连接,【例6.35】查询管理信息系学生的学号、姓名、选修的课程号和得分。SELECT S.学号,姓名,课程号,成绩 FROM S,SC WHERE S.学号=SC.学号 AND 系=管理信息系【例6.36】查询所有学生的情况以及他们选修的课程号和得分。SELECT S.*,SC.课程号,SC.成绩 FROM S,SC WHERE S.学号=SC.学号【例6.37】查询所有学生的姓名以及他们选修的课程号和得分。SELECT S.姓名,C.课程号,SC.成绩 FROM S,C,SC WHERE S.学号=SC.学号 AND C.
16、课程号=SC.课程号,6.3 连接运算,6.3 连接运算,2自身连接1)格式SELECT 表名1或表名2.列名 FROM 表1 as表名1,表1 as表名2 WHERE 表名1.列名1 比较运算符 表名2.列名22)功能自身连接时,查询涉及同一个关系数据表的两个甚至更多个记录,如何指定关系数据表的每一个出现值。也就是参与连接的两个表都是某一基本表的副表。【例6.38】查询与“王永明”在同一个系学习的学生。SELECT s1.学号,s1.姓名,s1.系 FROM s s1,s s2 WHERE s1.系=s2.系 AND s2.姓名=王永明,1内连接1)格式SELECT 列名 FROM 表1 I
17、NNER JOIN 表2 ON 2)功能INNER JOIN 内连接按照ON指定的连接条件合并两个表,只返回满足条件的行,也可用于多个表的连接。只返回符合查询条件或连接条件的行作为结果集,即删除所有不符合限定条件的行。【例6.40】查询选修了c01号课程且成绩及格的学生姓名及成绩。其中,INNER关键字可省略。SELECT 姓名,成绩 FROM s JOIN sc ON s.学号=sc.学号-左表是s,右表是sc WHERE 课程号=c01 AND 成绩=60,6.3.2 JOIN连接,2外连接外连接不但包含满足条件的行,还包括相应表中的所有行,只能用于两个表的连接。实际上基本表的外连接操作可
18、以分为3类:1)左外连接(1)格式SELECT 列名 FROM 表1 LEFT OUTER JOIN 表2 ON JOIN(2)功能返回满足条件的行,及左表R中所有的行。如果左表的某条记录在右表中没有匹配记录,则在查询结果中右表的所有选择属性列用NULL填充。2)右外连接(1)格式SELECT 列名 FROM 表1 RIGHT OUTER JOIN 表2 ON,6.3.2 JOIN连接,(2)功能返回满足条件的行,及右表K所有的行。如果右表的某条记录在左表中没有匹配记录,则在查询结果中左表的所有选择属性列用NULL填充。3)全外连接(1)格式SELECT 列名 FROM 表1 FULL OUT
19、ER JOIN 表2 ON(2)功能返回满足条件的行,及左右表R、K所有的行。当某条记录在另一表中没有匹配记录,则在查询结果中对应的选择属性列用NULL填充。其中,OUTER关键字均可省略。,6.3.2 JOIN连接,【例6.41】检索每个学生的姓名、选修课程和成绩,没有选修的同学也列出来。左外连接:SELECT s.姓名,sc.课程号,sc.成绩 FROM s LEFT JOIN sc on s.学号=sc.学号右外连接:SELECT s.姓名,sc.课程号,sc.成绩 FROM sc RIGHT JOIN s on s.学号=sc.学号,6.3.2 JOIN连接,3交叉连接(1)格式SEL
20、ECT 列名 FROM 表1 CROSS JOIN 表2(2)功能 相当于广义笛卡尔积。不能加筛选条件,即不能带WHERE子句。结果表是第一个表的每行与第二个表的每行拼接后形成的表,结果表的行数等于两个表行数之积。【例6.43】列出所有学生所有可能的选课情况。SELECT 学号,姓名,课程号,课程名 FROM s CROSS JOIN c如果有七名学生,五门课程,则交叉连接后,记录行数为35行。,6.3.2 JOIN连接,1聚合函数SQL提供了许多集合函数用来统计汇总信息,常用的包括:COUNT(DISTINCT/ALL*):统计元组的个数。COUNT(DISTINCT/ALL 数值表达式):
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库技术 应用 06
![提示](https://www.31ppt.com/images/bang_tan.gif)
链接地址:https://www.31ppt.com/p-6578525.html