【培训课件】sql查询语句基础

上传人:aa****6 文档编号:51445892 上传时间:2018-08-14 格式:PPT 页数:85 大小:316.50KB
返回 下载 相关 举报
【培训课件】sql查询语句基础_第1页
第1页 / 共85页
【培训课件】sql查询语句基础_第2页
第2页 / 共85页
【培训课件】sql查询语句基础_第3页
第3页 / 共85页
【培训课件】sql查询语句基础_第4页
第4页 / 共85页
【培训课件】sql查询语句基础_第5页
第5页 / 共85页
点击查看更多>>
资源描述

《【培训课件】sql查询语句基础》由会员分享,可在线阅读,更多相关《【培训课件】sql查询语句基础(85页珍藏版)》请在金锄头文库上搜索。

1、SQL Server 2000 SQL Server 2000 网络数据库教程网络数据库教程SQL查询语句基础 1 SELECT 条件列表 2 FROM子句 3 WHERE子句 4 统计 5 利用查询结果创建新表 6 使用UNION运算符实现多查询联合 7 连接 8 子查询 本章要点:本章要点:掌握简单的Transact-SQL查询语句。 学会对查询结果进行分组统计、合计和排序等复杂的SELECT语句操作。SQL Server 2000 SQL Server 2000 网络数据库教程网络数据库教程1 SELECT 条件列表一、基本结构 uSELECT 记录显示范围 字段列表 u INTO 新表

2、名 u FROM 表名或表名列表及其连接方式 u WHERE 条件表达式 u GROUP BY 分组字段名列表 HAVING 分组条件表达式 u ORDER BY 排序字段名列表 ASC | DESC u COMPUTE 集合函数(列名1) BY 列名2 n 说明: u SELECT语句中各子句的顺序: u SELECT 记录范围 字段列表 INTO FROM WHERE GROUP BY HAVING ORDER BY COMPUTE ul FROM用于指定数据来源: u 单表查询简单格式:FROM 表名 u 多表查询时的格式:FROM 表名列表及其连接方式 ulCOMPUTE子句不能与IN

3、TO子句或GROUP BY子句同时使用。SQL Server 2000 SQL Server 2000 网络数据库教程网络数据库教程SELECT 条件列表(1) SELECT子句:指明目标列(字段、表达式、函数表达式、 常量)。基本表中相同的列名表示为:表名.列名(2) FROM子句:指明数据源。表间用“,”分割。数据源不在当 前数据库中,使用“数据库名.表名”表示。一表多用,用 别名标识。定义表别名:表名别名 (3) WHERE子句:元组选择条件。(4) GROUP BY子句:结果集分组。当目标列中有统计函数, 则统计为分组统计,否则为对整个结果集统计。子句后带上 HAVING子句表达组选择

4、条件(带函数的表达式)。(5) ORDER BY子句:排序。当排序要求为ASC时升序排序; 排序要求为DESC时降序排列。SQL Server 2000 SQL Server 2000 网络数据库教程网络数据库教程2. SELECT语句的操作符(1) 算术操作符+(加号)、(减号)、*(乘号)和 /(除号)。(2) 比较操作符=(等于)、(大于)、=(大于等于)、!=(不等于)、(不大于)和 !、=、90;SQL Server 2000 SQL Server 2000 网络数据库教程网络数据库教程自连接自内连接简称自连接,是一张表自己对自己的内连接 ,即在一张表的两个副本之间进行内连接。用自连

5、接可 以将同一个表的不同行连接起来。 使用自连接时,必须为两个副本指定别名,使之在 逻辑上成为两个表。 语法格式:SELECT 列名列表 FROM 表名 AS 别名1 join 表名.别名2 ON 别名1.列名=别名2.列名SQL Server 2000 SQL Server 2000 网络数据库教程网络数据库教程查询每一门课的间接先行课。例如,课程表中的先行课是在上学期应开设的,先行 课的先行课,即间接先行课应提前一学年开设。如果求 查询某门课的间接先行课或全部课程的间接先行课,就 需要对课程表进行自身连接。 SELECT A.课程号,A.课程名,B.先行课 FROM 课程 A,课程 B W

6、HERE A.先行课=B.课程号SQL Server 2000 SQL Server 2000 网络数据库教程网络数据库教程例子课程号课程名先行课C1计算机引论C2PASCAL语言C1C3数据结构C2C4数据库C3C5软件工程C4课程的先行关系链为:C5C4C3C2C1, 课程的间接关系链为:C5C3C1。 SQL Server 2000 SQL Server 2000 网络数据库教程网络数据库教程课程号课程名先行课 课程号课程名先行课C1计算机引论 C1计算机引论 C2Pascal语言C1C2Pascal语言C1C3数据结构C2C3数据结构C2C4数据库C3C4数据库C3C5软件工程C4C5

7、软件工程C4A.课程号A.课程名B.先行课C2Pascal语言 C3数据结构C1C4数据库C2C5软件工程C3AB结果【例5-18】SQL Server 2000 SQL Server 2000 网络数据库教程网络数据库教程自连接虽然使用一个表但有两个拷贝,在逻辑上是两 个表而且字段完全相同,因此字段列表中字段名必须加 上其中一个表的别名做前缀。 使用自连接会产生许多重复行,一般加关键字 DISTINCT过滤掉重复行。 自连接默认按ON使用的连接字段排序(供货商ID, 货号),为了按厂家顺序再按进货日期排序,本例使用 了ORDER BY指定排序。 由于使用了DISTINCT,所以不允许使用字段

