结构化查询语言---SQL课件.pptx

上传人:小飞机 文档编号:3835193 上传时间:2023-03-24 格式:PPTX 页数:155 大小:1.01MB
返回 下载 相关 举报
结构化查询语言---SQL课件.pptx_第1页
第1页 / 共155页
结构化查询语言---SQL课件.pptx_第2页
第2页 / 共155页
结构化查询语言---SQL课件.pptx_第3页
第3页 / 共155页
结构化查询语言---SQL课件.pptx_第4页
第4页 / 共155页
结构化查询语言---SQL课件.pptx_第5页
第5页 / 共155页
点击查看更多>>
资源描述

《结构化查询语言---SQL课件.pptx》由会员分享,可在线阅读,更多相关《结构化查询语言---SQL课件.pptx(155页珍藏版)》请在三一办公上搜索。

1、第四章 结构化查询语言-SQL,SQL是结构化查询语言(Structured Query Language)的缩写,它包括查询、定义、操纵和控制四部分,是一种功能齐全的数据库语言,已成为关系数据库语言的国际标准。,SQL是一种高度非过程化的面向集合的语言,1,感谢你的观看,2019年6月26,SQL的数据定义功能能够定义数据库的三级模式结构,即外模式、全局模式和内模式结构。在SQL中,外模式又叫视图,全局模式简称模式或数据库,内模式由系统概据数据库模式自动实现,一般无需用户过问。,2,感谢你的观看,2019年6月26,一个数据库由若干个基本表(关系)组成。,每个视图也是一个关系,它由基本表产生

2、出来,有自己独立的结构定义,但没有独立的数据存在,它的数据来自基本表。所以,又把视图称为虚表,表1 表2 表3,视图1,视图2,视图3,关系:基本表或表,属性:字段或列,元组:行,3,感谢你的观看,2019年6月26,4.1 数据库模式的建立和删除4.2 表结构的建立、修改和删除4.3 表内容的插入、修改和删除4.4 视图的建立、修改和删除4.5 SQL查询(p85),4,感谢你的观看,2019年6月26,本章中使用到的数据库,教学库(包括学生、选课、课程三个基本表),学生,课程,选课,进入,1、定义教学库,2、定义学生、选课、课程基本表结构,3、向学生、选课、课程基本表中输入内容,5,感谢你

3、的观看,2019年6月26,一、数据库模式的建立和删除,1、建立数据库模式,CREATESCHEMA|DATABASEAUTHORIZATION,Create database 教学库,6,感谢你的观看,2019年6月26,2、删除数据库模式,DROP SCHEMA|DATABASE,Drop database 教学库,返回,7,感谢你的观看,2019年6月26,二、表结构的建立、修改和删除,格式:create table.(,),功能:在当前或给定的数据库中定义一个表的结构(关系模式),1、建立表结构,说明(1)若省略,则在当前数据库建立,(2)格式:长度列级完整性约束,char(n),in

