数据库原理练习第三篇.docx
《数据库原理练习第三篇.docx》由会员分享,可在线阅读,更多相关《数据库原理练习第三篇.docx(22页珍藏版)》请在冰豆网上搜索。
![数据库原理练习第三篇.docx](https://file1.bdocx.com/fileroot1/2023-1/28/4f88d6b2-8bd7-43c8-8980-40301c3e4dcf/4f88d6b2-8bd7-43c8-8980-40301c3e4dcf1.gif)
数据库原理练习第三篇
第三章
一、选择
1.SQL中,模式一级数据结构的基本单位是()。
(A)基本表
(B)视图
(C)元组
(D)属性
2.在下面列出的几种语言中,()是关系数据库的标准语言。
(A)C
(B)FORTRAN
(C)SQL
(D)PASCAL
3.下面关于SQL语言的说法中,错误的是()。
(A)一个SQL数据库是一个基本表
(B)SQL语言支持数据库的三级模式结构
(C)一个基本表可以跨多个存储文件存放,一个存储文件可以存放一个或多个基本表
(D)SQL的一个表可以是一个基本表,也可以是一个视图
4.SQL语句集数据定义功能和数据控制功能与一体。
如下语句中,哪个是属于数据控制功能的?
()
(A)GRANT
(B)CREATE
(C)INSERT
(D)SLECT
5.下列那一个不是SQL的特点()。
(A)综合统一
(B)高度非过程化
(C)面向记录的操作方式
(D)以同一种语法结构提供多种使用方式
6.SQL语言集数据查询、数据操纵、数据定义和数据控制功能于一体,语句ALTERTABLE实现()功能C
(A)数据查询
(B)数据操纵
(C)数据定义
(D)数据控制
7.在SQL语言中,修改基本表的语句是()。
(A)CREATTABLE
(B)DROPTABLE
(C)ALTERTABLE
(D)UPDATETABLE
8.SQL语言集数据查询、数据操纵、数据定义和数据控制功能于一体,语句CREATE实现哪类功能()。
(A)数据查询
(B)数据操纵
(C)数据定义
(D)数据控制
9.SQL的DROP INDEX语句的作用是()。
(A)删除索引
(B)建立索引
(C)修改索引
(D)更新索引
10.SQL语言集数据查询、数据操纵、数据定义和数据控制功能于一体,语句DROPTABLE实现()功能。
(A)数据查询
(B)数据操纵
(C)数据定义
(D)数据控制
11.在定义基本表的SQL语句CREATETABLE中,如果要定义某个属性不能取空值,应该在该属性后使用的约束条件短语是()。
(A)UNIQUE
(B)CLUSTER
(C)NOTNULL
(D)<>NULL
12.SQL数据库中的模式与下列哪项是对应的?
()
(A)视图
(B)基本表
(C)存储文件
(D)以上均不与之对应
13.设关系R=(A,B,C),与SQL语句:
selectdistinctAfromRwhereB=17等价的关系代数表达式是()。
(A)ПA(R)
(B)σB=17(R)
(C)ПA(σB=17(R))
(D)σB=17(ПA(R))
14.在SQL语句中,实现投影操作的语句是()。
(A)select
(B)from
(C)where
(D)groupby
15.下面所列条目中,()不是标准的SQL语句。
(A)ALTERTABLE
(B)ALTERVIEW
(C)CREATETABLE
(D)CREATEVIEW
16.用GROUPBY子句对数据分组时,在分组中用来进行条件选择的子句是()。
(A)SELECT
(B)WHERE
(C)HAVING
(D)ORDERBY
17.SQL语言集数据查询、数据操纵、数据定义和数据控制功能于一体,语句SELECTTABLE实现()功能。
(A)数据查询
(B)数据操纵
(C)数据定义
(D)数据控制
18.SQL语言集数据查询、数据操纵、数据定义和数据控制功能于一体,语句INSERTTABLE实现()功能
(A)数据查询
(B)数据操纵
(C)数据定义
(D)数据控制
19.视图是由下面()两者导出的表。
(A)模式、关系
(B)基本表、视图
(C)基本关系、关系
(D)内模式、外模式
20.在下列关于视图的叙述中,正确的一条是()
(A)当某一视图被删除后,由该视图导出的其他视图也将被自动删除
(B)若导出某视图的基本表被删除了,但该视图不受任何影响
(C)视图一旦建立,就不能被删除
(D)当修改某一视图时,导出该视图的基本表也将随之被修改
21.在SQL语言中,CREATEVIEW语句的建立用于视图。
如果要求视图更新时,必须满足子查询中的条件表达式,应当在该语句中使用短语()
(A)WITHUPDATE
(B)WITHINSERT
(C)WITHDELETE
(D)WITHCHECKOPTION
22.SQL数据库中的视图与下列哪项是对应的?
()
(A)关系模式
(B)存储模式
(C)子模式
(D)以上均不与之对应
(1)B
(2)C(3)C(4)B(5)A(6)D(7)C(8)C(9)B(10)A(11)D(12)A(13)D(14)A(15)B(16)D
1.SQL语言是()的语言,容易学习。
A.过程化
B.非过程化
C.格式化
D.导航式
2.在视图上不能完成的操作是()。
A.更新视图
B.查询
C.在视图上定义新的表
D.在视图上定义新的视图
3.SQL语言集数据查询、数据操纵、数据定义和数据控制功能于一体,其中,CREATE、DROP、ALTER语句是实现哪种功能()。
A.数据查询
B.数据操纵
C.数据定义
D.数据控制
4.SQL语言中,删除一个视图的命令是()。
A.DELETE
B.DROP
C.CLEAR
D.REMOVE
5.在SQL语言中的视图VIEW是数据库的()。
A.外模式
B.模式
C.内模式
D.存储模式
6.下列的SQL语句中,()不是数据定义语句。
A.CREATETABLE
B.DROPVIEW
C.CREATEVIEW
D.GRANT
7.若要撤销数据库中已经存在的表S,可用()。
A.DELETETABLES
B.DELETES
C.DROPTABLES
D.DROPS
8.若要在基本表S中增加一列CN(课程名),可用()。
A.ADDTABLES(CNCHAR(8))
B.ADDTABLESALTER(CNCHAR8))
C.ALTERTABLESADD(CNCHAR8))
D.ALTERTABLES(ADDCNCHAR8))
9.学生关系模式S(S#,Sname,Sex,Age),S的属性分别表示学生的学号、姓名、性别、年龄。
要在表S中删除一个属性“年龄”,可选用的SQL语句是()。
A.DELETEAgefromS
B.ALTERTABLESDROPAge
C.UPDATESAge
D.ALTERTABLES‘Age’
10.有关系S(S#,SNAME,SAGE),C(C#,CNAME),SC(S#,C#,GRADE)。
其中S#是学生号,SNAME是学生姓名,SAGE是学生年龄,C#是课程号,CNAME是课程名称。
要查询选修“ACCESS”课的年龄不小于20的全体学生姓名的SQL语句是SELECTSNAMEFROMS,C,SCWHERE子句。
这里的WHERE子句的内容是()。
A.S.S#=SC.S#andC.C#=SC.C#andSAGE>=20andCNAME=‘ACCESS’
B.S.S#=SC.S#andC.C#=SC.C#andSAGEin>=20andCNAMEin‘ACCESS’
C.SAGEin>=20andCNAMEin‘ACCESS’
D.SAGE>=20andCNAME=’ACCESS’
11.设关系数据库中一个表S的结构为S(SN,CN,grade),其中SN为学生名,CN为课程名,二者均为字符型;grade为成绩,数值型,取值范围0-100。
若要把“张二的化学成绩80分”插入S中,则可用()。
A.ADDINTOSVALUES(’张二’,’化学’,’80’)B.INSERTINTOSVALUES(’张二’,’化学’,’80’)
C.ADDINTOSVALUES(’张二’,’化学’,80)D.INSERTINTOSVALUES(’张二’,’化学’,80)
12.设关系数据库中一个表S的结构为:
S(SN,CN,grade),其中SN为学生名,CN为课程名,二者均为字符型;grade为成绩,数值型,取值范围0-100。
若要更正王二的化学成绩为85分,则可用()。
A.UPDATESSETgrade=85WHERESN=’王二’ANDCN=’化学’
B.UPDATESSETgrade=’85’WHERESN=’王二’ANDCN=’化学’
C.UPDATEgrade=85WHERESN=’王二’ANDCN=’化学’
D.UPDATEgrade=’85’WHERESN=’王二’ANDCN=’化学’
13.在SQL语言中,子查询是()。
A.返回单表中数据子集的查询语言
B.选取多表中字段子集的查询语句
C.选取单表中字段子集的查询语句
D.嵌入到另一个查询语句之中的查询语句
14.有关系S(S#,SNAME,SEX),C(C#,CNAME),SC(S#,C#,GRADE)。
其中S#是学生号,SNAME是学生姓名,SEX是性别,C#是课程号,CNAME是课程名称。
要查询选修“数据库”课的全体男生姓名的SQL语句是SELECTSNAMEFROMS,C,SCWHERE子句。
这里的WHERE子句的内容是()。
A.S.S#=SC.S#andC.C#=SC.C#andSEX=’男’andCNAME=’数据库’
B.S.S#=SC.S#andC.C#=SC.C#andSEXin’男’andCNAMEin’数据库’
C.SEX’男’andCNAME’数据库’
D.S.SEX=’男’andCNAME=’数据库’
15.若用如下的SQL语句创建了一个表SC:
CREATETABLESC(S#CHAR(6)NOTNULL,C#CHAR(3)NOTNULL,SCOREINTEGER,NOTECHAR(20));向SC表插入如下行时,()行可以被插入。
A.(’201009’,’111’,60,必修)
B.(’200823’,’101’,NULL,NULL)
C.(NULL,’103’,80,’选修’)
D.(’201132’,NULL,86,’’)
16.假设学生关系S(S#,SNAME,SEX),课程关系C(C#,CNAME),学生选课关系SC(S#,C#,GRADE)。
要查询选修“Computer”课的男生姓名,将涉及到关系()。
A.S
B.S,SC
C.C,SC
D.S,C,SC
(1)B
(2)C(3)C(4)B(5)A(6)D(7)C(8)C(9)B(10)A(11)D(12)A(13)D(14)A(15)B(16)D
二、简答题:
1.where子句与having短语的区别是什么?
答:
where子句与having短语的区别在于作用对象不同。
where子句作用于基本表或视图,从中选择满足条件的元组。
having短语作用于组,从中选择满足条件的元组。
2.写出DDL、DML、DCL的含义,并写出你学过的DDL、DML、DCL语言。
答:
DDL:
数据定义语言,例如:
create,drop,alter。
DML:
数据操纵语言,例如:
insert,update,delete。
DCL:
数据控制语言,例如:
grant,revoke。
3.试述SQL语言的特点。
答:
综合统一、高度非过程化、面向集合的操作方式、以同一种语法结构提供两种使用方式、语言简捷,易学易用。
4.试述SQL的定义功能。
答:
SQL的数据定义功能包括定义表、定义视图和定义索引。
5.什么是基本表?
什么是视图?
为什么视图被称为虚表?
两者的区别和联系是什么?
答:
基本表是本身独立存在的表,在SQL中一个关系就对应一个表。
视图是从一个或几个基本表导出的表。
因为数据库中只存储有关视图的定义而不存储视图所对应的数据,这些数据仍存放在导出视图的基本表中,所以视图被称为虚表。
基本表是实际独立存放在数据库中的表,是实表。
视图在概念上与基本表等同,用户可以在视图上再定义视图。
6.试述视图的优点。
(P128)
答:
视图能够简化用户的操作、视图使用户能以多种角度看待同一数据、视图对重构数据库提供了一定程度的逻辑独立性、视图能够对机密数据提供安全保护。
7.所有的视图是否都可以更新?
为什么?
(P127)
答:
并不是所有的视图都是可更新的,因为有些视图的更新不能唯一地有意义地转换成对相应基本表的更新。
8.哪类视图是可以更新的,哪类视图是不可更新的?
各举一例说明。
(P127)
答:
行列子集视图是可更新的。
除行列子集视图外,还有些视图理论上是可更新的,但它们的确切特征还是尚待研究的课题。
还有些视图从理论上不可更新的。
综合题:
1.①教师表:
teachter(tno,tname,sex,birth,dept,title)。
teachter表有教工号(tno)、姓名(tname)、性别(sex)、出生年份(birth)、所在系(dept)、职称(title)、6个属性组成,其中tno为主码。
②课程表:
course(cno,cname,cpno,credit)。
course表有课程号(cno)、课程名(cname)、先修课(cno)、学分(cpno)
③教师任课表:
tc(tno,cno,grade)。
tc表有教工号(tno)、课程号(cno)、学生评教分数(grade)3个属性组成,主码为(tno,cno)。
完成下列语句:
(1)查询全体教师的详细记录。
答:
select*
Fromteacher;
或selecttno,tname,sex,birth,dept,title
Fromteacher;
(2)查询计算机系全体教师的名单。
答:
selecttname
Fromteacher
Wheredept=’cs’;
(3)查询所有年龄在40岁以下的教师姓名及其年龄。
答:
selecttname,2008-birthtage
Fromteacher
Where2008-birth<40;
或selecttname,2008-birth
Fromteacther
Wherenot(2008-birth)>=40;
(4)查询物理系(ph)数学系(ma)和计算机科学系(cs)教师的姓名和性别。
答:
selecttname,sex
Fromteacher
Wheredeptin(‘ph’,‘ma’,‘cs’)
(5)查询不是物理系、数学系、计算机科学系的教师的姓名和性别。
答:
selecttname,sex
Fromteacher
Wheredeptnotin(‘ph’,’ma’,’cs’)
(6)查询教工号为0101的教师的详细情况。
答:
select*
Fromteacher
Wheretnolike‘0101’;
或select*
Fromteacher
Wheretno=’0101’;
(7)查询所有姓孙教师的姓名、教工号和性别。
答:
selecttname,tno,sex
Fromteacher
Wheretnamelike‘孙%’;
(8)查询计算机系年龄在40岁以下的教师姓名。
答:
selecttname
Fromteacher
Wheredept=’cs’and2008-birth<40;
2.查询计算机科学系所有同学的名单
答:
SELECTSname
FROMStudent
WHERESdept=‘CS’
3.查询所有年龄在20岁以下的学生姓名及年龄。
答:
SELECTSname,Sage
FROMStudent
WHERESage<20;
4.查询年龄在20~23岁(包括20岁和23岁)之间的学生的姓名,所在系,年龄。
答:
SELECTSname,Sdept,Sage
FROMStudent
WHERESageBETWEEN20AND23;
5.查询年龄不在20~23岁之间的学生姓名,所在系,年龄。
答:
SELECTSname,Sdept,Sage
FROMStudent
WHERESageNOTBETWEEN20AND23;
6.查询计算机系(CS)数学系(MA)和信息系(IS)学生的姓名和性别。
答:
SELECTSname,Ssex
FROMStudent
WHERESdeptIN(‘CS’,‘MA’,‘IS’);
7.查询学号为200215121的学生的详细情况。
答:
SELECT*
FROMStudent
WHERESno=‘200215121’;
8.查询所有不姓刘的学生的姓名、学号和性别
答:
SELECTSname,Sno,Ssex
FROMStudent
WHERESnameNOTLIKE‘刘%’;
9.某些学生选修课程后没有参加考试,所以有选课记录,但没有考试成绩。
查询缺少成绩的学生的学号和相应的课程号。
答:
SETECTSno,Cno
FROMSC
WHEREGradeISNULL
10.查询选修了3门以上课程的学生学号
答:
SETECTSno
FROMSC
GROUPBYSno
HAVINGCOUNT(*)>3;
11.查询选修了课程名为信息系统的学生学号和姓名。
答:
SETECTSno,Sname
FROMStudent
WHERESnoIN
(SELETESno
FROMSC
WHERECnoIN
(SELECTCno
FROMCourse
WHERECname=‘信息系统’
)
);
12.查询没有选修1号课程的学生姓名
答:
SELECTSname
FROMStudent
WHERENOTEXISTS
(SERECT*
FROMSC
WHERESno=Student。
SnoANDCno=‘1’);
13.查询选修了全部课程的学生姓名
答:
SELECTSname
FROMStudent
WHERENOTEXISTS
(SELECT*
FROMCourse
WHERENOTEXISTS
(SELECT*
FROMSC
WHERESno=Student。
Sno
ANDCno=Course。
Cno));
14.查询至少选修了学生200215122选修的全部课程的学生号码
答:
SELECTDISTINCTSno
FROMSCSCX
WHERENOTEXISTS
(SELECT*
FROMSCSCY
WHERESCYSno=‘200215122’AND
NOTEXISTS
(SELECT*
FROMSCSCZ
WHERESCZ。
Sno=SCX。
SnoAND
SCZ。
Cno=SCY。
Cno));
15.用SQL语言建立表
(1)S(SNO,SNAME,STATUS,CITY);
(2)p(PNO,PNAME,COLOR,WEIGHT);
(3)J(JNO,JNAME,CITY);
(4)SPJ(SNO,PNO,JNO,QTY);
答:
(1)CREATETABLE
(SNOCHAR
(2)PRIMARYKEY,
SNAMECHAR(8),
STATUSCHAR(4),
CITYCHAR(8),
);
(2)CREATETABLEP
(PNOCHAR
(2)PRIMARYKEY,
PNAMECHAR(8),
COLORCHAR(4),
WEIGHTCHAR(4),
);
(3)CREATETABLEJ
(JNOCHAR
(2),PRIMARY。
KEY,
JNAMECHAR(8),
CITYCHAR(8),
);
(4)CREATETABLE。
SPJ
(SNOCHAR
(2),
PNOCHAR
(2),
JNOCHAR
(2),
QTYInt,
PRIMARYKEY(SNO,PNO,TNO),
FOREIGNKEYSNOREFERENCESS(SNO),
FOREIGNKEYPNOREFERENCESPC(PNO),
FOREIGNKEYJNOREFERENCESJ(JNO)
);
S表
SNO
SNAME
STATUS
SITY
S1
精益
20
天津
S2
盛锡
10
北京
S3
东方红
30
北京
S4
丰泰盛
20
天津
S5
为民
30
上海
P表
PNO
PNAME
COLOR
WEIGHT
P1
螺母
红
12
P2
螺栓
绿
17
P3
螺丝刀
蓝
14
P4
螺丝刀
红
14
P5
凸轮
蓝
40
P6
齿轮
红
30
J表
JON
JNAME
CITY
J1
三建
北京
J2
一汽
长春
J3
弹簧厂
天津
J4
造船厂
天津
J5
机车厂
唐山
J6
无线电厂
常州
J7
半导体厂
南京
SPJ表
SNO
PNO
JNO
QTY
S1
P1
J1
200
S1
P1
J3
100
S1
P1
J4
700
S1
P2
J2
100
S2
P3
J1
400
S2
P3
J2
200
S2
P3
J4
500
S2
P3
J5
400
S2
P5
J1
400
S2
P5
J2
100
S3
P1
J1
200
S3
P3
J1
200
S4
P5
J1
100
S4
P6
J3
300
S4
P6
J4
200
S5
P2
J4
100
S5
P3
J1
200
S5
P6
J2
200
S5
P6
J4
500
16.用SQL完成下列的查询。
(1)求供应工程J1零件的供应商号码SNO:
SELECTDISTSNO
FROMSPJ