SELECT查询语句-内外连接_第1页
SELECT查询语句-内外连接_第2页
SELECT查询语句-内外连接_第3页
SELECT查询语句-内外连接_第4页
SELECT查询语句-内外连接_第5页
已阅读5页,还剩71页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、-江阴职业技术学院计算机系江阴职业技术学院计算机系-2022-5-7Microsoft SQL Server 20051Lecture 5 基本SELECT查询语句 -目标要求:掌握使用数据定义(DDL)定义数据库、数据表等对象。熟练掌握简单查询、嵌套查询、连接查询、分组与计算查询、集合的并运算。-江阴职业技术学院计算机系江阴职业技术学院计算机系-2022-5-7Microsoft SQL Server 20052结构化查询语言结构化查询语言(SQL) 结构化查询语言结构化查询语言:一种数据库查询和编程语言,广泛应用于访问、查询、更新和管理关系数据库系统中的数据。- SQL 全名是结构化查询语

2、言结构化查询语言(Structured Query Language),是用于数据库中的标准数据查询语言,IBM 公司最早使用在其开发的数据库系统中。1986年10月,美国 ANSI 对 SQL 进行规范后,以此作为关系型数据库管理关系型数据库管理系统系统的标准语言,1987年得到国际标准组织国际标准组织的支持下成为国际标准。- SQL语言包含3个部分: 数据定义(DDL)语言(如CREATE, DROP,ALTER等语句) 数据操纵(DML)语言(SELECT,INSERT, UPDATE, DELETE语句) 数据控制语言(如GRANT,REVOKE, ROLLBACK等语句) -江阴职业

3、技术学院计算机系江阴职业技术学院计算机系-2022-5-7Microsoft SQL Server 20053数据定义语言 数据定义语言数据定义语言 (Data Definition Language, DDL) 是SQL语言集中,负责数据结构定义与数据库对象定义的语言,由CREATE、ALTER与DROP三个语法所组成。-江阴职业技术学院计算机系江阴职业技术学院计算机系-2022-5-7Microsoft SQL Server 20054CREATE指令 CREATE是负责数据库对象的建立是负责数据库对象的建立 CREATE DATABASE CREATE TABLE CREATE INDE

4、X:创建数据表索引。 CREATE PROCEDURE:创建存储过程。 CREATE FUNCTION:创建用户自定义函数。 CREATE VIEW:创建视图。 CREATE TRIGGER:创建触发器。 -江阴职业技术学院计算机系江阴职业技术学院计算机系-2022-5-7Microsoft SQL Server 20055ALTER指令 ALTER ALTER 是负责数据库对象修改的指令,例如: ALTER TABLE Tb_Student ADD column_b VARCHAR(20) NULL ; - 在数据表 Tb_Student中加入一个新的字段,名称为 column_b,字段类型

5、为 varchar(20),允许 NULL值。 ALTER TABLE Tb_Student DROP COLUMN column_b ; - 在数据表 Tb_Student中移除 column_b 字段。 -江阴职业技术学院计算机系江阴职业技术学院计算机系-2022-5-7Microsoft SQL Server 20056DROP指令 DROP DROP 则是删除数据库对象的指令,并且只需要指定要删除的数据库对象名称即可,在 DDL 语法中算是最简单的。 例如: DROP TABLE MyTable; - 刪除 MyTable 数据表。 DROP VIEW MyView; - 刪除 MyV

6、iew 视图。 -江阴职业技术学院计算机系江阴职业技术学院计算机系-2022-5-7Microsoft SQL Server 20057数据操纵语言 数据操纵语言数据操纵语言 (Data Manipulation Language) 是SQL语言中,负责对数据库对象执行数据存取工作的指令集,以SELECT、INSERT、UPDATE、DELETE四种指令为核心。 DML的主要功能即是存取数据,因此其语法都是以读取与写入数据库为主,除了INSERT以外,其他三种指令都可能需搭配WHERE指令来过滤数据范围,或是不加WHERE指令来存取全部的数据。-江阴职业技术学院计算机系江阴职业技术学院计算机系

