数据库原理与应用锦州师范高等专科学校计算机系.ppt
《数据库原理与应用锦州师范高等专科学校计算机系.ppt》由会员分享,可在线阅读,更多相关《数据库原理与应用锦州师范高等专科学校计算机系.ppt(59页珍藏版)》请在三一办公上搜索。
1、数据库原理与应用锦州师范高等专科学校计算机系,2023/6/28,第三章 数据库的查询和试图,3.1 SELECT语句查询,3.1.1 选择列,3.1.2 选择行,3.1.3 FROM子句,3.1.4 数据汇总,3.1.5 排序,3.1.6 SELECT语句的其他子句,3.2 视图,3.2.1 视图的建立,3.2.2 视图的修改,3.2.3 视图的删除,2023/6/28,第三章 数据库的查询和试图,Transact-SQL的SELECT语句从一个或者多个表或视图中检索记录,使用查询分析器输入一条SELECT语句,查询情况将在结果窗口中显示。可以编辑或打印这些结果,并且把它们保存在非数据库文件
2、中。3.1 SELECT语句查询3.1.1 选择列SELECT语句中的SELECT子句指定要返回的列;WHERE子句指定选择条件来限制返回结果中的行。1.指定列 语法形式如下:SELECT 列名1,n FROM 表名1,n,2023/6/28,第三章 数据库的查询和试图,【例3-1】选择XSQK表中的学号、姓名和专业名三列。SELECT 学号,姓名,专业名 FROM XSQK2.使用通配符(*)【例3-2】选择XSQK表的所有列。SELECT*FROM XSQK3.使用列表达式在SELECT子句中可以使用算术运算符对数字型数据列进行(+、-、*、/和%)。注意:取模运算时,%的两边必须是整数型
3、数据。,2023/6/28,第三章 数据库的查询和试图,【例3-3】查询XS_KC表,并增加了一个计算列,使其为成绩列加5。SELECT 学号,课程号,成绩,成绩+5 FROM XS_KC4.改变查询结果中的列名 第一种方法:“=”法。【例3-4】为【例3-3】中的计算列指定了一个列名“调整后的成绩”。SELECT 学号,课程号,成绩,调整后的成绩=成绩+5 FROM XS_KC第二种方法:“AS”法。【例3-5】为【例3-4】中的成绩列指定了一个新列名“原成绩”。,2023/6/28,第三章 数据库的查询和试图,SELECT 学号,课程号,成绩 AS 原成绩,调整后的成绩=成绩+5 FROM
4、 XS_KC5.增加说明列目的:增加查询结果的可读性。【例3-6】在查询结果中备注列前增加了一个说明列。SELECT 学号,姓名,职务是,备注 FROM XSQK【例3-7】说明文字串中有单引号的情况。SELECT 学号,姓名,其职务是,备注 FROM XSQK,2023/6/28,第三章 数据库的查询和试图,6.使用系统函数包括:聚合函数、数学函数、字符串函数、日期和时间函数以及其他一些系统函数。AVG函数:返回指定列的算术平均值。【例3-8】计算XS_KC表中成绩列的算术平均值,并为列指定列名为“平均值”SELECT AVG(成绩)AS 平均 FROM XS_KC COUNT函数:返回指定
5、列的数据记录行数,不包含全部为NULL值的记录行。【例3-9】选择计算XSQK表中学生记录的行数。SELECT COUNT(学号)FROM XSQK,2023/6/28,第三章 数据库的查询和试图,【例3-10】计算XS_KC表中成绩不及格的课程记录的总数,并指定列名。SELECT COUNT(学号)AS 不及格课程总数 FROM XS_KC WHERE 成绩60DISTINCT:指定返回的是不同记录行数。【例3-11】计算XS_KC表中不及格学生记录的总数。SELECT COUNT(DISTINCT 学号)AS 不及格课程总数 FROM XS_KC WHERE 成绩60 MAX函数:返回指定
6、列的最大值。【例3-12】计算XS_KC表中成绩列的最大值。,2023/6/28,第三章 数据库的查询和试图,SELECT MAX(成绩)AS 最高分 FROM XS_KC MIN函数:返回指定列的最小值。【例3-13】计算XS_KC表中成绩列的最小值。SELECT MIX(成绩)AS 最低分 FROM XS_KC SUM函数:返回指定列的总和。【例3-14】用于计算XS_KC表中成绩列的总和值,并指定列名。SELECT SUM(成绩)AS 总分 FROM XS_KC,2023/6/28,第三章 数据库的查询和试图,3.1.2 选择行语法形式:SELECT 列名1,n FROM 表名1,n W
7、HERE 查询条件1.使用比较运算符【例3-15】查询XS_KC表成绩不及格的学生记录。SELECT 学号,课程号,成绩 FROM XS_KC WHERE 成绩60比较运算符不仅可用于比较数字类型的列,也可用于比较字符类型的列,因为SQL Server的字符都用二进制ASCII码表示,故可以比较大小。,表3.1 比较运算符,2023/6/28,第三章 数据库的查询和试图,【例3-16】查询XS_KC表中学号小于“020201”的学生记录。SELECT 学号,课程号,成绩 FROM XS_KC WHERE 成绩020201注意:系统不区分大小写。2.使用字符串模糊匹配 在大多数情况下,LIKE子
8、句与通配符配合使用,以满足复杂的查询条件。SQL Server提供了4种通配符,百分号、下划线、和字符。,2023/6/28,第三章 数据库的查询和试图,语法形式:SELECT 列名1,n FROM 表名1,n WHERE 列名 LIKE 匹配字符串,2023/6/28,第三章 数据库的查询和试图,表5.2 匹配符的含义,【例3-17】查询所有陈姓学生的记录。SELECT 学号,姓名 FROM XSQK WHERE 姓名 LIKE 陈%,2023/6/28,第三章 数据库的查询和试图,【例3-18】查询所有书名为“SQL Server 2000”字符串的书。SELECT 书号,书名 FROM
9、publish WHERE 书名 LIKE SQL Server 2000%【例3-19】查询所有陈姓单名学生的记录。SELECT 学号,姓名 FROM XSQK WHERE 姓名 LIKE 陈_【例3-20】查询所有姓介于“岑”到“方”或者介于“薛”到“张”的学生的记录。SELECT 学号,姓名 FROM XSQK WHERE 姓名 LIKE 岑-方,薛-张%,2023/6/28,第三章 数据库的查询和试图,在【例3-20】中,中文字符在比较时是比较其拼音序列。【例3-21】查询所有姓不介于“岑”到“方”或者介于“薛”到“张”的学生的记录。SELECT 学号,姓名 FROM XSQK WHE
10、RE 姓名 LIKE 岑-方,薛-张%注意:使用了LIKE关键字,会导致SQL Server不使用与指定表的索引。因此,不推荐在大型表上使用模糊匹配,查询时间会很长。3.使用逻辑运算符包括:与AND,或OR,非NOT语法格式:,2023/6/28,第三章 数据库的查询和试图,SELECT 列名1,nFROM 表名1,nWHERE NOT 查询条件|AND|OR|NOT查询条件n【例3-22】查询XSQK表中备注列不为空的记录。SELECT 学号,姓名,备注 AS 职务 FROM XSQK WHERE 备注 LIKE%【例3-23】查询XS_KC表中“101”号课程的成绩介于8089的记录。SE
11、LECT 学号,课程号,成绩 FROM XS_KC WHERE 课程号=101 AND 成绩=80 AND 成绩=89,2023/6/28,第三章 数据库的查询和试图,【例3-24】查询XS_KC表中不满足“101”号课程的成绩大于等于60的记录。SELECT 学号,课程号,成绩 FROM XS_KC WHERE 课程号=101 AND NOT 成绩=60【例3-25】查询XS_KC表中不满足“101”号课程的成绩介于6070的记录。SELECT 学号,课程号,成绩 FROM XS_KC WHERE 课程号=101 AND NOT(成绩=60 AND 成绩=70),2023/6/28,第三章
12、数据库的查询和试图,4.使用查询范围除了比较运算符,还有另一种指定列值范围的方法。语法格式为:SELECT 列名1,n FROM 表名1,n WHERE 列名 BETWEEN 取值范围下界 AND 取值范围上界 将【例3-23】改成如下形式,查询结果不变。SELECT 学号,课程号,成绩 FROM XS_KC WHERE 课程号=101 AND 成绩 BETWEEN 80 AND 89,2023/6/28,第三章 数据库的查询和试图,5.使用查询集合(关键字IN)语法格式:SELECT 列名1,n FROM 表名1,n WHERE 列名 IN(列值1,n)【例3-26】查询XS_KC表中课程号
13、“101”、“103”或“107”的学生成绩记录。SELECT 学号,课程号,成绩 FROM XS_KC WHERE 课程号 IN(101,103,107),2023/6/28,第三章 数据库的查询和试图,【例3-27】把【例3-26】改成用OR运算符连接形式,查询结果不变。SELECT 学号,课程号,成绩 FROM XS_KC WHERE 课程号=101 OR 课程号=103 OR 课程号=107关键字IN常常使用于SELCET语句的嵌套形式中。【例3-28】使用IN的嵌套查询实现至少有一门课程不及格的学生名单。SELECT 学号,姓名,联系电话 FROM XSQK WHERE 学号 IN(
14、SELECT DISTINCT 学号 FROM XS_KC WHERE 成绩60),2023/6/28,第三章 数据库的查询和试图,3.1.3 FROM子句 FROM子句语法格式:FROM表名|视图名,n【例3-29】显示了为XSQK表指定了别名“学生情况表”,并在WHERE子句中使用了该别名。SELECT 学号,姓名,联系电话 FROM XSQK 学生情况表 WHERE 学生情况表.学号=0201013.1.4 数据汇总1.使用聚合函数AVG、MAX、MIN、SUM、COUNT和COUNT(*)注意:列值为NULL的数据记录不包括在聚合函数的运算中。,2023/6/28,第三章 数据库的查询
15、和试图,2.使用分组汇总子句 语法格式:SELECT 列名1,nFROM 表名1,nGROUP BY 列名1,nHAVING 逻辑表达式【例3-30】按课程分组汇总每一组课程的平均成绩。SELECT 课程号,AVG(成绩)AS 平均分 FROM XS_KC GROUP BY 课程号 注意:如果GROUP BY 后指定了多个列,则先按第一列进行分组并按升序排列,再按第二列进行,依此类推。,2023/6/28,第三章 数据库的查询和试图,【例3-31】按班级、学号分组汇总所有课程的平均分。SELECT 班级,AVG(成绩)AS 平均分 FROM XS_KC GROUP BY 班级,学号【例3-32
16、】按学号、班级分组汇总所有课程的平均分。SELECT 班级,AVG(成绩)AS 平均分 FROM XS_KC GROUP BY学号,班级【例3-33】用HAVING选项,保留平均分大于70且小于80的组。SELECT 班级,学号,AVG(成绩)AS 平均分 FROM XS_KC GROUP BY 学号,班级 HAVING AVG(成绩)70 AND AVG(成绩)80,2023/6/28,第三章 数据库的查询和试图,【例3-34】统计1班各课程不及格的人数。SELECT 班级,课程号,COUNT(成绩)AS 不及格人数 FROM XS_KC WHERE 成绩60 GROUP BY 班级,课程号
17、 HAVING 班级=13.使用WITH ROLLUP和WITH CUBE选项使用WITH ROLLUP和WITH CUBE选项可以对汇总结果再汇总,生成超级组。【例3-35】数据汇总时不使用WITH ROLLUP和WITH CUBE选项。SELECT 班级,课程号,COUNT(成绩)AS 不及格人数 FROM XS_KC WHERE 成绩60 GROUP BY 班级,课程号,2023/6/28,第三章 数据库的查询和试图,【例3-36】对【例3-34】进行数据汇总时使用WITH ROLLUP选项。SELECT 班级,课程号,COUNT(成绩)AS 不及格人数 FROM XS_KC WHERE
18、 成绩60 GROUP BY 班级,课程号 WITH ROLLUP【例3-37】对【例3-34】进行数据汇总时使用WITH CUBE选项。SELECT 班级,课程号,COUNT(成绩)AS 不及格人数 FROM XS_KC WHERE 成绩60 GROUP BY 班级,课程号 WITH CUBE,2023/6/28,第三章 数据库的查询和试图,4.使用明细汇总子句 语法格式:SELECT 列名1,nFROM 表名1,nWHERE 逻辑表达式GROUP BY 列名1,nORDER BY列名1|列号1ASC|DESC,nCOMPUTE聚合函数(列名1),nBY 列名1,n注意事项:如果使用GROU
19、P BY子句,那么SELECT子句中指定的列必须在GROUP BY子句中指定、或是和聚合函数一起使用。,2023/6/28,第三章 数据库的查询和试图,COMPUTE子句中的列必须出现在SELECT子句的列表中。使用COMPUT BY子句就不能同时使用SELECT INTO子句 BY选项表示按指定的列进行明细汇总,使用BY选项时必须同时使用ORDER BY 子句,且BY选项后的列必须具有和ORDER BY后的列相同的顺序,且不能跳过其中的列。例如:如果ORDER BY子句按照如下指定列。ORDER BY 列A,列B,列C 则BY选项后的列表只能是下面任一中形式:BY 列A,列B,列C BY 列
20、A,列B BY 列A,2023/6/28,第三章 数据库的查询和试图,【例3-38】使用COMPUTE子句对不及格的成绩记录进行明细汇总。SELECT 学号,课程号,成绩 FROM XS_KC WHERE 成绩60 COMPUTE COUNT(成绩)【例3-39】使用COMPUTE BY子句对不及格的成绩记录进行明细汇总。SELECT 学号,课程号,成绩 FROM XS_KC WHERE 成绩60 ORDER BY 2 COMPUTE COUNT(成绩)BY 课程号,2023/6/28,第三章 数据库的查询和试图,3.1.5 排序如果按一定顺序显示数据记录,有两种方法:(为表中的列建立簇索引或
21、普通索引。)当查询指定的是单个列,且该列有索引时,查询结果按照该列的索引定义的顺序显示;否则都按照表的簇索引顺序显示。【例3-40】查询学生表中的“姓名”单个列。SELECT 姓名 FROM XSQK【例3-41】查询学生表中的“姓名”、“联系电话”多个列。SELECT 姓名,联系电话 FROM XSQK查询结果如下图:,2023/6/28,第三章 数据库的查询和试图,2023/6/28,第三章 数据库的查询和试图,语法格式:SELECT 列名1,nFROM 表名1,nORDER BY 列名1|列号1ASC|DESC,n其中:ASC为默认值,表示按升序排序。【例3-42】查询学生表中的“姓名”
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 原理 应用 锦州 师范高等专科学校 计算机系
链接地址:https://www.31ppt.com/p-5353311.html