结构化查询语言课件.pptx
《结构化查询语言课件.pptx》由会员分享,可在线阅读,更多相关《结构化查询语言课件.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,谢谢观赏,2019-6
3、-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),int,float,date,d
4、efault,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 null check(性别男 o
5、r 性别=女出生日期 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),primary key(学生号,课程号),fore
6、ign 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(商品代号 char(8)primary key产地 ch
7、ar(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 into.(,)(select 子句),多行插入格式:,21,谢谢观赏,2019-6
10、-26,insert 职工(职工号,姓名,性别,年龄,基本工资)select 职工号,姓名,性别,年龄,基本工资 from 职工1 where 性别=男,职工,职工1,22,谢谢观赏,2019-6-26,1、建立/删除数据库,Create database/drop,2、建立/删除表结构,Create table/drop table,3、表内容的插入,Insert,表级完整性约束和列级完整性约束,默认值约束和空值/非空值约束只能在列级完整性约束中存在,单值、主码、外码、检查,23,谢谢观赏,2019-6-26,2、修改,update.set=,fromwhere,update 职工 set
11、年龄=年龄+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,delete from 职工 where 年龄45,delete 职工 from 职工1 where
12、 职工.职工号=职工1.职工号,delete 职工,26,谢谢观赏,2019-6-26,四、视图的建立、修改和删除,视图,基本表1,局部模式中的表,虚表,全部模式中的表,实表,对视图通常只做修改、查询,视图的建立和删除只能影响视图本身,不影响对应的基本表,但对视图内容的更新(插入、删除和修改)直接影响基本表,每个视图的列可以来自同一个基本表,也可以来自多个不同的基本表,视图是基本表的抽象和在逻辑意义上建立的新关系,视图来自基本表,非主属性,基本表2,27,谢谢观赏,2019-6-26,1、建立视图,格式:create view(,)as,功能:在当前数据库中根据select的查询结果建立一个视
13、图,包括视图的结构和内容。,学生(学号,姓名,性别,系),建立计算机系的学生视图,create view 计算机系视图表(学号,姓名,性别)as select 学号,姓名,性别 from 学生where 系=“计算机”,28,谢谢观赏,2019-6-26,选课(SC),学生(S),课程(C),create view 成绩视图表(学号,姓名,课程号,课程名,成绩)as select 选课.学号,姓名,选课.课程号,课程名,成绩from 学生,选课,课程where 学生.学号=选课.学号 and 课程.课程号=选课.课程号 and 专业=经管,29,谢谢观赏,2019-6-26,特征一:使用视图还
14、能够根据用户的局部应用、根据用户的习惯命名视图中的列名,特征二:设计基本表时,不能把通过计算得到的属性作为关系的属性,但在视图中却可以定义。,学生成绩(学号,姓名,语文,数学,英语),create view 成绩视图(学号,姓名,平均成绩,总成绩)as select 学号,姓名,(语文+数学+英语)/3,语文+数学+英语from 学生成绩,要求:建立包含平均成绩、总成绩的成绩视图,30,谢谢观赏,2019-6-26,2、修改视图内容,格式:update.set=,from,where,功能:按照一定条件对当前或指定数据库中的一些列值进行修改。,update 成绩视图表 set 成绩=80whe
15、re 学生号=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、删除视图,格式:drop view,功能:删除当前数据库中的一个视图,33,谢谢观赏,2019-6-26,4.5 SQL查询,SQL的查询只对
16、应一条语句,即SELECT语句。,SQL查询速度快,且只需用户讲清楚“要干什么”,而不需要指出“怎么干”。,34,谢谢观赏,2019-6-26,一、SQL查询的基本结构 SELECT,;FROM,.;WHERE,你要查询(输出)什么?(查询目标)最常用的格式是用逗号分隔的属性名,所查询的目标来自那个表(要使用的关系名),查询的目标要满足什么条件,如没有条件,where 可省略,表示对所有记录,35,谢谢观赏,2019-6-26,比较运算符:=!=#,逻辑运算符:and or not,在条件中也经常会用到一些谓词,比如:all(所有)any(任意)betweenand(在 之间)in(包含)no
17、t in(不包含)exists(存在)not exist(不存在),36,谢谢观赏,2019-6-26,从学生关系中找出专业是电气的学生学号、姓名,Select,from,where,学号,姓名;,学生;,专业=电气,*;,所有字段,from和where 实现选择运算,投影,引用字符型常量,37,谢谢观赏,2019-6-26,Select 学号,课程名,成绩,From 选课,课程,Where 选课.课程号=课程.课程号,课程,from和where 实现连接运算,From和where实现了连接和选择的运算,新版规定P86,如果不同的关系具有相同的属性名,必须在前面冠以关系名,38,谢谢观赏,20
18、19-6-26,本章中使用到的数据库,教学库(包括学生、选课、课程三个基本表),学生,课程,选课,39,谢谢观赏,2019-6-26,商品库(其中包括商品表1和商品表2两个基本表),商品表1,商品表2,40,谢谢观赏,2019-6-26,二、SELECT选项,其中SELECT子句用逗号分开的表达式为查询目标,可为用逗号分开的属性名,或包含字段名、字段函数的表达式。,Select,From 商品表1,商品代号,单价*数量,41,谢谢观赏,2019-6-26,DISTINCT用于SELECT子句中,使得从查询结果中去掉重复元组。若不使用DISTINCT,则默认为ALL,即无论是否有重复元组都全部输
19、出。,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指定查询结果的自定义列名,Select,From 学生,学生号,性别,学生,where 专业=通信,AS number,as sex,学生号,性别(专业=通信(学生),45,谢谢观赏
20、,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中查询出不同分类名的个数,Select,From,count(distinct 分类名),as 分类种数,商品表1,分类种数 5,count*,count,all(分类名),count,distinct(分类名),48,谢
21、谢观赏,2019-6-26,商品表1,从商品表1中查询出所有商品的最大数量、最小数量、平均数量及数量总和,Select,From,max(数量)as 最大数量,min(数量)as 最小数量,商品表1,avg(数量)as 平均数量,sum(数量)as 总和,49,谢谢观赏,2019-6-26,商品表1,从商品表1中查询出分类名为“电视机”的商品的种数、最高价、最低价及平均价。,Select,From,count(*)as 种数,max(单价)as 最高价,商品表1,min(单价)as 最低价,avg(单价)as 平均价,Where,分类名=“电视机”,50,谢谢观赏,2019-6-26,商品表1
22、,Select max(单价*数量),min(单价*数量),sum(单价*数量),From 商品表1,写出它的功能。,查询出商品的最高价值、最低价值及总价值,51,谢谢观赏,2019-6-26,SELECT,;FROM,.;WHERE,复习,Distinct/all,字符型常量的表达,专业=电气,新版规定,as,count/min/max/sum/avg,商品表1.商品代号=商品表2.商品代号,52,谢谢观赏,2019-6-26,三、from选项,FROM子句指出查询目标及下面WHERE子句的条件所涉及的所有关系的关系名,53,谢谢观赏,2019-6-26,用户可以自行定义临时别名,在FROM
23、子句中给出,特别是表名比较长时,定义别名作为列名的前缀限定符更为方便,1、为关系指定临时别名,select x.学生号,y.学生号from 学生基本情况表 x,学生基本档案表 yWhere x.籍贯=广东,Select 学生基本情况表.学生号,学生基本档案表.学生号from 学生基本情况表,学生基本档案表Where 学生基本情况表.籍贯=广东,54,谢谢观赏,2019-6-26,、联接查询,如果查询目标涉及到两个或几个关系,要进行联接运算。由于SQL是高度非过程化的,用户只要在FROM子句中指出各个关系的名称,在WHERE子句里正确指出联接条件即可。联接运算由系统去完成并实现优化。,关系1.属
24、性名=关系2.属性名,55,谢谢观赏,2019-6-26,商品表1,商品表2,商品表1,商品表2,Select*,From 商品表1,商品表2,where 商品表1.商品代号=商品表2.商品代号,Select 商品表1.*,产地,品牌,如果不同的关系具有相同的属性名,必须在前面冠以关系名,从商品表1和商品表2中查询出按商品代号进行自然连接的结果,56,谢谢观赏,2019-6-26,三、按下列给出的每项功能写出相应的查询命令,1、从商品库中查询出每种商品的商品代号、单价、数量和产地,select from where,商品表1(商品代号,分类名,单价,数量)商品表2(商品代号,产地,品牌),商品
25、表1.商品代号=商品表2.商品代号,商品表1,商品表2,商品表1.商品代号,单价,数量,产地,P112,57,谢谢观赏,2019-6-26,学生,课程,选课,查询出每个学生选修每门课程的学生号、姓名、课程号、课程名、成绩等数据,学生号,姓名(学生),选课,课程号,课程名(课程),),58,谢谢观赏,2019-6-26,学生,课程,选课,查询出每个学生选修每门课程的学生号、姓名、课程号、课程名、成绩等数据,),select,from,学生 x,课程 y,选课 z,x.学生号,x.姓名,y.课程名,z成绩,where,x.学生号=z.学生号 and y.课程号=z.课程号,59,谢谢观赏,2019
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 结构 查询 语言 课件
链接地址:https://www.31ppt.com/p-3835188.html