关系数据库标准语言SQL练习题.docx
《关系数据库标准语言SQL练习题.docx》由会员分享,可在线阅读,更多相关《关系数据库标准语言SQL练习题.docx(25页珍藏版)》请在冰豆网上搜索。
关系数据库标准语言SQL练习题
关系数据库标准语言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)
⑵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)取出至少由一个和工程式不在同一城市的供应商提供零件的工程代号;
SELECTDISTINCTSPJB.JNFROMSB,JB,SPJB
WHERESB.SN=SPJB.SNANDJB.JN=SPJB.JNANDSB.CITY<>JB.CITYTOSCREEN;
JN
――――
J1
J2
J3
J4
J5
J6
J7
――――
(15)取出上海供应商不提供任何零件的工程的代号
SELECTDISTINCTJNFROMSPJB
WHEREJNNOTIN
(SELECTDISTINCTSPJB.JNFROMSB,SPJB
WHERESB.SN=SPJB.SNANDSB.CITY=“上海”)TOSCREEN;
JN
――――
J2
J5
J6
――――
(16)取出这样一些供应商代号,它们能够提供至少一种由红色零件的供应商提供的零件;
SELECTDISTINCTSPJB.SNFROMPB,SPJB
WHERESPJB.PNIN
(SELECTSPJB.PNFROMSPJB,SB,PB
WHERESB.SN=SPJB.SNANDPB.PN=SPJB.PNANDPB.COLOR=“红”TO
SCREEN;
SN
――――
S1
S2
S3
S4
S5
――――
(17)取出由供应商S1提供零件的工程的代号:
SELECTDISTINCTSPJB.JNFROMSB,PB,SPJB
WHIERESB.SN=SPJB.SNANDPB.PN=SPJB.PNANDSB.SN=“S1”TOSCREEN;
JN
————
J1
J4
————
(18)取出所有这样的一些二元组,使得第1个城市的供应商为第2个城市的工程提供零件;
SELECTDISTINCTSB.CITY,JB.CITYFROMSB,JB,SPJB
WHERESB.SN=SPJB.SNANDJB.JN=SPJB.JNTOSCREEN;
CITY_ACITY_B
-----------------------------------
北京广州
北京南京
北京上海
北京武汉
南京广州
南京南京
南京上海
上海南京
上海上海
-----------------------------------
(19)取出所有这样的三元组,使得第1个城市的供应商为第2个城市的工程提供指定的零件;
SELECTDISTINCTSB.CITY,SPJB.PN,JB.CITYFROMSB,JB,SPJB
WHERESB.SN=SPJB.SNANDJB.JN=SPJB.JNTOSCREEN;
CITY_APNCITY_B
--------------------------------------
北京P3广州
北京P3南京
北京P3上海
北京P3武汉
北京P4广州
北京P5广州
南京P1南京
南京P2广州
南京P2南京
南京P3南京
南京P4南京
南京P5南京
南京P5上海
南京P6广州
南京P6南京
上海P1南京
上海P1上海
上海P6南京
上海P6上海
--------------------------------------
(20)重复(19)题,但不检索两个CITY值相同的三元组。
SELECTDISTINCTSB.CITY,SPJB.PN,JB.CITYFROMSB,JB,SPJB
WHERESB.SN=SPJB.SNANDJB.JN=SPJB.JNANDSB.CITY<>JB.CITYTO
SCREEN;
CITY_APNCITY_B
--------------------------------------------
北京P3广州
北京P3南京
北京P3上海
北京P3武汉
北京P4广州
北京P5广州
南京P2广州
南京P5上海
南京P6广州
上海P1南京
上海P6南京
---------------------------------------------
12.有样本表student、teacher、course和score(如图),写出实现以下各题功能的SQL语句,并给出执行结果。
Studentscore
-------------------------------------------------------------------------------------
NONAMESEXBIRTHDAYCLASSNOCNODEGREE
108曾华男09/01/77950331033-24586
105匡明男10/02/75950311053-24575
107王丽女01/23/76950331093-24568
101李军男02/20/76950331033-10592
109王芳女02/10/75950311053-10588
103陆军男06/03/74950311093-10576
1013-10564
1013-10591
1013-10578
1016-16685
1016-16679
1016-16681
teachercourse
--------------------------------------------------------------------------------------------------
NONAMESEXBRITHDAYPROFDEPARTCNOCNAMETNO
804李诚男12/02/58副教授计算机3-103计算机导论825
856张旭男03/12/69讲师电子3-245操作系统825
825王萍女05/05/72助教计算机6-166数字电路825
831刘冰女08/14/77助教电子9-888高等数学825
⑴上列出至少有2名男生的班号。
SELECTclassFROMstudentWHEREsex=“男”
GROUPBYclassHAVINGCOUNT(*)>=2TOSCREEN;
CLASS
-------------
95031
95033
-------------
⑵屏幕显示student表中不姓“王”的同学记录。
SELECT*FROMstudenWHEREnamenotlike“王%”TOSCREEN;
NONAMESEXBIRTHDAYCLASS
------------------------------------------------------------------------
108曾华男09/01/7695033
105匡明男10/02/7595031
101李军男02/20/7695033
103陆君男06/03/7495031
------------------------------------------------------------------------
⑶屏幕显示student表示每个学生的姓名和年龄。
SELECTnameas“姓名”,year(date())-year(birthday)as“年龄”
FROMstudentTOSCREEN;
姓名年龄
-----------------------
曾华23
匡明24
王丽23
李军23
王芳24
陆君25
-----------------------
⑷屏幕显示student表中最大和最小的birthday日期值。
SELECTname,max(birthday),min(birthday)FROMstudentTOSCREEN;
NAMEMAX_BIRTHDAYMIN_BIRTHDAY
-----------------------------------------------------------------------
陆君77.09.0174.06.03
--------------------------------------