7、-2022-5-7Microsoft SQL Server 20058INSERT指令 INSERT 是将数据插入到数据库对象中的指令,可以插入数据的数据库对象有数据表以及可更新视图两种。 基本格式有: INSERT INTO 数据表或可更新视图名称 (字段1,字段2,字段3, .) VALUES (值1, 值2, 值3, .) - 只需要根据对应的字段來设定插入值。 INSERT INTO 数据表或可更新视图名称 VALUES (值1, 值2, 值3, .) - 必須要指定所有字段的插入值。 例如: INSERT INTO MyTable (字段1,字段2,字段3,字段4,字段5) VALU

8、ES (1, 2, 3, 4, 5)-江阴职业技术学院计算机系江阴职业技术学院计算机系-2022-5-7Microsoft SQL Server 20059UPDATE 指令 UPDATE 指令是依给定条件,将符合条件的数据表中的数据更新为新的数值,其基本格式为: UPDATE 数据表或可更新视图名称 SET 字段1=值1,字段2=值2,字段3=值3, . WHERE 指定条件 例如: UPDATE MyTable SET 字段1 = 3,字段2 = 5, 字段4 = 5 WHERE 字段3 = 198273 -江阴职业技术学院计算机系江阴职业技术学院计算机系-2022-5-7Microsof

9、t SQL Server 200510DELETE 指令 DELETE 指令从数据库对象中删除数据的指令,基本语法为: DELETE FROM 数据表或可更新视图名称 WHERE 给定条件 例如: DELETE FROM MyTable WHERE 字段3 = 1918299 值为字符时,加西文单引号。-江阴职业技术学院计算机系江阴职业技术学院计算机系-2022-5-7Microsoft SQL Server 200511数据控制语言 数据控制语言数据控制语言 (Data Control Language) 在SQL语言中,是一种可对数据存取权进行控制的指令,它可以控制特定用户对数据表、视图、

10、存储过程、用户自定义函数等数据库对象的控制权。由 GRANT 和 REVOKE 两个指令组成。 GRANT 的语法结构为: GRANT 权限 ON 要授予权限的数据库对象 TO 用户 WITH 授权选项 DENY 的语法结构为: DENY 权限 ON 要拒绝权限的数据库对象 TO 用户 权限可以是INSERTUPDATE等,参见教材p230-江阴职业技术学院计算机系江阴职业技术学院计算机系-2022-5-7Microsoft SQL Server 200512Select 查询-江阴职业技术学院计算机系江阴职业技术学院计算机系-2022-5-7Microsoft SQL Server 2005

11、13简单Select 查询 语法: SELECT 字段1,字段2, FROM 表名 SELECT * FROM 表名 SELECT 字段1,字段2, FROM 表名 WHERE 查询条件 SELECT * FROM 表名 WHERE 查询条件 简单的Transact-SQL查询只包括选择列表、FROM子句和WHERE子句。它们分别说明所查询列、查询的表或视图、以及搜索条件等。 -江阴职业技术学院计算机系江阴职业技术学院计算机系-2022-5-7Microsoft SQL Server 200514简单Select 查询SELECT StuId,StuName,DeptId,Sex FROM T

12、b_StudentSELECT * FROM Tb_Student-江阴职业技术学院计算机系江阴职业技术学院计算机系-2022-5-7Microsoft SQL Server 200515简单Select 查询SELECT StuId,StuName,DeptId,Sex FROM Tb_Student WHERE Sex=FSELECT * FROM Tb_Teacher WHERE Sex=F and DeptId= 08 -江阴职业技术学院计算机系江阴职业技术学院计算机系-2022-5-7Microsoft SQL Server 200516WHERE子句使用的运算符类别类别运算符运算符

