• / 56

第6章 数据查询.ppt

配套讲稿:

如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

特殊限制:

部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

关 键  词:
第6章 数据查询.ppt
资源描述:

《第6章 数据查询.ppt》由会员分享,可在线阅读,更多相关《第6章 数据查询.ppt(56页珍藏版)》请在微传网上搜索。

1、1,第6章 数据查询,2,6.1 基本查询,SQL数据查询语句是SELECT语句。该语句的基本框架是SELECT-FROM-WHERE,它包含输出字段、数据来源和查询条件等基本子句。在这种固定格式中,可以不要WHERE,但是SELECT和FROM是必备的。SELECT语句的子句很多,理解了这条语句各项的含义,就能从数据库中查询出各种数据。,3,6.1 基本查询,简单查询 SELECT [ALL|DISTINCT] [TOP n [PERCENT]] select_list FROM table_name (1) ALL:表示输出所有记录,包括重复记录。 (2) Distinct:表示输出无重复。

2、结果的记录。 (3) TOP n [PERCENT]:指定返回查询结果的前n行数据, 如果指定PERCENT项,则返回查询结果的前n%行数据。 (4)select_list:所要查询的选项的集合,多个选项之间用逗号 分开,若要输出表中的全部字段,可用“*”表示。 (3)table_name:要查询的表。,4,(1)选取全部字段: 在Select子句中使用“*”,此时还必须用FROM子句来指定作为选择查询的输入源。,1、使用字段列表指定输出字段,例6-1 分别显示Sales数据库中的员工表employee、商品表goods、销售表sell_order表和部门表department中的所有。

3、记录。 USE Sales SELECT * FROM employee SELECT * FROM goods SELECT * FROM sell_order SELECT * FROM department,5,(2)选取部分字段:,在Select子句中给出包含所选字段的一个列表,各个字段之间用逗号分隔,字段的次序可以任意指定。 注意:如在From子句中指定了两个表,而这两个表中又有同名的字段,使用这些字段时就应在其字段名前冠以表名。 USE JWGL Select student.student_id,student.student_name,monitor From studen。

4、t,class Where class.class_id=student.class_id,6,(3)设置字段别名:,显示选择查询的结果时,第一行(即表头)中显示的是各个输出字段的名称。为了便于阅读,也可指定更容易理解的字段名来取代原来的字段名。设置别名的方法: 原字段名 字段别名 原字段名 AS 字段别名 字段别名 = 原字段名,例、在示例数据库Northwind中,有一个用于存储职工资料的Employees表,该表中的所有字段全是用英文命名的,为此指定加别名: Select EmployeeID AS 职工编号,LastName 姓名, 职务=Title,City AS 城市, Fr。

5、om Employees,7,(4)使用计算字段:,计算字段又称为派生字段,是由数据库表中的一些字段经过运算而生成的表达式,其中可以包括字段、运算符和SQL Server的内置函数。设置计算字段的语法: 表达式 [ [ AS ] 别名 ],例:将BOOK表中的book_id、book_name和price字段分别是以‘书号’、‘书名’和‘价格’输出,输出时‘price’字段在原有价格上加5元。 USE JWGL Select book_id AS 书号,book_name AS 书名, price+5 AS 价格 From book,8,例6-3 对employee表,分别查询公司的员。

6、工总数和公司员工的平均收入。 SELECT COUNT(*) AS 总数 FROM employee SELECT AVG(wages) AS 平均收入 FROM employee,记住,9,2、使用ALL、DISTINCT 和TOP指定记录行数,在Select子句中可以使用ALL、DISTINCT 和TOP指定选择查询所返回的记录行数。 (1) ALL:默认关键字,将返回符合条件的全部记录,而且允许在查询结果中包含重复记录。 例:检索“student”中“student_id”字段的全部数据: Select ALL student_id From student,10,(2。

7、) DISTINCT: 可消除查询结果中的重复记录。 如: Select Distinct student_id From student,例6-2 显示employee表中全部员工的姓名和年龄, 去掉重名。 SELECT DISTINCT employee_name AS 姓名, YEAR(GETDATE())-YEAR(birth_date) AS 年龄 FROM employee,11,(3) TOP: 如果在字段列表前面使用TOP n(n为非负整数),则在查询结果中输出前面n条记录;如使用TOP n Percent(n=0~100),则在查询结果中显示前面总记录数的百分。