4、t,float,date,default,null/not null,primary key,unique,references(),check(),(3)在所有列定义之后进行,primary key(,)主码约束,unique(,)单值约束,Foreign key(,)references()外码约束,check()检查约束,Create table 教学库.学生,Create table 学生,返回,8,感谢你的观看,2019年6月26,create table 学生(学生号 char(7)primary key姓名 char(6)not null unique性别 char(2)not

5、null check(性别男 or 性别=女出生日期 datetime check(出生日期=1 and 年级=4),学生,使用了列级完整性约束,9,感谢你的观看,2019年6月26,Create table 课程(课程号 char(4)primary key,课程名 char(10)not mull unique.课程学分 int check(课程学分=1 and 课程学分=6),课程,使用了列级完整性约束,10,感谢你的观看,2019年6月26,create table 选课(学生号 char(7)课程号 char(4)成绩 int check(成绩=0 and 成绩=100),prima

6、ry key(学生号,课程号),foreign key(学生号)references 学生(学生号),foreign key(课程号)references 课程(课程号),选课,使用了表级完整性约束和列级完整性约束,11,感谢你的观看,2019年6月26,商品库(其中包括商品表1和商品表2两个基本表),商品表1,商品表2,12,感谢你的观看,2019年6月26,create database 商品库use 商品库create table 商品表1(商品代号 char(8)primary key,分类名 char(8),单价 float,数量 int)create table 商品表2(商品代号

7、 char(8)primary key产地 char(6)品牌 char(6),13,感谢你的观看,2019年6月26,1、在表级完整性约束和列级完整性约束同时存在的四种约束是:单值、主码、外码、检查,小结,2、每个列级完整性约束只能涉及一个属性,每个表级完整性约束可涉及多个属性(含一个)。若只涉及到一个列(属性)时,可用两种约束中的任一种。,3、默认值约束和空值/非空值约束只能在列级完整性约束中存在,14,感谢你的观看,2019年6月26,格式:alter.add,|add,|drop column,|drop,2、修改表结构,功能:向已定义过的表中添加一些列的定义或一些表级完整性约束,或者

8、从已定义过的表中删除一些列或一些完整性约束,增加,删除,15,感谢你的观看,2019年6月26,alter table 学生 add 籍贯 char(6),alter table 学生 drop column 籍贯,16,感谢你的观看,2019年6月26,格式:drop table.,3、删除表结构,功能:从当前或给定的数据库中删除一个表,在删除表结构的同时也删除了全部内容,如:drop table 学生1,17,感谢你的观看,2019年6月26,教学库(包括学生、选课、课程三个基本表),学生,课程,选课,18,感谢你的观看,2019年6月26,三、表内容的插入、修改和删除,向基本表中插入数据

9、的命令有两种格式:一种是向具体元组插入常量数据(单行插入)一种是把子查询的结果输入到另一个关系中去(多行插入),1、插入,19,感谢你的观看,2019年6月26,insert into.(,)values(,),单行插入格式:,create table 职工(职工号 char(6)primary key,姓名 char(8)not null,性别 char(2)not null,年龄 int,基本工资 float),insert into 职工(职工号,姓名,性别,年龄,基本工资)values(010405,李羽,女,28,1560),20,感谢你的观看,2019年6月26,insert in

10、to.(,)(select 子句),多行插入格式:,21,感谢你的观看,2019年6月26,insert 职工(职工号,姓名,性别,年龄,基本工资)select 职工号,姓名,性别,年龄,基本工资 from 职工1 where 性别=男,职工,职工1,22,感谢你的观看,2019年6月26,1、建立/删除数据库,Create database/drop,2、建立/删除表结构,Create table/drop table,3、表内容的插入,Insert,表级完整性约束和列级完整性约束,默认值约束和空值/非空值约束只能在列级完整性约束中存在,单值、主码、外码、检查,23,感谢你的观看,2019年

11、6月26,2、修改,update.set=,fromwhere,update 职工 set 年龄=年龄+1,update 职工 set 基本工资=基本工资*1.2 where 职工号=010405,24,感谢你的观看,2019年6月26,update 职工 set 基本工资=职工1.基本工资+职工1.津贴 from 职工1 where 职工.职工号=职工1.职工号,职工,职工1,当在一条语句中使用多个表时,若使用的列名有重名,必须在所列名前加上表名和圆点分隔符限定,1568+231,1244+332,25,感谢你的观看,2019年6月26,3、删除,delete from.fromwhere,

12、delete from 职工 where 年龄45,delete 职工 from 职工1 where 职工.职工号=职工1.职工号,delete 职工,26,感谢你的观看,2019年6月26,四、视图的建立、修改和删除,视图,基本表1,局部模式中的表,虚表,全部模式中的表,实表,对视图通常只做修改、查询,视图的建立和删除只能影响视图本身,不影响对应的基本表,但对视图内容的更新(插入、删除和修改)直接影响基本表,每个视图的列可以来自同一个基本表,也可以来自多个不同的基本表,视图是基本表的抽象和在逻辑意义上建立的新关系,视图来自基本表,非主属性,基本表2,27,感谢你的观看,2019年6月26,1

13、、建立视图,格式:create view(,)as,功能:在当前数据库中根据select的查询结果建立一个视图,包括视图的结构和内容。,学生(学号,姓名,性别,系),建立计算机系的学生视图,create view 计算机系视图表(学号,姓名,性别)as select 学号,姓名,性别 from 学生where 系=“计算机”,28,感谢你的观看,2019年6月26,选课(SC),学生(S),课程(C),create view 成绩视图表(学号,姓名,课程号,课程名,成绩)as select 选课.学号,姓名,选课.课程号,课程名,成绩from 学生,选课,课程where 学生.学号=选课.学号

14、 and 课程.课程号=选课.课程号 and 专业=经管,29,感谢你的观看,2019年6月26,特征一:使用视图还能够根据用户的局部应用、根据用户的习惯命名视图中的列名,特征二:设计基本表时,不能把通过计算得到的属性作为关系的属性,但在视图中却可以定义。,学生成绩(学号,姓名,语文,数学,英语),create view 成绩视图(学号,姓名,平均成绩,总成绩)as select 学号,姓名,(语文+数学+英语)/3,语文+数学+英语from 学生成绩,要求:建立包含平均成绩、总成绩的成绩视图,30,感谢你的观看,2019年6月26,2、修改视图内容,格式:update.set=,from,w

15、here,功能:按照一定条件对当前或指定数据库中的一些列值进行修改。,update 成绩视图表 set 成绩=80where 学生号=0102005 and 课程号=E002,31,感谢你的观看,2019年6月26,3、修改视图定义,格式:alter view(,)as,alter view 学生视图(学生号,专业)as select 学生号,专业 from 学生,功能:在当前数据库中修改已知视图的列,它与select 子句查询结果相对应,create view 学生视图(学生号,姓名)as select 学生号,姓名 from 学生,32,感谢你的观看,2019年6月26,4、删除视图,格式

16、:drop view,功能:删除当前数据库中的一个视图,33,感谢你的观看,2019年6月26,4.5 SQL查询,SQL的查询只对应一条语句,即SELECT语句。,SQL查询速度快,且只需用户讲清楚“要干什么”,而不需要指出“怎么干”。,34,感谢你的观看,2019年6月26,一、SQL查询的基本结构 SELECT,;FROM,.;WHERE,你要查询(输出)什么?(查询目标)最常用的格式是用逗号分隔的属性名,所查询的目标来自那个表(要使用的关系名),查询的目标要满足什么条件,如没有条件,where 可省略,表示对所有记录,35,感谢你的观看,2019年6月26,比较运算符:=!=#,逻辑运

17、算符:and or not,在条件中也经常会用到一些谓词,比如:all(所有)any(任意)betweenand(在 之间)in(包含)not in(不包含)exists(存在)not exist(不存在),36,感谢你的观看,2019年6月26,从学生关系中找出专业是电气的学生学号、姓名,Select,from,where,学号,姓名;,学生;,专业=电气,*;,所有字段,from和where 实现选择运算,投影,引用字符型常量,37,感谢你的观看,2019年6月26,Select 学号,课程名,成绩,From 选课,课程,Where 选课.课程号=课程.课程号,课程,from和where

18、实现连接运算,From和where实现了连接和选择的运算,新版规定P86,如果不同的关系具有相同的属性名,必须在前面冠以关系名,38,感谢你的观看,2019年6月26,本章中使用到的数据库,教学库(包括学生、选课、课程三个基本表),学生,课程,选课,39,感谢你的观看,2019年6月26,商品库(其中包括商品表1和商品表2两个基本表),商品表1,商品表2,40,感谢你的观看,2019年6月26,二、SELECT选项,其中SELECT子句用逗号分开的表达式为查询目标,可为用逗号分开的属性名,或包含字段名、字段函数的表达式。,Select,From 商品表1,商品代号,单价*数量,41,感谢你的观

19、看,2019年6月26,DISTINCT用于SELECT子句中,使得从查询结果中去掉重复元组。若不使用DISTINCT,则默认为ALL,即无论是否有重复元组都全部输出。,1、DISTINCT和ALL的使用,42,感谢你的观看,2019年6月26,例:select,distinct,分类名;,From 商品表1,商品表1,分类名(商品表1),Where 数量10,分类名(数量10(商品表1),43,感谢你的观看,2019年6月26,商品表2,select,distinct 产地;,From,例:列出商品表2中的所有产品的不同产地,商品表2,44,感谢你的观看,2019年6月26,2、用AS指定查

20、询结果的自定义列名,Select,From 学生,学生号,性别,学生,where 专业=通信,AS number,as sex,学生号,性别(专业=通信(学生),45,感谢你的观看,2019年6月26,Select,From 商品表1,商品代号,单价*数量 as 价值,商品表1,从商品表1中查询出每一种商品的价值,46,感谢你的观看,2019年6月26,3、可使用的列函数,count,*,count,all(),count,distinct(),max(),min(),avg(),sum(),数值列,47,感谢你的观看,2019年6月26,商品表1,从商品表1中查询出不同分类名的个数,Sele

21、ct,From,count(distinct 分类名),as 分类种数,商品表1,分类种数 5,count*,count,all(分类名),count,distinct(分类名),48,感谢你的观看,2019年6月26,商品表1,从商品表1中查询出所有商品的最大数量、最小数量、平均数量及数量总和,Select,From,max(数量)as 最大数量,min(数量)as 最小数量,商品表1,avg(数量)as 平均数量,sum(数量)as 总和,49,感谢你的观看,2019年6月26,商品表1,从商品表1中查询出分类名为“电视机”的商品的种数、最高价、最低价及平均价。,Select,From,c

22、ount(*)as 种数,max(单价)as 最高价,商品表1,min(单价)as 最低价,avg(单价)as 平均价,Where,分类名=“电视机”,50,感谢你的观看,2019年6月26,商品表1,Select max(单价*数量),min(单价*数量),sum(单价*数量),From 商品表1,写出它的功能。,查询出商品的最高价值、最低价值及总价值,51,感谢你的观看,2019年6月26,SELECT,;FROM,.;WHERE,复习,Distinct/all,字符型常量的表达,专业=电气,新版规定,as,count/min/max/sum/avg,商品表1.商品代号=商品表2.商品代号

23、,52,感谢你的观看,2019年6月26,三、from选项,FROM子句指出查询目标及下面WHERE子句的条件所涉及的所有关系的关系名,53,感谢你的观看,2019年6月26,用户可以自行定义临时别名,在FROM子句中给出,特别是表名比较长时,定义别名作为列名的前缀限定符更为方便,1、为关系指定临时别名,select x.学生号,y.学生号from 学生基本情况表 x,学生基本档案表 yWhere x.籍贯=广东,Select 学生基本情况表.学生号,学生基本档案表.学生号from 学生基本情况表,学生基本档案表Where 学生基本情况表.籍贯=广东,54,感谢你的观看,2019年6月26,、

24、联接查询,如果查询目标涉及到两个或几个关系,要进行联接运算。由于SQL是高度非过程化的,用户只要在FROM子句中指出各个关系的名称,在WHERE子句里正确指出联接条件即可。联接运算由系统去完成并实现优化。,关系1.属性名=关系2.属性名,55,感谢你的观看,2019年6月26,商品表1,商品表2,商品表1,商品表2,Select*,From 商品表1,商品表2,where 商品表1.商品代号=商品表2.商品代号,Select 商品表1.*,产地,品牌,如果不同的关系具有相同的属性名,必须在前面冠以关系名,从商品表1和商品表2中查询出按商品代号进行自然连接的结果,56,感谢你的观看,2019年6

25、月26,三、按下列给出的每项功能写出相应的查询命令,1、从商品库中查询出每种商品的商品代号、单价、数量和产地,select from where,商品表1(商品代号,分类名,单价,数量)商品表2(商品代号,产地,品牌),商品表1.商品代号=商品表2.商品代号,商品表1,商品表2,商品表1.商品代号,单价,数量,产地,P112,57,感谢你的观看,2019年6月26,学生,课程,选课,查询出每个学生选修每门课程的学生号、姓名、课程号、课程名、成绩等数据,学生号,姓名(学生),选课,课程号,课程名(课程),),58,感谢你的观看,2019年6月26,学生,课程,选课,查询出每个学生选修每门课程的学

26、生号、姓名、课程号、课程名、成绩等数据,),select,from,学生 x,课程 y,选课 z,x.学生号,x.姓名,y.课程名,z成绩,where,x.学生号=z.学生号 and y.课程号=z.课程号,59,感谢你的观看,2019年6月26,四、where 选项,WHERE子句指出查询目标必须满足的条件(连接条件、筛选条件),如没有条件,此子句可省略。,商品表1.商品代号=商品表2.商品代号,专业=电气,60,感谢你的观看,2019年6月26,商品表1,从商品表1中查询出单价大于1500,同时数量大于等于10的商品,Select,from,where,商品表1,单价1500 and 数量

27、=10,商品代号,单价,数量,61,感谢你的观看,2019年6月26,商品表1,商品表2,查询出产地为南京或无锡的所有商品的商品代号、分类名、产地和品牌,Select,from,where,商品表1 x,商品表2 y,x.商品代号,分类名,产地,品牌,(产地=南京 or 产地=无锡),and x.商品代号=y.商品代号,62,感谢你的观看,2019年6月26,SELECT,;FROM,.;WHERE,Distinct/all,字符型常量的表达,专业=电气,新版规定,as,count/min/max/sum/avg,商品表1.商品代号=商品表2.商品代号,定义别名,63,感谢你的观看,2019年

28、6月26,选课,选课,C1,C2,Select distinct c1.学生号,from 选课 c1,选课 c2,where c1.学生号=c2.学生号 and c1.课程号c2.课程号,对于相同的表可定义不同的别名,以使它们作为不同的表使用,查询出选修至少两门课程的学生学号,64,感谢你的观看,2019年6月26,学生,课程,选课,Select 姓名,from 学生 x,课程 y,选课 z,where x.学生号=y.学生号 and y.课程号=z.课程号 and 课程名=操作系统,写功能。,查询出选修了课程名为操作系统课程的每个学生的姓名,65,感谢你的观看,2019年6月26,P111

29、二、按照下列每条查询命令写出相应的功能。,1、select x.商品代号,分类名,数量,品牌 from 商品表1 x,商品表2 y where x.商品代号=y.商品代号,从商品库中查询出每一种商品的商品代号、分类名、数量和品牌等信息。,and(品牌=熊猫or 品牌=春兰),品牌为熊猫或春兰的,66,感谢你的观看,2019年6月26,商品表1(商品代号,分类名,单价,数量)商品表2(商品代号,产地,品牌),SELECT FROM WHERE,从商品库中查询出产地为广州或深圳的所有商品的商品代号、分类名、产地和品牌。,(产地=广州 or 产地=深圳),x.商品代号,分类号,产地,品牌,商品表1

30、x,商品表2 y,x.商品代号=y.商品代号 and,94,67,感谢你的观看,2019年6月26,从教学库中查询出选修了课程名为“数据库应用”课程的每个学生的学号、姓名和专业。,学生(学生号 char(7),姓名 char(6),性别 char(2),专业 char(6)课程(课程号 char(4),课程名 char(10),课程学分 int)选课(学生号 char(7),课程号 char(4),成绩 int),select X.学生号,姓名,专业 from 学生 x,课程 y,选课 z where,x.学生号=z.学生号 and y.课程号=z.课程号 and y.课程名=数据库应用,68

31、,感谢你的观看,2019年6月26,select count(*)from 商品表1 where 数量10,从商品库中查询出数量大于10的商品种数,69,感谢你的观看,2019年6月26,SELECT,;FROM,.;WHERE,SELECT,;FROM,.;WHERE,传统,新版,投影,选择、连接,投影,连接,选择,70,感谢你的观看,2019年6月26,新版SQL中,已经把查询连接条件从where选项中转移到from 选项中,并且还丰富了连接功能.,一、中间连接、左连接、右连接,中间连接,From inner join,On.,left,right,71,感谢你的观看,2019年6月26,

32、学生,选课,Select*,from 学生,选课,where 学生.学生号=选课.学生号,From 学生 inner join 选课,On 学生.学生号=选课.学生号,select*,72,感谢你的观看,2019年6月26,Select,from,where,商品表1,商品表2,商品表1.商品代号,分类名,产地,品牌,(产地=南京 or 产地=无锡),and 商品表1.商品代号=商品表2.商品代号,Select,from,where,商品表1 inner join 商品表2,商品表1.商品代号,分类名,产地,品牌,(产地=南京 or 产地=无锡),On 商品表1.商品代号=商品表2.商品代号,

33、73,感谢你的观看,2019年6月26,学生,选课,From 学生 left join 选课,On 学生.学生号=选课.学生号,select*,把第一个表中没有形成连接的所有元组也加入结果中,所有学生的选课情况(含没选课的同学),一般连接(中间连接),74,感谢你的观看,2019年6月26,课程,选课,From 选课 right join 课程,On 选课.课程号=课程.课程号,select*,把第二个表中没有形成连接的所有元组也加入结果中,75,感谢你的观看,2019年6月26,SELECT,;FROM,.;WHERE,SELECT,;WHERE,From inner/right/left

34、join,On.,联接条件,76,感谢你的观看,2019年6月26,Select*From 课程 left join(选课 inner join 学生 on 学生.学生号=选课.学生号)On 课程.课程号=选课.课程号,学生,课程,选课,所有课程被学生选修的情况,77,感谢你的观看,2019年6月26,select x.学生号,y.学生号,y.课程号from 选课 x,选课 ywhere x.学生号=s1 and y.学生号=s2 and x.课程号=y.课程号,注:s1 和s2分别是已保存相应学生号的字符型变量,从教学库中查询出学生号为s1的学生和学生号为s2的学生所选修的共同课程的课程号,

35、78,感谢你的观看,2019年6月26,SELECT DISTINCT x.*FROM 学生 x,选课 y,选课 z WHERE y.学生号=z.学生号 and y.课程号z.课程号 and x.学生号=y.学生号,从教学库中查询出至少选修了两门课程的全部学生。,79,感谢你的观看,2019年6月26,二、嵌套查询,嵌套查询是指在SELECT-FROM-WHERE查询块内部再嵌入另一个查询块,称之为子查询,Where 子句 中嵌套,嵌套基本格式,SELECTFROMWHERE select from where,80,感谢你的观看,2019年6月26,1、all,用ALL表示与子查询结果中所有

36、记录的相应值相比较均符合要求才算满足条件,81,感谢你的观看,2019年6月26,商品表1,select*from 商品表1where 单价all(select 单价 from 商品表1 where 分类名=洗衣机),从商品表1中查询出单价比洗衣机的单价都高的商品,单价(select max(单价)from 商品表1 where 分类名=洗衣机),82,感谢你的观看,2019年6月26,三、按下列给出的每项功能写出相应的查询命令,5、从商品库中查询出比所有商品单价的平均值要高的全部商品,商品表1(商品代号,分类名,单价,数量)商品表2(商品代号,产地,品牌),(select avg(单价)fr

37、om 商品表1),where 单价,all,from 商品表1,select*,P111,83,感谢你的观看,2019年6月26,2、any/some(),当子查询的查询结果中的任一个值满足所给的比较条件时,此比较式为真,否则为假.,84,感谢你的观看,2019年6月26,学生,课程,选课,Select,from,Where,课程号=any(select 课程号 from 课程 where 课程名=c+语言),学生 x inner join 选课 y on x.学生号=y.学生号,姓名,成绩,可以省略。因为子查询结果只有一个,查询出选修了课程名为“c+语言”的所有学生的姓名和成绩,85,感谢你

38、的观看,2019年6月26,Select*,From 商品表1,Where 单价=any(select max(单价)from 商品表1),or 单价=any(select min(单价)from 商品表1),查询出所有商品中单价最高和最低的商品,86,感谢你的观看,2019年6月26,商品表1,商品表2,从商品库中查询出产地与品牌为春兰的商品的产地相同的所有商品的商品代号、分类名、品牌、产地。,Select,from,Where,产地=some,商品表1 x inner join 商品表2 y on x.商品代号=y.商品代号,x.商品代号,x.分类号,y.品牌,y.产地,可以省略。因为子查

39、询结果只有一个,(select 产地 from 商品表2 where 品牌=春兰),87,感谢你的观看,2019年6月26,三、按下列给出的每项功能写出相应的查询命令,学生(学生号,姓名,性别,专业)选课(学生号,课程号,成绩)课程(课程号,课程名,课程学分),8、从教学库中查询出至少选修了姓名为m1 学生所选课程中一门课的全部学生,select,课程号=any,select distinct 学生.*,and,where 学生.学生号=选课.学生号 and 姓名=m1,from 学生,选课,where,from 学生,选课,(,),p112,课程号,学生.学生号=选课.学生号,88,感谢你的

40、观看,2019年6月26,三、其他查询条件表达,1、not between and,在WHERE子句中,条件可以用BETWEENAND表示在二者之间,低值在AND之前,高值在后。NOT BETWEENAND.表示不在其间,Select*From 商品表1Where 单价 between 1000 and 2000,89,感谢你的观看,2019年6月26,三、按下列给出的每项功能写出相应的查询命令,2、从商品库中查询出数量在10和20之间的商品,商品表1(商品代号,分类名,单价,数量)商品表2(商品代号,产地,品牌),where 数量 between 10 and 20,from 商品表1,se

41、lect*,90,感谢你的观看,2019年6月26,2、not exists(),条件可用EXISTS表示存在,如果子查询结果非空,则满足条件;NOT EXISTS正好相反,表示不存在,如果子查询结果为空,则满足条件。,91,感谢你的观看,2019年6月26,从教学库中查询出选修至少一门课程的所有学生,Select,from,Where,*,学生,(Select*from 选课where 选课.学生号=学生.学生号),exists,?没有选修任何课程的学生,not exists,学生,选课,92,感谢你的观看,2019年6月26,7.select*from 课程 where exists(se

42、lect*from 选课 where 课程.课程号=选课.课程号),查询出所有已被学生选修的课程,P111,93,感谢你的观看,2019年6月26,学生,选课,查询出与姓名为王明的学生选课至少有一门相同的所有学生,select 选课.课程号 from 选课,学生where 选课.学生号=学生.学生号,select 选课.课程号 from 选课,学生where 选课.学生号=学生.学生号and 学生.姓名=王明,学生.姓名王明,94,感谢你的观看,2019年6月26,(select y.课程号 from 选课 ywhere y.学生号=x.学生号 and,y.课程号=(select w.课程号

43、from 选课 w,学生 zwhere w.学生号=z.学生号and z.姓名=王明),where x.姓名王明 and exist,select*,from 学生 x,95,感谢你的观看,2019年6月26,Where中的嵌套查询,SELECT FROM WHERE,(SELECT FROM WHERE),列名 all,列名 any/some,not exists,Not betweenbetweem,96,感谢你的观看,2019年6月26,三、按下列给出的每项功能写出相应的查询命令,5、从商品库中查询出比所有商品单价的平均值要高的全部商品,商品表1(商品代号,分类名,单价,数量)商品表2(

44、商品代号,产地,品牌),(select avg(单价)from 商品表1),where 单价,all,from 商品表1,select*,P111,复习,97,感谢你的观看,2019年6月26,从教学库中查询出选修至少一门课程的所有学生,Select,from,Where,*,学生,(Select*from 选课where 选课.学生号=学生.学生号),exists,?没有选修任何课程的学生,not exists,学生,选课,复习,98,感谢你的观看,2019年6月26,7.select*from 课程 where exists(select*from 选课 where 课程.课程号=选课.课

45、程号),查询出所有已被学生选修的课程,P111,复习,99,感谢你的观看,2019年6月26,3、not in()|(),在WHERE子句中,条件可以用IN表示包含在其后面括号指定的集合中。括号内的元素可以直接列出,也可以是一个子查询模块的查询结果,100,感谢你的观看,2019年6月26,从学生表中查询出专业为计算机、电气、通信的所有学生,select*from 学生where 专业 in(计算机,电气,通信),101,感谢你的观看,2019年6月26,学生,课程,选课,where(选课.课程号=课程.课程号)and(选课.学生号=学生.学生号)and 课程名=操作系统,select 学生.

46、学生号,姓名,性别,专业,from 学生,选课,课程,查询出选修了课程名为操作系统的所有学生,102,感谢你的观看,2019年6月26,查询出选修了课程名为操作系统的所有学生,select*from 学生where 学生号 in(select 学生号 from 选课,课程 where 选课.课程号=课程.课程号 and 课程名=操作系统),学生(学生号 char(7),姓名 char(6),性别 char(2),专业 char(6)课程(课程号 char(4),课程名 char(10),课程学分 int)选课(学生号 char(7),课程号 char(4),成绩 int),103,感谢你的观看

47、,2019年6月26,6、select x.*from 课程 x,选课 ywhere x.课程号=y.课程号 and y.学生号=s1 and y.课程号 not in(select 课程号 from 选课 where 选课.学生号=s2),查询出学生号为s1所选修而学生号为s2的学生没有选修的全部课程 信息,学生(学生号 char(7),姓名 char(6),性别 char(2),专业 char(6)课程(课程号 char(4),课程名 char(10),课程学分 int)选课(学生号 char(7),课程号 char(4),成绩 int),P111,查询学生号为s2的学生所选修的课程,10

48、4,感谢你的观看,2019年6月26,4、not like,在WHERE子句中,条件可以用LIKE指出字符串模式匹配,其后面必须是字符串常量,其中可以使用两个通配符,_:任意一个单字符,%:任意多个(包括零个)任意字符。,105,感谢你的观看,2019年6月26,select*from 商品表 1 where 商品代号 like,商品表1,%3%,3%,_3,106,感谢你的观看,2019年6月26,select*from 商品表 1 where 商品代号 like _B%,商品表1,107,感谢你的观看,2019年6月26,在where条件中经常用的谓词:all(所有)any/some(任意

49、)betweenand(在 之间)in(包含)not in(不包含)exists(存在)not exist(不存在)like,108,感谢你的观看,2019年6月26,SELECT 查询目标 FROM 表1,表2,WHERE 条件表达式 GROUP BY 分组列名 HAVING组选择条件表达式 ORDER BY 排序项序,109,感谢你的观看,2019年6月26,四、group by 选项,GROUP BY子句用于产生列函数的分组统计值。其作用是按指定项目对记录分组,然后对每一组分别使用库函数。,注意,如果在SELECT子句中出现库函数,与之并列的其它项目必须也是库函数或GROUP BY的对象

50、。,通常分组项目为字段,该字段应出现在查询结果中,否则分不清统计结果属于哪一组。,110,感谢你的观看,2019年6月26,学生,Select 专业 as 专业名,count(专业)as 学生数from 学生group by 专业,按专业分组,对每一组执行指定的库函数,专业名,学生数,电子,3,电气,1,计算机,1,通信,2,查询出每个专业的学生数,显示结果,111,感谢你的观看,2019年6月26,select x.学生号,y.姓名,count(x.学生号)as 选课门数from 选课 x,学生 ywhere x.学生号=y.学生号group by x.学生号,根据条件进行连接,限定元组。,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号