第03章SQL语言基础PPT讲稿.ppt

上传人:石*** 文档编号:43303282 上传时间:2022-09-17 格式:PPT 页数:70 大小:2.82MB
返回 下载 相关 举报
第03章SQL语言基础PPT讲稿.ppt_第1页
第1页 / 共70页
第03章SQL语言基础PPT讲稿.ppt_第2页
第2页 / 共70页
点击查看更多>>
资源描述

《第03章SQL语言基础PPT讲稿.ppt》由会员分享,可在线阅读,更多相关《第03章SQL语言基础PPT讲稿.ppt(70页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第03章SQL语言基础2022/9/161第1页,共70页,编辑于2022年,星期日19991999年年SQL-99SQL-99标准(简称标准(简称SQL3SQL3)。增加了对对象关系模型)。增加了对对象关系模型的支持。目前仅部分实现。的支持。目前仅部分实现。最流行的国际标准数据库语言。最流行的国际标准数据库语言。主要特点:主要特点:SQLSQL是非结构化的语言,使用是非结构化的语言,使用SQL SQL 查询数据库时,只需查询数据库时,只需要告诉它做什么而不用告诉它如何去做。要告诉它做什么而不用告诉它如何去做。SQL SQL 本身不提供任何程序流程控制结构,而是通过本身不提供任何程序流程控制结

2、构,而是通过PL/SQLPL/SQL提供提供SQLSQL语言的过程化功能语言的过程化功能SQLSQL提供相对固定的数据类型,一般不需要扩展提供相对固定的数据类型,一般不需要扩展SQLSQL本身十分灵活,方便易学。本身十分灵活,方便易学。2022/9/162第2页,共70页,编辑于2022年,星期日标准标准SQLSQL只包含只包含9 9种语句:种语句:w数据查询:数据查询:selectselectw数据定义数据定义:create,drop,alter:create,drop,alterw数据操纵数据操纵:insert,update,delete:insert,update,deletew数据控制

3、数据控制:grant,revoke:grant,revoke2022/9/163第3页,共70页,编辑于2022年,星期日数据定义语言(数据定义语言(DDLDDL),用于定义数据结构),用于定义数据结构数据操纵语言(数据操纵语言(DMLDML),用于检索和修改数),用于检索和修改数据结构据结构数据控制语言(数据控制语言(DCLDCL),用于规定数据库用),用于规定数据库用户的各种权限户的各种权限数据库事务处理,用来保证数据库的完整性数据库事务处理,用来保证数据库的完整性SQLSQL语言分类语言分类2022/9/164第4页,共70页,编辑于2022年,星期日SQLSQL语言分类语言分类数据定义

4、语言(数据定义语言(DDLDDL):用于定义数据结):用于定义数据结构构能使用户完成下列任务能使用户完成下列任务n创建数据库对象创建数据库对象n删除数据库对象删除数据库对象n更改数据库对象更改数据库对象2022/9/165第5页,共70页,编辑于2022年,星期日常用的数据定义语言常用的数据定义语言DDLDDL语句包括:语句包括:Create Table:Create Table:创建数据库表创建数据库表Create Index:Create Index:创建数据库表的索引创建数据库表的索引Drop Table:Drop Table:删除数据库表删除数据库表Drop Index:Drop In

5、dex:删除数据库表的索引删除数据库表的索引TruncateTruncate:删除表中所有行:删除表中所有行Alter TableAlter Table:增加表列,重定义表列,更改存储分:增加表列,重定义表列,更改存储分配配Alter Table ADD CONSTRAINT:Alter Table ADD CONSTRAINT:在已有的表上增加在已有的表上增加约束约束2022/9/166第6页,共70页,编辑于2022年,星期日数据操纵语言数据操纵语言(DML)(DML):允许用户对数据库:允许用户对数据库中的数据进行中的数据进行Insert,Update,DeleteInsert,Upda

6、te,Delete和和SelectSelect等操作等操作常用常用DMLDML语句包括:语句包括:Insert Insert:增加数据行到表:增加数据行到表DeleteDelete:从表中删除数据行:从表中删除数据行UpdateUpdate:更改表中数据:更改表中数据SelectSelect:从表中或视图中检索数据行:从表中或视图中检索数据行2022/9/167第7页,共70页,编辑于2022年,星期日数据控制语言(数据控制语言(DCLDCL):用于规定数据库):用于规定数据库用户的各种权限用户的各种权限常用的数据控制语句包括:常用的数据控制语句包括:GRANTGRANT:将权限或角色授予用户

7、或其它角:将权限或角色授予用户或其它角色色REVOKEREVOKE:从用户或数据库角色回收权限:从用户或数据库角色回收权限Set RoleSet Role:禁止或允许一个角色:禁止或允许一个角色2022/9/168第8页,共70页,编辑于2022年,星期日数据库事务控制数据库事务控制:用来保证数据库的完整用来保证数据库的完整性性常用的事务处理语句包括:常用的事务处理语句包括:COMMIT WORKCOMMIT WORK:把当前事务所作的更改永:把当前事务所作的更改永久化(写入磁盘)久化(写入磁盘)ROLLBACK:ROLLBACK:作废上次提交以来的所有更改作废上次提交以来的所有更改2022/

8、9/169第9页,共70页,编辑于2022年,星期日事务:指作为单个逻辑工作单元执行的事务:指作为单个逻辑工作单元执行的一系列操作,而这些逻辑工作单元需要一系列操作,而这些逻辑工作单元需要具有原子性,一致性,隔离性和持久性具有原子性,一致性,隔离性和持久性四个属性。四个属性。2022/9/1610第10页,共70页,编辑于2022年,星期日SQLSQL语句的基本语法语句的基本语法基本语法如下:基本语法如下:每条每条SQLSQL语句必须以分号结束语句必须以分号结束每条每条SQLSQL语句可以单独写成一行,也可以语句可以单独写成一行,也可以分成若干行分成若干行SQLSQL语句对大小写不敏感,对于语

9、句对大小写不敏感,对于SQLSQL语句语句的关键字(如的关键字(如InsertInsert等),表名,列名等),表名,列名等,可以大小写混合;但对列的内容则等,可以大小写混合;但对列的内容则是大小写敏感的。是大小写敏感的。2022/9/1611第11页,共70页,编辑于2022年,星期日对象命名约定对象命名约定SQL ServerSQL Server用三段式名字标识对象:用三段式名字标识对象:.前两者可以省略,系统自动有一个默认值。数据库名前两者可以省略,系统自动有一个默认值。数据库名的默认值是当前数据库,所有者名的默认值是数据的默认值是当前数据库,所有者名的默认值是数据库的所有者(库的所有者

10、(dbodbo)例如:在例如:在pubspubs数据库中的数据库中的authorsauthors表的所有者是表的所有者是dbodbo,它可以在多个数据库中按如下方法引用:,它可以在多个数据库中按如下方法引用:pubs.dbo.authorspubs.dbo.authorsPubs.authorsPubs.authors2022/9/1612第12页,共70页,编辑于2022年,星期日别名:使用别名的主要目的是增加别名:使用别名的主要目的是增加selectselect语句的可读性。可使用如下语句语句的可读性。可使用如下语句指派数据表的别名:指派数据表的别名:数据表名称数据表名称 as as 数据

11、表别名数据表别名2022/9/1613第13页,共70页,编辑于2022年,星期日例如:例如:use sampleuse sampleSelect e.Select e.员工编号员工编号,e.,e.员工姓名员工姓名From From 员工数据表员工数据表 as eas e注意:如果为数据表指定了别名,则在相应的注意:如果为数据表指定了别名,则在相应的T-SQLT-SQL语句中,对该数据表的所有显式引用都必须使用别语句中,对该数据表的所有显式引用都必须使用别名,而不能使用数据表名。例如:名,而不能使用数据表名。例如:Select Select 员工数据表员工数据表.员工编号员工编号,e.,e.员

12、工姓名员工姓名From From 员工数据表员工数据表 as eas e2022/9/1614第14页,共70页,编辑于2022年,星期日SELECT SELECT 语句语句数据检索是数据库中最频繁执行的活动数据检索是数据库中最频繁执行的活动在在 SQL SQL 中中,使使用用 SELECT SELECT 语语句句可可以以在在需需要的表单中检索数据要的表单中检索数据在在进进行行检检索索之之前前,必必须须知知道道需需要要的的数数据据存储在哪里存储在哪里SELECT SELECT 语句可以由多个查询子句组成语句可以由多个查询子句组成2022/9/1615第15页,共70页,编辑于2022年,星期日

13、SELECT SELECT 语句语句SELECT SELECT 语句可用于检索:语句可用于检索:n全部的行和列全部的行和列n全部的行和特定的列全部的行和特定的列n限定范围的行限定范围的行n与一组值匹配的行与一组值匹配的行n根据未知值检索的行根据未知值检索的行n隐藏有重复值的行隐藏有重复值的行n根据多个搜索条件检索的行根据多个搜索条件检索的行2022/9/1616第16页,共70页,编辑于2022年,星期日SELECT SELECT 语句语句SelectSelect语句的基本结构如下:语句的基本结构如下:SELECT ALL|DISTINCT select_listSELECT ALL|DIST

14、INCT select_listINTO new_table_nameINTO new_table_nameFROM table_name|view_name FROM table_name|view_name,table_name2|view_name2,table_name2|view_name2 .,table_name16|.,table_name16|view_name16 view_name16 WHERE search_conditionsWHERE search_conditionsGROUP BY group_by_listGROUP BY group_by_listHAVI

15、NG search_conditionsHAVING search_conditionsORDER BY order_list ASC|DESCORDER BY order_list ASC|DESC2022/9/1617第17页,共70页,编辑于2022年,星期日SELECT SELECT 子子 句句SELECT SELECT 子句指定需要通过查询返回的表的列。其语子句指定需要通过查询返回的表的列。其语法如下法如下:SELECT ALL|DISTINCT SELECT ALL|DISTINCT TOP n TOP n各参数说明如下:各参数说明如下:其中,其中,select_listselec

16、t_list表示需要检索的字段的列表,表示需要检索的字段的列表,字段名称之间用逗号分隔。这个列表中既可以包字段名称之间用逗号分隔。这个列表中既可以包含数据源表或视图中的字段名称,还可以包含其含数据源表或视图中的字段名称,还可以包含其它表达式。如用它表达式。如用*,则系统将返回数据表中的所,则系统将返回数据表中的所有字段。有字段。2022/9/1618第18页,共70页,编辑于2022年,星期日 ALL ALL:指明查询结果中可以显示值相同的列:指明查询结果中可以显示值相同的列ALL ALL 是是系统默认的系统默认的 DISTINCTDISTINCT:指明查询结果中如果有值相同的列,:指明查询结

17、果中如果有值相同的列,则只显示其中的一列。对则只显示其中的一列。对DISTINCT DISTINCT 选项来说,选项来说,Null Null 值被认为是相同的值值被认为是相同的值 TOP n PERCENTTOP n PERCENT:指定返回查询结果的前:指定返回查询结果的前n n 行行数据,如果数据,如果PERCENT PERCENT 关键字指定的话,则返回查询关键字指定的话,则返回查询结果的前百分之结果的前百分之n n 行数据。行数据。2022/9/1619第19页,共70页,编辑于2022年,星期日INTO INTO 子句子句INTO INTO 子句用于把查询结果存放到一个新子句用于把查

18、询结果存放到一个新建的表中。建的表中。SELECT.INTO SELECT.INTO 句式不能与句式不能与COMPUTE COMPUTE 子句一起使用。其语法如下子句一起使用。其语法如下INTO new_tableINTO new_table参数参数new_table new_table 指定了新建的表的名称,指定了新建的表的名称,新表的列由新表的列由SELECT SELECT 子句中指定的列构成。子句中指定的列构成。新表中的数据行是由新表中的数据行是由WHERE WHERE 子句指定的。子句指定的。但如果但如果SELECT SELECT 子句中指定了计算列,在子句中指定了计算列,在新表中对应

19、的列则不是计算列,而是一新表中对应的列则不是计算列,而是一个实际存储在表中的列,其中的数据由个实际存储在表中的列,其中的数据由执行执行SELECT.INTO SELECT.INTO 语句时计算得出。语句时计算得出。2022/9/1620第20页,共70页,编辑于2022年,星期日FROM FROM 子句子句FROM FROM 子句指定需要进行数据查询的表只子句指定需要进行数据查询的表只要要SELECT SELECT 子句中有要查询的列就必子句中有要查询的列就必须使用须使用FROM FROM 子句其语法如下子句其语法如下FROM ,.nFROM ,.ntable_sourcetable_sour

20、ce:指明:指明SELECT SELECT 语句要用到语句要用到的表、视图等数据源,该列表中的数据的表、视图等数据源,该列表中的数据表名和视图名之间使用逗号分隔。表名和视图名之间使用逗号分隔。2022/9/1621第21页,共70页,编辑于2022年,星期日T-SQLT-SQL可以支持在可以支持在fromfrom子句中指定除了数子句中指定除了数据表或视图以外的其他对象,例如查询据表或视图以外的其他对象,例如查询结果集构成的派生表。这些派生表实际结果集构成的派生表。这些派生表实际上是上是from from 子句中子句中selectselect语句的查询结果语句的查询结果集,这些结果集构成了外层集

21、,这些结果集构成了外层selectselect语句语句查询时所用的数据表。查询时所用的数据表。2022/9/1622第22页,共70页,编辑于2022年,星期日例如:例如:Select Emp.Select Emp.员工编号,员工编号,emp.emp.员工姓名,员工姓名,sp.sp.部门名称部门名称From From 员工数据表员工数据表 as empas emp,(select(select 部门数据表部门数据表.部门编号,部门数据表部门编号,部门数据表.部门名称部门名称From From 部门数据表部门数据表Where Where 部门数据表部门数据表.部门编号部门编号2)as sp2)a

22、s spWhere emp.Where emp.部门编号部门编号sp.sp.部门编号部门编号首先使用首先使用selectselect语句检索高级部门,并用别名语句检索高级部门,并用别名spsp表示该派生表示该派生表,然后从员工数据表和表,然后从员工数据表和spsp派生表中检索数据。派生表中检索数据。2022/9/1623第23页,共70页,编辑于2022年,星期日Where Where 子句子句Where Where 子句指定数据检索的条件,以限制返回的数据子句指定数据检索的条件,以限制返回的数据行。行。Where Where 子句中的查询条件子句中的查询条件比较运算符:比较运算符:、=、=、

23、=、!=!=、!范围说明:范围说明:Between A and BBetween A and B、Not Between A and BNot Between A and B可选值列表:可选值列表:ININ、NOT INNOT IN模式匹配:模式匹配:LIKELIKE,NOT LIKENOT LIKE是否空值:是否空值:IS NULLIS NULL、IS NOT NULLIS NOT NULL上述条件的逻辑组合:上述条件的逻辑组合:ANDAND、OROR、NOTNOT2022/9/1624第24页,共70页,编辑于2022年,星期日比较查询条件:比较查询条件:texttext、ntextnte

24、xt和和imageimage数数据类型不能与比较运算符组合成查询条据类型不能与比较运算符组合成查询条件。件。列表查询条件:列表查询条件:in in 关键字在大多数情况关键字在大多数情况下应用于嵌套查询(又称为子查询)中,下应用于嵌套查询(又称为子查询)中,通常首先使用通常首先使用selectselect语句选定一个范围,语句选定一个范围,然后将选定的范围作为然后将选定的范围作为inin关键字的符号关键字的符号条件的列表,从而得出最终的结果集。条件的列表,从而得出最终的结果集。2022/9/1625第25页,共70页,编辑于2022年,星期日模式查询条件:模式查询条件:LikeLike、Not

25、LikeNot Like通配符通配符n*匹配任意字符串匹配任意字符串n?匹配任意一个字符匹配任意一个字符大小写敏感大小写敏感2022/9/1626第26页,共70页,编辑于2022年,星期日LikeLike关键字中的通配符及其含义关键字中的通配符及其含义通配通配符符含义含义%由由0 0个或更多字符组成的任意字符串个或更多字符组成的任意字符串_ _任意单个字符任意单个字符用于指定范围,例如用于指定范围,例如a-fa-f,表示,表示a a到到f f范围内的任何单个字符范围内的任何单个字符表示指定范围,例如表示指定范围,例如a-fa-f,表示,表示a a到到f f范围以外的任何单个字符范围以外的任何

26、单个字符2022/9/1627第27页,共70页,编辑于2022年,星期日LikeLike关键字举例关键字举例likelike格式格式检索范围检索范围Like Like Mc%Mc%以以McMc开头的所有字符串开头的所有字符串Like Like%inger%inger以字母以字母ingeringer结尾的所有字符串结尾的所有字符串Like Like _heryl_heryl以字母以字母herylheryl结尾的所有结尾的所有6 6个字母个字母的名称的名称Like Like M-M-ZingerZinger以以ingeringer结尾、以从结尾、以从M M到到Z Z的任何单的任何单个字母开头的所

27、有字符串个字母开头的所有字符串Like Like Mc%Mc%以以 M M开头,且第二个字母不是开头,且第二个字母不是c c的的所有字符串所有字符串Like Like%en%en在任何位置包含字母在任何位置包含字母enen的所有字的所有字符串符串2022/9/1628第28页,共70页,编辑于2022年,星期日空值判断查询条件:空值判断查询条件:nullnull值表示字段的值表示字段的数据值未知或不可用,它并不表示零数据值未知或不可用,它并不表示零(数字值或二进制值)、零长度的字符(数字值或二进制值)、零长度的字符串或空白(字符值)串或空白(字符值)2022/9/1629第29页,共70页,编

28、辑于2022年,星期日如果用户要查找的数据中本身就包含了通配符,如果用户要查找的数据中本身就包含了通配符,如如SQL_MailSQL_Mail,就需要使用转义字符来区分通配就需要使用转义字符来区分通配符与实际存在的字符。其格式如下符与实际存在的字符。其格式如下LIKE LIKE 字符匹配串字符匹配串 ESCAPE ESCAPE 转义字符转义字符例:例:查找对象名称为查找对象名称为SQL_M SQL_M 开头,开头,il il 结尾,中间结尾,中间有一个不确定字符的对象有一个不确定字符的对象select*from objectsselect*from objectswhere object_na

29、me like where object_name like SQL#_M_ilSQL#_M_il escape escape#/*/*这里使用了两个下划线这里使用了两个下划线_ _符号,前一个下划线由符号,前一个下划线由于有逃逸字符在其前面作标识,因而被认为是实于有逃逸字符在其前面作标识,因而被认为是实际存在的下划线字符;后面一个下划线没有逃逸际存在的下划线字符;后面一个下划线没有逃逸字符在其前面作标识,因此将它作为字符在其前面作标识,因此将它作为通配符通配符*/2022/9/1630第30页,共70页,编辑于2022年,星期日使用使用来将通配符指定为普通字符。来将通配符指定为普通字符。例如

30、:例如:Select*from objectSelect*from objectWhere column1 like Where column1 like%54%54%将返回所有包含将返回所有包含54%54%的字符串的字符串2022/9/1631第31页,共70页,编辑于2022年,星期日GROUP BY GROUP BY 子句子句GROUP BY GROUP BY 子句指定查询结果的分组条件。其语法如子句指定查询结果的分组条件。其语法如下:下:GROUP BY ALL group_by_expression,.nGROUP BY ALL group_by_expression,.n WITH

31、 CUBE|ROLLUP WITH CUBE|ROLLUP 各参数说明如下:各参数说明如下:group_by_expressiongroup_by_expression:指明分组条件:指明分组条件group_by_expression group_by_expression 通常是一个列名,但不能是列通常是一个列名,但不能是列的别名。数据类型为的别名。数据类型为TEXTTEXT、NTEXTNTEXT、IMAGE IMAGE 或或BIT BIT 类类型的列不能作为分组条件型的列不能作为分组条件ALLALL:返回所有可能的查询结果组合,即使此组合中没:返回所有可能的查询结果组合,即使此组合中没有任

32、何满足有任何满足WHERE WHERE 子句的数据。分组的统计列如果不满子句的数据。分组的统计列如果不满足查询条件,则将由足查询条件,则将由NULL NULL 值构成其数据。值构成其数据。ALL ALL 选项不选项不能与能与CUBECUBE或或ROLLUP ROLLUP 选项同时使用选项同时使用 2022/9/1632第32页,共70页,编辑于2022年,星期日CUBECUBE:除了返回由:除了返回由GROUP BY GROUP BY 子句指定的列外,还返子句指定的列外,还返回按组统计的行。返回的结果先按分回按组统计的行。返回的结果先按分组的第一个条件列排序显示,再按第二个条件列排序显组的第一

33、个条件列排序显示,再按第二个条件列排序显示,以此类推。统计行包括了示,以此类推。统计行包括了GROUPGROUPBY BY 子句指定的列的各种组合的数据统计子句指定的列的各种组合的数据统计 ROLLUPROLLUP:与:与CUBE CUBE 不同的是,此选项对不同的是,此选项对GROUP BY GROUP BY 子句中的列顺序敏感,它只返回第一个分组条件子句中的列顺序敏感,它只返回第一个分组条件指定的列的统计行,改变列的顺序会使返回的结指定的列的统计行,改变列的顺序会使返回的结果的行数发生变化。果的行数发生变化。2022/9/1633第33页,共70页,编辑于2022年,星期日例如:例如:例:

34、例:查询工作级别为查询工作级别为2 2 的员工姓名,查的员工姓名,查询结果按部门分组询结果按部门分组select e_name,dept_idselect e_name,dept_idfrom employeefrom employeewhere job_level=2where job_level=2group by dept_id,e_namegroup by dept_id,e_name2022/9/1634第34页,共70页,编辑于2022年,星期日CUBECUBE:除了返回由:除了返回由GROUP BY GROUP BY 子句指定的列外,还返回按组子句指定的列外,还返回按组统计的行。

35、返回的结果先按分统计的行。返回的结果先按分组的第一个条件列排序显示,组的第一个条件列排序显示,再按第二个条件列排序显示,再按第二个条件列排序显示,以此类推。统计行包括了以此类推。统计行包括了GROUP BY GROUP BY 子句指定的列的各子句指定的列的各种组合的数据统计种组合的数据统计Select Select 所属部门,性别,所属部门,性别,AVG(AVG(工资工资)FROM)FROM 员工数据表员工数据表Group by Group by 所属部门,性别所属部门,性别With cubeWith cube所属部所属部门门性别性别平均工资平均工资项目部项目部男男2000项目部项目部女女30

36、00项目部项目部null2500项目部全体员工的平均项目部全体员工的平均工资工资检验部检验部男男1750检验部检验部女女1000检验部检验部null1500检验部全体员工的平均检验部全体员工的平均工资工资录入部录入部男男1000录入部录入部null1000办公室办公室女女3000办公室办公室null3000nullnull1928所有员工的平均工资所有员工的平均工资null男男1625所有男性的平均工资所有男性的平均工资null女女2333所有女性的平均工资所有女性的平均工资2022/9/1635第35页,共70页,编辑于2022年,星期日ROLLUPROLLUP:与:与CUBE CUBE 不

37、同的是,不同的是,此选项对此选项对GROUP BY GROUP BY 子句中子句中的列顺序敏感,它只返回的列顺序敏感,它只返回第一个分组条件指定的列第一个分组条件指定的列的统计行,改变列的顺序的统计行,改变列的顺序会使返回的结果的行数发会使返回的结果的行数发生变化。生变化。Select Select 所属部门,性别,所属部门,性别,AVG(AVG(工资工资)FROM)FROM 员工数员工数据表据表Group by Group by 所属部门,性别所属部门,性别With rollupWith rollup所属部门所属部门性别性别平均工资平均工资项目部项目部男男2000项目部项目部女女3000项目

38、部项目部null2500项目部全体员工的平均项目部全体员工的平均工资工资检验部检验部男男1750检验部检验部女女1000检验部检验部null1500检验部全体员工的平均检验部全体员工的平均工资工资录入部录入部男男1000录入部录入部null1000办公室办公室女女3000办公室办公室null3000nullnull1928所有员工的平均工资所有员工的平均工资null男男1625null女女23332022/9/1636第36页,共70页,编辑于2022年,星期日若希望在查询结果总仅包含若希望在查询结果总仅包含按照性别分组后取得的平均按照性别分组后取得的平均值,则需要将值,则需要将group b

39、ygroup by子句子句中的中的“所属部门所属部门”和和“性别性别”字段的位置调换。字段的位置调换。Select Select 所属部门,性别,所属部门,性别,AVG(AVG(工资工资)FROM)FROM 员工数据表员工数据表Group by Group by 性别,所属部门性别,所属部门With rollupWith rollup所属部所属部门门性别性别平均工资平均工资项目部项目部男男2000检验部检验部男男1750录入部录入部男男l1000null男男1625所有男性的平均工资所有男性的平均工资项目部项目部女女1000检验部检验部女女l1500录入部录入部女女1000null女女2333

40、所有女性的平均工资所有女性的平均工资nullnull1928所有员工的平均工资所有员工的平均工资2022/9/1637第37页,共70页,编辑于2022年,星期日HAVING HAVING 子句子句HAVING 子句指定分组搜索条件。HAVING 子句通常与GROUP BY 子句一起使用。TEXT、NTEXT和IMAGE 数据类型不能用于HAVING 子句。其语法如下HAVING HAVING HAVING 子句与子句与WHERE WHERE 子句很相似,其区子句很相似,其区别在于其作用的对象不同。别在于其作用的对象不同。WHERE WHERE 子句子句作用于表和视图,作用于表和视图,HAVI

41、NG HAVING 子句作用于组子句作用于组2022/9/1638第38页,共70页,编辑于2022年,星期日例如:例如:例:查询有多个员工的工资不低于例:查询有多个员工的工资不低于6000 6000 的部门编号的部门编号select dept_id,count(*)select dept_id,count(*)from employeefrom employeewhere e_wage=6000where e_wage=6000group by dept_idgroup by dept_idhaving count(*)1having count(*)12022/9/1639第39页,共70

42、页,编辑于2022年,星期日ORDER BY ORDER BY 子句子句ORDER BY ORDER BY 子句指定查询结果的排序方式。其语法如下:子句指定查询结果的排序方式。其语法如下:ORDER BY order_by_expression ASC|DESC ORDER BY order_by_expression ASC|DESC ,.n,.n各参数说明如下:各参数说明如下:order_by_expressionorder_by_expression:指定排序的规则:指定排序的规则order_by_expression order_by_expression 可以是表或视图的列的名称或别

43、名,可以是表或视图的列的名称或别名,如果如果SELECTSELECT语句中没有使用语句中没有使用DISTINCT DISTINCT 选项或选项或UNION UNION 操作符,操作符,那么那么ORDER BY ORDER BY 子句中可以包含子句中可以包含select list select list 中没有出现中没有出现的列名或别名。的列名或别名。ORDER BY ORDER BY 子句中也不能使用子句中也不能使用TEXTTEXT、NTEXTNTEXT和和IMAGE IMAGE 数据类型数据类型 ASCASC:指明查询结果按升序排列这是系统默认值:指明查询结果按升序排列这是系统默认值 DES

44、CDESC:指明查询结果按降序排列:指明查询结果按降序排列2022/9/1640第40页,共70页,编辑于2022年,星期日COMPUTE COMPUTE 子句子句COMPUTE COMPUTE 子句在查询结果的末尾生成一个汇总数据行,其子句在查询结果的末尾生成一个汇总数据行,其语法如下:语法如下:COMPUTECOMPUTE AVG|COUNT|MAX|MIN|SUM AVG|COUNT|MAX|MIN|SUM(expression),.n(expression),.n BY expression,.n BY expression,.n 各参数说明如下:各参数说明如下:AVG|COUNT|M

45、AX|MIN|SUMAVG|COUNT|MAX|MIN|SUM:以上参数与对应:以上参数与对应的函数有相同的含义,这些函数均会忽略的函数有相同的含义,这些函数均会忽略NULLNULL值且值且DISTINCTDISTINCT选项不能在此使用选项不能在此使用 2022/9/1641第41页,共70页,编辑于2022年,星期日expressionexpression:指定需要统计的列的名称,此列必须:指定需要统计的列的名称,此列必须包含于包含于SELECTSELECT列表中,且不能用别名。列表中,且不能用别名。COMPUTECOMPUTE子子句中也不能使用句中也不能使用TEXTTEXT、NTEXTN

46、TEXT和和IMAGE IMAGE 数据类型数据类型 BY expressionBY expression:在查询结果中生成分类统计的:在查询结果中生成分类统计的行。如果使用此选项,则必须同时使用行。如果使用此选项,则必须同时使用ORDER BY ORDER BY 子句。子句。expression expression 是对应的是对应的ORDER BY ORDER BY 子句中的子句中的order_by_expression order_by_expression 的子集或全集的子集或全集2022/9/1642第42页,共70页,编辑于2022年,星期日例如:例如:Select Select

47、员工姓名,所属部门,工资员工姓名,所属部门,工资 From From 员工数据表员工数据表Order by Order by 所属部门所属部门Coumpute sum(Coumpute sum(工资工资)by)by 所属部门所属部门注意:在加入注意:在加入by by 关键字及其分组字段的同关键字及其分组字段的同时必须将这个分组字段同时作为排序条时必须将这个分组字段同时作为排序条件,否则查询会出错。件,否则查询会出错。2022/9/1643第43页,共70页,编辑于2022年,星期日UNION UNION 子句子句UNION UNION 操作符将两个或两个以上的查询结果合并为操作符将两个或两个以

48、上的查询结果合并为一个结果集。它与使用连接查询一个结果集。它与使用连接查询合并两个表的列是不同的,使用合并两个表的列是不同的,使用UNION UNION 操作符合操作符合并查询结果需要遵循两个基本规则:列的数目和并查询结果需要遵循两个基本规则:列的数目和顺序在所有查询中必须是一致的;数据类型必须顺序在所有查询中必须是一致的;数据类型必须兼容兼容其语法如下:其语法如下:Select Select 语句语句UNION ALLUNION ALLSelect Select 语句语句2022/9/1644第44页,共70页,编辑于2022年,星期日注意:注意:使用使用unionunion子句获得的结果集

49、的字段名称与子句获得的结果集的字段名称与unionunion运运算符算符 之前的之前的selectselect语句结果集中的字段名相同,语句结果集中的字段名相同,unionunion运算符之后的运算符之后的selectselect语句结果集的字段名将语句结果集的字段名将被忽略。被忽略。在默认情况下,在默认情况下,unionunion运算符将从最终结果集中删除运算符将从最终结果集中删除重复的记录。如果希望最终结果集保留所有的记录,重复的记录。如果希望最终结果集保留所有的记录,则必须使用则必须使用allall关键字。关键字。2022/9/1645第45页,共70页,编辑于2022年,星期日在使用在

50、使用unionunion运算符时,单独的运算符时,单独的selectselect语句中不能语句中不能包含其自己的包含其自己的order byorder by或或coumputecoumpute子句子句只能在最后一个只能在最后一个selectselect语句的后面使用一个语句的后面使用一个order order by by 或或compute compute 子句,此时,该子句将适用于最终子句,此时,该子句将适用于最终的组合结果集的组合结果集若需要对查询结果进行分组以及在分组后对结果若需要对查询结果进行分组以及在分组后对结果使用使用havinghaving子句进行过滤,则必须在单独的子句进行过滤

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

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