8、比为n%的记录。,例、检索“student”中的前三条记录: Select TOP 3 * From student Select TOP 25 Percent * From student,12,6.1 基本查询,带条件查询 WHERE search_condition,例6-4 对employee表,列出月工资在2000以上的员工记录。 SELECT * FROM employee WHERE wages>2000,注:比较符号有 =、!=或、>、>=、<、=2000 AND wages=2000,32,使用COMPUTE子句汇总数据,COMPUTE AVG|COUNT|MAX|MIN。

9、|SUM(表达式) [,…n],功能:用来计算总计或进行分组小计,总计值或小计值将作为附加新行出现在检索结果中,一般用在WHERE子句之后。 结果组成: 前一部分就是未用Compute子句时产生的结果集; 后一部分只有一行,是由Compute子句产生的附加的汇总数据,出现在整个结果集的末尾。,33,例6-16 对employee表中部门编号为“D001”的员工工资,按照其部门编号生成汇总行和明细行。 SELECT department_id, wages FROM employee WHERE department_id = D001 ORDER BY department_id 。

10、COMPUTE sum(wages),例:查询选课表中选修“1”号课同学的信息,及该课程的最高分、最低分和平均分,SELECT * FROM 选课表 WHERE 课号=1 COMPUTE max(成绩),min(成绩),avg(成绩),34,使用Compute By子句汇总数据,Compute AVG|COUNT|MAX|MIN|SUM(表达式)[,…n] By 字段列表,功能:对By后面给出的列进行分组统计,并计算该列的 分组小计。 结果组成:一个是未用Compute By子句产生的结果集, 另一个是结果集只包含一行记录,给出由Compute 子句中的集合函数指定的分组小计。 使用Co。

11、mpute By子句,必须使用Order By子句对 COMPUTE 中BY指定的列进行排序。,35,例6-17 对employee表中部门编号为“D001”或“D002”的员工工资,按照其部门编号生成分组汇总行和明细行。 SELECT department_id, wages FROM employee WHERE department_id = D001 OR department_id = D002‘ ORDER BY department_id COMPUTE sum(wages) BY department_id,例:查询选课表中各科的同学成绩信息,及各科的最高分。

12、、最低分和平均分。,SELECT * FROM 选课表 Order by 课号 Compute max(成绩),min(成绩),avg(成绩) BY 课号,36,6.2 嵌套查询,SQL Server允许多层嵌套查询。嵌套查询一般的查询方法是由里向外进行处理,即每个子查询在上一级查询处理之前处理,子查询的结果用于建立其父查询的查找条件。子查询中所存取的表可以是父查询没有存取的表,子查询选出的记录不显示。,为了与外层查询有所区别,总把一个子查询写在圆括号中;,注意事项,子查询可以用在允许使用表达式的任何地方,不过通常用在外层查询的Where子句或Having子句中,与比较运算符或逻辑运算符一起。

