资源预览内容
第1页 / 共109页
第2页 / 共109页
第3页 / 共109页
第4页 / 共109页
第5页 / 共109页
第6页 / 共109页
第7页 / 共109页
第8页 / 共109页
第9页 / 共109页
第10页 / 共109页
亲,该文档总共109页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
数据库应用,重庆航天职业技术学院,第6章 数据查询, 熟练掌握各种查询,为数据库应用系统的开发奠定基础。 能根据项目功能需求对表进行投影查询、连接查询、选择查询、分组统计查询、限定查询、排序查询和保存查询。 培养数据库开发的基本能力及用户的沟通能力。,第6章 数据查询,任务设计: 6.1 认识SQL语言 6.2 基本的SELECT语句 6.3 单表查询 6.4 多表查询 6.5 嵌套查询,第6章 数据查询,本章学习内容在数据库系统开发中的位置,6.1 任务1:认识SQL语言, 了解Transact-SQL的特点和可以执行的操作。,1,掌握Transact-SQL语句的语法结构。,2,任务目标:,6.1.1 Transact-SQL的认识,SQL语句是位于加利福尼亚的IBM公司的San Jose Research Laboratory在20世纪70年代后期开发出来的,通常我们将它翻译为结构化查询语言(Structured Query Language)。 Transact-SQL是一个非标准的SQL,它在SQL-92标准的基础上进行了一定的扩充,在可编程性和灵活性方面有所增强。Transact-SQL对SQL Server的使用非常重要,所有应用程序与SQL Server的通讯都通过向服务器发送Transact-SQL语句来进行,是唯一能和SQL Server数据库系统进行交互的语言。,6.1.1 Transact-SQL的认识,1SQL语言的特点: (1)类似于英语语言,直观、简单易学。 (2)SQL语言只是提出要“做什么”,“怎么做”则由DBMS解决。 (3)SQL语句通常分为4类:数据查询语言(Data Query Language)、数据操纵语言(Data Manipulation Language)、数据定义语言(Data Define Language)和数据控制语言(Data Control Language)。 (4)SQL语言既可以独立使用,也可以嵌入到另外一种语言中使用,即具有自含型和宿生型两种特征。自含型特征可以用于所有用户,包括终端用户、数据库管理员、应用程序员;宿生型特征用于应用程序员开发数据库应用程序。,6.1.1 Transact-SQL的认识,2SQL语言可实现的操作: 数据库管理员和应用系统开发人员使用SQL语言可以进行以下操作: (1)创建主键、外键、约束、规则、触发器、事务,用以实现数据的完整性。 (2)查询、更新、删除数据库中的信息; (3)对各种数据库对象设置不同的权限,实现数据库的安全性; (4)进行分布式数据处理,实现数据库间的数据的复制、传递或执行分布式查询; (5)可以创建批处理、存储过程、视图,方便应用程序访问数据库中的数据; (6)实现数据仓库,从联机事务处理(OLTP)系统中提取数据,对数据汇总以进行决策支持分析; (7)其它功能。,6.1.2 Transact-SQL 语法约定,按照SQL语法约定:任何一条Transact-SQL语句至少需要包含一个命令,即一个表明动作含义的动词。 例如SELECT动词请求SQL服务器检索出若干记录行,UPDATE动词要求SQL服务器修改特定记录中的字段值。,6.1.2 Transact-SQL 语法约定,1SQL中的命令动词是一种对SQL服务器有特定意义的关键字,而其它关键字则只是在SQL语句中输入了其它的限制条件。 例如,对于SELECTFROMWHERE语句: SELECT命令请求SQL服务器检索出若干行记录。 FROM关键字用来告诉SQL服务器,本次检索用到的表的名字。 WHERE关键字告诉SQL服务器,对FROM所制定的表中,对那些记录进行操作,即条件限制。 2用户或者应用程序向服务器提交Transact-SQL语句,均采用批处理的形式。 一个批处理是指一次发送给服务器一组语句。 每个SQL Server应用程序都设有一种机制,用来告诉服务器执行一个批处理中的所有语句。,6.2 任务2:基本的SELECT语句,任务目标:,6.2.1 SELECT语句的结构,SELECT查询语句的基本语法格式如下: SELECT ALL|DISTINCT TOP n PERCENT 表达式列表 INTO 新表名 FROM 基本表|视图名列表 WHERE条件查询 GROUP BY 分组列名表 HAVING 逻辑表达式 ORDER BY 排序列名表 ASC | DESC ,6.2.1 SELECT语句的结构,该语句的基本功能是,对一个或多个表按一定的条件和需求进行查询,产生出一个新表(即查询结果),该新表被显示出来或者被命名保存起来。 本章所有实例均在SSMS的【查询编辑器】中进行编辑、编译、执行和保存,和前面介绍的一样。 本章将以教务管理数据库“EDUC”和图书管理数据库“Library”为例详细讲解SELECT查询语句各选项的应用方法,读者可以通过对本章列举的大量实例进行操作体会SELECT查询语句的各种功能和应用方法。,6.2.2 SELECT子句投影查询,格式: SELECT ALL|DISTINCT TOP n PERCENT 表达式1,表达式2,表达式n 说明: 用逗号分隔的表达式列表,用来描述查询结果集的列。 表达式可以由列名、常量、函数和运算符构成。 其它选项在实例中讲解。,6.2.2 SELECT子句投影查询,1按照列名对表进行投影查询 【例6-1】从教务管理数据库EDUC的学生表Student中查询出男生的编号、姓名和性别三列的记录。 USE EDUC GO SELECT SID,Sname,Sex FROM Student WHERE Sex=男,6.2.2 SELECT子句投影查询,说明: FROM子句指定对表“Student”进行查询,WHERE子句给出查询的条件,根据关系表达式(Sex=男)的逻辑值,选择表中性别为“男”的数据行,而SELECT子句的功能是对表的列“SID”“Sname”和“Sex”进行投影。 查询结果如图6-2所示:,6.2.2 SELECT子句投影查询,2TOP关键字限制返回行数 格式:TOP n PERCENT 【例6-2】从图书管理数据库Library的图书表Book中查询出前5条纪录。 USE Library GO SELECT TOP 5 BID,Bname,Author -返回前5行记录 FROM Book GO 查询结果如图6-3所示:,6.2.2 SELECT子句投影查询,3PERCENT关键字返回结果集行的百分比 格式:TOP n PERCENT 【例6-3】从教务管理数据库EDUC的学生表Student中查询出前20%的数据行。 USE EDUC GO SELECT TOP 20 PERCENT SID,Sname,Sex,Birthday FROM Student GO,6.2.2 SELECT子句投影查询,说明: 执行此查询可以得到学生表中前20%(22*20%=4.4,取整数5)的学生信息,这在不清楚总行数的情况下特别有用。 查询结果如图6-4所示:,6.2.2 SELECT子句投影查询,4是否消除重复数据行 格式:All| Distinct 说明: All:检出全部信息(默认) Distinct:去掉查询结果中重复的数据行。 【例6-4】从教务管理数据库EDUC的学生表Student中查询出专业Specialty的名称。 USE EDUC GO SELECT DISTINCT Specialty -使用关键字DISTINCT消除重复行 FROM Student,6.2.2 SELECT子句投影查询,说明: 对学生表“Student”的专业“Specialty”列进行投影查询后会出现很多重复行,我们希望消除重复,则使用DISTINCT关键字。 查询结果如图6-5所示:,6.2.2 SELECT子句投影查询,5使用通配符*投影所有列 格式:* 说明: 要投影表中所有的列并且不需要改变其顺序,可不必列出表中所有列名,用通配符“*”替代所有字段。,6.2.2 SELECT子句投影查询,【例6-5】从图书管理数据库Library的读者类型表ReaderType中查询所有记录。 USE Library GO SELECT * FROM ReaderType 查询结果如图6-6所示:,6.2.2 SELECT子句投影查询,6使用表达式计算列值 格式:表达式1, 表达式2, ,表达式n 说明: 在SELECT子句中可以使用加(+)、减(-)、乘(*)、除(/)、取模(%)和字符连接(+)等运算符及各种函数构成表达式,通过对表达式的计算来获取查询结果的列值。 提示:对表达式列中的计算只影响查询结果,不会改变表中的数据。,6.2.2 SELECT子句投影查询,【例6-6】从图书管理数据库Library的图书表“Book”中查询所有图书折价90%后的价格。 USE Library GO SELECT BID,Bname,Author,PubComp,Price,Price*0.9 FROM Book GO 查询结果如图6-7所示,最右一列为折价90%后的价格。,6.2.2 SELECT子句投影查询,将上例中的SELECT语句改写为如下: SELECT BID,Bname,Author,PubComp,Price,Str(Price*0.9,6,2)+元 可查询出折价后的数据保持小数点2位,并在其后添加单位“元”,这里使用了Str(浮点表达式,长度,小数)函数,该函数返回由数字数据转换来的保留指定小数位数的字符数据。还使用了字符连接运算符(+)连接字符常量元。 查询结果如图6-8所示。,6.2.2 SELECT子句投影查询,7使用单独常量作为投影表达式 【例6-7】从图书管理数据库Library中读者类型表ReadType中查询出所有数据。 USE Library GO SELECT TypeID,Typename,Limitnum,册,LimitDays,天 FROM ReaderType GO,6.2.2 SELECT子句投影查询,说明:SELECT语句中的册、天均为字符串常量。 查询结果如图6-9所示。,6.2.2 SELECT子句投影查询,8自定义列名 格式:指定的列标题=列名 或者 列名 AS 指定的列标题 【例6-8】在上例中用中文显示列名。 USE Library SELECT TypeID AS 类型编号, Typename AS 类型名称, LimitNum AS 限借数量, LimitDays AS 限借天数 FROM ReaderType,6.2.2 SELECT子句投影查询,说明: 自定义列标题后,在查询结果的标题位置将显示指定的列标题,而不是表中定义的列名,指定的列标题是一个字符串,可以用单引号括起来,也可不用。 关键字“AS”也可省略。 对于表达式计算出的列,如果没有指定列标题,则以“无列名”标识,这样的情况可以为查询结果重新指定列标题。 查询结果如图6-10所示:,6.2.3 聚集函数的应用,在SELECT中的列明表达式处还可以使用聚集函数(也叫列函数)。包括如下: 求和:SUM 平均:AVG 最大:MAX 最小:MIN 统计:COUNT 格式:函数名(All| Distinct 列名表达式|*) 请看下列实例应用了聚集函数。,6.2.3 聚集函数的应用,【例6-9】从图书管理数据库Library中图书表Book中统计出高等教育出版社出版的图书数量。 USE Library GO SELECT COUNT(*) AS 册数 -统计出满足条件的行数 FROM Book Where PubComp=高等教育出版社 GO 查询结果如图6-11所示,6.
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号