《第03章SQL语言基础优秀PPT.ppt》由会员分享,可在线阅读,更多相关《第03章SQL语言基础优秀PPT.ppt(70页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第03章SQL语言基础2023/2/231现在学习的是第1页,共70页19991999年年SQL-99SQL-99标准(简称标准(简称SQL3SQL3)。增加了对对象关系模)。增加了对对象关系模型的支持。目前仅部分实现。型的支持。目前仅部分实现。最流行的国际标准数据库语言。最流行的国际标准数据库语言。主要特点:主要特点:SQLSQL是非结构化的语言,使用是非结构化的语言,使用SQL SQL 查询数据库时,只需查询数据库时,只需要告诉它做什么而不用告诉它如何去做。要告诉它做什么而不用告诉它如何去做。SQL SQL 本身不提供任何程序流程控制结构,而是通过本身不提供任何程序流程控制结构,而是通过P
2、L/SQLPL/SQL提供提供SQLSQL语言的过程化功能语言的过程化功能SQLSQL提供相对固定的数据类型,一般不需要扩展提供相对固定的数据类型,一般不需要扩展SQLSQL本身十分灵活,方便易学。本身十分灵活,方便易学。2023/2/232现在学习的是第2页,共70页标准标准SQLSQL只包含只包含9 9种语句:种语句:w数据查询:数据查询:selectselectw数据定义数据定义:create,drop,alter:create,drop,alterw数据操纵数据操纵:insert,update,delete:insert,update,deletew数据控制数据控制:grant,rev
3、oke:grant,revoke2023/2/233现在学习的是第3页,共70页数据定义语言(数据定义语言(DDLDDL),用于定义数据结构),用于定义数据结构数据操纵语言(数据操纵语言(DMLDML),用于检索和修改数),用于检索和修改数据结构据结构数据控制语言(数据控制语言(DCLDCL),用于规定数据库用),用于规定数据库用户的各种权限户的各种权限数据库事务处理,用来保证数据库的完整性数据库事务处理,用来保证数据库的完整性SQLSQL语言分类语言分类2023/2/234现在学习的是第4页,共70页SQLSQL语言分类语言分类数据定义语言(数据定义语言(DDLDDL):用于定义数据结):用
4、于定义数据结构构能使用户完成下列任务能使用户完成下列任务n创建数据库对象创建数据库对象n删除数据库对象删除数据库对象n更改数据库对象更改数据库对象2023/2/235现在学习的是第5页,共70页常用的数据定义语言常用的数据定义语言DDLDDL语句包括:语句包括:Create Table:Create Table:创建数据库表创建数据库表Create Index:Create Index:创建数据库表的索引创建数据库表的索引Drop Table:Drop Table:删除数据库表删除数据库表Drop Index:Drop Index:删除数据库表的索引删除数据库表的索引TruncateTrunc
5、ate:删除表中所有行:删除表中所有行Alter TableAlter Table:增加表列,重定义表列,更改存:增加表列,重定义表列,更改存储分配储分配Alter Table ADD CONSTRAINT:Alter Table ADD CONSTRAINT:在已有的表上增加在已有的表上增加约束约束2023/2/236现在学习的是第6页,共70页数据操纵语言数据操纵语言(DML)(DML):允许用户对数据库:允许用户对数据库中的数据进行中的数据进行Insert,Update,DeleteInsert,Update,Delete和和SelectSelect等操作等操作常用常用DMLDML语句包
6、括:语句包括:Insert Insert:增加数据行到表:增加数据行到表DeleteDelete:从表中删除数据行:从表中删除数据行UpdateUpdate:更改表中数据:更改表中数据SelectSelect:从表中或视图中检索数据行:从表中或视图中检索数据行2023/2/237现在学习的是第7页,共70页数据控制语言(数据控制语言(DCLDCL):用于规定数据库):用于规定数据库用户的各种权限用户的各种权限常用的数据控制语句包括:常用的数据控制语句包括:GRANTGRANT:将权限或角色授予用户或其它角:将权限或角色授予用户或其它角色色REVOKEREVOKE:从用户或数据库角色回收权限:从
7、用户或数据库角色回收权限Set RoleSet Role:禁止或允许一个角色:禁止或允许一个角色2023/2/238现在学习的是第8页,共70页数据库事务控制数据库事务控制:用来保证数据库的完整用来保证数据库的完整性性常用的事务处理语句包括:常用的事务处理语句包括:COMMIT WORKCOMMIT WORK:把当前事务所作的更改永:把当前事务所作的更改永久化(写入磁盘)久化(写入磁盘)ROLLBACK:ROLLBACK:作废上次提交以来的所有更改作废上次提交以来的所有更改2023/2/239现在学习的是第9页,共70页事务:指作为单个逻辑工作单元执行的事务:指作为单个逻辑工作单元执行的一系列
8、操作,而这些逻辑工作单元需要一系列操作,而这些逻辑工作单元需要具有原子性,一致性,隔离性和持久性具有原子性,一致性,隔离性和持久性四个属性。四个属性。2023/2/2310现在学习的是第10页,共70页SQLSQL语句的基本语法语句的基本语法基本语法如下:基本语法如下:每条每条SQLSQL语句必须以分号结束语句必须以分号结束每条每条SQLSQL语句可以单独写成一行,也可以语句可以单独写成一行,也可以分成若干行分成若干行SQLSQL语句对大小写不敏感,对于语句对大小写不敏感,对于SQLSQL语句语句的关键字(如的关键字(如InsertInsert等),表名,列名等),表名,列名等,可以大小写混合
9、;但对列的内容则等,可以大小写混合;但对列的内容则是大小写敏感的。是大小写敏感的。2023/2/2311现在学习的是第11页,共70页对象命名约定对象命名约定SQL ServerSQL Server用三段式名字标识对象:用三段式名字标识对象:.前两者可以省略,系统自动有一个默认值。数据库前两者可以省略,系统自动有一个默认值。数据库名的默认值是当前数据库,所有者名的默认值是名的默认值是当前数据库,所有者名的默认值是数据库的所有者(数据库的所有者(dbodbo)例如:在例如:在pubspubs数据库中的数据库中的authorsauthors表的所有者是表的所有者是dbodbo,它可以在多个数据库中
10、按如下方法引用:,它可以在多个数据库中按如下方法引用:pubs.dbo.authorspubs.dbo.authorsPubs.authorsPubs.authors2023/2/2312现在学习的是第12页,共70页别名:使用别名的主要目的是增加别名:使用别名的主要目的是增加selectselect语句的可读性。可使用如下语句语句的可读性。可使用如下语句指派数据表的别名:指派数据表的别名:数据表名称数据表名称 as as 数据表别名数据表别名2023/2/2313现在学习的是第13页,共70页例如:例如:use sampleuse sampleSelect e.Select e.员工编号员工
11、编号,e.,e.员工姓名员工姓名From From 员工数据表员工数据表 as eas e注意:如果为数据表指定了别名,则在相应的注意:如果为数据表指定了别名,则在相应的T-SQLT-SQL语句中,对该数据表的所有显式引用都必须使用别语句中,对该数据表的所有显式引用都必须使用别名,而不能使用数据表名。例如:名,而不能使用数据表名。例如:Select Select 员工数据表员工数据表.员工编号员工编号,e.,e.员工姓名员工姓名From From 员工数据表员工数据表 as eas e2023/2/2314现在学习的是第14页,共70页SELECT SELECT 语句语句数据检索是数据库中最频
12、繁执行的活动数据检索是数据库中最频繁执行的活动在在 SQL SQL 中中,使使用用 SELECT SELECT 语语句句可可以以在在需需要的表单中检索数据要的表单中检索数据在在进进行行检检索索之之前前,必必须须知知道道需需要要的的数数据据存储在哪里存储在哪里SELECT SELECT 语句可以由多个查询子句组成语句可以由多个查询子句组成2023/2/2315现在学习的是第15页,共70页SELECT SELECT 语句语句SELECT SELECT 语句可用于检索:语句可用于检索:n全部的行和列全部的行和列n全部的行和特定的列全部的行和特定的列n限定范围的行限定范围的行n与一组值匹配的行与一组
13、值匹配的行n根据未知值检索的行根据未知值检索的行n隐藏有重复值的行隐藏有重复值的行n根据多个搜索条件检索的行根据多个搜索条件检索的行2023/2/2316现在学习的是第16页,共70页SELECT SELECT 语句语句SelectSelect语句的基本结构如下:语句的基本结构如下:SELECT ALL|DISTINCT select_listSELECT ALL|DISTINCT select_listINTO new_table_nameINTO new_table_nameFROM table_name|view_name FROM table_name|view_name,table_
14、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_listHAVING search_conditionsHAVING search_conditionsORDER BY order_list ASC|DESCORDER BY order_list ASC|DESC2023/2/2317现
15、在学习的是第17页,共70页SELECT SELECT 子子 句句SELECT SELECT 子句指定需要通过查询返回的表的列。其语子句指定需要通过查询返回的表的列。其语法如下法如下:SELECT ALL|DISTINCT SELECT ALL|DISTINCT TOP n TOP n各参数说明如下:各参数说明如下:其中,其中,select_listselect_list表示需要检索的字段的列表,字表示需要检索的字段的列表,字段名称之间用逗号分隔。这个列表中既可以包含段名称之间用逗号分隔。这个列表中既可以包含数据源表或视图中的字段名称,还可以包含其它数据源表或视图中的字段名称,还可以包含其它表
16、达式。如用表达式。如用*,则系统将返回数据表中的所有字,则系统将返回数据表中的所有字段。段。2023/2/2318现在学习的是第18页,共70页 ALL ALL:指明查询结果中可以显示值相同的列:指明查询结果中可以显示值相同的列ALL ALL 是系统默认的是系统默认的 DISTINCTDISTINCT:指明查询结果中如果有值相同的列,则:指明查询结果中如果有值相同的列,则只显示其中的一列。对只显示其中的一列。对DISTINCT DISTINCT 选项来说,选项来说,Null Null 值值被认为是相同的值被认为是相同的值 TOP n PERCENTTOP n PERCENT:指定返回查询结果的
17、前:指定返回查询结果的前n n 行行数据,如果数据,如果PERCENT PERCENT 关键字指定的话,则返回查询关键字指定的话,则返回查询结果的前百分之结果的前百分之n n 行数据。行数据。2023/2/2319现在学习的是第19页,共70页INTO INTO 子句子句INTO INTO 子句用于把查询结果存放到一个新子句用于把查询结果存放到一个新建的表中。建的表中。SELECT.INTO SELECT.INTO 句式不能与句式不能与COMPUTE COMPUTE 子句一起使用。其语法如下子句一起使用。其语法如下INTO new_tableINTO new_table参数参数new_tabl
18、e new_table 指定了新建的表的名称,指定了新建的表的名称,新表的列由新表的列由SELECT SELECT 子句中指定的列构成。子句中指定的列构成。新表中的数据行是由新表中的数据行是由WHERE WHERE 子句指定的。子句指定的。但如果但如果SELECT SELECT 子句中指定了计算列,在子句中指定了计算列,在新表中对应的列则不是计算列,而是一新表中对应的列则不是计算列,而是一个实际存储在表中的列,其中的数据由个实际存储在表中的列,其中的数据由执行执行SELECT.INTO SELECT.INTO 语句时计算得出。语句时计算得出。2023/2/2320现在学习的是第20页,共70页
19、FROM FROM 子句子句FROM FROM 子句指定需要进行数据查询的表只子句指定需要进行数据查询的表只要要SELECT SELECT 子句中有要查询的列就必子句中有要查询的列就必须使用须使用FROM FROM 子句其语法如下子句其语法如下FROM ,.nFROM ,.ntable_sourcetable_source:指明:指明SELECT SELECT 语句要用到语句要用到的表、视图等数据源,该列表中的数据的表、视图等数据源,该列表中的数据表名和视图名之间使用逗号分隔。表名和视图名之间使用逗号分隔。2023/2/2321现在学习的是第21页,共70页T-SQLT-SQL可以支持在可以支
20、持在fromfrom子句中指定除了数子句中指定除了数据表或视图以外的其他对象,例如查询据表或视图以外的其他对象,例如查询结果集构成的派生表。这些派生表实际结果集构成的派生表。这些派生表实际上是上是from from 子句中子句中selectselect语句的查询结果语句的查询结果集,这些结果集构成了外层集,这些结果集构成了外层selectselect语句语句查询时所用的数据表。查询时所用的数据表。2023/2/2322现在学习的是第22页,共70页例如:例如:Select Emp.Select Emp.员工编号,员工编号,emp.emp.员工姓名,员工姓名,sp.sp.部门名称部门名称From
21、 From 员工数据表员工数据表 as empas emp,(select(select 部门数据表部门数据表.部门编号,部门数据表部门编号,部门数据表.部门名称部门名称From From 部门数据表部门数据表Where Where 部门数据表部门数据表.部门编号部门编号2)as sp2)as spWhere emp.Where emp.部门编号部门编号sp.sp.部门编号部门编号首先使用首先使用selectselect语句检索高级部门,并用别名语句检索高级部门,并用别名spsp表示该派表示该派生表,然后从员工数据表和生表,然后从员工数据表和spsp派生表中检索数据。派生表中检索数据。2023
22、/2/2323现在学习的是第23页,共70页Where Where 子句子句Where Where 子句指定数据检索的条件,以限制返回的数据行。子句指定数据检索的条件,以限制返回的数据行。Where Where 子句中的查询条件子句中的查询条件比较运算符:比较运算符:、=、=、=、!=!=、!范围说明:范围说明:Between A and BBetween A and B、Not Between A and BNot Between A and B可选值列表:可选值列表:ININ、NOT INNOT IN模式匹配:模式匹配:LIKELIKE,NOT LIKENOT LIKE是否空值:是否空值:
23、IS NULLIS NULL、IS NOT NULLIS NOT NULL上述条件的逻辑组合:上述条件的逻辑组合:ANDAND、OROR、NOTNOT2023/2/2324现在学习的是第24页,共70页比较查询条件:比较查询条件:texttext、ntextntext和和imageimage数数据类型不能与比较运算符组合成查询条据类型不能与比较运算符组合成查询条件。件。列表查询条件:列表查询条件:in in 关键字在大多数情况关键字在大多数情况下应用于嵌套查询(又称为子查询)中,下应用于嵌套查询(又称为子查询)中,通常首先使用通常首先使用selectselect语句选定一个范围,语句选定一个范
24、围,然后将选定的范围作为然后将选定的范围作为inin关键字的符号关键字的符号条件的列表,从而得出最终的结果集。条件的列表,从而得出最终的结果集。2023/2/2325现在学习的是第25页,共70页模式查询条件:模式查询条件:LikeLike、Not LikeNot Like通配符通配符n*匹配任意字符串匹配任意字符串n?匹配任意一个字符匹配任意一个字符大小写敏感大小写敏感2023/2/2326现在学习的是第26页,共70页LikeLike关键字中的通配符及其含义关键字中的通配符及其含义通配通配符符含义含义%由由0 0个或更多字符组成的任意字符串个或更多字符组成的任意字符串_ _任意单个字符任意
25、单个字符用于指定范围,例如用于指定范围,例如a-fa-f,表示,表示a a到到f f范围内的任何单个字符范围内的任何单个字符表示指定范围,例如表示指定范围,例如a-fa-f,表示,表示a a到到f f范围以外的任何单个字符范围以外的任何单个字符2023/2/2327现在学习的是第27页,共70页LikeLike关键字举例关键字举例likelike格式格式检索范围检索范围Like Like Mc%Mc%以以McMc开头的所有字符串开头的所有字符串Like Like%inger%inger以字母以字母ingeringer结尾的所有字符串结尾的所有字符串Like Like _heryl_heryl以
26、字母以字母herylheryl结尾的所有结尾的所有6 6个字母的个字母的名称名称Like Like M-M-ZingerZinger以以ingeringer结尾、以从结尾、以从M M到到Z Z的任何单的任何单个字母开头的所有字符串个字母开头的所有字符串Like Like Mc%Mc%以以 M M开头,且第二个字母不是开头,且第二个字母不是c c的的所有字符串所有字符串Like Like%en%en在任何位置包含字母在任何位置包含字母enen的所有字符的所有字符串串2023/2/2328现在学习的是第28页,共70页空值判断查询条件:空值判断查询条件:nullnull值表示字段的值表示字段的数据
27、值未知或不可用,它并不表示零数据值未知或不可用,它并不表示零(数字值或二进制值)、零长度的字符(数字值或二进制值)、零长度的字符串或空白(字符值)串或空白(字符值)2023/2/2329现在学习的是第29页,共70页如果用户要查找的数据中本身就包含了通配符,如如果用户要查找的数据中本身就包含了通配符,如SQL_MailSQL_Mail,就需要使用转义字符来区分通配符与就需要使用转义字符来区分通配符与实际存在的字符。其格式如下实际存在的字符。其格式如下LIKE LIKE 字符匹配串字符匹配串 ESCAPE ESCAPE 转义字符转义字符例:例:查找对象名称为查找对象名称为SQL_M SQL_M
28、开头,开头,il il 结尾,中间结尾,中间有一个不确定字符的对象有一个不确定字符的对象select*from objectsselect*from objectswhere object_name like where object_name like SQL#_M_ilSQL#_M_il escape escape#/*/*这里使用了两个下划线这里使用了两个下划线_ _符号,前一个下划线由于符号,前一个下划线由于有逃逸字符在其前面作标识,因而被认为是实际存在有逃逸字符在其前面作标识,因而被认为是实际存在的下划线字符;后面一个下划线没有逃逸字符在其前的下划线字符;后面一个下划线没有逃逸字符在
29、其前面作标识,因此将它作为面作标识,因此将它作为通配符通配符*/2023/2/2330现在学习的是第30页,共70页使用使用来将通配符指定为普通字符。来将通配符指定为普通字符。例如:例如:Select*from objectSelect*from objectWhere column1 like Where column1 like%54%54%将返回所有包含将返回所有包含54%54%的字符串的字符串2023/2/2331现在学习的是第31页,共70页GROUP BY GROUP BY 子句子句GROUP BY GROUP BY 子句指定查询结果的分组条件。其语法如子句指定查询结果的分组条件。
30、其语法如下:下:GROUP BY ALL group_by_expression,.nGROUP BY ALL group_by_expression,.n WITH CUBE|ROLLUP WITH CUBE|ROLLUP 各参数说明如下:各参数说明如下:group_by_expressiongroup_by_expression:指明分组条件:指明分组条件group_by_expression group_by_expression 通常是一个列名,但不能是列通常是一个列名,但不能是列的别名。数据类型为的别名。数据类型为TEXTTEXT、NTEXTNTEXT、IMAGE IMAGE 或或B
31、IT BIT 类型的列不能作为分组条件类型的列不能作为分组条件ALLALL:返回所有可能的查询结果组合,即使此组合中没有:返回所有可能的查询结果组合,即使此组合中没有任何满足任何满足WHERE WHERE 子句的数据。分组的统计列如果不满子句的数据。分组的统计列如果不满足查询条件,则将由足查询条件,则将由NULL NULL 值构成其数据。值构成其数据。ALL ALL 选项选项不能与不能与CUBECUBE或或ROLLUP ROLLUP 选项同时使用选项同时使用 2023/2/2332现在学习的是第32页,共70页CUBECUBE:除了返回由:除了返回由GROUP BY GROUP BY 子句指定
32、的列外,还子句指定的列外,还返回按组统计的行。返回的结果先按分返回按组统计的行。返回的结果先按分组的第一个条件列排序显示,再按第二个条件列排组的第一个条件列排序显示,再按第二个条件列排序显示,以此类推。统计行包括了序显示,以此类推。统计行包括了GROUPGROUPBY BY 子句指定的列的各种组合的数据统计子句指定的列的各种组合的数据统计 ROLLUPROLLUP:与:与CUBE CUBE 不同的是,此选项对不同的是,此选项对GROUP BY GROUP BY 子子句中的列顺序敏感,它只返回第一个分组条件指句中的列顺序敏感,它只返回第一个分组条件指定的列的统计行,改变列的顺序会使返回的结果定的
33、列的统计行,改变列的顺序会使返回的结果的行数发生变化。的行数发生变化。2023/2/2333现在学习的是第33页,共70页例如:例如:例:例:查询工作级别为查询工作级别为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_name2023/2/2334现在学习的是第34页,共70页CUBECUB
34、E:除了返回由:除了返回由GROUP BY GROUP BY 子句指定的列外,还返回按子句指定的列外,还返回按组统计的行。返回的结果先组统计的行。返回的结果先按分组的第一个条件列排序按分组的第一个条件列排序显示,再按第二个条件列排显示,再按第二个条件列排序显示,以此类推。统计行序显示,以此类推。统计行包括了包括了GROUP BY GROUP BY 子句指定的子句指定的列的各种组合的数据统计列的各种组合的数据统计Select Select 所属部门,性别,所属部门,性别,AVG(AVG(工资工资)FROM)FROM 员工数据表员工数据表Group by Group by 所属部门,性别所属部门,
35、性别With cubeWith cube所属部所属部门门性别性别平均工资平均工资项目部项目部男男2000项目部项目部女女3000项目部项目部null2500项目部全体员工的平均项目部全体员工的平均工资工资检验部检验部男男1750检验部检验部女女1000检验部检验部null1500检验部全体员工的平均检验部全体员工的平均工资工资录入部录入部男男1000录入部录入部null1000办公室办公室女女3000办公室办公室null3000nullnull1928所有员工的平均工资所有员工的平均工资null男男1625所有男性的平均工资所有男性的平均工资null女女2333所有女性的平均工资所有女性的平均
36、工资2023/2/2335现在学习的是第35页,共70页ROLLUPROLLUP:与:与CUBE CUBE 不同的不同的是,此选项对是,此选项对GROUP BY GROUP BY 子子句中的列顺序敏感,它只返句中的列顺序敏感,它只返回第一个分组条件指定的列回第一个分组条件指定的列的统计行,改变列的顺序会的统计行,改变列的顺序会使返回的结果的行数发生变使返回的结果的行数发生变化。化。Select Select 所属部门,性别,所属部门,性别,AVG(AVG(工资工资)FROM)FROM 员工数据员工数据表表Group by Group by 所属部门,性别所属部门,性别With rollupWi
37、th rollup所属部门所属部门性别性别平均工资平均工资项目部项目部男男2000项目部项目部女女3000项目部项目部null2500项目部全体员工的平均项目部全体员工的平均工资工资检验部检验部男男1750检验部检验部女女1000检验部检验部null1500检验部全体员工的平均检验部全体员工的平均工资工资录入部录入部男男1000录入部录入部null1000办公室办公室女女3000办公室办公室null3000nullnull1928所有员工的平均工资所有员工的平均工资null男男1625null女女23332023/2/2336现在学习的是第36页,共70页若希望在查询结果总仅包含若希望在查询结
38、果总仅包含按照性别分组后取得的平均按照性别分组后取得的平均值,则需要将值,则需要将group bygroup by子句子句中的中的“所属部门所属部门”和和“性别性别”字段的位置调换。字段的位置调换。Select Select 所属部门,性别,所属部门,性别,AVG(AVG(工资工资)FROM)FROM 员工数据表员工数据表Group by Group by 性别,所属部门性别,所属部门With rollupWith rollup所属部门所属部门性别性别平均工资平均工资项目部项目部男男2000检验部检验部男男1750录入部录入部男男l1000null男男1625所有男性的平均工资所有男性的平均工
39、资项目部项目部女女1000检验部检验部女女l1500录入部录入部女女1000null女女2333所有女性的平均工资所有女性的平均工资nullnull1928所有员工的平均工资所有员工的平均工资2023/2/2337现在学习的是第37页,共70页HAVING HAVING 子句子句HAVING 子句指定分组搜索条件。HAVING 子句通常与GROUP BY 子句一起使用。TEXT、NTEXT和IMAGE 数据类型不能用于HAVING 子句。其语法如下HAVING HAVING HAVING 子句与子句与WHERE WHERE 子句很相似,其区子句很相似,其区别在于其作用的对象不同。别在于其作用的
40、对象不同。WHERE WHERE 子句子句作用于表和视图,作用于表和视图,HAVING HAVING 子句作用于组子句作用于组2023/2/2338现在学习的是第38页,共70页例如:例如:例:查询有多个员工的工资不低于例:查询有多个员工的工资不低于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(*)1h
41、aving count(*)12023/2/2339现在学习的是第39页,共70页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_b
42、y_expression 可以是表或视图的列的名称或别名,可以是表或视图的列的名称或别名,如果如果SELECTSELECT语句中没有使用语句中没有使用DISTINCT DISTINCT 选项或选项或UNION UNION 操作操作符,那么符,那么ORDER BY ORDER BY 子句中可以包含子句中可以包含select list select list 中没有中没有出现的列名或别名。出现的列名或别名。ORDER BY ORDER BY 子句中也不能使用子句中也不能使用TEXTTEXT、NTEXTNTEXT和和IMAGE IMAGE 数据类型数据类型 ASCASC:指明查询结果按升序排列这是系
43、统默认值:指明查询结果按升序排列这是系统默认值 DESCDESC:指明查询结果按降序排列:指明查询结果按降序排列2023/2/2340现在学习的是第40页,共70页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 各参数说明如下
44、:各参数说明如下:AVG|COUNT|MAX|MIN|SUMAVG|COUNT|MAX|MIN|SUM:以上参数与对:以上参数与对应的函数有相同的含义,这些函数均会忽略应的函数有相同的含义,这些函数均会忽略NULLNULL值且值且DISTINCTDISTINCT选项不能在此使用选项不能在此使用 2023/2/2341现在学习的是第41页,共70页expressionexpression:指定需要统计的列的名称,此列必须:指定需要统计的列的名称,此列必须包含于包含于SELECTSELECT列表中,且不能用别名。列表中,且不能用别名。COMPUTECOMPUTE子子句中也不能使用句中也不能使用TE
45、XTTEXT、NTEXTNTEXT和和IMAGE IMAGE 数据类型数据类型 BY expressionBY expression:在查询结果中生成分类统计的:在查询结果中生成分类统计的行。如果使用此选项,则必须同时使用行。如果使用此选项,则必须同时使用ORDER BY ORDER BY 子句。子句。expression expression 是对应的是对应的ORDER BY ORDER BY 子句中的子句中的order_by_expression order_by_expression 的子集或全集的子集或全集2023/2/2342现在学习的是第42页,共70页例如:例如:Select S
46、elect 员工姓名,所属部门,工资员工姓名,所属部门,工资 From From 员工数据表员工数据表Order by Order by 所属部门所属部门Coumpute sum(Coumpute sum(工资工资)by)by 所属部门所属部门注意:在加入注意:在加入by by 关键字及其分组字段的同关键字及其分组字段的同时必须将这个分组字段同时作为排序条时必须将这个分组字段同时作为排序条件,否则查询会出错。件,否则查询会出错。2023/2/2343现在学习的是第43页,共70页UNION UNION 子句子句UNION UNION 操作符将两个或两个以上的查询结果合并为操作符将两个或两个以上
47、的查询结果合并为一个结果集。它与使用连接查询一个结果集。它与使用连接查询合并两个表的列是不同的,使用合并两个表的列是不同的,使用UNION UNION 操作符合操作符合并查询结果需要遵循两个基本规则:列的数目和顺并查询结果需要遵循两个基本规则:列的数目和顺序在所有查询中必须是一致的;数据类型必须兼容序在所有查询中必须是一致的;数据类型必须兼容其语法如下:其语法如下:Select Select 语句语句UNION ALLUNION ALLSelect Select 语句语句2023/2/2344现在学习的是第44页,共70页注意:注意:使用使用unionunion子句获得的结果集的字段名称与子句
48、获得的结果集的字段名称与unionunion运算运算符符 之前的之前的selectselect语句结果集中的字段名相同,语句结果集中的字段名相同,unionunion运算符之后的运算符之后的selectselect语句结果集的字段名将语句结果集的字段名将被忽略。被忽略。在默认情况下,在默认情况下,unionunion运算符将从最终结果集中删除运算符将从最终结果集中删除重复的记录。如果希望最终结果集保留所有的记录,重复的记录。如果希望最终结果集保留所有的记录,则必须使用则必须使用allall关键字。关键字。2023/2/2345现在学习的是第45页,共70页在使用在使用unionunion运算符
49、时,单独的运算符时,单独的selectselect语句中不能语句中不能包含其自己的包含其自己的order byorder by或或coumputecoumpute子句子句只能在最后一个只能在最后一个selectselect语句的后面使用一个语句的后面使用一个order by order by 或或compute compute 子句,此时,该子句将适用于最终的子句,此时,该子句将适用于最终的组合结果集组合结果集若需要对查询结果进行分组以及在分组后对结果使用若需要对查询结果进行分组以及在分组后对结果使用havinghaving子句进行过滤,则必须在单独的子句进行过滤,则必须在单独的selects
50、elect语句中语句中指定指定group bygroup by和和havinghaving子句。子句。2023/2/2346现在学习的是第46页,共70页联接查询联接查询通过使用联接查询,可以根据各个数据表之间的逻辑关系从通过使用联接查询,可以根据各个数据表之间的逻辑关系从两个或多个数据表中检索数据。两个或多个数据表中检索数据。定义数据表之间的关联方式:定义数据表之间的关联方式:1 1 在数据表中指定用于联接的字段。典型的联接条件是在一在数据表中指定用于联接的字段。典型的联接条件是在一个数据表中指定外键,同时在另一个数据表中指定与其关个数据表中指定外键,同时在另一个数据表中指定与其关联的主键。