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

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

复习习题与讲解资料

【主讲教师:钱哨】

一.考试大纲考点要求

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

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

1. 下面的选项不是关系数据库基本特征的是( )。
  1. SQL语言是( )的语言,容易学习 。
  A.过程化 B. 非过程化
C. 格式化 D. 导航式
 
2. SQL 语言的数据操纵语句包括SELECTINSERTUPDATEDELETE等。其中最重要的,也是使用最频繁的语句是( ) 。
  A. SELECT B. INSERT
C. UPDATE D. DELETE
 
3. 在视图上不能完成的操作是( ) 。
  A. 更新视图 B. 查询
C. 在视图上定义新的表 D. 在视图上定义新的视图
 
4. SQL 语言集数据查询、数据操纵、数据定义和数据控制功能于一体,其中,CREATEDROPALTER语句是实现哪种功能( )。
  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 SCN CHAR(8))
  B.ADD TABLE S ALTERCN CHAR(8))
  C.ALTER TABLE S ADDCN CHAR(8))
D.ALTER TABLE S ADD CN CHAR(8))
 
10. 学生关系模式 S S#,SnameSexAge),S的属性分别表示学生的学号、姓名、性别、年龄。要在表S中删除一个属性“年龄”,可选用的SQL语句是( )。
  A. DELETE Age from S
  B. ALTER TABLE S DROP Age
  C. UPDATE S Age
D. ALTER TABLE S Age
 
11. 有关系SS#,SNAMESAGE),CC#,CNAME),SCS#,C#,GRADE)。其中S#是学生号,SNAME是学生姓名,SAGE是学生年龄, C#是课程号,CNAME是课程名称。要查询选修“ACCESS”课的年龄不小于20的全体学生姓名的SQL语句是SELECT SNAME FROM SCSC 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的结构为SSNCNgrade),其中SN为学生名,CN为课程名,二者均为字符型;grade为成绩,数值型,取值范围0100。若要把“张二的化学成绩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的结构为:SSNCNgrade),其中SN为学生名,CN为课程名,二者均为字符型;grade为成绩,数值型,取值范围0100。若要更正王二的化学成绩为85分,则可用( ) 。
  A. UPDATE S
   SET grade85
   WHERE SN=’王二’ AND CN=’化学’
  B. UPDATE S
   SET grade=’ 85
   WHERE SN=’王二’ AND CN=’化学’
  C. UPDATE grade85
   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. 有关系SS#,SNAMESEX),CC#,CNAME),SCS#,C#,GRADE)。其中S#是学生号,SNAME是学生姓名,SEX是性别, C#是课程号,CNAME是课程名称。要查询选修“数据库”课的全体男生姓名的SQL语句是SELECT SNAME FROM SCSC 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# CHAR6 NOT NULLC# CHAR3 NOT NULLSCORE INTEGERNOTE CHAR20));向SC表插入如下行时,( )行可以被插入 。
  A.(’ 201009’ ,’ 111’ ,60,必修)
  B.(’ 200823’ ,’ 101’ ,NULLNULL
  C.NULL,’ 103’ ,80,’选修’)
D. (’ 201132’ ,NULL86,’ ’)
 
18. 假设学生关系SS#,SNAMESEX),课程关系CC#,CNAME),学生选课关系SCS#,C#,GRADE)。要查询选修“Computer”课的男生姓名,将涉及到关系( )。
  A. S B. SSC C. CSC D. SCSC
  
选择题答案:
   (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. 试述SQL语言的特点。
   答:
  (1)综合统一。 SQL语言集数据定义语言DDL、数据操纵语言DML、数据控制语言DCL的功能于一体。
  (2)高度非过程化。用SQL语言进行数据操作,只要提出“做什么”,而无须指明“怎么做”,因此无需了解存取路径,存取路径的选择以及SQL语句的操作过程由系统自动完成。
  (3)面向集合的操作方式。SQL语言采用集合操作方式,不仅操作对象、查找结果可以是元组的集合,而且一次插入、删除、更新操作的对象也可以是元组的集合。
  (4)以同一种语法结构提供两种使用方式。SQL语言既是自含式语言,又是嵌入式语言。作为自含式语言,它能够独立地用于联机交互的使用方式,也能够嵌入到高级语言程序中,供程序员设计程序时使用。
  (5)语言简捷,易学易用。
2. 试述SQL的定义功能。
  答:
   SQL的数据定义功能包括定义表、定义视图和定义索引。
   SQL语言使用CREATE TABLE语句定义建立基本表,;ALTER TABLE语句修改基本表定义,DROP TABLE语句删除基本表;建立索引使用CREATE INDEX语句建立索引, DROP INDEX语句删除索引表;SQL语言使用CREATE VIEW命令建立视图,DROP VIEW语句删除视图。
  
3. SQL语句建立第3章习题3中的四个表。
  答:
   对于S表:S( SNOSNAMESTATUSCITY)
   建S
   CREATE TABLE S
   (SNO CHAR(3)
   SNAME CHAR(10)
   STATUS CHAR(2)
   CITY CHAR(10))
   P(PNOPNAMECOLORWEIGHT)
   建P
   CREATE TABLE P
   (PNO CHAR(3)
   PNAME CHAR(10)
   COLOR CHAR(4)
   WEIGHT INT)
   J(JNOJNAMECITY)
   建J
   CREATE TABLE J
   (JNO CHAR(3)
   JNAME CHAR(10)
   CITY CHAR(10))
   SPJ(SNOPNOJNOQTY)
   建SPJ
   CREATE TABLE SPJ
   (SNO CHAR(3)
   PNO CHAR(3)
   JNO CHAR(3)
   QTY INT)
  
4. 针对上题中建立的四个表试用SQL语言完成第3章习题3中的查询。
   答:
  (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 SPJP
   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=S 1 ));
   AND SPJY.SNO='S1' ))
  
5. 针对习题3中的四个表试用SQL语言完成以下各项操作:
   (1)找出所有供应商的姓名和所在城市。
   (2)找出所有零件的名称、颜色、重量。
   (3)找出使用供应商S1所供应零件的工程号码。
   (4)找出工程项目J2使用的各种零件的名称及其数量。
   (5)找出上海厂商供应的所有零件号码。
   (6)找出使用上海产的零件的工程名称。
   (7)找出没有使用天津产的零件的工程号码。
   (8)把全部红色零件的颜色改成蓝色。
   (9)由S5供给J4的零件P6改为由S3供应,请作必要的修改。
   (10)从供应商关系中删除S2的记录,并从供应情况关系中删除相应的记录。
   (11)请将 (S2J6P4200) 插入供应情况关系。
   答:
   (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) 请将 (S2J6P4200) 插入供应情况关系。
   INSERT INTO SPJ(SNO, JNO, PNO, QTY)
   VALUES (S2J6P4200);
   或
   INSERT INTO SPJ
   VALUES (S2P4J6200);

你可能感兴趣的:(数据库,职场,休闲,数据库专升本,数据库系统概述)