SQL Server 数据库教程 2008版 教学课件 ppt 作者 郑阿奇 刘启芬 顾韵华 第4章 数据库查询和视图

上传人:E**** 文档编号:89394782 上传时间:2019-05-24 格式:PPT 页数:99 大小:1.80MB
返回 下载 相关 举报
SQL Server 数据库教程 2008版  教学课件 ppt 作者  郑阿奇 刘启芬 顾韵华 第4章  数据库查询和视图_第1页
第1页 / 共99页
SQL Server 数据库教程 2008版  教学课件 ppt 作者  郑阿奇 刘启芬 顾韵华 第4章  数据库查询和视图_第2页
第2页 / 共99页
SQL Server 数据库教程 2008版  教学课件 ppt 作者  郑阿奇 刘启芬 顾韵华 第4章  数据库查询和视图_第3页
第3页 / 共99页
SQL Server 数据库教程 2008版  教学课件 ppt 作者  郑阿奇 刘启芬 顾韵华 第4章  数据库查询和视图_第4页
第4页 / 共99页
SQL Server 数据库教程 2008版  教学课件 ppt 作者  郑阿奇 刘启芬 顾韵华 第4章  数据库查询和视图_第5页
第5页 / 共99页
点击查看更多>>
资源描述

《SQL Server 数据库教程 2008版 教学课件 ppt 作者 郑阿奇 刘启芬 顾韵华 第4章 数据库查询和视图》由会员分享,可在线阅读,更多相关《SQL Server 数据库教程 2008版 教学课件 ppt 作者 郑阿奇 刘启芬 顾韵华 第4章 数据库查询和视图(99页珍藏版)》请在金锄头文库上搜索。

1、第4章 数据库查询和视图,4.1 关系运算,4.2 数据库查询,4.3 视图,4.4 游标,4.1 关系运算,1. 选择(Selection) 例如,若要在T表(表4.1)中找出T120的行形成一个新表,则运算式为 F(T) 上式中F:T120,该选择运算的结果如表4.2所示。,4.1 关系运算,2. 投影(Projection) 例如,在T表中对T1、T2和T5投影,运算式为 T1,T2,T5(T) 该运算得到如表4.3所示的新表。,4.1 关系运算,3. 连接(Join) 例如,若表A和B分别如表4.4和表4.5所示,则 如表4.6所示,其中,F为T1=T3。,4.1 关系运算,例如,若表

2、A和B分别如表4.7和表4.8所示,则 如表4.9所示。,4.2 数据库查询,4.2.1 选择列 通过SELECT语句的项组成结果表的列。语法格式如下: := * /*选择当前表或视图的所有列*/ | table_name | view_name | table_alias .* /*选择指定的表或视图的所有列*/ | column_name | expression | $IDENTITY /*选择指定的列*/ | expression AS column_alias /*AS子句,定义列别名*/ | column_alias = expression /*选择指定列并更改列标题*/ ,.n

3、 ,4.2.1 选择列,1选择所有列 使用“*”表示选择一个表或视图中的所有列。 【例4.1】 查询PXSCJ数据库中XSB表的所有数据。 USE PXSCJ GO SELECT * FROM XSB GO,4.2.1 选择列,2选择一个表中指定的列 使用SELECT语句选择一个表中的某些列,各列名之间要以逗号分隔。其中,$IDENTITY表示选择标识列。 【例4.2】 查询PXSCJ数据库的XSB表中各个同学的姓名、专业和总学分。 USE PXSCJ GO SELECT 姓名,专业,总学分 FROM XSB GO 【例4.3】 查询XSB表中计算机专业同学的学号、姓名和总学分,查询XSB表中

4、所有列。 SELECT 学号, 姓名, 总学分 FROM XSB WHERE 专业 = 计算机 GO SELECT * FROM XSB,4.2.1 选择列,执行后在结果窗口中将分别列出两个查询语句的结果,如图4.1所示。,4.2.1 选择列,3定义列别名 【例4.4】 查询XSB表中计算机系同学的学号、姓名和总学分,结果中各列的标题分别指定为number、name和mark。代码如下,执行结果如图4.2所示。 USE PXSCJ GO SELECT 学号 AS number, 姓名 AS name, 总学分 AS mark FROM XSB WHERE 专业= 计算机,4.2.1 选择列,更