13、构成查询条件,从而完成有关测试。,37,,,学生表,练习都基于以下所给表,,,,,,,,,,,,,,,38,,,课程表,39,,,选课表,40,6.2 嵌套查询,单值嵌套查询,例 列出选修汇编语言课的所有学生的学号.,SELECT 学号 FROM 选课表 WHERE 课号 = ( SELECT 课号 FROM 课程表 WHERE 课名=‘汇编语言’),例 列出“张文青”同学所有课程的课号和成绩。,SELECT 课号,成绩 FROM 选课表 WHERE 学号=( SELECT 学号 FROM 学生 WHERE 姓名=‘张文青’),41,6.2 嵌套查询,多值嵌套查询 (1) ANY(。

14、SOME)运算符的用法 满足子查询中任意一个值的记录。,例 求选修2号课的学生中成绩比选修1号课的最低成绩要 高的学生的学号和成绩.,SELECT 学号,成绩 FROM 选课表 WHERE 课号=‘2’ AND 成绩> ANY(SELECT 成绩 FROM 选课表 WHERE 课号=‘1’),42,例6-19 对Sales数据库,列出D001号部门中工资比D002号部门的员工最低工资高的员工编号和工资。 SELECT employee_id,wages FROM employee WHERE department_id=D001 AND wages>ANY (SELECT wage。

15、s FROM employee WHERE department_id=D002),43,(2) ALL运算符的用法,例6-20 对Sales数据库,列出部门编号为“D001”的员工,这些员工的工资比部门为“D002”的员工的最高工资还要高的员工的编号和工资。 SELECT employee_id,wages FROM employee WHERE department_id=D001 AND wages>ALL (SELECT wages FROM employee WHERE department_id=D002),例 求选修2号课的学生,这些学生的成绩比选修1号课的任何 学生的成绩都要。

16、高的学号和成绩.,SELECT 学号,成绩 FROM 选课表 WHERE 课号=‘2’ AND 成绩>ALL(SELECT 成绩 FROM 选课表 WHERE 课号=‘1’),44,例6-21 对Sales数据库,列出部门为“市场部”或“销售部”的所有员工的编号。 SELECT employee_id FROM employee WHERE department_id IN (SELECT department_id FROM department WHERE department_name=市场部 OR department_name=销售部),(3)IN运算符的用法,例 求软件专业所有必。

17、修课的课程设置情况.,SELECT * FROM 课程表 WHERE 课号 IN (SELECT 课号 FROM 必修课表 WHERE 必修专业=‘软件’),45,6.3 连接查询,连接概述,通过连接运算符可以实现多个表查询。连接是关系数据库模型的主要特点,也是它区别于其他类型数据库管理系统的一个标志。 连接可以在SELECT语句的WHERE子句中建立。,46,例6-22 对Sales数据库输出所有员工的销售单,要求给出员工编号、姓名、商品编号、商品名和销售数量。 SELECT employee.employee_id, employee.employee_name, go。

18、ods.goods_id, goods.goods_name, sell_order.order_num FROM employee,sell_order,goods WHERE employee.employee_id = sell_order.employee_id AND sell_order.goods_id = goods.goods_id,47,6.3 连接查询,连接也可以在FROM子句中建立,而且在FROM子句中指出连接时有助于将连接操作与WHERE子句中的搜索条件区分开来。所以,在Transact-SQL中推荐使用这种方法。 FROM子句建立连接的语法格式是 。

19、FROM join_table [join_type] JOIN join_table ON join_condition,48,内连接分3种:等值连接、不等值连接和自然连接。 1.等值连接 在连接条件中使用等号(=)运算符比较被连接列的列值,按对应列的共同值将一个表中的记录与另一个表中的记录相连接,包括其中的重复列。 例6-23 Sales数据库中部门表department和员工表employee的等值连接。 SELECT * FROM department INNER JOIN employee ON employee.department_id = department.。

20、department_id,内连接,49,在连接条件中使用除等于(=)运算符以外的其他比较运算符比较被连接的列的列值。这些运算符包括>、>=、、!。 例6-24 对Sales数据库,列出销售“G00001”产品的员工中,销售数量大于编号为“E001”的员工销售该类产品销售数量的那些员工的编号和销售数量。 SELECT a.employee_id, a.order_num FROM sell_order a INNER JOIN sell_order b ON a.order_num > b.order_num AND a.goods_id = b.goods_id WHERE (b。

21、.goods_id = G00001) AND (b.employee_id = E001),2.不等值连接,50,在连接条件中使用等于(=)运算符比较被连接列的列值,它使用选择列表方式来指出查询结果集合中所包括的列,并删除连接表中的重复列。 例6-25 Sales数据库中部门表department和员工表 employee的自然连接。 SELECT a.department_name, b.* FROM department a INNER JOIN employee b ON b.department_id = a.department_id,3.自然连接,51,在内连接。

