SQL Server 2000管理与应用开发教程 教学课件 PPT 作者 王晶 第8章

上传人:E**** 文档编号:89426916 上传时间:2019-05-25 格式:PPT 页数:64 大小:1.10MB
返回 下载 相关 举报
SQL Server 2000管理与应用开发教程 教学课件 PPT 作者 王晶 第8章_第1页
第1页 / 共64页
SQL Server 2000管理与应用开发教程 教学课件 PPT 作者 王晶 第8章_第2页
第2页 / 共64页
SQL Server 2000管理与应用开发教程 教学课件 PPT 作者 王晶 第8章_第3页
第3页 / 共64页
SQL Server 2000管理与应用开发教程 教学课件 PPT 作者 王晶 第8章_第4页
第4页 / 共64页
SQL Server 2000管理与应用开发教程 教学课件 PPT 作者 王晶 第8章_第5页
第5页 / 共64页
点击查看更多>>
资源描述

《SQL Server 2000管理与应用开发教程 教学课件 PPT 作者 王晶 第8章》由会员分享,可在线阅读,更多相关《SQL Server 2000管理与应用开发教程 教学课件 PPT 作者 王晶 第8章(64页珍藏版)》请在金锄头文库上搜索。

1、,SQL Server 2000管理及 应用开发教程,授课教师: 职务:,第8章 常用数据操纵语言(DML),课程描述 数据操纵语言(DML)包含了用来查询、添加、修改和删除数据库中数据的语句,这些语句包括SELECT、INSERT、UPDATE和DELETE等。本章将介绍使用这些SQL语句操纵数据库中数据的方法。,本章知识点,数据查询语句 插入数据语句 修改数据语句 删除数据语句,8.1 数据查询语句,SELECT语句语法简介 准备演示数据 简单SELECT语句 使用分组统计 生成汇总行 连接查询 子查询 合并查询 保存查询结果,8.1.1 SELECT语句语法简介,SELECT子句 INT

2、O 子句 FROM 子句 WHERE 子句 GROUP BY 子句 HAVING 子句 ORDER BY 子句 例如: SELECT * FROM EmpInfo,SELECT语句中各子句的说明,8.1.2 准备演示数据,本节使用数据库HrSystem中表DepInfo和表EmpInfo中的数据来演示表的查询操作。,表DepInfo中的演示数据,表EmpInfo中的演示数据,8.1.3 简单SELECT语句,SELECT子句是SELECT语句的关键部分。它的作用是指定由查询返回的列。 SELECT子句的语法结构如下: SELECT ALL | DISTINCT TOP n PERCENT WI

3、TH TIES ,参数说明,1使用DISTINCT关键字,DISTINCT关键字的作用是指定结果集中返回指定列存在不重复数据的记录。 【例8.1】查询表EmpInfo中所有的职务数据,可以使用以下命令: USE HrSystem GO SELECT Title FROM EmpInfo GO,如果使用DISTINCT,USE HrSystem GO SELECT DISTINCT Title FROM EmpInfo GO,例8.1的运行结果,2使用TOP n PERCENT关键字,如果只需要显示前n行,可以在SELECT语句中使用TOP n PERCENT关键字。 【例8.2】查询表EmpI

4、nfo中的前3个员工记录,具体语句如下: USE HrSystem GO SELECT TOP 3 Emp_Name FROM EmpInfo GO,例8.2的运行结果,3改变显示的列标题,USE HrSystem GO SELECT TOP 3 Emp_Name as 姓名, Title as 职务 FROM EmpInfo GO,4设置查询条件,WHERE子句指定用于限制返回的行的搜索条件。它的语法结构如下: WHERE | := column_name * = | = * column_name 参数 是通过使用谓词限制结果集内返回的行。对搜索条件中可以包含的谓词数量没有限制。,【例8.

5、3】,表EmpInfo中查询所有工资大于3000而且小于4000的记录,具体语句如下: USE HrSystem GO SELECT Emp_Name, Wage FROM EmpInfo WHERE Wage 3000 AND Wage 4000 GO,SQL Server的通配符及其含义,【例8.4】,要查询所有身份证号以110开头的员工记录,可以使用以下语句: USE HrSystem GO SELECT * FROM EmpInfo WHERE IDCard LIKE 110% GO,【例8.5】,要查询所有身份证号以110123开头、中间包含任意一个字符、其后为adx、最后包含任意一

6、个字符的员工记录(即身份证格式为110123?adx?,?表示任意一个字符),可以使用以下语句: USE HrSystem GO SELECT * FROM EmpInfo WHERE IDCard LIKE 110123_adx_ GO,5排序结果集,在SELECT语句中使用ORDER BY子句可以指定结果集的排序。它的语法结构如下: ORDER BY order_by_expression ASC | DESC ,.n 参数order_by_expression指定要排序的列。 ASC表示按照递增的顺序排列,DESC表示按照递减的顺序排列。 ASC为默认值。,【例8.6】,如果按照员工姓名

7、排序,可以使用以下命令: USE HrSystem GO SELECT * FROM EmpInfo ORDER BY Emp_Name GO,8.1.4 使用分组统计,在统计查询中,可以使用GROUP BY子句指定查询结果的分组条件。它的语法结构如下: GROUP BY ALL group_by_expression ,.n WITH CUBE | ROLLUP ,【例8.7】,要查询各职位的平均工资,可以使用以下语句: USE HrSystem GO SELECT Title AS 职位, AVG(Wage) AS 平均公资 FROM EmpInfo GROUP BY Title GO,【

