您的位置:首页 > 数据库

第3部分 关系数据库标准语言 SQL

2010-01-03 21:32 573 查看

第3部分 关系数据库标准语言 SQL

复习习题与讲解资料

[align=center]【主讲教师:钱哨】[/align]

一.考试大纲考点要求

1 了解[/b] SQL 语言的特点,掌握基本表、视图、索引等概念。
2 掌握[/b]数据定义命令:创建数据库、创建基本表、表结构的修改、基本表的删除;索引的建立与删除。
3 掌握[/b]数据查询命令: SELECT 语句,要求:
1 )简单查询(单表查询),包括正确书写选择条件、排序输出、聚合运算以及分组处理;
2 )连接查询(多表查询);
3 )嵌套查询(子查询)。
4 掌握[/b]数据操纵命令:基本表数据的插入、删除、修改。
5 掌握[/b]有关视图的操作:定义视图、查询视图、更新视图、撤消视图。

二.单项选择题(第一部分)

1. 下面的选项不是关系数据库基本特征的是( )。
  1. SQL语言是( )的语言,容易学习 。
  A.过程化 B. 非过程化
C.格式化 D. 导航式

2. SQL语言的数据操纵语句包括SELECT、INSERT、UPDATE、DELETE等。其中最重要的,也是使用最频繁的语句是( ) 。
  A. SELECT B. INSERT
C. UPDATE D. DELETE

3. 在视图上不能完成的操作是( ) 。
  A. 更新视图 B. 查询
C. 在视图上定义新的表 D. 在视图上定义新的视图

4. SQL语言集数据查询、数据操纵、数据定义和数据控制功能于一体,其中,CREATE、DROP、ALTER语句是实现哪种功能( )。
  A. 数据查询 B. 数据操纵
C. 数据定义 D. 数据控制

5. SQL语言中,删除一个视图的命令是( )。
  A.DELETE
  B.DROP
  C.CLEAR
D.REMOVE

6. 在SQL语言中的视图VIEW是数据库的( ) 。
A. 外模式 B. 模式 C. 内模式 D. 存储模式

7. 下列的SQL语句中,( )不是数据定义语句。
  A. CREATE TABLE B. DROP VIEW
C. CREATE VIEW D. GRANT

8. 若要撤销数据库中已经存在的表S,可用( )。
  A. DELETE TABLE S B. DELETE S
C. DROP TABLE S D. DROP S

9. 若要在基本表S中增加一列CN(课程名),可用( )。
  A.ADD TABLE S(CN CHAR(8))
  B.ADD TABLE S ALTER(CN CHAR(8))
  C.ALTER TABLE S ADD(CN CHAR(8))
D.ALTER TABLE S (ADD CN CHAR(8))