8、列表没 有指定的“g1.进货日期”排序,也不允许使用别名“供货 日期”进行排序,本例使用了字段列表中的表达式。SQL Server 2000 SQL Server 2000 网络数据库教程网络数据库教程(3) 外部连接左外部连接操作是在结果集中保留连接表达式左表中的 非匹配记录; 右外部连接操作是在结果集中保留连接表达式右表中的 非匹配记录。 外部连接符号为“*=”,右外部连接符号为“=*”。外部连接 中不匹配的分量用NULL表示。职工 号姓名性别年龄所在部 门部门 号部门名 称电话1010李勇男201111生产科5661011刘晨女19 12计划科5781012王敏女221213一车间467

9、1014张立男211314科研所 职工表 部门表 SQL Server 2000 SQL Server 2000 网络数据库教程网络数据库教程连接的结果集 职工号姓名性别年龄所在部门部门名称电话1010李勇男2011生产科5661012王敏女2212计划科5781014张立男2113一车间467职工号姓名性别年龄所在部门部门名称电话1010李勇男2011生产科5661011刘晨女19 1012王敏女2212计划科5781014张立男2113一车间467内连接的结果集 左外部连接的结果集 SQL Server 2000 SQL Server 2000 网络数据库教程网络数据库教程【例5-19】内

10、连接:SELECT 职工.*,部门名称,电话FROM 职工,部门WHERE 职工.所在部门= 部门.部门号;左外部连接:SELECT 职工.*,部门名称,电话FROM 职工,部门WHERE 职工.所在部门*= 部门.部门号;右外部连接:SELECT 职工.*,部门名称,电话FROM 职工,部门WHERE 职工.所在部门 =*部门.部门号; 用SQL表达职工和部门之间的内连接、左外部连接和右外部连接的语句SQL Server 2000 SQL Server 2000 网络数据库教程网络数据库教程8 子查询(嵌套查询)子查询是嵌套在另一查询中的 Select-From-Where 表 达式(Whe

11、re/Having) SQL允许多层嵌套,由内而外地进行分析,子查询的 结果作为父查询的查找条件 可以用多个简单查询来构成复杂查询,以增强SQL的 查询能力 子查询中不使用 Order By 子句,Order By子句只能对 最终查询结果进行排序SQL Server 2000 SQL Server 2000 网络数据库教程网络数据库教程子查询(嵌套查询) 我们可能会提出这样的问题,在雇员中谁的工资最高, 或者谁的工资比赵军的高。 通过把一个查询的结果作为另一个查询的一部分,可以 实现这样的查询功能。 具体的讲:要查询工资高于赵军的雇员的名字和工资, 必须通过2个步骤来完成, 第一步查询雇员赵军

12、的工资, 第二步查询工资高于赵军的雇员。 第一个查询可以作为第二个查询的一部分出现在第二个 查询的条件中,这就是子查询。出现在其他查询中的查询 称为子查询,包含其他查询的查询称为主查询。SQL Server 2000 SQL Server 2000 网络数据库教程网络数据库教程子查询(嵌套查询)子查询一般出现在SELECT语句的WHERE子句中。子查询比主查询先执行,结果作为主查询的条件。在 书写上要用圆括号扩起来,并放在比较运算符的右侧。 子查询可以嵌套使用,最里层的查询最先执行。 子查询可以在SELECT、INSERT、UPDATE、 DELETE等语句中使用。SQL Server 200

13、0 SQL Server 2000 网络数据库教程网络数据库教程查找年龄比李明大的同学SELECT 姓名,年龄 FROM 学生 WHERE 年龄 (SELECT 年龄 FROM 学生 WHERE 姓名=李明);执行过程分两步: 1、 SELECT 年龄 FROM 学生 WHERE 姓名=李明); 得出年龄=21 2、SELECT 姓名,年龄 FROM 学生 WHERE 年龄21SQL Server 2000 SQL Server 2000 网络数据库教程网络数据库教程使用IN操作符的嵌套查询【例5-20】求选修了高等数学的学生学号和姓名。SELECT 学号,姓名 FROM 学生 WHERE 学

14、号 IN ( SELECT 学号 FROM 选课 WHERE 课程号 IN ( SELECT 课程号 FROM 课程 WHERE 课程名=高等数学);该题也可以使用下面的连接查询表达。SELECT 学生.学号,姓名 FROM 学生,课程,选 课WHERE 学生.学号=课程.学号 AND 课程.课程号=选 课.课程号 AND 课程.课程名=高等数学;SQL Server 2000 SQL Server 2000 网络数据库教程网络数据库教程(2) 使用比较符的嵌套查询【例5-21】求C1课程的成绩高于张三的学生学号和成 绩。 SELECT 学号,成绩 FROM 选课 WHERE 课程号=C1 A

15、ND 成绩 ( SELECt 成绩 FROM 选 课 WHERE 课程号=C1 AND 学号= (SELECT 学号 FROM 学生 WHERE 姓名=张三);SQL Server 2000 SQL Server 2000 网络数据库教程网络数据库教程(3) 使用ANY或ALL操作符的嵌套查询格式为:字段比较符ANY|ALL子查询操作符语意ANY大于子查询结果中的某个值,即表示大于查询结果中最小值ALL大于子查询结果中的所有值,即表示大于查询结果中最大值=ANY大于等于子查询结果中的某个值,即表示大于等于结果集中最小值=ALL大于等于子查询结果中的所有值,即表示大于等于结果集中最大值)ANY不等于子查询结果中的某个值,!=(或2;SQL Server 2000 SQL Server 2000 网络数据库教程网络数据库教程训练查找图书类别,要求类别中最高图书定价不低于全部 按类别分组的平均定价的2倍。 SELECT A.* FROM 图书 A GROUP BY A.类别 HAVING MAX(A.定价)=ALL (SELECT 2*AVG(B.定价) FROM 图书 B GROUP

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

当前位置:首页 > 学术论文 > 毕业论文

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