8、例8.8】,在下面的SELECT语句中,GROUP BY子句中不包含Sex列,而Sex列出现在SELECT子句中。因此,在执行SELECT语句时会出现错误。 USE HrSystem GO SELECT Sex, Title, AVG(Wage) FROM EmpInfo GROUP BY Title GO,【例8.9】,查询平均工资大于4400.00元的部门,并显示部门编号和平均工资,具体语句如下: USE HrSystem GO SELECT Dep_Id, AVG(Wage) FROM EmpInfo GROUP BY Dep_Id HAVING AVG(Wage) 4400 GO,8.

9、1.5 生成汇总行,COMPUTE子句的语法结构如下: COMPUTE AVG | COUNT | MAX | MIN | STDEV | STDEVP | VAR | VARP | SUM ( expression ) ,.n BY expression ,.n ,【例8.10】,要查询所有员工的工资,并对工资总额进行汇总,可以使用以下命令: USE HrSystem GO SELECT Emp_Name, Wage FROM EmpInfo COMPUTE SUM(Wage) GO,8.1.6 连接查询,内连接 外连接 交叉连接,1内连接,内连接使用比较运算符(最常使用的是等号,即等值连接

10、)根据每个表共有列的值匹配两个表中的行。 只有每个表中都存在相匹配列值的记录才出现在结果集中。 在内连接中,所有表是平等的,没有主次之分。,【例8.11】,使用内连接从表EmpInfo和表DepInfo中同时获取数据,查询所有员工的姓名和所在部门名称,具体语句如下: USE HrSystem GO SELECT t1.Dep_name, t2.Emp_name FROM DepInfo t1, EmpInfo t2 WHERE t1.Dep_id=t2.Dep_id,例8.11的运行结果,使用INNER JOIN关键字,USE HrSystem GO SELECT t1.Dep_name, t

11、2.Emp_name FROM DepInfo t1 INNER JOIN EmpInfo t2 ON t1.Dep_id=t2.Dep_id,2外连接,左向外连接以连接(JOIN)子句左侧的表为主表,主表中所有记录都将出现在结果集中。如果主表中的记录在右表中没有匹配的数据,则结果集中右表的列值为NULL。可以使用*=符号定义左连接。 右向外连接以连接(JOIN)子句右侧的表为主表,主表中所有记录都将出现在结果集中。如果主表中的记录在左表中没有匹配的数据,则结果集中右表的列值为NULL。可以使用=*符号定义左连接。 完整外部连接包括连接表中的所有行,无论它们是否匹配。在SQL Server 2

12、000中,还可以使用FULL OUTER JOIN或FULL JOIN关键字定义完整外部连接。,【例8.12】,使用左向外连接从表DepInfo和表EmpInfo中同时获取数据,查询所有员工的姓名和所在部门名称,其中表DepInfo为主表,具体语句如下: USE HrSystem GO SELECT t1.Dep_name, t2.Emp_name FROM DepInfo t1, EmpInfo t2 WHERE t1.Dep_id *= t2.Dep_id GO,LEFT OUTER JOIN或LEFT JOIN关键字,USE HrSystem GO SELECT t1.Dep_name,

13、 t2.Emp_name FROM DepInfo t1 LEFT JOIN EmpInfo t2 ON t1.Dep_id=t2.Dep_id GO,【例8.13】,使用右向外连接从表DepInfo和表EmpInfo中同时获取数据,查询所有员工的姓名和所在部门名称,其中表EmpInfo为主表,具体语句如下: USE HrSystem GO SELECT t1.Dep_name, t2.Emp_name FROM DepInfo t1, EmpInfo t2 WHERE t2.Dep_id =* t1.Dep_id GO,RIGHT OUTER JOIN或RIGHT JOIN关键字,USE H

14、rSystem GO SELECT t1.Dep_name, t2.Emp_name FROM EmpInfo t2 RIGHT JOIN DepInfo t1 ON t1.Dep_id=t2.Dep_id GO,【例8.14】,使用完整外部连接从表DepInfo和表EmpInfo中同时获取数据,查询所有员工的姓名和所在部门名称,具体语句如下: USE HrSystem GO SELECT t1.Dep_name, t2.Emp_name FROM EmpInfo t2 FULL JOIN DepInfo t1 ON t1.Dep_id=t2.Dep_id GO,3交叉连接,在交叉连接查询中,

15、两个表中的每两行都可能互相组合成为结果集中的一行。交叉连接并不常用,除非需要穷举两个表的所有可能的记录组合。,【例8.15】,使用交叉连接从表DepInfo和表EmpInfo中同时获取数据,查询所有员工的姓名和所在部门名称,具体语句如下: USE HrSystem GO SELECT t1.Dep_name, t2.Emp_name FROM EmpInfo t2 CROSS JOIN DepInfo t1 GO,8.1.7 子查询,【例8.16】查询办公室的所有员工,可以使用以下命令: USE HrSystem GO SELECT Emp_Name FROM EmpInfo WHERE De

16、p_Id = (SELECT Dep_Id FROM DepInfo WHERE Dep_name = 办公室) GO,8.1.8 合并查询,使用UNION关键字可以组合两个查询的结果集,结合的基本规则是: (1)所有查询中的列数和列的顺序必须相同。 (2)数据类型必须兼容。,【例8.17】,从表DepInfo中查询各部门信息,然后在从表EmpInfo中查询各个部门的部门经理,具体语句如下: USE HrSystem GO SELECT Dep_Id, Dep_Name FROM DepInfo UNION SELECT Dep_Id, Emp_Name FROM EmpInfo WHERE Title = 部门经理 GO,8.1.9 保存查询结果, INTO ,【例8.18】,将办公室的所有员工的姓名和职务信

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号