SQL复杂查询语句总结复习过程.ppt
《SQL复杂查询语句总结复习过程.ppt》由会员分享,可在线阅读,更多相关《SQL复杂查询语句总结复习过程.ppt(69页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、SQL复杂查询语句总结4.1 SQLSQL语言简介语言简介 1.SQL(Structured Query Language):结构化查询语结构化查询语言,是一种介于关系代数与关系运算之间的语言,主要功能言,是一种介于关系代数与关系运算之间的语言,主要功能包括查询、操纵、定义和控制等方面,是一个通用的、功能包括查询、操纵、定义和控制等方面,是一个通用的、功能极强的关系数据库语言。极强的关系数据库语言。2.Transact-SQL的组成的组成3.1)数据定义语言)数据定义语言(DDL Data Definition Language):用来建立数据库、数据库对象。如用来建立数据库、数据库对象。如C
2、reate table、view等。等。4.2)数据操纵语言)数据操纵语言(DML Data Manipulation Language):用来操纵数据库中的数据的命令。如用来操纵数据库中的数据的命令。如select、insert、update、delete等。等。5.3)数据控制语言)数据控制语言(DCL Data Control Language):用来用来控制数据库组建的存取权限等。如控制数据库组建的存取权限等。如Grant、Revoke等。等。6.4)流程控制语言)流程控制语言(FCL Flow Control Language):用来用来设计应用程序的语句。如设计应用程序的语句。如i
3、f、while、case等。等。7.5)其他语言要素)其他语言要素(ALE Additional language Element):包括变量、运算符、函数和注解等。包括变量、运算符、函数和注解等。SELECT语句的使用方式语句的使用方式3.为字段设置别名为字段设置别名SELECT 列名列名1 as 新名新名1,列名列名2 as 新名新名2,列名列名n as 新名新名n FROM 表名表名 (将选择字段的标题按新的名称显示)将选择字段的标题按新的名称显示)注意:新标题的名称可以有下列方式:注意:新标题的名称可以有下列方式:1)在列表达式后面给出列名在列表达式后面给出列名 select xh 学
4、号学号2)用用“=”来连接列表达式来连接列表达式 select 学号学号=xh3)新标题的名称用单引号、双引号括起来;新标题的名称用单引号、双引号括起来;4)用用AS关键字来连接列表达式和指定的列名关键字来连接列表达式和指定的列名 SELECT语句语句例如:查询例如:查询authors中编号、姓名、电话、地址的信息,可中编号、姓名、电话、地址的信息,可以采用以下方式:以采用以下方式:1.select au_id 编号编号,au_lname 姓姓,au_fname 名名,phone 电话电话,address 地址地址 from authors2.select 编号编号=au_id,姓姓=au_l
5、name,名名=au_fname,电电话话=phone,地址地址=address from authors3.select au_id 编号编号,au_lname 姓姓,au_fname 名名,phone 电话电话,address 地址地址 from authors4.select au_id 编号编号,au_lname 姓姓,au_fname 名名,phone 电话电话,address 地址地址 from authors5.select au_id as 编号编号,au_lname as 姓姓,au_fname as 名名,phone as 电话电话,address as 地址地址 from
6、 authorsSELECT语句语句4.在选择列表中使用表达式在选择列表中使用表达式在查询数据时,可以通过运算操作来控制从在查询数据时,可以通过运算操作来控制从一个表中的返回值。一个表中的返回值。例如:查询每个学生的总成绩、平均成绩。例如:查询每个学生的总成绩、平均成绩。select 学号学号,姓名姓名,数学成绩数学成绩+语文成绩语文成绩+英语英语成绩成绩 as 总成绩总成绩,(数学成绩数学成绩+语文成绩语文成绩+英语成英语成绩绩)/3 as 平均成绩平均成绩 from 学生基本情况学生基本情况SELECT语句语句4.消除字段数据的重复值消除字段数据的重复值在查询数据时,可能会有许多重复的数据
7、。在查询数据时,可能会有许多重复的数据。SQL 提供的提供的Distinct 关键字,可以从关键字,可以从select 语句的结果集中消除重复的数据。语句的结果集中消除重复的数据。例如:例如:1)查询学生来至哪些院系的信息。查询学生来至哪些院系的信息。select distinct 院系名称院系名称 from 学生基本情学生基本情况况2)查询有哪些专业的学生。查询有哪些专业的学生。select distinct 所学专业所学专业 from 学生基本情学生基本情况况SELECT语句语句6.限制记录的行数限制记录的行数在限制查询记录的行数时,可以使用下列方式:在限制查询记录的行数时,可以使用下列方
8、式:1)使用使用top n:返回前返回前n条记录;条记录;2)使用使用top n percent:返回前返回前n%条记录条记录;3)使用使用set rowcount n:返回前返回前n条记录。条记录。n=0关闭关闭例如:例如:1)显示前)显示前5条记录条记录select top 5*from 学生基本情况学生基本情况2)显示显示20%学生的信息学生的信息select top 20 percent*from 学生基本情况学生基本情况3)对所有)对所有select 语句,均显示语句,均显示5条记录。条记录。set rowcount 5select *from 学生基本情况学生基本情况4.2 条件子
9、句的使用方法条件子句的使用方法1.条件子句条件子句最常用的条件子句是最常用的条件子句是where 和和having,用它们来,用它们来指定一系列条件,执行操作时只返回满足条件的记录。指定一系列条件,执行操作时只返回满足条件的记录。Having 通常与通常与Group by一起使用,用来说明返回一起使用,用来说明返回分组的条件。分组的条件。例如:例如:1)显示男生的相关信息)显示男生的相关信息Select*from 学生基本情况学生基本情况 where 性别性别=男男2)显示男生人数超过)显示男生人数超过10人的院系信息人的院系信息select 院系名称院系名称,count(*)as 男生人数男
10、生人数 from 学学生基本情况生基本情况 where 性别性别=男男 group by 院系名称院系名称 having count(*)104.2 SELECT语句的查询条件语句的查询条件2算术表达式、比较运算符算术表达式、比较运算符算术运算符有:算术运算符有:+、-、*、/、%使用算术表达式的一般形式为:使用算术表达式的一般形式为:expression operator expression 比比较较运运算算符符:是是最最为为常常见见的的一一种种条条件件限限制制方方式式,用用于于测测试试两两个个表表达达式式是是否否相相同同,返返回回值值为为True 或或False。WHERE子句中允许出现
11、的比较运算符有:子句中允许出现的比较运算符有:=(等等于于)、(大大于于)、=(对对于于等等于于)、(小小于于)、=(小小于于等等于于)、(不不等等于于)、!=(不等于)(不等于)、!(不大于)、(不大于)、!=80 and 数学成绩数学成绩=904.2 SELECT语句的查询条件语句的查询条件4.IN 列表搜索条件列表搜索条件IN 列列表表搜搜索索条条件件用用于于返返回回与与给给定定的的列列表表中中任任意意一一个值相匹配的记录。格式为:个值相匹配的记录。格式为:条件字段条件字段 NOT IN(列表选项列表选项)例如:查询数学成绩为例如:查询数学成绩为70、80、90的信息。的信息。selec
12、t*from 学学生生基基本本情情况况 where 数数学学成成绩绩 in(70,80,90)In列表条件是列表条件是OR的简化形式,上面语句等价于:的简化形式,上面语句等价于:select*from 学学生生基基本本情情况况 where 数数学学成成绩绩=70 OR数学成绩数学成绩=80 OR 数学成绩数学成绩=904.2 SELECT语句的查询条件语句的查询条件6LIKE匹配模式匹配模式LIKE匹匹配配模模式式是是确确定定条条件件字字符符串串是是否否与与指指定定的的模模式式匹匹配。使用格式:配。使用格式:条件字段条件字段 NOT LIKE 匹配模式匹配模式SQL中的有效模式包括:中的有效模
13、式包括:%:可匹配任意类型和长度的字符串:可匹配任意类型和长度的字符串。Like Like 李李%_(下下 划划 线线):可可 匹匹 配配 任任 何何 单单 个个 字字 符符。Like Like 71005_71005_:指定范围或集合中的任何单个字符。:指定范围或集合中的任何单个字符。Like a-dLike a-d:不属于指定范围或集合的任何单个字符:不属于指定范围或集合的任何单个字符例如:例如:1)查询所有姓)查询所有姓“张张”的学生信息的学生信息select*from 学学生生基基本本情情况况 where 姓姓名名 like 张张%4.2 SELECT语句的查询条件语句的查询条件6NU
14、LL搜索条件搜索条件空空值值比比较较的的关关键键字字是是 IS NULL或或 IS NOT NULL。其其中中NULL表表示示字字段段的的数数据据未未知知或或不不确确定。格式为:定。格式为:表达式表达式 IS NULL 或或 表达式表达式IS NOT NULL例如:查询缺少数学成绩的学生信息。例如:查询缺少数学成绩的学生信息。select*from 学学生生基基本本情情况况 where 数数学学成成绩绩 is null查询示例表查询示例表练习讨论练习讨论1.按按10%的比例显示本专业的男生信息;的比例显示本专业的男生信息;2.查询查询“管理学院管理学院”专业分布情况;专业分布情况;3.查询本专
15、业学生来自哪些省份;查询本专业学生来自哪些省份;4.查询英语不及格学生的信息,显示学号、姓名、专业、英查询英语不及格学生的信息,显示学号、姓名、专业、英语原成绩、英语语原成绩、英语+10、英语、英语*1.1等字段信息;等字段信息;5.显示管理学院学生中,不姓显示管理学院学生中,不姓“刘刘”和和“张张”的学生信息;的学生信息;6.查询查询“数学数学”在在65-75之间,而之间,而“英语英语”不在不在70-90之间的学之间的学生信息;生信息;7.查询查询“管理学院、能源学院、机械学院、人文学院管理学院、能源学院、机械学院、人文学院”学号在学号在01-07之间的学生信息。之间的学生信息。8.将学生的
16、将学生的“学号、姓名、性别、身份证号学号、姓名、性别、身份证号”作为一列、作为一列、“院院系名称、专业系名称、专业”作为一列,各数据之间用作为一列,各数据之间用“,”分隔;列名分别为分隔;列名分别为“基本信息基本信息”、“隶属关系隶属关系”进行显示;进行显示;9.查询总成绩查询总成绩、=、(select avg(数学成绩数学成绩)FROM 学生基本情况学生基本情况)思考:思考:1)如何查询本专业大学英语成绩)如何查询本专业大学英语成绩=60且低且低于平均分的学生信息?于平均分的学生信息?2)统计管理学院各专业高等数学低于平均分的人数。统计管理学院各专业高等数学低于平均分的人数。3)查询大学英语
17、成绩最高分的学生信息。)查询大学英语成绩最高分的学生信息。Exists子查询子查询3)使用)使用Exists的子查询的子查询使用使用Exists(或(或Not Exists)引入子查询时,就相)引入子查询时,就相当于进行一次存在测试。当于进行一次存在测试。外部查询的外部查询的Where子句测试子句测试子查询返回的行是否存在。子查询返回的行是否存在。子查询实际上不产生任何子查询实际上不产生任何数据,它只返回数据,它只返回True或或False。例如:查询成绩表中女生的学习成绩。例如:查询成绩表中女生的学习成绩。SELECT*FROM 成绩表成绩表 Where exists(select*FROM
18、 学生基本情况学生基本情况 where 学号学号=成绩表成绩表.学号学号 and 性别性别=女女)思考:思考:1)如何查询管理学院的学生成绩?)如何查询管理学院的学生成绩?2)查询本专业高等数学不及格的学生信息?)查询本专业高等数学不及格的学生信息?练习讨论练习讨论数据表名:数据表名:JBQK数据表名:数据表名:CJB练习讨论练习讨论n根据根据JBQK表、表、CJB表完成下列查询:表完成下列查询:n1.查询高等数学成绩高于平均成绩的学生信查询高等数学成绩高于平均成绩的学生信息,显示学号、姓名、专业、高等数学等;息,显示学号、姓名、专业、高等数学等;n2.查询信息管理专业男生的高等数学成绩、查询
19、信息管理专业男生的高等数学成绩、电子商务专业女生的高等数学成绩、能源学院电子商务专业女生的高等数学成绩、能源学院所有学生的数学成绩,显示显示学号、姓名、所有学生的数学成绩,显示显示学号、姓名、性别、院系、专业、高等数学等,按院系、专性别、院系、专业、高等数学等,按院系、专业排序;业排序;n3.查询与查询与“刘文东刘文东”同专业的学生信息,显示同专业的学生信息,显示显示学号、姓名、专业、各门课程成绩。显示学号、姓名、专业、各门课程成绩。基于查询的数据表基于查询的数据表1 基于查询生成新的数据表基于查询生成新的数据表如果需要将查询结果保存下来,使用如果需要将查询结果保存下来,使用INTO子子句可以
20、生成一个新表并将结果保存在这个新的句可以生成一个新表并将结果保存在这个新的数据表中。数据表中。命令基本格式:命令基本格式:Select 选择字段表选择字段表 Into 新的表名新的表名 FROM 已有的表已有的表 where 条件条件例如:例如:1)将)将“学生基本情况学生基本情况”表复制成表复制成jbqkSelect*Into jbqk from 学生基本情况学生基本情况2)统计各个院系英语成绩的平均分、最高分、最低分、考试统计各个院系英语成绩的平均分、最高分、最低分、考试人数,结果放在人数,结果放在Eng_tj表。表。SELECT 学生基本情况学生基本情况.院系名称院系名称,AVG(成绩表
21、成绩表.大学英语大学英语)AS 英语平均英语平均,MAX(成绩表成绩表.大学英语大学英语)AS 英语最高英语最高,MIN(成成绩表绩表.大学英语大学英语)AS 英语最低英语最低,COUNT(*)AS 考试人数考试人数INTO Eng_tjFROM 学生基本情况学生基本情况 INNER JOIN 成绩表成绩表 ON 学生基本情况学生基本情况.学号学号=成绩表成绩表.学号学号GROUP BY 学生基本情况学生基本情况.院系名称院系名称思考:思考:1)将管理学院学习成绩前)将管理学院学习成绩前10名学生的信息保存到数名学生的信息保存到数据表据表gl_10中,只保存学号、姓名、专业、各门课程成绩。中,
22、只保存学号、姓名、专业、各门课程成绩。2)如何将本专业不及格学生的信息保存在数据表)如何将本专业不及格学生的信息保存在数据表bjg_xs?,保存学号、姓名、专业、各门课程成绩。,保存学号、姓名、专业、各门课程成绩。3)将)将jbqk表的结构复制到表的结构复制到jb_jg中。中。将查询结果插入数据表将查询结果插入数据表2 向已有表插入数据向已有表插入数据用用Insert IntoSelect语句,可以将一个子语句,可以将一个子查询的结果添加到数据表中。查询的结果添加到数据表中。命令格式:命令格式:Insert Into 数据表数据表 Select 查询查询例如:创建临时数据表例如:创建临时数据表
23、stu_1,存放从基本,存放从基本情况表、成绩表中查询出来的学号、姓名、性情况表、成绩表中查询出来的学号、姓名、性别、年龄、总成绩、平均成绩等信息。别、年龄、总成绩、平均成绩等信息。create table#stu_1(学号学号 char(8),姓名姓名 nchar(4),性别性别 nchar(1),年龄年龄 tinyint,总成绩总成绩 int,平均成绩平均成绩 decimal(5,2)goinsert into#stu_1 select jbqk.学号学号,jbqk.姓名姓名,jbqk.性别性别,year(getdate()-year(出生日期出生日期),cjb.高等数学高等数学+cjb.
24、大学英语大学英语+cjb.计算机基础计算机基础+cjb.管理学管理学,(cjb.高等数学高等数学+cjb.大学英语大学英语+cjb.计算机基础计算机基础+cjb.管理学管理学)/4from 学生基本情况学生基本情况 jbqk inner join 成绩表成绩表 cjb on jbqk.学号学号=cjb.学号学号goselect*from#stu_1思考:如何将信息管理、电子商务专业学习成绩前思考:如何将信息管理、电子商务专业学习成绩前5名的学名的学生信息放到与基本情况表结构类似的数据表生信息放到与基本情况表结构类似的数据表inf_ec中?中?子查询修改记录子查询修改记录3 用子查询修改记录用子
25、查询修改记录Update 语句中,语句中,Set子句、子句、Where 子句均可以使用子查询。子句均可以使用子查询。例如:在基本情况表中添加字段例如:在基本情况表中添加字段“第第1学期总分学期总分”、“第第1学期平均学期平均”,并修改这些,并修改这些字段的值。字段的值。alter table 学生基本情况学生基本情况 add 第第1学期总分学期总分 smallint,第第1学期平均学期平均 decimal(5,2)goupdate 学生基本情况学生基本情况 set 第第1学期总分学期总分=(select cjb.高等数学高等数学+cjb.大学英语大学英语+cjb.计算机基础计算机基础+cjb.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- SQL 复杂 查询 语句 总结 复习 过程
限制150内