10. 学生关系模式 S( S#,Sname,Sex,Age),S的属性分别表示学生的学号、姓名、性别、年龄。要在表S中删除一个属性“年龄”,可选用的SQL语句是( )。
  A. DELETE Age from S
  B. ALTER TABLE S DROP Age
  C. UPDATE S Age
D. ALTER TABLE S ‘Age’

11. 有关系S(S#,SNAME,SAGE),C(C#,CNAME),SC(S#,C#,GRADE)。其中S#是学生号,SNAME是学生姓名,SAGE是学生年龄, C#是课程号,CNAME是课程名称。要查询选修“ACCESS”课的年龄不小于20的全体学生姓名的SQL语句是SELECT SNAME FROM S,C,SC WHERE子句。这里的WHERE子句的内容是()。
  A. S.S# = SC.S# and C.C# = SC.C# and SAGE>=20 and CNAME=‘ACCESS’
  B. S.S# = SC.S# and C.C# = SC.C# and SAGE in>=20 and CNAME in ‘ACCESS’
  C. SAGE in>=20 and CNAME in ‘ACCESS’
D. SAGE>=20 and CNAME=’ ACCESS’

12. 设关系数据库中一个表S的结构为S(SN,CN,grade),其中SN为学生名,CN为课程名,二者均为字符型;grade为成绩,数值型,取值范围0-100。若要把“张二的化学成绩80分”插入S中,则可用( )。
  A. ADD
   INTO S
   VALUES(’张二’,’化学’,’80’)
  B. INSERT
   INTO S
   VALUES(’张二’,’化学’,’80’)
  C. ADD
   INTO S
   VALUES(’张二’,’化学’,80)
  D. INSERT
   INTO S
   VALUES(’张二’,’化学’,80)

13. 设关系数据库中一个表S的结构为:S(SN,CN,grade),其中SN为学生名,CN为课程名,二者均为字符型;grade为成绩,数值型,取值范围0-100。若要更正王二的化学成绩为85分,则可用( ) 。
  A. UPDATE S
   SET grade=85
   WHERE SN=’王二’ AND CN=’化学’
  B. UPDATE S
   SET grade=’85’
   WHERE SN=’王二’ AND CN=’化学’
  C. UPDATE grade=85
   WHERE SN=’王二’ AND CN=’化学’
  D. UPDATE grade=’85’
   WHERE SN=’王二’ AND CN=’化学’

14. 在SQL语言中,子查询是( ) 。
  A. 返回单表中数据子集的查询语言
  B. 选取多表中字段子集的查询语句
  C. 选取单表中字段子集的查询语句
D. 嵌入到另一个查询语句之中的查询语句

15. SQL是一种( )语言。
  A. 高级算法 B. 人工智能
C. 关系数据库 D. 函数型

16. 有关系S(S#,SNAME,SEX),C(C#,CNAME),SC(S#,C#,GRADE)。其中S#是学生号,SNAME是学生姓名,SEX是性别, C#是课程号,CNAME是课程名称。要查询选修“数据库”课的全体男生姓名的SQL语句是SELECT SNAME FROM S,C,SC WHERE子句。这里的WHERE子句的内容是( )。
  A.S.S# = SC.S# and C.C# = SC.C# and SEX=’男’ and CNAME=’数据库’
  B.S.S# = SC.S# and C.C# = SC.C# and SEX in’男’and CNAME in’数据库’
  C.SEX ’男’ and CNAME ’ 数据库’
D.S.SEX=’男’ and CNAME=’ 数据库’

17. 若用如下的SQL语句创建了一个表SC:
  CREATE TABLE SC (S# CHAR(6) NOT NULL,C# CHAR(3) NOT NULL,SCORE INTEGER,NOTE CHAR(20));向SC表插入如下行时,( )行可以被插入 。
  A.(’201009’,’111’,60,必修)
  B.(’200823’,’101’,NULL,NULL)
  C.(NULL,’103’,80,’选修’)
D.(’201132’,NULL,86,’ ’)

18. 假设学生关系S(S#,SNAME,SEX),课程关系C(C#,CNAME),学生选课关系SC(S#,C#,GRADE)。要查询选修“Computer”课的男生姓名,将涉及到关系( )。
  A. S B. S,SC C. C,SC D. S,C,SC
  
选择题答案:[/b]
   (1) B (2) A (3) C (4) C (5) B
   (6) A (7) D (8) C (9) C (10) B
  (11) A (12) D (13) A (14) D (15) C
  (16) A (17) B (18) D
  

二、简答题

1. [/b]试述SQL语言的特点。[/b]
   答:
  (1)综合统一。 SQL语言集数据定义语言DDL、数据操纵语言DML、数据控制语言DCL的功能于一体。
  (2)高度非过程化。用SQL语言进行数据操作,只要提出“做什么”,而无须指明“怎么做”,因此无需了解存取路径,存取路径的选择以及SQL语句的操作过程由系统自动完成。
  (3)面向集合的操作方式。SQL语言采用集合操作方式,不仅操作对象、查找结果可以是元组的集合,而且一次插入、删除、更新操作的对象也可以是元组的集合。
  (4)以同一种语法结构提供两种使用方式。SQL语言既是自含式语言,又是嵌入式语言。作为自含式语言,它能够独立地用于联机交互的使用方式,也能够嵌入到高级语言程序中,供程序员设计程序时使用。
  (5)语言简捷,易学易用。
2. [/b]试述SQL的定义功能。[/b]
  答:
   SQL的数据定义功能包括定义表、定义视图和定义索引。
   SQL语言使用CREATE TABLE语句定义建立基本表,;ALTER TABLE语句修改基本表定义,DROP TABLE语句删除基本表;建立索引使用CREATE INDEX语句建立索引, DROP INDEX语句删除索引表;SQL语言使用CREATE VIEW命令建立视图,DROP VIEW语句删除视图。
  
3. [/b]用SQL语句建立第3章习题3中的四个表。[/b]
  答:
   对于S表:S( SNO,SNAME,STATUS,CITY);
   建S表
   CREATE TABLE S
   (SNO CHAR(3),
   SNAME CHAR(10),
   STATUS CHAR(2),
   CITY CHAR(10));
   P(PNO,PNAME,COLOR,WEIGHT);
   建P表
   CREATE TABLE P
   (PNO CHAR(3),
   PNAME CHAR(10),
   COLOR CHAR(4),
   WEIGHT INT);
   J(JNO,JNAME,CITY);
   建J表
   CREATE TABLE J
   (JNO CHAR(3),
   JNAME CHAR(10),
   CITY CHAR(10));
   SPJ(SNO,PNO,JNO,QTY);
   建SPJ表
   CREATE TABLE SPJ
   (SNO CHAR(3),
   PNO CHAR(3),
   JNO CHAR(3),
   QTY INT);
  
4. [/b]针对上题中建立的四个表试用SQL语言完成第3章习题3中的查询。[/b]
   答:
  (1) 求供应工程J1零件的供应商号码SNO;
   SELECT SNO
   FROM SPJ
   WHERE JNO=‘J1’;
  (2) 求供应工程J1零件P1的供应商号码SNO;
   SELECT SNO
   FROM SPJ
   WHERE JNO=‘J1’
   AND PNO=‘P1’;
  (3) 求供应工程J1零件为红色的供应商号码SNO;
   SELECT SNO
   FROM SPJ
   WHERE JNO=‘J1’
   AND PNO IN
   (SELECT PNO
   FROM P
   WHERE COLOR=‘红’);
   或
   SELECT SNO
   FROM SPJ,P
   WHERE JNO=‘J1’
   AND SPJ.PNO=P.PNO
   AND COLOR=‘红’;
  (4) 求没有使用天津供应商生产的红色零件的工程号JNO;
  解析:
   用SQL语言表示如下:
   SELECT JNO
   FROM J
   WHERE NOT EXISTS
   (SELECT *
   FROM SPJ
   WHERE SPJ.JNO=J.JNO
   AND SNO IN
   (SELECT SNO
   FROM S
   WHERE CITY=‘天津’)
   AND PNO IN
   (SELECT PNO
   FROM P
   WHERE COLOR=‘红’));
   或
   SELECT JNO
   FROM J
   WHERE NOT EXISTS
   (SELECT *1
   FROM SPJ, S, P
   WHERE SPJ.JNO=J.JNO
   AND SPJ.SNO=S.SNO
   AND SPJ.PNO=P.PNO
   AND S.CITY=‘天津’
   AND P. COLOR=‘红’);
   注意:从 J 表入手,以包含那些尚未使用任何零件的工程号。
  (5) 求至少用了供应商S1所供应的全部零件的工程号JNO 。
  解析:
  用SQL语言表示如下:
   SELECT DISTINCT JNO
   FROM SPJ SPJZ
   WHERE NOT EXISTS
   (SELECT *
   FROM SPJ SPJX
   WHERE SNO='S1'
   AND NOT EXISTS
   (SELECT *
   FROM SPJ SPJY
   WHERE SPJY.PNO=SPJX.PNO
   AND SPJY.JNON=SPJZ.JNO
   AND SPJY.SNO=’S1’));
   AND SPJY.SNO='S1' ));
  
5. [/b]针对习题3中的四个表试用SQL语言完成以下各项操作:[/b]
   (1)找出所有供应商的姓名和所在城市。
   (2)找出所有零件的名称、颜色、重量。
   (3)找出使用供应商S1所供应零件的工程号码。
   (4)找出工程项目J2使用的各种零件的名称及其数量。
   (5)找出上海厂商供应的所有零件号码。
   (6)找出使用上海产的零件的工程名称。
   (7)找出没有使用天津产的零件的工程号码。
   (8)把全部红色零件的颜色改成蓝色。
   (9)由S5供给J4的零件P6改为由S3供应,请作必要的修改。
   (10)从供应商关系中删除S2的记录,并从供应情况关系中删除相应的记录。
   (11)请将 (S2,J6,P4,200) 插入供应情况关系。
   答:
   (1) 找出所有供应商的姓名和所在城市。
   SELECT SNAME, CITY
   FROM S;
   (2) 找出所有零件的名称、颜色、重量。
   SELECT PNAME, COLOR, WEIGHT
   FROM P;
   (3) 找出使用供应商S1所供应零件的工程号码。
   SELECT JNO
   FROM SPJ
   WHERE SNO=‘S1’;
   (4) 找出工程项目J2使用的各种零件的名称及其数量。
   SELECT P.PNAME, SPJ.QTY
   FROM P, SPJ
   WHERE P.PNO=SPJ.PNO
   AND SPJ.JNO='J2';
   (5) 找出上海厂商供应的所有零件号码。
   SELECT DISTINCT PNO
   FROM SPJ
   WHERE SNO IN
   (SELECT SNO
   FROM S
   WHERE CITY='上海');
   (6) 找出使用上海产的零件的工程名称。
   SELECT JNAME
   FROM J, SPJ, S
   WHERE J. JNO=SPJ. JNO
   AND SPJ. SNO=S.SNO
   AND S.CITY='上海';
   或
   SELECT JNAME
   FROM J
   WHERE JNO IN
   (SELECT JNO
   FROM SPJ, S
   WHERE SPJ. SNO=S.SNO
   AND S.CITY='上海');
   (7) 找出没有使用天津产的零件的工程号码。
   SELECT JNO
   FROM J
   WHERE NOT EXISTS
   (SELECT *
   FROM SPJ
   WHERE SPJ.JNO=J.JNO AND SNO IN
   (SELECT SNO
   FROM S
   WHERE CITY=‘天津’));
   或
   SELECT JNO
   FROM J
   WHERE NOT EXISTS
   (SELECT *1
   FROM SPJ, S
   WHERE SPJ.JNO=J.JNO AND SPJ.SNO=S.SNO AND S.CITY=‘天津’);
   (8) 把全部红色零件的颜色改成蓝色。
   UPDATE P
   SET COLOR='蓝'
   WHERE COLOR='红' ;
   (9) 由S5供给J4的零件P6改为由S3供应,请作必要的修改。
   UPDATE SPJ
   SET SNO='S3'
   WHERE SNO='S5' AND JNO='J4' AND PNO='P6';
   (10) 从供应商关系中删除S2的记录,并从供应情况关系中删除相应的记录。
   DELETE
   FROM SPJ
   WHERE SNO='S2';
   或
   DELETE
   FROM S
   WHERE SNO='S2';
  解析:注意删除顺序,应该先从SPJ表中删除供应商S2所供应零件的记录,然后从从S表中删除S2。
   (11) 请将 (S2,J6,P4,200) 插入供应情况关系。
   INSERT INTO SPJ(SNO, JNO, PNO, QTY)
   VALUES (S2,J6,P4,200);
   或
   INSERT INTO SPJ
   VALUES (S2,P4,J6,200);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息