第四章、结构化查询语言----SQL.ppt
《第四章、结构化查询语言----SQL.ppt》由会员分享,可在线阅读,更多相关《第四章、结构化查询语言----SQL.ppt(155页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第四章 结构化查询语言-SQLSQL是结构化查询语言(Structured Query Language)的缩写,它包括查询、定义、操纵和控制四部分,是一种功能齐全的数据库语言,已成为关系数据库语言的国际标准。SQL是一种高度非过程化的面向集合的语言SQL的数据定义功能能够定义数据库的三级模式结构,即外模式、全局模式和内模式结构。在SQL中,外模式又叫视图,全局模式简称模式或数据库,内模式由系统概据数据库模式自动实现,一般无需用户过问。一个数据库由若干个基本表(关系)组成。每个视图也是一个关系,它由基本表产生出来,有自己独立的结构定义,但没有独立的数据存在,它的数据来自基本表。所以,又把视图称
2、为虚表表表1 表表2 表表3 视图1视图2视图3关系:基本表或表属性:字段或列元组:行4.1 数据库模式的建立和删除数据库模式的建立和删除4.2 表结构的建立、修改和删除4.3 表内容的插入、修改和删除4.4 视图的建立、修改和删除4.5 SQL查询查询(p85)本章中使用到的数据库教学库(包括学生、选课、课程三个基本表)学生号姓名性别专业0101001王明男计算机0102005刘芹女电子0202003张鲁男电子0303001赵红女电气0304006刘川男通信0501001张江男通信0502003沈艳女电子学生课程号课程名课程学分C001C+语言4C004操作系统3E002电子技术5X003信
3、号原理4X005软件工程4课程学生号课程号成绩0101001C001780101001C004620102005E002730202003C001940202003C004650202003X003800303001C001760304006E00272选课进入1、定义教学库、定义教学库2、定义学生、定义学生、选课、课程基本选课、课程基本表结构表结构3、向学生、选、向学生、选课、课程基本表课、课程基本表中输入内容中输入内容一、数据库模式的建立和删除1、建立数据库模式CREATESCHEMA|DATABASEAUTHORIZATIONCreate schema xuesh authorizati
4、on 刘勇Create database 教学库2、删除数据库模式DROP SCHEMA|DATABASEDrop database 教学库返回返回二、表结构的建立、修改和删除格式:create table.(,)功能:在当前或给定的数据库中定义一个表的结构(关系模式)1、建立表结构说明(1)若省略,则在当前数据库建立(2)格式:长度列级完整性约束char(n)int floatdate defaultnull/not nullprimary keyuniquereferences()check()(3)在所有列定义之后进行primary key(,)主码约束主码约束unique(,)单值约束
5、单值约束Foreign key(,)references()外码约束外码约束check()检查约束检查约束Create table 教学库教学库.学生学生Create table 学生学生返回返回create table 学生(学生号 char(7)primary key姓名 char(6)not null unique性别 char(2)not null check(性别男 or 性别=女出生日期 datetime check(出生日期=1 and 年级=1 and 课程学分=0 and 成绩=100),primary key(学生号,课程号),foreign key(学生号)referen
6、ces 学生(学生号),foreign key(课程号)references 课程(课程号)学生号课程号成绩选课使用了表级完整性约束和列级完整性约束商品库(其中包括商品表1和商品表2两个基本表)商品代号分类名单价数量DBX-134电冰箱14568DSJ-120电视机186515DSJ-180电视机207310DSJ-340电视机37265KTQ-12空调器280012WBL-6微波炉64010XYJ-13洗衣机46820XYJ-20洗衣机87312商品表1商品表2商品代号产地品牌DBX-134北京雪花DSJ-120南京熊猫DSJ-180南京熊猫DSJ-340北京牡丹KTQ-12无锡春兰WBL-
7、6青岛海信XYJ-13无锡小天鹅XYJ-20山西海棠create database 商品库use 商品库create table 商品表1(商品代号 char(8)primary key,分类名 char(8),单价 float,数量 int)create table 商品表2(商品代号 char(8)primary key产地 char(6)品牌 char(6)商品代号分类名单价数量商品代号产地品牌1、在表级完整性约束和列级完整性约束同时存在的四种约束是:单值、主码、外码、检查小结小结2、每个列级完整性约束只能涉及一个属性,每个表级完整性约束可涉及多个属性(含一个)。若只涉及到一个列(属性)
8、时,可用两种约束中的任一种。3、默认值约束和空值/非空值约束只能在列级完整性约束中存在格式:alter .add,|add,|drop column,|drop,2、修改表结构功能:向已定义过的表中添加一些列的定义或一些表级完整性约束,或者从已定义过的表中删除一些列或一些完整性约束增加增加删除删除alter table 学生 add 籍贯 char(6)alter table 学生 drop column 籍贯格式:drop table .3、删除表结构功能:从当前或给定的数据库中删除一个表,在删除表结构的同时也删除了全部内容如:drop table 学生1教学库(包括学生、选课、课程三个基本
9、表)学生号姓名性别专业课程号课程名课程学分0101001王明王明男男计算机计算机0102005刘芹刘芹女女电子电子0202003张鲁张鲁男男电子电子0303001赵红赵红女女电气电气0304006刘川刘川男男通信通信0501001张江张江男男通信通信0502003沈艳沈艳女女电子电子学生课程学生号课程号成绩选课C001C+语言语言4C004操作系统操作系统3E002电子技术电子技术5X003信号原理信号原理4X005软件工程软件工程40101001C001780101001C004620102005E002730202003C001940202003C004650202003X00380030
10、3001C001760304006E00272三、表内容的插入、修改和删除向基本表中插入数据的命令有两种格式:一种是向具体元组插入常量数据(单行插入)一种是把子查询的结果输入到另一个关系中去(多行插入)1、插入insert into.(,)values(,)单行插入格式:create table 职工(职工号 char(6)primary key,姓名 char(8)not null,性别 char(2)not null,年龄 int,基本工资 float)职工号姓名性别年龄基本工资010405李羽女281560insert into 职工(职工号,姓名,性别,年龄,基本工资)values(0
11、10405,李羽,女,28,1560)insert into.(,)(select 子句)多行插入格式:insert 职工(职工号,姓名,性别,年龄,基本工资)select 职工号,姓名,性别,年龄,基本工资 from 职工1 where 性别=男职工号姓名性别年龄基本工资010405李羽女281560职工职工号姓名性别年龄职务基本工资津贴010203李英女44副处1750450010408王秀男43科员1568231010506刘强男33科员1244332职工1010408王秀男431568010506刘强男3312441、建立/删除数据库Create database/drop2、建立/删
12、除表结构Create table/drop table3、表内容的插入Insert 表级完整性约束和列级完整性约束默认值约束和空值/非空值约束只能在列级完整性约束中存在单值、主码、外码、检查2、修改update.set=,fromwhere update 职工 set 年龄=年龄+1update 职工 set 基本工资=基本工资*1.2 where 职工号=010405update 职工 set 基本工资=职工1.基本工资+职工1.津贴 from 职工1 where 职工.职工号=职工1.职工号职工号姓名性别 年龄基本工资010405李羽女281560职工号姓名性别年龄职务基本工资津贴0102
13、03李英女44副处1750450010408王秀男43科员1568231010506刘强男33科员1244332010408王秀男431568010506刘强男331244职工职工1当在一条语句中使用多个表时当在一条语句中使用多个表时,若使用的列名有重名若使用的列名有重名,必须在必须在所列名前加上表名和圆点分隔符限定所列名前加上表名和圆点分隔符限定1568+231010408王秀男431799010506刘强男3315761244+3323、删除delete from.fromwhere delete from 职工 where 年龄45delete 职工 from 职工1 where 职工.
14、职工号=职工1.职工号delete 职工四、视图的建立、修改和删除视图视图基本表基本表1局部模式中的表,虚表全部模式中的表,实表对视图通常只做修改、查询视图的建立和删除只能影响视图本身,不影响对应的基本表,但对视图内容的更新(插入、删除和修改)直接影响基本表 每个视图的列可以来自同一个基本表,也可以来自多个不同的基本表,视图是基本表的抽象和在逻辑意义上建立的新关系视图来自基本表非主属性非主属性基本表基本表21、建立视图格式:create view(,)as 功能:在当前数据库中根据select的查询结果建立一个视图,包括视图的结构和内容。学生学生(学号,姓名,性别,系)(学号,姓名,性别,系)
15、建立计算机系的学生视图建立计算机系的学生视图create view 计算机系视图表(学号,姓名,性别)计算机系视图表(学号,姓名,性别)as select 学号,姓名,性别学号,姓名,性别 from 学生学生where 系系=“计算机计算机”学号学号姓名性别专业4051王平女经管4052赵路男经管4061邱华女计算机4062宁静女计算机4063张宇男计算机4071刘兵男电子课程号课程号课程名学分C001高等数学6C002会计学5C003管理学4C004程序设计3C005数字电路4学号课程号成绩4051c001784051c002894052c002884052c003854063c00367选
16、课(SC)学生(S)课程(C)create view 成绩视图表(学号,姓名,课程号,课程名,成绩)成绩视图表(学号,姓名,课程号,课程名,成绩)as select 选课选课.学号,姓名,选课学号,姓名,选课.课程号,课程名,成绩课程号,课程名,成绩from 学生,选课,课程学生,选课,课程where 学生学生.学号学号=选课选课.学号学号 and 课程课程.课程号课程号=选课选课.课程号课程号 and 专业专业=经管经管学号学号姓名姓名课程号课程号课程名课程名成绩成绩4051王平王平c001高等数学高等数学784051王平王平c002会计学会计学894052赵路赵路c002会计学会计学884
17、052赵路赵路c003管理学管理学85特征一:使用视图还能够根据用户的局部应用、根据用户的习惯命名视图中的列名特征二:设计基本表时,不能把通过计算得到的属性作为关系的属性,但在视图中却可以定义。学生成绩(学号,姓名,语文,数学,英语)create view 成绩视图(学号,姓名,平均成绩,总成绩)as select 学号,姓名,(语文+数学+英语)/3,语文+数学+英语from 学生成绩要求:建立包含平均成绩、总成绩的成绩视图2、修改视图内容格式:update.set=,from,where 功能:按照一定条件对当前或指定数据库中的一些列值进行修改。update 成绩视图表 set 成绩=80
18、where 学生号=0102005 and 课程号=E0023、修改视图定义格式:alter view (,)as alter view 学生视图(学生号,专业)as select 学生号,专业 from 学生功能:在当前数据库中修改已知视图的列,它与select 子句查询结果相对应create view 学生视图(学生号,姓名)as select 学生号,姓名 from 学生4、删除视图格式:drop view 功能:删除当前数据库中的一个视图4.5 SQL查询SQL的查询只对应一条语句,即SELECT语句。SQL查询速度快,且只需用户讲清楚“要干什么”,而不需要指出“怎么干”。一、一、SQ
19、LSQL查询的基本结构查询的基本结构 SELECT ,;FROM ,.;WHERE 你要查询(输出)什么?(查询目标)最常用的格式是用逗号分隔的属性名所查询的目标来自那个表(要使用的关系名)查询的目标要满足什么条件如没有条件,如没有条件,where where 可可省略,表示对所有记录省略,表示对所有记录比较运算符:比较运算符:=!=#=!=#逻辑运算符:逻辑运算符:and or notand or not在条件中也经常会用到一些谓词,比如:在条件中也经常会用到一些谓词,比如:all(all(所有)所有)any(any(任意)任意)betweenand(betweenand(在在 之间)之间)
20、in(in(包含)包含)not in(not in(不包含)不包含)exists(exists(存在)存在)not existnot exist(不存在)不存在)从学生关系中找出专业是电气的学生学号、姓名 SelectSelect fromfromwherewhere学号学号,姓名;姓名;学生;学生;专业专业=电气电气*;所有字段所有字段from和where 实现选择运算投影投影引用字符型常量引用字符型常量Select Select 学号,学号,课程名,成绩From From 选课,课程选课,课程Where Where 选课选课.课程号课程号=课程课程.课程号课程号课程号课程名课程学分C001
21、C+语言4C004操作系统3E002电子技术5X003信号原理4X005软件工程4课程学号课程号成绩0101001C001780101001C004620102005E002730202003C001940202003C004650202003X003800303001C001760304006E00272from和where 实现连接运算From和和where实现了实现了连接和选择的运算连接和选择的运算新版规定P86如果不同的关系具有相同的属性如果不同的关系具有相同的属性名,必须在前面冠以关系名名,必须在前面冠以关系名本章中使用到的数据库教学库(包括学生、选课、课程三个基本表)学生号姓名性别
22、专业0101001王明男计算机0102005刘芹女电子0202003张鲁男电子0303001赵红女电气0304006刘川男通信0501001张江男通信0502003沈艳女电子学生课程号课程名课程学分C001C+语言4C004操作系统3E002电子技术5X003信号原理4X005软件工程4课程学生号课程号成绩0101001C001780101001C004620102005E002730202003C001940202003C004650202003X003800303001C001760304006E00272选课商品库(其中包括商品表1和商品表2两个基本表)商品代号分类名单价数量DBX-13
23、4电冰箱14568DSJ-120电视机186515DSJ-180电视机207310DSJ-340电视机37265KTQ-12空调器280012WBL-6微波炉64010XYJ-13洗衣机46820XYJ-20洗衣机87312商品表1商品表2商品代号产地品牌DBX-134北京雪花DSJ-120南京熊猫DSJ-180南京熊猫DSJ-340北京牡丹KTQ-12无锡春兰WBL-6青岛海信XYJ-13无锡小天鹅XYJ-20山西海棠二、SELECT选项其中SELECT子句用逗号分开的表达式为查询目标,可为用逗号分开的属性名,或包含字段名、字段函数的表达式。SelectSelect From From 商品
24、表商品表1 1商品代号,单价*数量DISTINCT用于用于SELECT子句中,使得从子句中,使得从查询结果中去掉重复元组。若不使用查询结果中去掉重复元组。若不使用DISTINCT,则默认为则默认为ALL,即无论是即无论是否有重复元组都全部输出。否有重复元组都全部输出。1、DISTINCT和和ALL的使用的使用例:例:selectdistinct分类名;分类名;From 商品表1商品代号分类名单价数量DBX-134电冰箱14568DSJ-120电视机186515DSJ-180电视机207310DSJ-340电视机37265KTQ-12空调器280012WBL-6微波炉64010XYJ-13洗衣机
25、46820XYJ-20洗衣机87312商品表1分类名电冰箱电视机电视机电视机空调器微波炉洗衣机洗衣机分类名电冰箱电视机空调器微波炉洗衣机分类名(商品表1)Where 数量数量10分类名(数量10(商品表1)商品表2商品代号产地品牌DBX-134北京雪花DSJ-120南京熊猫DSJ-180南京熊猫DSJ-340北京牡丹KTQ-12无锡春兰WBL-6青岛海信XYJ-13无锡小天鹅XYJ-20山西海棠selectdistinct 产地;产地;From例:列出商品表2中的所有产品的不同产地商品表商品表22、用AS指定查询结果的自定义列名SelectSelect From From 学生学生学生号 ,性
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第四 结构 查询 语言 SQL
限制150内