版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 SQL全称是结构化查询语言(Structured Query Language), 它的功能为:数据的查询、插入、修改和删除 数据的操纵、定义和控制等 6.1 SQL语言 SELECT语句的基本结构 SELECT INTO 用查询的结果创建一个新的数据表 FROM WHERE GROUP BY 将结果集分成组 ORDER BY order_listASC|DESC 将结果集中的记录排序, order_list指定排序时需要依据的字段列表,字段之间用逗 号分隔,ASC和DESC关键字分别指定记录是按升序还是降序排序 6.2 数据查询 使用SELECT语句须注意: 在数据库系统中,可能存在对象名
2、称重复的现象,因此在引用 时加上表的所有者 如:SELECT * FROM Jerry.student 使用DISTINCT关键字 DISTINCT关键字主要用来从SELECT语句的结果集中去掉重复的 记录,若没有指定DISTINCT关键字,那么系统将返回所有符合条件 的记录组成结果集 use xiong select 所属部门 from 员工数据表 使用DISTINCT关键字 若在语句中指定DISTINCT关键字,结果集中将去掉重复的记录 use xiong select distinct 所属部门 from 员工数据表 FROM子句 FROM子句主要用来指定检索数据的来源,该列表中的数据表
3、名 和视图名之间使用逗号分隔 WHERE子句 WHERE子句用来控制结果集的记录构成 WHERE子句中的查询或限定条件可以是: 1、比较查询条件 比较查询条件由表达式的双方和比较运算符组成,系统将根据 该查询条件的真假来决定某一个记录是否满足该查询条件 比较运算符:= 、 、= 、= 、 、!= 、! 、!=2000 and 工资=3000 order by 工资 默认升序 WHERE子句 2、范围查询条件 (2)排除范围条件:返回记录某个字段的值在两个指定值范 围以外,但并包括这两个值。通常使用NOT BETWEEN.AND.来指 定排除范围条件 例:从员工数据表中检索工资在2000到300
4、0之外的员工记录 select * from 员工数据表 where 工资 not between 2000 and 3000 等价于 where 工资3000 order by 工资 WHERE子句 3、列表查询条件 返回所有与列表中的任意一个值匹配的记录,常用IN关键字来 指定列表查询条件 IN关键字的格式为: IN(列表值1,列表值2,.)列表值之间用逗号隔开 例:查询隶属于项目部和录入部的员工信息 select * from 员工数据表 where 所属部门 IN(项目部,录入部) 等价于 where 所属部门 =项目部 or 所属部门=录入部 order by 所属部门 WHERE子
5、句 3、列表查询条件 IN关键字在大多数情况下应用于嵌套查询中,常首先使用 SELECT语句选定一个范围,然后选定的范围作为IN关键字的符合条 件列表,从而得到最终的结果集 例:查询工资大于2000的员工信息 select * from 员工数据表 where 姓名 IN ( select 姓名 from 员工数据表 where 工资=2000 ) WHERE子句 3、列表查询条件 除IN外,还可以用NOT IN关键字来进行列表查询,其含义与IN 正好相反,查询结果返回不在列表范围内的所有记录 例:查询工资不大于2000的员工信息 select * from 员工数据表 where 姓名 NO
6、T IN ( select 姓名 from 员工数据表 where 工资=2000 ) WHERE子句 4、模式查询条件 返回符合某种匹配格式的所有记录,常用LIKE关键字来指定模 式查询条件 LIKE使用通配符来表示字符串需要匹配的模式 LIKE关键字中的通配符及其含义 WHERE子句 4、模式查询条件 LIKE关键字的使用格式为:LIKE 包括通配符在内的匹配模式 LIKE关键字举例 WHERE子句 4、模式查询条件 例:在项目数据表中检索所有来自SiS公司的项目,由于已经知 道来自SiS公司的所有项目的名称都以SiS开始 USE XIONG SELECT 项目名称 FROM 项目数据表
7、WHERE 项目名称 LIKE SiS% 此外,还可以使用NOT LIKE关键字来进行模式查询 WHERE子句 4、模式查询条件 从上面介绍得知,可以使用百分号(%)、连字符(-)、方括 号()、上尖号()和底线(_)作为通配符组成匹配模式 但搜索的字符串中包含真正的这些通配符,怎样将它们标识出 来呢? 在此有两种方法可用来标识这些特殊的字符 (1)使用ESCAPE关键字定义转义符 例:WHERE Column1 LIKE %54/% ESCAPE / 将/定义为转义字符,/后面的%为普通字符,另外 两个作为通配符,所以该语句返回所有包含54%的字符串 (2)使用方括号()将通配符指定为普通字
8、符 例:WHERE Column1 LIKE %54% WHERE子句 5、空值判断查询条件 空值判断查询条件常用来搜索某一字段值为空值的记录,可以 使用IS NULL或IS NOT NULL关键字来指定这种查询条件 例:查找项目名称为空值的所有记录 USE XIONG SELECT * FROM 项目数据库 WHERE 项目名称 IS NULL WHERE子句 6、逻辑运算符 AND OR NOT AND运算符:用来连接两个查询条件,只有当这两个条件都满足 时才返回True 例:查询所有学生信息表中所有年龄小于18岁的女生 USE XIONG SELECT * FROM student WH
9、ERE 性别=女 and 年龄= 2000 GROUP BY子句 2、使用ALL关键字 ALL关键字的作用是暂时忽略WHERE子句中的查询条件 若使用了ALL关键字,则查询结果将包括由GROUP BY子句所产生 的所有组(包括不符合WHERE子句的查询条件) 例:检索除了办公室以外其他部门的平均工资 SELECT 所属部门,AVG(工资) AS 平均工资 FROM 员工数据表 WHERE 所属部门 NOT LIKE 办公室 GROUP BY 所属部门 使用ALL关键字 GROUP BY ALL 所属部门 GROUP BY子句 3、使用CUBE关键字 WITH CUBE关键字的主要作用是自动对G
10、ROUP BY子句中列出的字 段进行分组汇总运算 例:SELECT 所属部门,性别,AVG(工资) AS 平均工资 FROM 员工数据表 GROUP BY 所属部门,性别 WITH CUBE GROUP BY子句 4、使用ROLLUP关键字 WITH ROLLUP关键字的主要目的是自动对GROUP BY子句中列出的 第一个分组字段进行分组汇总运算 例:SELECT 所属部门,性别,AVG(工资) AS 平均工资 FROM 员工数据表 GROUP BY 所属部门,性别 WITH ROLLUP SELECT 所属部门,性别,AVG(工资) AS 平均工资 FROM 员工数据表 GROUP BY 性
11、别,所属部门 WITH ROLLUP ORDER BY子句 ORDER BY子句根据查询结果中的一个字段或多个字段对查询结 果进行排序,可以指定升序(ASC)或降序(DESC),若没指定,则 系统默认为升序 例:检索员工数据表中的所有记录,并按工资多少由低到高进 行输出 SELECT * FROM 员工数据表 ORDER BY 工资 ORDER BY子句 注意:在ORDER BY列表中不允许使用子查询、聚合表达式和常 量表达式,但可以在选择字段列表中为聚合表达式指定一个名称, 然后在ORDER BY子句中引用这个指定的名称 例:检索各个部门的工资平均值,并且按照该平均值的升序顺 序排序结果数据
12、集 SELECT 所属部门,AVG(工资) AS 平均工资 FROM 员工数据表 GROUP BY 所属部门 ORDER BY 平均工资 COMPUTE和COMPUTE BY子句 COMPUTE和COMPUTE BY子句主要用来汇总数据 COMPUTE子句的格式为: COMPUTE 汇总函数(汇总函数表达式)BY 分组字段 说明:汇总函数:SUM、AVG、MIN、MAX和COUNT 汇总函数表达式:需汇总处理的字段名称、其它表达式 (注:不能为字段别名、且该字段或表达式必须为选择 列表中的一个项目) 分组字段:用来设置用于分类的字段名称、字段别名或表达 式,且此字段名必须出现在ORDER BY
13、子句中 COMPUTE和COMPUTE BY子句 例1:计算公司中所有员工的工资总和 SELECT 姓名,所属部门,工资 FROM 员工数据表 COMPUTE SUM(工资) 例2:计算公司中各部门员工的工资总和 SELECT 姓名,所属部门,工资 FROM 员工数据表 ORDER BY 所属部门 COMPUTE SUM(工资)BY 所属部门 UNION子句 UNION运算符可以用来将两个或多个查询结果集组合起来,成为 一个结果集 使用UNION运算符组合的结果集都必须满足下列条件: (1)具有相同的结构 (2)字段数目相同 (3)结果集中相应字段的数据类型必须兼容 UNION运算符的格式为:
14、 SELECT 语句 UNION ALL SELECT 语句 UNION子句 例:SELECT 姓名,性别,所属部门,工资 FROM 员工数据表 WHERE 性别=男 UNION SELECT 姓名,性别,所属部门,工资 FROM 员工数据表 WHERE 性别=女 ORDER BY 性别 使用数据表别名 数据表别名主要用于增加SELECT语句的可读性,使SELECT语句 中的数据表更加清晰 指定数据表别名的格式为: 数据表名称 AS 数据表别名 或 数据表名称 数据表别名 例:SELECT e.姓名,e.所属部门,e.工资 FROM 员工数据表 AS e 注意:若为数据表指派了别名,则在SQL
15、语句中对该数据表的所 有显式引用都必须使用别名,而不能使用数据表名 使用数据表别名 例:检索负责了项目的员工姓名、员工所属部门以及员工负责 的项目名称,以员工姓名按升序排序 使用汇总函数 作用:查询结果集中生成汇总值 使用汇总函数 1、SUM函数 功能:返回数字表达式中所有值的和 例:SELECT 所属部门,SUM(工资)AS 部门员工工资汇总 FROM 员工数据表 GROUP BY 所属部门 使用SUM函数时,应注意: (1)运算时,SUM将忽略求和对象中的空值 (2)使用DISTINCT关键字,可在求和前去掉重复值 (3)此函数只能使用于数字型字段 使用汇总函数 2、AVG函数 功能:返回
16、数字表达式中所有值的平均值 例:SELECT 所属部门,AVG(工资)AS 部门员工工资平均值 FROM 员工数据表 GROUP BY 所属部门 3、MAX函数、MIN函数 功能:返回表达式中所有值的最高(低)值 例:SELECT 所属部门,MAX(工资)AS 部门员工工资最高值 FROM 员工数据表 GROUP BY 所属部门 使用汇总函数 4、COUNT函数、COUNT(*)函数 功能:返回表达式中值的个数 例:SELECT COUNT( DISTINCT 性别) FROM 员工数据表 WHERE 性别=男 两函数区别: (1)COUNT函数将忽略对象中的空值;COUNT(*)函数将所 有
17、符合条件的记录 (2)COUNT函数可使用关键字DISTINCT去掉重复值 (3)COUNT函数不能用于text和image数据类型的字段; COUNT(*)函数则可以 用联接进行多表查询 使用联接,可以根据各个数据表之间的逻辑关系从两个或多个 数据表中检索数据 数据表的联接可分为内联接、外联接和交叉连接 1、内联接 格式:数据表1 INNER JOIN 数据表2 ON 联接表达式 功能:通过使用比较运算符,根据需要联接的数据表中公共的 字段值来匹配两个表中的记录 例:检索员工数据表中的员工编号和项目数据表中负责人相同的记 录 SELECT * FROM 员工数据表 INNER JOIN 项目
18、数据表 ON 员工数据表.编号 = 项目数据表.负责人 用联接进行多表查询 1、内联接 说明:可以使用WHERE分句中指定内联接,运算符为 = 上例可表示为: SELECT * FROM 员工数据表,项目数据表 WHERE 员工数据表.编号 = 项目数据表.负责人 用联接进行多表查询 2、外联接 (1)左向外联接 格式:数据表1 LEFT OUTER JOIN 数据表2 ON 联接表达式 功能:结果集将包括数据表1中的所有记录,若数据表1的某一 条记录在数据表2中没有匹配的记录时,则结果集中相应记录中的有 关数据表2的所有字段将为空值(NULL) 例:检索员工数据表中的所有记录,并将项目数据表
19、中负责人字段 可以匹配的记录输出 SELECT * FROM 员工数据表 LEFT JOIN 项目数据表 ON 员工数据表.编号 = 项目数据表.负责人 用联接进行多表查询 2、外联接 (1)左向外联接 说明:可以使用WHERE分句中指定左向外联接,运算符为 *= 上例可表示为: SELECT * FROM 员工数据表,项目数据表 WHERE 员工数据表.编号 *= 项目数据表.负责人 用联接进行多表查询 2、外联接 (2)右向外联接 格式:数据表1 RIGHT OUTER JOIN 数据表2 ON 联接表达式 功能:结果集将包括数据表2中的所有记录,若数据表2的某一 条记录在数据表1中没有匹
20、配的记录时,则结果集中相应记录中的有 关数据表1的所有字段将为空值(NULL) 例:检索项目数据表中的所有记录,并将员工数据表中员工编号字 段可以匹配的记录输出 SELECT * FROM 员工数据表 RIGHT JOIN 项目数据表 ON 员工数据表.编号 = 项目数据表.负责人 用联接进行多表查询 2、外联接 (2)右向外联接 说明:可以使用WHERE分句中指定右向外联接,运算符为 =* 上例可表示为: SELECT * FROM 员工数据表,项目数据表 WHERE 员工数据表.编号 =* 项目数据表.负责人 用联接进行多表查询 2、外联接 (3)完全外联接 格式:数据表1 FULL OU
21、TER JOIN 数据表2 ON 联接表达式 功能:结果集将包括两个数据表中的所有记录,当某一条记录 在另一个数据表中没有匹配记录时,则另一个数据表的选择列表字 段将指为空值(NULL) 例: SELECT * FROM 员工数据表 FULL JOIN 项目数据表 ON 员工数据表.编号 = 项目数据表.负责人 用联接进行多表查询 3、交叉联接 格式:数据表1 CROSS JOIN 数据表2 功能:返回两数据表中的笛卡尔乘积,即数据表1中的每一条记 录都和数据表2中的所有记录组合 例: SELECT * FROM 员工数据表 CROSS JOIN 项目数据表 嵌套查询 嵌套查询是指在一个外层查
22、询中包含有另一个内层查询 外层查询称为主查询,内层查询称为子查询 包含子查询的语句通常采用以下格式: WHERE 表达式 NOT IN (子查询) WHERE 表达式 比较运算符 ANY|ALL (子查询) WHERE NOT EXISTS (子查询) 嵌套查询 1、使用IN和NOT IN关键字 通过此关键字的子查询返回的结果是数据表中某个字段的子集 例:select * from 员工数据表 where 工资 not in( select distinct 工资 from 员工数据表 where 工资=2000 and 工资=3000) 嵌套查询 2、使用比较运算符 通过比较运算符引入子查询 注意:由比较运算符引入的子查询必须返回单个值 例:select 姓名 from 员工数据表 where 编号=( select distinct 负责人 from 项目数据表 where 项目名称=Sis) 嵌套查询 3、使用EXISTS和NOT EXISTS关键字 使用EXISTS和NOT EXISTS关键字引入子查询的主要目的是进行 存在测试,测试子查询是否会返回结果,如果有结果返
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 医院保卫科工作制度
- 医院太平间工作制度
- 医院除四害工作制度
- 博物馆展览工作制度
- 卫生局调解工作制度
- 卫生院巡诊工作制度
- 厦门市反恐工作制度
- 县政府信息工作制度
- 县级道安办工作制度
- 双创基地管理工作制度
- 2026年保安员考试题库及答案(1000题)
- 2025江西上饶市文化旅游产业发展集团人员招聘17人笔试历年参考题库附带答案详解
- 招商金融服务协议书
- GB/T 3048.8-2025电线电缆电性能试验方法第8部分:交流电压试验
- 抗浮锚杆施工方法流程
- 公司买房送员工协议书
- 行政司机商务接待礼仪培训
- 建筑施工安全培训全套课件
- 《大学生心理健康教育》课件第8章
- 不良事件管理办法香港
- 房屋遗产分割协议书模板
评论
0/150
提交评论