关系数据库标准语言SQL练习题.docx
《关系数据库标准语言SQL练习题.docx》由会员分享,可在线阅读,更多相关《关系数据库标准语言SQL练习题.docx(24页珍藏版)》请在冰豆网上搜索。
关系数据库标准语言SQL练习题
ThismanuscriptwasrevisedonNovember28,2020
关系数据库标准语言SQL练习题
第3章关系数据库标准语言SQL
一.单项选择题
1.SQL语言是▁▁▁▁▁的语言,易学习。
A.过程化B非过程化C.格式化D导航式
B
2.SQL语言是▁▁▁▁▁语言。
A.层次数据库B.网络数据库C.关系数据库D非数据库
3.SQL语言具有▁▁▁▁▁的功能。
A.关系规范化、数据操纵、数据控制
B.数据定义、数据操纵、数据控制
C.数据定义、关系规范化、数据控制
C.数据定义、关系规范化、数据操纵
4.SQL语言的数据操纵语句包括SELECT,INSERT,UPDATE和DELETE等。
其中最重要的,也是使用最频繁的语句是▁▁▁▁▁。
A.SELECTB.INSERTC.UPDATED.DELETE
5.在关系代数运算中,五种基本运算为▁▁▁▁▁。
A.并、差、选择、投影、自然连接B.并、差、交、选择、投影
C.并、差、选择、投影、乘积D.并、差、交、选择、乘积
6.SQL语言中,实现数据检索的语句是▁▁▁▁▁。
A.SELECTB.INSERTC.UPDATED.DELETE
7.下列SQL语句中,修改表结构的是▁▁▁▁▁。
A.ALTERB.CREATEC.UPDATED.INSERT
第8到第11题基于这样的三个表,即学生表S、课程表C和学生选课表SC,他们的结构如下:
S(S#,SN,SEX,AGE,DEPT);C(C#,CN);SC(S#,C#,GRADE)
其中:
S#为学号,SN为姓名,SEX为性别,AGE为年龄,DEPT为系别,C#为课程CN为课程名,GPADE为成绩。
8.检索所有比“王华”年龄大的学生姓名、年龄和性别。
正确的SELECT语句是▁▁A▁▁。
A.SELECTSN,AGE,SEX
FROMSWHEREAGE>(SELECTAGEFROMSWHERESN=“王华”)
B.SELECTSN,AGE,SEX
FROMSWHERESN=“王华”
C.SELECTSN,AGE,SEX
FROMSWHEREAGE>(SELECTAGEWHERESN=“王华”)
D.SELECTSN,AGE,SEX
FROMSWHEREAGE>王华.AGE
9.检索选修课程“C2”的学生中成绩最高的学生的学号。
正确的SELECT语句是▁▁D▁▁。
A.SELECTS#FORMSC
WHEREC#=“C2”ANDGRADE>=(SELECTGRADEFORMSCWHEREC#=“C2”)
B.SELECTS#FORMSC
WHEREC#=“C2”ANDGRADEIN(SELECTGRADEFORMSCWHEREC#=“C2”)
C.SELECTS#FORMSC
WHEREC#=“C2”ANDGRADENOTIN(SELECTGRADEFORMSCWHERE
C#=“C2”)
D.SELECTS#FORMSC
WHEREC#=“C2”ANDGRADE>=ALL(SELECTGRADEFORMSCWHERE
C#=“C2”)
10.检索学生姓名及其所选修课程号和成绩。
正确的SELECT语句是▁▁▁C▁▁。
SELECTS.SN,SC.C#,SC.GRADE
FROMSWHERES.S#=SC.S#
B.SELECTS.SN,SC.C#,SC.GRADE
FROMSWHERES.S#=SC.GRADE
C.SELECTS.SN,SC.C#,SC.GRADE
FROMS,SCWHERES.S#=SC.S#
D.SELECTS.SN,SC.C#,SC.GRADE
FROMS.SC
11.检索选修四门以上课程的学生总成绩(不统计不及格的课程),并要求按总成绩的降序排列出来。
正确的SELECT语句是▁B▁。
A.SELECTS#,SUM(GRADE)
FROMSCWHEREGRADE>=60GROUPBYS#ORDERBY2DESC
HAVINGCOUNT(*)>=4
SELECTS#,SUM(GRADE)
FROMSCWHEREGRADE>=60GROUPBYS#HAVINGCOUNT(*)>=4
ORDERBY2DESC
SELECTS#,SUM(GRADE)
FROMSCWHEREGRADE>=60HAVINGCOUNT(*)>=4GROUPBYS#
ORDERBY2DESC
SELECTS#,SUM(GRADE)
FROMSCWHEREGRADE>=60ORDERBY2DESCGROUPBYS#
HAVINGCOUNT(*)>=4
12.假定学生关系是S(S#,SNAME,SEX,AGE),课程关系是C(C#,CNAME,TEACHER),学生选修课关系是SC(S#,C#,GRADE)。
要查找选修“COMPUTER”课程的“女”学生姓名,将涉及到关系▁▁D▁▁。
A.SB.SC,CC.S,SCD.S,C,SC
13.如下面的数据库的表中,若职工表的主关键字是职工号,部门表的主关键字是部门号,SQL操作▁▁▁▁▁不能执行。
职工表部门表
A.从职工表中删除行(‘025’,‘王芳’,‘03’,720)
B.将行(‘005’,‘乔兴’,‘04’,750)插入到职工表中
C.将职工号为‘001’工资改为700
D.将职工号为‘038’部门号改为‘03’
B
14.若用如下的SQL语句创建一个student表:
CREATETABLEstudent(NOC(4)NOTNULL,
NAMEC(8)NOTNULL,
SEXC
(2),
AGEN
(2));
可以插入到student表中的是▁▁▁▁▁。
A.(‘1031’,‘曾华’,男,23)B.(‘1031’,‘曾华’,NULL,NULL)
C.(NULL,‘曾华’,男,23)D.(‘1031,NULL,男,23)
B
二、填空题
1.SQL是▁▁▁▁▁▁▁▁▁▁。
结构化查询语言
2.SQL语言的数据定义功能包括▁▁▁▁▁▁▁、▁▁▁▁▁▁▁、▁▁▁▁▁▁▁和▁▁▁▁▁▁▁。
定义数据库定义基本表定义视图定义索引
3.视图是一个虚表,它是从▁▁▁中导出的表。
在数据库中,只存放视图的▁▁▁▁▁,不存视图的▁▁▁▁▁▁▁▁▁▁。
一个或几个基本表定义视图对应的数据
4.设有如下关系表R、S和T:
R(BH,XM,XB,DWH)
S(DWH,DW)
T(BH,XM,XB,DWH)
实现R∪T的语句是▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁。
实现R∪T的语句是▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁。
实现R∪T的语句是▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁。
实现R∪T的语句是▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁。
实现R∪T的语句是▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁。
实现R∪T的语句是▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁。
SELECT*FROMRUNIONSELECT*FROMT
SELECT*FROMRWHEREDWH=‘100’
SELECTXM,XBFROMR
SELECTX,DWHFROMRWHEREXB=“女”
SELECTR.BH,R.XM,R.XB,R.DWH,S.DWH,S.DWM
FROMR,SWHERER.DWH=S.DWH
SELECTR.XM,R.XB,S.DWM
FROMR,SWHERER.DWH=S.DWHANDR.XB=“男”
5.设有如下关系表R:
R(NO,NAME,SEX,AGE,CLASS)
主关键字的NO。
其中NO为学号,NAME为姓名,SEX为性别,AGE为年龄,CLASS为班号。
写出实现下列的SQL语句。
插入一个记录(25,“李明”“男”,21,“95031”);
插入“95031”班号为30、姓名为“郑和”的学生记录;
将学号为10的学生姓名改为“王华”;
将所有“95101班号改为“95091”;
删除学号为20的学生记录;
删除姓“王”的学生记录;
INSERTINTORVALUES(25,“李明”,“男”,21,“95031”)
INSERTINTOR(NO,NAME,CLASS)VALUES(30,“郑和”,“95031”)
UPDATERSETNAME=“王华”WHERENO=10
UPDATERSETCLASS=“95091”WHERECLASS=“95101”
DELETEFROMRWHERENO=20
DELETEFROMRWHERENAMELIKE“王%”
习题3
1.叙述SQL语言支持的三级逻辑结构。
答:
SQL语言支持的三级逻辑结构如图1所示.
在概念层,对应概念模式的概念记录型的基本表。
基本表是这样的一种表,它本身实际存在,在VisualFoxpro中每个表在存储中可用一具存储文件来表示(在ORACLE中,多个表存储在一个文件夹中。
一个基本表就是一个关系,它不是由其人表导出的表。
基本表是使用CDEATETABLE语句建立的。
在外层,用户所看到的可以是基本表,也可以是视图。
视图是一个虚拟表,它是由一个或几个基本表导出的表,它不直接存在于物理存储器上的表。
视图是使用CDEATEVIEW语句建立的。
在内层,基本表(或库)用一个存储文件来表示,即用一组类型相同的存储记录值来表示。
DBA可以对物理存储文件进行操作。
2.叙述使用SQL语言实现各种关系运算的方法。
答:
由VisualFoxpro支持的SQL语言没有提供关系的笛卡尔积、交和差运算。
其全关系运算对应的SQL语句格式是:
R∪S:
SELECT语句(生成R)
UNION
SELECT语句(生成S)
选择:
SELECT*FROM<表>WHERE<指定选择的条件>
投影:
SELECT<投影字段列表>FROM<表>
选择:
SELECT<连接的字段列表>FROM<连接的两个表名>WHERE<连接条件>
3.设有如图所示的三个关系,并假定这三个关系框架组成的数据模型就是用户子模式。
其中各个属性的含义如下:
A#(商店代号)、ANAME(商店名)、WQTY(店员人数)、CITY(所在城市)、B#(商品号)、BNAME(商品名称)、PRICE(价格)、QTY(商品数量)。
试用SQL语言写出下列查询,并给出执行结果。
AAB
A#
ANAME
WQTY
CITY
101
韶山商店
15
长沙
204
前门百货商店
89
北京
256
东风商场
501
北京
345
铁道商店
76
长沙
620
第一百货商店
413
上海
A#
B#
QTY
101
1
105
101
2
42
101
3
25
101
4
104
204
3
61
256
1
241
256
2
91
345
1
141
345
2
18
345
4
74
620
4
125
B#
BNAME
PRICE
1
毛笔
21
2
羽毛球
784
3
收音机
1325
4
书包
242
B
⑴找出店员人数不超过100人或者在长沙市的所有商店的代号和商店名。
SELECTA#,ANAME
FROMAWHEREWQTY<=100ORCITY=“长沙”;
⑵找出供应书包的商店名。
SELECTA.ANAMEFROMA,B,AB
WHEREA.A#=AB.A#ANDB.B#=AB.B#ANDB.BNAME=“书包”;
⑶找出至少供应了代号为“256”的商店所供应的全部商品的商店名和所在城市。
SELECTANAME,CITYFROMAWHERENOTEXSIST
(SELECT*FORMABFWHEREA#=“256”ANDNOTEXSIST
(SELECT*FROMABSWHEREA#=A.A#ANDB#=F.B#));
4.设有图书登记表TS,具有属性:
BNO(图书编号),BC(图书类别),BNA(书名),AU(着者),PUB(出版社)。
按下列要求用SQL语言进行设计。
查询按出版社统计其出版图书总数。
SELECTPUB,COUNT(BNO)
FROMTSGROUPBYPUB
5.已知三个关系R、S和T如图所示。
试用SQL语句实现如下操作:
RST
A
B
C
a1
b1
20
a1
b2
22
a2
b1
18
a2
b3
a2
A
D
E
a1
d1
15
a2
d2
18
a1
d2
24
D
F
d2
f2
d3
f3
⑴将R、S和T三个关系按关联属性建立一个视图R-S-T。
⑵对视图R-S-T按属性A分组后,求属性C和E的平均值。
解:
⑴CREATEVIEWR-S-T
ASSELECTR.A,B,C,S.D,E,F
FROMR,S,TWHERER.A=S.AANDS.D=T.D;
⑵SELECTAVG(C),AVG(E)FROMR-S-TGROUPBYA;
6.有关系R和S如图所示。
RS
A
B
a1
b1
a2
B2
a3
b3
A
B
a1
40
a2
50
a3
55
试用SQL语句实现:
⑴查询属性C>50时,R中与相关联的属性B之值。
⑵当属性C=40时,将R中与之相关连的属性B值修改为b4。
解:
⑴SELECTBFROMR,SWHERER.A=S.AANDC>50;
⑵UPDATER
SETB=“b4”WHEREAIN(SELECTA
FROMSWHEREC=40)
7.已知R和S两个关系如图所示。
RS
A
B
C
a1
b1
c1
a2
b2
c2
a3
b3
c2
C
D
E
c1
d1
e1
c2
d2
e2
c3
d3
e3
执行如下SQL语句:
⑴CREATEVIEWH(A,B,C,D,E)
ASSELECTA,B,R.C,D,EFROMR,SWHERER.C=S.C;
⑵SELECTB,D,EFROMHWHEREC=“C2”
试给出:
⑴视图H。
⑵对视图H的查询结果。
解:
本题的结果如图所示。
视图H对视图H的查询结果
A
B
C
D
E
a1
b1
c1
d1
e1
a2
b2
c2
d2
e2
a3
b3
c2
d2
e2
B
D
E
b2
d2
e2
b3
d2
e2
8.已知关系R如图所示。
R
A
B
C
97
b1
84
a297
b2
92
a397
b3
98
98
b1
72
98
b2
84
98
b3
95
99
b1
88
99
b2
94
试用SQL语句实现下列操作:
⑴按属性A分组,求出每组中在属性C上的最大值和最小值,且将它们置于视图RAE中。
⑵在视图RAE中查询属性A=“8”记录。
解
⑴CREATEVIEWRAE(A,CMAX,CMIN)
ASSELECTA,MAX(C),MIN(C)FROMRGROUPBYA;
⑵SELECT*FROMRAEWHEREA=“98”
9.已知学生表S和学生选课表SC。
其关系模式如下:
S(SNO,SN,SD,PROV)
SC(SNO,CN,GR)
其中:
SNO为学号,SN为姓名,SD为系名,PROV为省区,CN为课程名,GR为分数。
试用SQL语言实现下列操作:
⑴查询“信息系”的学生来自哪些省区。
⑵按分数降序排序,输出“英语系”学生选修了“计算机”课程的学生的姓名和分数。
解:
⑴SELECTDISTINCTPROVFROMSWHERESD=“信息系”
⑵SELECTSN,GRFROMS,SC
WHERESD=“英语系”ANDCN=“计算机”ANDS.SNO=SC.SNO
ORDWRBYGRDESC;
10.设有学生表S(SNO,SN)(SNO为学生号,SN为姓名)和学生选修课程表SC(SNO,CNO,CN,G)(CNO为课程号,CN为课程名,G为成绩),试用SQL语言完成以下各题:
⑴建立一个视图V-SSC(SNO,SN,CNO,CN,G),并按CNO升序排序。
⑵从视图V-SSC上查询平均成绩在90分以上的SN、CN和G。
解:
⑴CREATEVIEWV-SSC(SNO,SN,CNO,CN,G)
ASSELECTS.SNO,S.SN,CNO,SC.CN,SC.G
FROMS,SCWHERES.SNO=SC.SNOORDWRBYCNO
⑵SELECTSN,CN,G
FROMV-SSCGROGPBYSNOHAVINGAVG(G)>90
11.设有关系模式:
SB(SN,SNAME,CITY)
其中:
SB表示供应商,SN为供应商代号,SNAME为供应商名字,CITY为供应商所在城市,主关键字为SN。
PB(PN,PNAME,COLOR,WEIGHT)
其中:
P表示零件,PN为零件代号,PNAME为零件名字,COLOR为零件颜色,WEIGHT为零件重量,主关键字为PN。
JB(JN,JNAME,CITY)
其中:
JB表示工程,JN为工程编号,JNAME为工程名字,CITY为工程式所在城市,主关键字为JN。
SPJB(SN,PN,JN,QTY)
其中:
SPJ表示供应关系,SN是为指定工程提供零件的供应商代号,PN为所提供的零件代号,JN为工程编号,QTY表示提供的零件数量,主关键字为SN,PN,JN,外关键字为SN,PN,JN。
如图所示表示供应商(S)—零件(P)—工程(J)数据库表,写出实现以下各题功能的SQL语句:
(1)取出所有工程的全部细节:
SELECT*FROMJBTOSCREEN;
JNJNAMECITY
--------------------------------------
J1JN1上海
J2JN2广州
J3JN3南京
J4JN4南京
J5JN5上海
J6JN6武汉
J7JN7上海
(2)取出所在城市为上海的所有工程的全部细节;
SELECT*FROMJBWHERECETY=“上海”TOSCREEN;
JNJNAMECITY
--------------------------------------
J1JN1
J5JN5
J7JN7
(3)取出重量最轻的零件代号;
SELECTPNFROMPB
WHERHWEIGHT=
(SELECTMIN(WEIGHT)FROMPB)TOSCREEN;
PN
――――
P5
――――
(4)取出为工程式J1提供零件的供应商代号;
SELECTSNFROMSPJBWHEREJN=“J1”TOSCREEN;
SN
――――
S1
S2
S3
――――
(5)取出为工程J1提供P1的供应商代号;
SELECTSNFROMSPJB
WHEREJN=“J1”ANDPN=“P1”TOSCREEN;
SN
――
S1
――
(6)取出由供应商S1提供零件的工程名称;
SELECTJB.JNAMEFROMJB,SPJB
WHEREJB.JN=SPJB.JNANDSPJB.SN=“S1”TOSCREEN;
JNAME
――――――
JN1
JN4
――――――
(7)取出供应商S1提供的零件的颜色;
SELECTDISTINCTPB.COLORFROMPB,SPJB
WHEREPB.PN=SPJB.PNANDSPJB.SN=“1”TOSCREEN;
COLOR
―――
红
―――
(8)取出为工程J1或J2提供零件的供应商代号;
SELECTDISTINCTSNFROMSPJB
WHEREJN=“J1”ORJN=“J2”TOSCREEN;
SN
―――
S1
S2
S3
S5
―――
(9)取出为工程J1提供红色零件的供应商代号;
SELECTDISTINCTSPJB.SNFROMSPJB,PB
WHEREPB.PN=SPJB.PNANDSPJB.JN=“J1”ANDPB.COLOR=“红”TOSCREEN;
SN
――-
S1
――-
(10)取出为所在城市为上海的工程提供零件的供应商代号;
SELECTDISTINCTSPJB.SNFROMSPJB,JB
WHERESPJB.JN=JB.JNANDJB.CITY=“上海”TOSCREEN;
SN
―――
S1
S2
S3
S4
S5
――-
(11)取出为所在城市为上海或北京的工程提供红色零件的供应商代号;
SELECTSPJB.SNFROMPB,JB,SPJB
WHERESPJB.PN=PB.PNANDJB.JN=SPJB.JNANDPB.COLOR=‘红’AND
(JB.CITY=“上海”ORJB.CITY=“北京”TOSCREEN;
SN
――
S1
S4
――
(12)取出供应商与工程所在城市相同的供应商提供的零件代号;
SELECTDISTINCTSPJB.PNFROMSB,JB,SPJB
WHERESB.SN=SPJB.SNANDJB.JN=SPJB.JNANDSB.CITY=JB.CITYTO
SCREEN;
PN
――――
P1
P2
P3
P4
P5
P6
―――――
(13)取出上海的供应商提供给上海的任一工程的零件的代号;
SELECTSPJB.PNFROMSB,JB,SPJB
WHERESB.SN=SPJB.SNANDJB.JN=SPJB.JNANDSB.CITY=“上海”AND
JB.CITY=“上海”TOSCREEN;
PN
――――
P1
P6
――――
(14)取出至少由一个和工程式不在同一城市的供应商提供零件的工程代号;