22、查询时,返回查询结果集合中的仅是符合查询条件(WHERE搜索条件或 HAVING条件)和连接条件的行。而采用外连接时,它返回到查询结果集合中的不仅包含符合连接条件的行,而且还包括左表(左外连接时)、右表(右外连接时)或两个连接表(全外连接)中的所有数据行。,外连接,52,左外连接通过左向外连接引用左表的所有行。 例6-26 员工信息表employee左外连接销售信息表sell_order。 SELECT a.employee_id, a.employee_name, b.goods_id, b.order_num, b.send_date FROM employee a LEFT OUT。

23、ER JOIN sell_order b ON a.employee_id = b.employee_id,1.使用左外连接,53,右外连接通过右向外连接引用右表的所有行。 例6-27 员工信息表employee右外连接销售信息表sell_order。 为了说明方便,先在sell_order表中插入一条销售信息。 INSERT INTO sell_order (order_id1, goods_id, employee_id,customer_id, transporter_id, order_num, discount,order_date, send_date, arriva。

24、l_date, cost) VALUES (S00006, G00005, , C0006, T002, 21, 0.5, GETDATE(), GETDATE(), GETDATE(),100) SELECT a.employee_id, a.employee_name, b.goods_id, b.order_num, b.send_date, b.order_id1 FROM employee a RIGHT OUTER JOIN sell_order b ON a.employee_id = b.employee_id,2.使用右外连接,54,全外连接返回两个表的所。

25、有行。不管两个表的行是否满足连接条件,均返回查询结果集。对不满足连接条件的记录,另一个表相对应字段用NULL代替。 例6-28 员工信息表employee全外连接销售信息表sell_order。 SELECT a.employee_id, a.employee_name, b.goods_id, b.order_num, b.send_date, b.order_id1 FROM employee a FULL OUTER JOIN sell_order b ON a.employee_id = b.employee_id,3.使用全外连接,55,交叉连接不带WHERE子句,它返回被。

26、连接的两个表所有数据行的笛卡尔积,返回到结果集合中的数据行数等于第一个表中符合查询条件的数据行数乘以第二个表中符合查询条件的数据行数。 例 部门信息表department中有4个部门,而员工信息表employee中有7名员工,则下列交叉连接检索到的记录数将等于47=28行。 SELECT a.department_id, a.department_name, b.employee_id, b.employee_name FROM department a CROSS JOIN employee b,交叉连接,56,本章小结,(1)SQL数据查询语句基本结构:基本框架为SELECT-FROM-WHERE,它包含输出字段、数据来源、查询条件等基本子句。 (2)带条件查询:WHERE子名中指定的查询条件可以是单表的条件表达式,也可以是多表之间的条件表达式。 (3)查询结果处理:使用SELECT语句完成查询工作后,所查询的结果默认显示在屏幕上,若需要对这些查询结果进行处理,则需要SELECT的其他子句配合操作。 (4)嵌套查询:在一个SELECT语句的WHERE子句中出现另一个SELECT语句,这种查询称为嵌套查询。 (5)连接查询:连接分为内连接、外连接和交叉连接。内连接分为等值连接、非等值连接和自然连接。外连接又分为左外连接、右外连接和全外连接。,。

展开阅读全文
  微传网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
0条评论

还可以输入200字符

暂无评论,赶快抢占沙发吧。

关于本文
本文标题:第6章 数据查询.ppt
链接地址:https://www.weizhuannet.com/p-11934607.html
微传网是一个办公文档、学习资料下载的在线文档分享平台!

网站资源均来自网络,如有侵权,请联系客服删除!

 网站客服QQ:80879498  会员QQ群:727456886

copyright@ 2018-2028 微传网版权所有

     经营许可证编号:冀ICP备18006529号-1 公安局备案号:13028102000124

收起
展开