5、改查询结果中的列标题也可以使用column_alias=expression的形式。例如, SELECT number = 学号, name = 姓名, mark = 总学分 FROM XSB WHERE 专业= 计算机 该语句的执行结果与上例的结果完全相同。 当自定义的列标题中含有空格时,必须使用引号将标题括起来。例如, SELECT Student number = 学号,姓名 AS Student name, mark = 总学分 FROM XSB WHERE 专业= 计算机,4.2.1 选择列,4替换查询结果中的数据 要替换查询结果中的数据,则要使用查询中的CASE表达式,格式为 CA

6、SE WHEN 条件1 THEN 表达式1 WHEN 条件2 THEN 表达式2 ELSE 表达式 END,4.2.1 选择列,【例4.5】 查询XSB表中计算机系各同学的学号、姓名和总学分,对其总学分按以下规则进行替换:若总学分为空值,则替换为“尚未选课”;若总学分小于50,则替换为“不及格”;若总学分在50与52之间,则替换为“合格”;若总学分大于52,则替换为“优秀”。列标题更改为“等级”。代码如下,执行结果如图4.3所示。 USE PXSCJ GO SELECT 学号, 姓名, 等级= CASE WHEN 总学分 IS NULL THEN 尚未选课 WHEN 总学分 =50 and 总

7、学分=52 THEN 合格 ELSE 优秀 END FROM XSB WHERE 专业= 计算机 GO,4.2.1 选择列,5计算列值 使用SELECT对列进行查询时,在结果中可以输出对列值计算后的值,即SELECT子句可使用表达式作为结果,格式为 SELECT expression , expression 【例4.6】 按120分计算成绩并显示学号为081101的学生的成绩情况。代码如下,执行结果如图4.4所示。 USE PXSCJ GO SELECT 学号, 课程号, 成绩120=成绩*1.20 FROM CJB WHERE 学号= 081101,4.2.1 选择列,6消除结果集中的重复

8、行 可以使用DISTINCT关键字消除结果集中的重复行,其格式是 SELECT DISTINCT | ALL column_name , column_name 关键字DISTINCT的含义是,对结果集中的重复行只选择一个,保证行的唯一性。 【例4.7】 对PXSCJ数据库的XSB表只选择专业和总学分,消除结果集中的重复行。代码如下,执行结果如图4.5所示。 USE PXSCJ GO SELECT DISTINCT 专业,总学分 FROM XSB,4.2.1 选择列,7限制结果集返回行数 如果SELECT语句返回的结果集的行数非常多,那么可以使用TOP选项限制其返回的行数。TOP选项的基本格式

9、为 TOP expression PERCENT WITH TIES 【例4.8】 对PXSCJ数据库的XSB表选择姓名、专业和总学分,返回结果集的前6行。 SELECT TOP 6 姓名,专业,总学分 FROM XSB,4.2.1 选择列,8聚合函数 SQL Server 2008所提供的聚合函数列于表4.10中。,4.2.1 选择列,下面对常用的聚合函数加以介绍。 (1)SUM和AVG SUM和AVG分别用于求表达式中所有值项的总和与平均值,语法格式为 SUM /AVG ( ALL | DISTINCT expression ) 【例4.9】 求选修101课程的学生的平均成绩。 SELEC

10、T AVG(成绩) AS 课程101平均成绩 FROM CJB WHERE 课程号 = 101 【例4.10】 求学号为081101的同学所学课程的总成绩。 SELECT SUM(成绩) AS 课程总成绩 FROM CJB WHERE 学号 = 081101;,4.2.1 选择列,(2)MAX和MIN MAX和MIN分别用于求表达式中所有值项的最大值与最小值,语法格式为 MAX / MIN ( ALL | DISTINCT expression ) 【例4.11】 求选修101课程的学生的最高分和最低分。语句如下,执行结果如图4.6所示。 SELECT MAX(成绩) AS 课程101的最高分

