第五章关系数据库标准语言SQLppt课件.ppt
《第五章关系数据库标准语言SQLppt课件.ppt》由会员分享,可在线阅读,更多相关《第五章关系数据库标准语言SQLppt课件.ppt(52页珍藏版)》请在三一办公上搜索。
1、1,第五章,目 录,上一页,下一页,退 出,关系数据库标准语言SQL,2,本 章 要 点,1SQL概述2查询功能3操纵功能4定义功能,3,1、SQL语言的特点综合统一 SQL语言集数据定义、数据查询、数据操纵和数据控值的功能于一体,语言风格统一,可以独立完成数据库活动中的全部操作,包括定义关系模式、录入数据及建立数据库、查询、更新、维护数据、数据库的重新构造、数据库安全性等一系列操作的要求,为数据库应用系统开发者提供了良好的环境。 高度非过程化语言简洁,易学易用以同一种语法结构提供两种使用方式:交互方式和程序方式,5.1 SQL概述,4,5.2 查询功能,数据库中的数据很多时侯是为了查询的,因
2、此,数据查询是数据库的核心操作。而在SQL语言中,查询语言中有一条查询命令,即SELECT语句。 5.2.1 简单查询 1、无条件查询【格式】SELECT ALL | DISTINCT FROM 【功能】无条件查询。【说明】ALL: 表示显示全部查询记录,包括重复记录。 (可省略) DISTINCT: 表示显示无重复结果的记录。,本节重点,5,例1、显示STUD(学生信息数据表)中的所有记录。 SELECT * FROM STUD说明:命令中的 * 表示输出表中所有字段, FROM后面 的表文件名指明数据的来源,表中的内容以浏览 方式显示。例2、显示职工表中的所有工资值。 SELECT 工资
3、FROM 职工表例3、显示职工表中的所有工资值,同时能去除重复值。 SELECT DISTINCT 工资 FROM 职工表例4、显示成绩表中的所有记录,并将成绩一项乘以0.7。 SELECT 学号,课程号,成绩* 0.7 AS 成绩 ; FROM 成绩,本节重点,6,2 带条件(WHERE)的查询,【格式】SELECT ALL | DISTINCT FROM WHERE 【功能】从一个表中查询满足条件的记录。【说明】 WHERE 子句用来查询满足条件的记 录。例5、显示STUD表中所有男生记录的学号,姓名和 性别字段值。 SELECT 学号,姓名,性别 ; FROM STUD WHERE 性别
4、=男,本节重点,7,例6、显示STUD表中出生日期在85年之间的学生的 学号,姓名,出生日期。 SELECT 学号, 姓名, 出生日期 FROM STUD ; WHERE (出生日期= 01/01/85) AND (出生日期= 12/31/85)例7、显示职工表中在仓库“WH1” 或“WH2”工作,并且 工资少于1250元的职工号 。 SELECT 职工号 FROM 职工表 ; WHERE 工资1250 AND (仓库号=“WH1” OR ; 仓库号=“WH2” ),本节重点,8,5.2.2 简单的连接查询,【说明】在一个数据库中的多个表之间一般都存在着某些联系,在一个查询语句中同时涉及到两个
5、或两个以上的表时,这种查询称之为连接查询(也称为多表查询)。在多表之间查询必须处理表与表之间的连接关系。【格式】 SELECT ALL | DISTINCT FROM ,. WHERE ,本节重点,9,例8、查询并显示各个学生的学号,姓名,课程名称及成绩。 SELECT 学生.学号,姓名,课程名称,成绩 ; FROM 学生 ,课程,成绩 ; WHERE 学生.学号=成绩.学号 AND 成绩.课程号=课程.课程号例9、查询工资多于1230元的职工号(职工表)和他们所在的 城市(仓库表)。 SELECT 职工号,城市 FROM 职工表,仓库表 ; WHERE (工资1230 ) . AND . 职
6、工表.仓库号=仓库表.仓库号例10、找出工作在面积大于400的仓库的职工号(职工表)以 及这些职工工作所在的城市(仓库表)。 SELECT 职工号,城市 FROM 职工表,仓库表 ; WHERE (面积400 ) . AND . 职工表.仓库号=仓库表.仓库号,本节重点,10,5.2.3 嵌套查询 在SQL语句中,一个SELECTFROMWHERE语句称为一个查询块。将一个查询块嵌套在另一个查询块的WHERE子句或HAVING 短语的条件中的查询称为嵌套查询或子查询。例11、在STUD.DBF 表中显示“李宁”所在班级的学生名单。 SELECT 学号,姓名,班级名 FROM STUD ; WH
7、ERE 班级名=(SELECT 班级名 FROM STUD ; WHERE 姓名=“李宁”)例12、哪些城市至少有一个仓库的职工工资为1250元? SELECT 城市 FROM 仓库表 ; WHERE 仓库号 IN (SELECT 仓库号 FROM 职工表 ; WHERE 工资=1250)练习:找出和职工E4中同样工资的所有职工。,本节重点,11,5.2.4 几个特殊的运算符(1) NOT BETWEEN AND (2) NOT IN ()(3) NOT LIKE (通配符: _ %)例13、检索出工资在1220元到1240元范围内的职工信息 SELECT * FROM 职工表 ; WHERE
8、 工资 BETWEEN 1220 AND 1240例14、从供应商关系中检索出全部公司的信息,不要工厂或 其他供应商的信息。 SELECT * FROM 供应商表 ; WHERE 供应商名 LIKE “%公司”练习、找出地址在北京的供应商的全部信息,本节重点,12,5.2.5 排序将查询的结果排序【格式】SELECT ALL | DISTINCT FROM WHERE ORDER BY ASC | DESC , ASC | DESC 【说明】利用ORDER BY 子句将查询的结果 进行排序例15、按出生日期降序显示STUD表中的学号,姓名,出生 日期。 SELECT 学号,姓名,出生日期 FR
9、OM STUD ; ORDER BY 出生日期 DESC,本节重点,13,例16、按成绩升序显示成绩表中的学号,课程号,成绩。 SELECT 学号,课程号,成绩 FROM 成绩 ; ORDER BY 成绩 ASC例17、先按仓库号排序,在按工资排序,并输出全部职工的 信息。 SELECT * FROM 职工表 ORDER BY 仓库号, 工资例18、按成绩降序显示成绩表中03级同学的学号,姓名,课 程名称,成绩。 SELECT 学号,姓名,课程名称,成绩 ; FROM 成绩,学生 ,课程; WHERE LEFT(学生.学号,2)=“03” AND 学生.学号=成绩.; 学号 AND 成绩.课程
10、号=课程.课程号 ORDER BY 成绩 DESC练习: 先按课程名称,再按成绩升序显示同学的学号,姓名 ,课程名称,成绩。,本节重点,14,5.2.6 简单的计算查询 SQL 不仅具有一般的检索能力,而且还具有计算方式的检索。比如:检索某门课程的最高分数、或检索职工的平均工资等。 用于计算检索的函数有: COUNT 计数 SUM 求和 AVG 计算平均值 MAX 求最大值 MIN 求最小值例19、找出供应商所在地的数目。 SELECT COUNT(DISTINCT 地址) FROM 供应商表 SELECT COUNT(* ) FROM 供应商表 功能?,本节重点,15,例20、求应支付给职工
11、的工资总额。 SELECT SUM(工资) FROM 职工表例21、求北京和上海的仓库职工的工资总和。 SELECT SUM(工资) FROM 职工表 WHERE 仓库号 IN (SELECT 仓库号 FROM 仓库表; WHERE 城市=“上海” OR 城市=北京) 例22、求所有职工的工资都多于1210 元的仓库的平均面积。 SELECT AVG(面积) FROM 仓库表 WHERE 仓库号; NOT IN (SELECT 仓库号 FROM 职工表 WHERE ; 工资=1210) AND 仓库号 IN (SELECT 仓库号 ; FROM 职工表 )练习:求在 WH2 仓库工作的职工的最
12、高工资。,SELECT max(工资) FROM 职工表 WHERE 仓库号=WH2,本节重点,16,5.2.7 分组与计算查询【格式】SELECT ALL | DISTINCT FROM WHERE GROUP BY HAVING ORDER BY ASC | DESC 【说明】利用GROUP BY 子句进行分组计算 利用HAVING 子句进一步限定分组 的条件。 注意: HAVING 子句必须跟随GROUP BY 使用 。,本节重点,17,例23、求每个仓库的职工的平均工资。 SELECT 仓库号, AVG(工资) FROM 职工表; GROUP BY 仓库号例24、求至少有两个职工的仓库
13、的平均工资。 SELECT 仓库号, COUNT( * ), AVG(工资) ; FROM 职工表; GROUP BY 仓库号 HAVING COUNT( * )=2 练习:求STUD 表中的各班的总人数。,SELECT 班级名, COUNT(班级名 ) AS 总人数 ;FROM STUD; GROUP BY 班级名,本节重点,18,5.2.8 利用空值查询例25、找出尚未确定供应商的订购单。 SELECT * FROM 定购单表; WHERE 供应商号 IS NULL例26、列出已经确定了供应商的订购单信息。 SELECT * FROM 定购单表; WHERE 供应商号 IS NOT NUL
14、L5.2.9 别名与自连接查询例27、查询并显示各个学生的学号,姓名,课程名称及成绩。 SELECT a.学号,a.姓名,b.课程名称,c.成绩 ; FROM 学生 a,课程 b,成绩 c ; WHERE a.学号=c.学号 AND b.课程号=c.课程号,本节重点,19,5.2.10 内外层互相关嵌套查询 (略)5.2.11 使用谓词和量词的查询 在SQL语句的嵌套查询或子查询中,还可以使用下列两类运算符:量词: ANY、ALL、SOMEANY、SOME在进行比较运算时,只要子查询中有一行能使 结果为真,则结果就为真;ALL要求子查询中的所有行都使结果为真时,结果才为真。谓词: EXISTS
15、 、NOT EXISTSEXISTS 用来检查在子查询中是否存在元组(记录)格式:SELECT FROM WHERE ANY | ALL | SOME (子查询) 或:WHERE NOT EXISTS (子查询),本节重点,20,例28、检索那些仓库中还没有职工的仓库的信息。 SELECT * FROM 仓库表 WHERE NOT EXISTS ; (SELECT * FROM 职工表 WHERE 仓库号=仓库表.仓库号) 或: SELECT * FROM 仓库表 WHERE NOT IN ; (SELECT 仓库号 FROM 职工表 )例29、检索有职工的工资大于或等于WH1仓库中任何一名
16、职工工资的仓库号。 SELECT DISTINCT 仓库号 FROM 职工表 WHERE 工资= ; ANY (SELECT 工资 FROM 职工表 WHERE 仓库号=“WH1”)或:SELECT DISTINCT 仓库号 FROM 职工表 WHERE 工资=; (SELECT MIN(工资) FROM 职工表 WHERE 仓库号=“WH1” )练习:检索那些仓库中至少有一名职工的仓库的信息。,SELECT * FROM 仓库表 WHERE EXISTS ; (SELECT * FROM 职工表 WHERE 仓库号=仓库.仓库号) 或: SELECT * FROM 仓库表 WHERE IN
17、; (SELECT 仓库号 FROM 职工表 ),本节重点,21,5.2.12 超联接查询 在SQL语句中,在FROM子句中提供了一种称之为连接的子句,连接分为内连接和外连接,外连接又可分为左外连接、右外连接和全外连接。格式:SELECT FROM INNER | LEFT | RIGHT | FULL JOIN ON 指定连接条件 WHERE (1)内连接 内连接是指只有符合条件的记录,才出现在查询结果中。 INNER JOIN 等价于 JOIN ,普通连接。(内连接),本节重点,22,例30、查询并显示各个学生的学号,所学课程名称及成绩。 SELECT 学号,课程名称,成绩 FROM 课程
18、,成绩; WHERE 成绩.课程号=课程.课程号 如果采用内连接方式,则命令为: SELECT 学号,课程名称,成绩; FROM 课程 a JOIN 成绩 b ON a.课程号=b.课程号(2)外连接:外连接是指把两个表分为左右两个表。LEFT JOIN 左外连接:是指除满足连接条件的记录出现在查 询结果中外,左侧表中不满足条件 的记录也出现在查询结果中。RIGHT JOIN 右外连接:,右侧表中不满足条件的记录也出 现在查询结果中。FULL JOIN 全外连接:,两个表中不满足条件的记录也出现 在查询结果中 。,本节重点,23,例31、左连接: SELECT 学号,课程名称,成绩; FROM
19、 课程 LEFT JOIN 成绩 ; ON 课程.课程号 = 成绩.课程号例32、右连接: SELECT 学号,课程名称,成绩; FROM 课程 RIGHT JOIN 成绩 ; ON 课程.课程号=成绩.课程号例33、全连接: SELECT 学号,课程名称,成绩; FROM 课程 FULL JOIN 成绩 ; ON 课程.课程号=成绩.课程号,本节重点,24,5.2.13 集合的并运算 集合操作主要包括:UNION(并)、INTERSECT(交)、 MINUS(差)运算。例34、查询城市为北京和上海的仓库的信息。 SELECT * FROM 仓库表 WHERE 城市=“北京” ; UNION;
20、 SELECT * FROM 仓库表 WHERE 城市=“上海” 或: SELECT * FROM 仓库表 WHERE 城市=“上海” OR ; 城市=北京,本节重点,25,5.2.14 SQL中的几个特殊选项和查询去向1、显示部分结果 TOP n PERCENT 说明: PERCENT省略时,n 为整数,表示前n个记录; 选择时, n 为0.01到99.99 的小数,表示前百分之n的记录例35、只显示工资最高的三位职工的信息。 SELECT * TOP 3 FROM 职工表; ORDER BY 工资 DESC例36、显示工资最低的那40%职工的信息。 SELECT * TOP 40 PERC
21、ENT FROM 职工表; ORDER BY 工资练习、显示工资最高的那40%职工的信息。,SELECT * TOP 40 PERCENT FROM 职工表; ORDER BY 工资 DESC,本节重点,26,2、查询去向 默认情况下,查询输出到一个浏览窗口,若想改变查询去向,可在“SELECT”语句中使用: INTO | TO FILE | TO SCREEN | TO PRINTER 子句选择查询去向。INTO ARRAY 数组名:将查询结果保存到一个数组中。INTO CURSOR :将查询结果保存到一个临时的表 文件中,该表文件是只读的,且关闭文件时自动删除。INTO DBF | TAB
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第五 关系 数据库 标准 语言 SQLppt 课件

链接地址:https://www.31ppt.com/p-1355701.html