13、说明说明比较运算符=、=、=、比较两个表达式逻辑运算符AND、OR、NOT组合两个表达式的运算结果或取反范围运算符BETWEEN、NOT BETWEEN查询值是否在范围内列表运算符IN、NOT IN查询值是否属于列表值之一字符匹配符LIKE、NOT LIKE字符串是否匹配未知值IS NULL、IS NOT NULL查询值是否为NULL-江阴职业技术学院计算机系江阴职业技术学院计算机系-2022-5-7Microsoft SQL Server 200517比较运算符和表达式 运运 算算 符符含含 义义=等于大于=大于等于=小于等于不等于SELECT * FROM Tb_Student WHERE

14、 StuName张三SELECT * FROM Tb_Student WHERE Sex= F-江阴职业技术学院计算机系江阴职业技术学院计算机系-2022-5-7Microsoft SQL Server 200518逻辑运算符和表达式 运算符运算符含含 义义AND如果两个布尔表达式都为 TRUE,那么就为 TRUEOR如果两个布尔表达式中的一个为 TRUE,那么就为 TRUENOT对任何其他布尔运算符的值取反SELECT * FROM Tb_Student WHERE Sex= M and Sex= FSELECT * FROM Tb_Student WHERE ClassId= S04020

15、1101 and Sex= FSELECT * FROM Tb_Student WHERE NOT Sex= M-江阴职业技术学院计算机系江阴职业技术学院计算机系-2022-5-7Microsoft SQL Server 200519范围搜索运算符和表达式 SELECT * FROM Tb_Student WHERE Age BETWEEN 20 TO 22-SELECT * FROM Tb_Student WHERE Age NOT BETWEEN 20 TO 22-SELECT * FROM Tb_Student WHERE Age IN (20,21,22)-相当于 SELECT * F

16、ROM Tb_Student WHERE Age=20 OR Age=21 OR Age=22类别类别运算符运算符说明说明范围运算符BETWEEN、NOT BETWEEN查询值在范围内列表运算符IN、NOT IN查询值属于列表值之一-江阴职业技术学院计算机系江阴职业技术学院计算机系-2022-5-7Microsoft SQL Server 200520模式匹配运算符和表达式 SELECT * FROM Tb_Student WHERE StuName LIKE 张%通配符通配符说明说明示例示例%匹配零个或多个字符的任意字符串。LIKE %林% 姓名中包含有“林”的信息。_下划线匹配任何单个字符

17、。一个汉字只使用一个_表示LIKE 林_ 姓名第一个字为“林”并且名字只有两个字。 匹配指定范围 (a-f) 或集合(abcdef) 中的任何单个字符。LIKE 张王% 姓张或姓王的信息。匹配不属于指定范围 (a-f) 或集合 (abcdef) 中的任何单个字符。LIKE 王林% 姓王且第二个字不是林的信息。SELECT * FROM Tb_Student WHERE StuName NOT LIKE 张三-江阴职业技术学院计算机系江阴职业技术学院计算机系-2022-5-7Microsoft SQL Server 200521未知值条件 NULL表示未知的,不可用或将在以后添加的数据。NULL

18、值与零、零长度的字符串的含义不同。 在WHERE子句中,使用IS NULL或IS NOT NULL条件可以查询某一数据值是否为NULL的数据信息。 例如:SELECT * FROM Tb_Grade WHERE RetestScore IS NOT NULLSELECT * FROM Tb_CourseWHERE CourseName IS NULL-江阴职业技术学院计算机系江阴职业技术学院计算机系-2022-5-7Microsoft SQL Server 200522字符串运算符和表达式 字符串表达式是用字符串连接符()将字符型常量、变量、字符串函数连接组成的式子。字符串表达式的计算结果包括

19、两个字符串内的空格和所有字符,仍然是字符型。 如 我爱+ 我家 表达式的值为: 我爱 我家 - 例如:Beijing+ Huanying + Ning! 请写出结果!-江阴职业技术学院计算机系江阴职业技术学院计算机系-2022-5-7Microsoft SQL Server 200523运算符的优先级 运算符的优先级决定了表达式的计算和比较操作顺序。运算符的优先级由高到低的顺序为: 1)括号:()。 2)正、负或取反运算:+、-、。 3)乘、除、求模运算:*、/、。 4)加、减、字符连接运算:+、-、+。 5)比较运算:、!、!、!。 6)位运算位运算:、|。 7)逻辑非运算:NOT。 8)逻