11、 , MIN(成绩) AS 课程101的最低分 FROM CJB WHERE 课程号 = 101,4.2.1 选择列,(3)COUNT COUNT用于统计组中满足条件的行数或总行数,格式为 COUNT ( ALL | DISTINCT expression | * ) 【例4.12】 求学生的总数。 SELECT COUNT(*) AS 学生总数 FROM XSB 【例4.13】 统计备注不为空的学生数。 SELECT COUNT(备注) AS 备注不为空的学生数 FROM XSB;,4.2.1 选择列,【例4.14】 统计总学分在50分以上的人数。 SELECT COUNT(总学分) AS

12、总学分在50分以上的人数 FROM XSB WHERE 总学分50; 执行结果为2。 【例4.15】 求选修了课程的学生总数。 SELECT COUNT(DISTINCT 学号) FROM CJB,4.2.2 WHERE子句,1表达式比较 比较运算符用于比较两个表达式值,共有9个,分别是 =(等于)、(大于)、=(大于等于)、(不等于)、!=(不等于)、!(不大于)。比较运算的格式为 expression = | | = | | != | ! expression 【例4.16】 查询PXSCJ数据库XSB表中学号为081101的同学的情况。代码如下,执行结果如图4.7所示。 USE PXSC

13、J GO SELECT 姓名,学号,总学分 FROM XSB WHERE 学号=081101;,4.2.2 WHERE子句,【例4.17】 查询XSB表中总学分大于50的同学的情况。代码如下,执行结果如图4.8所示。 SELECT 姓名,学号,出生时间,总学分 FROM XSB WHERE 总学分50;,【例4.18】 查询XSB表中通信工程专业总学分大于等于42的同学的情况。 USE PXSCJ GO SELECT * FROM XSB WHERE 专业= 通信工程 AND 总学分 = 42,4.2.2 WHERE子句,2模式匹配 LIKE谓词用于指出一个字符串是否与指定的字符串相匹配,返回

14、逻辑值TRUE或FALSE。LIKE谓词表达式的格式为 match_expression NOT LIKE pattern ESCAPE Escape_character 【例4.19】 查询XSB表中姓“王”且单名的学生情况。 SELECT * FROM XSB WHERE 姓名 LIKE 王_ 执行结果如图4.9所示。,4.2.2 WHERE子句,【例4.20】 查询XSB表中学号倒数第3个数字为1,且倒数第1个数在15之间的学生学号、姓名及专业。 SELECT 学号,姓名,专业 FROM XSB WHERE 学号 LIKE %1_12345 如果需要查找一个通配符,则必须使用一个转义字符

15、。 【例4.21】 查询XSB表中名字包含下划线的学生学号和姓名。 SELECT 学号,姓名 FROM XSB WHERE 学号 LIKE %#_% ESCAPE #,4.2.2 WHERE子句,3范围比较 用于范围比较的关键字有两个:BETWEEN和IN。当要查询的条件是某个值的范围时,可以使用BETWEEN关键字。BETWEEN关键字指出查询范围,格式为: expression NOT BETWEEN expression1 AND expression2 使用IN关键字可以指定一个值表,值表中列出所有可能的值,当与值表中的任一个匹配时,即返回TRUE,否则返回FALSE。使用IN关键字指定值表的格式为: expression IN ( expression ,n),4.2.2 WHERE子句,【例4.22】 查询XSB表中不在1989年出生的学生情况。 SELECT 学号, 姓名, 专业, 出生时间 FROM XSB WHERE 出生时间 NOT BETWEEN 1989-1-1 and 1989-12-31 【例4.23】 查询XSB表中专业为“计算机”、“通信工程”或“无线电”的学生情况。 SELECT * FROM XSB WHERE 专业 IN (计算机, 通信工程, 无线电) 该语句与下列语句等价: SELECT

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

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

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