第3章 关系数据库标准语言SQL
章末小结
SQL可以分为数据定义、数据查询、数据更新、数据控制四大部分。人们有时把数据更新称为数据操纵,或把数据查询与数据更新合称为数据操纵。本章系统而详尽地讲解了前面三部分的内容。
数据控制中的数据安全性和完整性控制将放在第5章和第6章中讲解。嵌入式SQL、过程性SQL与存储过程将放在第8章中讲解。
本章在讲解SQL的同时,进一步讲解了关系数据库系统的基本概念,使关系数据库的许多概念更加具体、更加丰富。
SQL是关系数据库语言的工业标准。目前,大部分数据库管理系统产品都能支持SQL 92,但是许多数据库系统只支持SQL 99、SQL 2008和SQL 2011的部分特征,至今尚没有一个数据库系统能够完全支持SQL 99以上的标准。
SQL的数据查询功能是最丰富,也是最复杂的,读者应加强实验练习。
习题
1、试述SQL的特点。
2、说明在drop table时,restrict和cascade的区别。
3、有两个关系S(A,B,C,D)和T(C,D,E,F),写出与下列查询等价的SQL表达式:
(1)
(2)
(3)
(4)
(5)
(6)
4、用SQL语句建立第二章习题6中的四个表;针对建立的4个表用SQL语言完成第二章习题6中的查询。
设有一个SPJ数据库,包括S、P、J、SPJ4个关系模式:
S(SNO,SNAME,STATUS,CITY);
P(PNO,PNAME,COLOR,WEIGHT);
J(JNO,JNAME,CITY);
SPJ(SNO,PNO,JNO,QTY);
供应商表S由供应商代码(SNO)、供应商姓名(SANME)、供应商状态(STATUS)、供应商所在城市(CITY)组成。
零件表P由零件代码(PNO)、零件名(PNAME)、颜色(COLOR)、重量(WEIGHT)组成。
工程项目表J由工程项目代码(JNO)、工程项目名(JNAME)、工程项目所在城市(CITY)组成。
供应情况表SPJ由供应商代码(SNO)、零件代码(PNO)、工程项目代码(JNO)、供应数量(QTY)组成,表示某供应商供应某种零件给某工程项目的数量为QTY。
今有若干数据如下:
S表 |
SPJ表 |
|||||||||
SNO |
SNAME |
STATUS |
CITY |
SNO |
PNO |
JNO |
QTY |
|||
S1 |
精益 |
20 |
天津 |
S1 |
P1 |
J1 |
200 |
|||
S2 |
盛锡 |
10 |
北京 |
S1 |
P1 |
J3 |
100 |
|||
S3 |
东方红 |
30 |
北京 |
S1 |
P1 |
J4 |
700 |
|||
S4 |
丰泰盛 |
20 |
天津 |
S1 |
P2 |
J2 |
100 |
|||
S5 |
为民 |
30 |
上海 |
S2 |
P3 |
J1 |
400 |
|||
P表 |
S2 |
P3 |
J2 |
200 |
||||||
PNO |
PNAME |
COLOR |
WEIGHT |
S2 |
P3 |
J4 |
500 |
|||
P1 |
螺母 |
红 |
12 |
S2 |
P3 |
J5 |
400 |
|||
P2 |
螺栓 |
绿 |
17 |
S2 |
P5 |
J1 |
400 |
|||
P3 |
螺丝刀 |
蓝 |
14 |
S2 |
P5 |
J2 |
100 |
|||
P4 |
螺丝刀 |
红 |
14 |
S3 |
P1 |
J1 |
200 |
|||
P5 |
凸轮 |
蓝 |
40 |
S3 |
P3 |
J1 |
200 |
|||
P6 |
齿轮 |
红 |
30 |
S4 |
P5 |
J1 |
100 |
|||
J表 |
S4 |
P6 |
J3 |
300 |
||||||
JNO |
JNAME |
CITY |
S4 |
P6 |
J4 |
200 |
||||
J1 |
三建 |
北京 |
S5 |
P2 |
J4 |
100 |
||||
J2 |
一汽 |
长春 |
S5 |
P3 |
J1 |
200 |
||||
J3 |
弹簧厂 |
天津 |
S5 |
P6 |
J2 |
200 |
||||
J4 |
造船厂 |
天津 |
S5 |
P6 |
J4 |
50 |
||||
J5 |
机车厂 |
唐山 |
||||||||
J6 |
无线电厂 |
常州 |
||||||||
J7 |
半导体厂 |
南京 |
||||||||
(1)建表
(2)使用SQL语句完成下列查询
①求供应工程J1零件的供应商号码SNO。
②求供应工程J1零件P1的供应商号码SNO。
③求供应工程J1零件为红色的供应商号码SNO。
④求没有使用天津供应商生产的红色零件的工程号JNO。
⑤求至少用了供应商S1所供应的全部零件的工程号JNO。
5、针对习题4中的4个表试用SQL完成以下各项操作:
(1)找出所有供应商的姓名和所在城市;
(2)找出所有零件的名称、颜色、重量;
(3)找出使用供应商S1所供应零件的工程号码;
(4)找出工程项目J2使用的各种零件的名称及其数量;
(5)找出上海厂商供应的所有零件号码;
(6)找出使用上海产的零件的工程名称;
(7)找出没有使用天津产的零件的工程号码;
(8)把全部红色零件的颜色改成蓝色;
(9)由S5供给J4的零件P6改为由S3供应,请作必要的修改;
(10)从供应商关系中删除S2的记录,并从供应情况关系中删除相应的记录;
(11)请将(S2,J6,P4,200)插入供应情况关系。
6、什么是基本表?什么是视图?两者的区别和联系是什么?
7、试述视图的优点。
8、哪类视图是可以更新的,哪类视图是不可更新的?各举一例说明。
9、请为三建工程项目建立一个供应情况的视图,包括供应商代码(SNO)、零件代码(PNO)、供应数量(QTY)。针对该视图完成下列查询:
①找出三建工程项目使用的各种零件代码及其数量。
②找出供应商S1供应三建工程的情况。