20、辑与运算:AND。 9) BETWEEN、IN、LIKE、OR等运算。 10)赋值运算:。-江阴职业技术学院计算机系江阴职业技术学院计算机系-2022-5-7Microsoft SQL Server 200524ORDER BY子句 使用SELECT语句进行数据查询,为了按一定顺序浏览数据,可以使用ORDER BY子句对生成的查询结果进行排序。ORDER BY子句在SELECT语句中的语法格式如下:- SELECT 字段1,字段2, FROM 表名 WHERE 查询条件 ORDER BY 排序表达式 ASC | DESC-江阴职业技术学院计算机系江阴职业技术学院计算机系-2022-5-7Mic

21、rosoft SQL Server 200525ORDER BY子句SELECT StuId,StuName,Sex FROM Tb_Student WHERE DeptId=08 ORDER BY StuNameSELECT StuId,StuName,Sex FROM Tb_Student WHERE DeptId=08 ORDER BY StuName DESC-江阴职业技术学院计算机系江阴职业技术学院计算机系-2022-5-7Microsoft SQL Server 200526ORDER BY子句SELECT StuId,StuName,Sex FROM Tb_Student WHE

22、RE DeptId=08 ORDER BY StuName,Sex 结果如何?-江阴职业技术学院计算机系江阴职业技术学院计算机系-2022-5-7Microsoft SQL Server 200527 ORDER BY子句 ORDER BY子句总是位于WHERE子句(如果有的话)后面,可以包含一个或多个列,每个列之间以逗号分隔。这些列可能是表中定义的列,也可能是SELECT子句中定义的计算列。 - 在SQL Server 2005中,汉字比其它字符值都要大,而汉字之间的大小比较是取决于其拼音首字母的大小。 如果没有特别说明,值是以升序序列进行排序的。当然,你也可以选择使用ASC关键字指定升序排

23、序。 - 如果你希望以降序排列,则在ORDER BY后面使用DESC关键字。 -江阴职业技术学院计算机系江阴职业技术学院计算机系-2022-5-7Microsoft SQL Server 200528GROUP BY 子句 使用SELECT语句进行数据查询,为了按特定条件分组浏览数据,可以使用GROUP BY子句对某一列数据的值进行分类,形成结果集。GROUP BY子句在SELECT语句中的语法格式如下:- SELECT 字段1,字段2, FROM 表名 WHERE 查询条件 GROUP BY 字段1,字段2, WITH ROLLUP | CUBE ORDER BY 排序表达式 ASC | D

24、ESC- CUBE 生成的结果集显示了所选列中值的所有组合(包括显示了所选列中值的所有组合(包括字段1、字段2、字段1+字段2)的分组统计结果和总的汇总统计的聚合;ROLLUP生成的结果集显示了所选列中值的某一层次结构某一层次结构的聚合。(包括(包括字段1、字段1+字段2的分组统计结果和总的汇总统计的聚合)-江阴职业技术学院计算机系江阴职业技术学院计算机系-2022-5-7Microsoft SQL Server 200529聚合函数 聚合函数是SQL语言中一种特殊的函数,比如SUM, COUNT, MAX, MIN, AVG等。这些函数和其它函数的根本区别就是它们一般作用在多条记录上。换句话

25、说,上面几个返函数的值建立在对多条记录进行统计的基础上。 SUM是求和函数。 SELECT ClassId,SUM(Score) FROM Tb_Grade WHERE ClassId=S0408011 COUNT函数用来计算记录的数量。 Select COUNT(StuID) FROM Tb_Grade WHERE ClassId=S0408011 MAX, MIN, AVG函数分别是用来求最大值、最小值和平均值。 SELECT MAX(Score), MIN(Score), AVG(Score) FROM Tb_Grade WHERE ClassId=S0408011-江阴职业技术学院计算

26、机系江阴职业技术学院计算机系-2022-5-7Microsoft SQL Server 200530GROUP BY 子句 常用统计函数函数名功能COUNT求组中项数SUM求和,返回表达式中所有值的和AVG求均值,返回表达式中所有值的平均值MAX求最大值,返回表达式中所有值的最大值MIN求最小值,返回表达式中所有值的最小值ABS求绝对值,返回表达式的绝对值ASCII求ASCII码,返回字符型数据的ASCIIRAND产生随机数,返回一个位于0和1之间的随机数-江阴职业技术学院计算机系江阴职业技术学院计算机系-2022-5-7Microsoft SQL Server 200531GROUP BY子

27、句-显示每个学生的班级编码和成绩SELECT ClassId,TotalScore FROM Tb_Grade-汇总每个班级的平均成绩SELECT ClassId,AVG(TotalScore)FROM Tb_GradeGROUP BY ClassId-江阴职业技术学院计算机系江阴职业技术学院计算机系-2022-5-7Microsoft SQL Server 200532-SELECT ClassId,ClassName,AVG(TotalScore)FROM Tb_Grade,Tb_ClassGROUP BY ClassIdGROUP BY子句-汇总每个班级(含班级名称)的平均成绩?SELE

28、CT ClassId,ClassName,AVG(TotalScore)FROM Tb_GradeGROUP BY ClassId-SELECT Tb_Grade.ClassId,ClassName,AVG(TotalScore)FROM Tb_Grade,Tb_ClassWHERE Tb_Grade.ClassId=Tb_Class.ClassIdGROUP BY Tb_Grade.ClassId-江阴职业技术学院计算机系江阴职业技术学院计算机系-2022-5-7Microsoft SQL Server 200533GROUP BY子句 -显示班级名称的汇总各班平均成绩显示班级名称的汇总各班

29、平均成绩 SELECT ClassId,ClassName,AVG(TotalScore) AS AvgScore FROM Tb_Grade,Tb_Class WHERE ClassId=ClassId GROUP BY ClassId,ClassName当两个表中都有ClassId字段时,要加上表前缀,说明是那个表的ClassId字段SELECT列表中出现的字段都必须要在GROUP BY列表中出现,聚合函数字段除外当要显示相关主键表中的其它字段时,如这儿的ClassName字段,则在WHERE子句中通过主外键关系进行连接-江阴职业技术学院计算机系江阴职业技术学院计算机系-2022-5-7M

30、icrosoft SQL Server 200534GROUP BY 子句 查询各个班级的最大成绩和最小成绩? SELECT Tb_Grade.ClassId,ClassName,MAX(TotalScore) AS MaxScore, MIN(TotalScore) AS MinScore FROM Tb_Grade,Tb_Class WHERE Tb_Grade.ClassId=Tb_Class.ClassId GROUP BY Tb_Grade.ClassId,ClassName-江阴职业技术学院计算机系江阴职业技术学院计算机系-2022-5-7Microsoft SQL Server

31、200535GROUP BY 子句 GROUP BY分类汇总,分项统计 紧跟在GROUP BY后面的字段就是分组条件。 如果在前面选择列表中出现的非聚合字段未出现在GROUP BY后面,SQL语句就会出错。思考题: 按照不同班级和性别统计学生平均年龄。 -江阴职业技术学院计算机系江阴职业技术学院计算机系-2022-5-7Microsoft SQL Server 200536HAVING子句 HAVING子句相当于一个用于组(分类汇总)的WHERE子句,它指定了组或聚合的查询条件。HAVING子句通常与GROUP BY子句一起使用。HAVING子句的语法为:- SELECT 字段1,字段2, F

32、ROM 表名 WHERE 查询条件 GROUP BY字段1,字段2, HAVING 组查询条件-江阴职业技术学院计算机系江阴职业技术学院计算机系-2022-5-7Microsoft SQL Server 200537HAVING子句 显示各班级学生平均总成绩大于显示各班级学生平均总成绩大于73的班级编号。的班级编号。 SELECT Tb_Grade.ClassId, AVG(TotalScore) AS AvgScore FROM Tb_Grade GROUP BY Tb_Grade.ClassId HAVING AVG(TotalScore)73-江阴职业技术学院计算机系江阴职业技术学院计算

33、机系-2022-5-7Microsoft SQL Server 200538HAVING子句 求各个班级的最大成绩和最小成绩,且最低成绩小于50分的? SELECT Tb_Grade.ClassId, MAX(TotalScore) AS MaxScore, MIN(TotalScore) AS MinScore FROM Tb_Grade GROUP BY Tb_Grade.ClassId HAVING MIN(TotalScore)50-江阴职业技术学院计算机系江阴职业技术学院计算机系-2022-5-7Microsoft SQL Server 200539HAVING子句 HAVING子句

34、用来对分组后的数据进行筛选,它后面会跟一个条件表达式。 当在GROUP BY 子句中使用HAVING子句时,查询结果中只返回满足HAVING条件的组。-江阴职业技术学院计算机系江阴职业技术学院计算机系-2022-5-7Microsoft SQL Server 200540SELECT语法总结 SELECT select_list FROM table_list WHERE search_conditions GROUP BY group_by_list HAVING search_conditions ORDER BY order_list ASC | DESC 上述“ ”表示可选项,“ |

35、”表示取其中之一。-江阴职业技术学院计算机系江阴职业技术学院计算机系-2022-5-7Microsoft SQL Server 200541计算列 SELECT后面还可以是计算列。在SELECT后面的计算列,只是位于该SELECT语句中,是临时性的,它由一个表达式产生。 SELECT StuId, StuName+(+Sex+) FROM Tb_Student 上面语句中的StuName+(+Sex+)就构成了一个计算列,它的值由两个字符型值和一对括号连接组成。 -江阴职业技术学院计算机系江阴职业技术学院计算机系-2022-5-7Microsoft SQL Server 200542列别名 在

36、上面的结果集中,列名都是英文。这样看上去很不直观,我们希望能够给列名换上诸如“学号、姓名”等这样的名字。只需在SELECT语句中,给列取个别名即可。AS可以省去。可以省去。 SELECT StuId AS 学号, StuName+ (+Sex+) AS 姓名性别 FROM Tb_Student SELECT StuId 学号, StuName+ (+Sex+) 姓名性别 FROM Tb_Student SELECT 学号=StuId,姓名性别=StuName+(+Sex+) FROM Tb_Student-江阴职业技术学院计算机系江阴职业技术学院计算机系-2022-5-7Microsoft S

37、QL Server 200543 当然,我们也可以给表指定列别名,给表取别名和给列取别名类似,但只可以用 “原始表名原始表名 AS 别名别名”和和 “原始表名原始表名 别名别名”这两种方式。 SELECT * FROM Tb_Student ST 或者 SELECT * FROM Tb_Student AS ST- 字段别名不能放在WHERE子句中,而表别名可以放在WHERE子句中。 表别名-江阴职业技术学院计算机系江阴职业技术学院计算机系-2022-5-7Microsoft SQL Server 200544多表查询-江阴职业技术学院计算机系江阴职业技术学院计算机系-2022-5-7Micr

38、osoft SQL Server 200545 查询全院各系部拥有班级的基本情况,显示系部名称、班级编码和班级名称; 多表查询-江阴职业技术学院计算机系江阴职业技术学院计算机系-2022-5-7Microsoft SQL Server 200546 USE Teaching_System GO SELECT d.*, c.* FROM Tb_Class AS c, Tb_Dept AS d 多表查询-江阴职业技术学院计算机系江阴职业技术学院计算机系-2022-5-7Microsoft SQL Server 200547 笛卡尔乘积多表查询-江阴职业技术学院计算机系江阴职业技术学院计算机系-20

39、22-5-7Microsoft SQL Server 200548多表查询-江阴职业技术学院计算机系江阴职业技术学院计算机系-2022-5-7Microsoft SQL Server 200549多表查询-江阴职业技术学院计算机系江阴职业技术学院计算机系-2022-5-7Microsoft SQL Server 200550 USE Teaching_System GO SELECT d.*, c.* FROM Tb_Class AS c, Tb_Dept AS d WHERE c.DeptId=d.DeptId多表查询-江阴职业技术学院计算机系江阴职业技术学院计算机系-2022-5-7Mic

40、rosoft SQL Server 200551多表查询 SELECT StuId,StuName,DeptId,SpecId,ClassId,Sex FROM Tb_Student SELECT StuId 学号,StuName 姓名,DeptId 系部,SpecId 专业,ClassId 班级,Sex 性别 FROM Tb_Student-江阴职业技术学院计算机系江阴职业技术学院计算机系-2022-5-7Microsoft SQL Server 200552两表连接 SELECT StuId 学号,StuName 姓名,DeptName 系部, SpecId 专业,ClassId 班级,S

41、ex 性别 FROM Tb_Student TS,Tb_Dept TD WHERE TS.DeptId=TD.DeptId-江阴职业技术学院计算机系江阴职业技术学院计算机系-2022-5-7Microsoft SQL Server 200553多表连接基础 在实际查询应用中,用户所需要的数据并不全部在一个表中,这时就需要多表查询,从多个表中抽取我们所需要的数据信息。 多表查询实际上是通过各个表之间的共同列通过各个表之间的共同列的相关性(主外键关系)来查询数据的,这是关系数据库查询数据的主要特征。 多表查询首先要用WHERE子句在表之间建立连接关系。 在进行多表查询时,可以遵循以下基本原则基本原

42、则: (1)SELECT子句列表中,字段前要加上基表名称; (2)FROM子句应包括所有使用的基表; (3)WHERE子句应在表之间建立连接关系。-江阴职业技术学院计算机系江阴职业技术学院计算机系-2022-5-7Microsoft SQL Server 200554两表连接 SELECT StuId 学号,StuName 姓名,DeptId 系部编码, DeptName 系部, SpecId 专业,ClassId 班级,Sex 性别 FROM Tb_Student TS,Tb_Dept TD WHERE TS.DeptId=TD.DeptId SELECT StuId 学号,StuName

43、姓名, TS.DeptId 系部编码, DeptName 系部, SpecId 专业,ClassId 班级,Sex 性别 FROM Tb_Student TS,Tb_Dept TD WHERE TS.DeptId=TD.DeptId-江阴职业技术学院计算机系江阴职业技术学院计算机系-2022-5-7Microsoft SQL Server 200555多表连接 SELECT StuId 学号,StuName 姓名,DeptName 系部, SpecName 专业,ClassName 班级,Sex 性别 FROM Tb_Student TS,Tb_Dept TD,Tb_Spec TSP, Tb_

44、Class TC WHERE TS.DeptId=TD.DeptId AND TS.SpecId=TSP.SpecId AND TS.ClassId=TC.ClassId要求显示学生姓名和所在系名、专业、班级名称?-江阴职业技术学院计算机系江阴职业技术学院计算机系-2022-5-7Microsoft SQL Server 200556各种连接查询 内连接内连接:内连接是一种常用的数据连接查询方式。它使用比较运算符进行多个表之间的比较连接操作。内连接会消除与另一个表的任何不匹配的数据行。 外连接外连接:外连接会返回FROM子句中提到的至少一个表的所有符合查询条件的数据行(包括连接中不匹配的数据行

45、),外连接分为左外连接左外连接、右右外连接外连接和完全连接完全连接。 交叉连接交叉连接:当对两个表使用交叉连接查询时,将返回来自这两个表的各行的所有可能的数据行组合。 自连接自连接:表自身的链接参见教材p119。-江阴职业技术学院计算机系江阴职业技术学院计算机系-2022-5-7Microsoft SQL Server 200557两个样例表 SELECT * FROM Tb_Dept SELECT ClassId,ClassName,DeptId FROM Tb_Class-江阴职业技术学院计算机系江阴职业技术学院计算机系-2022-5-7Microsoft SQL Server 20055

46、8内连接 SELECT DeptName 系部名称, ClassId 班级编码, ClassName 班级名称 FROM Tb_Dept INNER JOIN Tb_Class ON Tb_Class.DeptId=Tb_Dept.DeptId等同于:等同于: SELECT DeptName 系部名称, ClassId 班级编码, ClassName 班级名称 FROM Tb_Class,Tb_Dept WHERE Tb_Dept.DeptId=Tb_Class.DeptId-江阴职业技术学院计算机系江阴职业技术学院计算机系-2022-5-7Microsoft SQL Server 20055

47、9外连接-左外连接 SELECT DeptName 系部名称, ClassId 班级编码, ClassName 班级名称 FROM Tb_Dept LEFT OUTER JOIN Tb_Class ON Tb_Dept.DeptId=Tb_Class.DeptId 左边表中列全显示-江阴职业技术学院计算机系江阴职业技术学院计算机系-2022-5-7Microsoft SQL Server 200560外连接-右外连接 SELECT DeptName 系部名称, ClassId 班级编码, ClassName 班级名称 FROM Tb_Dept RIGHT OUTER JOIN Tb_Class

48、 ON Tb_Dept.DeptId=Tb_Class.DeptId 右边表中列全显示-江阴职业技术学院计算机系江阴职业技术学院计算机系-2022-5-7Microsoft SQL Server 200561外连接-完全连接 SELECT DeptName 系部名称, ClassId 班级编码, ClassName 班级名称 FROM Tb_Dept FULL OUTER JOIN Tb_Class ON Tb_Dept.DeptId=Tb_Class.DeptId-江阴职业技术学院计算机系江阴职业技术学院计算机系-2022-5-7Microsoft SQL Server 200562交叉连接

49、 SELECT DeptName 系部名称, ClassId 班级编码, ClassName 班级名称 FROM Tb_Dept CROSS JOIN Tb_Class-江阴职业技术学院计算机系江阴职业技术学院计算机系-2022-5-7Microsoft SQL Server 200563交叉连接不使用WHERE子句时,返回的结果是一个基本表中符合条件的行数乘以另一个基本表中符合条件的行数。使用WHERE子句时,返回的结果是被连接的两个基本表所有行的笛卡尔积中满足WHERE条件的所有行的行数。参见教材p118-江阴职业技术学院计算机系江阴职业技术学院计算机系-2022-5-7Microsoft

50、 SQL Server 200564联合查询(UNION) 如果有多个不同的查询结果,但又希望将这些查询结果放在一起显示,组成一组数据。在这种情况下,可以使用UNION子句。使用UNION子句的查询又称为联合查询,它可以将两个和多个查询结果集组合成为单个结果集。语法如下: SELECT select_list FROM table_list WHERE search_conditions UNION ALL SELECT select_list FROM table_list WHERE search_conditions 其中,ALL关键字为可选的,如果在UNION子句中使用该关键字,则返回

51、全部数据行;如果不使用该关键字,则返回结果中删除重复数据行。-江阴职业技术学院计算机系江阴职业技术学院计算机系-2022-5-7Microsoft SQL Server 200565联合查询(UNION) SELECT * FROM Tb_Spec WHERE SpecId08 UNION SELECT StuId,StuName,Sex FROM Tb_Student WHERE ClassIdS0408011-江阴职业技术学院计算机系江阴职业技术学院计算机系-2022-5-7Microsoft SQL Server 200566章节综合练习 每个学年结束,班主任都要对班级学生成绩进行分析,

52、然后初定学年奖学金获得者的人选。让我们运用数据库查询的知识帮助04网络1班的班主任刘老师完成以下两个任务:根据学院奖学金评选规定,初定获奖学金学生名单;(每位同学的课程平均成绩必须高于75分)对该班级开设的各门课程分别进行成绩分析。显示课程编号、学生学号和成绩的明细并分别汇总每门课程的平均成绩。 -江阴职业技术学院计算机系江阴职业技术学院计算机系-2022-5-7Microsoft SQL Server 200567章节综合练习-江阴职业技术学院计算机系江阴职业技术学院计算机系-2022-5-7Microsoft SQL Server 200568任务一 USE Teaching_System GO SELECT StuId 学号, AVG(TotalScore) AS 平均成绩 FROM

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论