南京晓庄学院-数据库系统概论期末复习习题册(3)关系数据库标准语言SQL

本文提供南京晓庄学院数据库系统概论期末复习的习题册,包含选择题和应用题的解析,针对SQL标准语言进行重点复习,帮助学生备考。
摘要由CSDN通过智能技术生成

Content

更正

应用题第8题第7小问:

在这里插入图片描述

感谢网友남산남.的指正!

/*SQL语句基本格式:*/
select [distinct] <目标列表达式>,......
from <表名或视图名>
[where<条件表达式>]
[group by <列名1>,......]
[having <条件表达式>]
[order by <列名2> [desc]

1.创建表:
create table <表名>
(<列名> <数据类型> [列级完整性约束条件],
 ......,
 [表级完整性约束条件]
)
2.删除表:
drop table <表名> [cascade]
3.建立索引:
create [unique] index <索引名> on <表名>(<列名> [<次序>]...)
4.删除索引:
drop index <表名><索引名>
5.外连接:
左外连接:
from 表1 left [outer] join 表2 on 条件
右外连接:
from 表1 right [outer] join 表2 on 条件
完整外连接:
from 表1 full [outer] join 表2 on 条件
6.insert 语句格式:
insert
into <表名> [<属性1>,...]
values(<常量1>,...)
7.update语句格式:
update <表名>
set <列名>=<表达式>,......
[where<条件>]
8.delete 语句格式:
delete
[from]  <表名>
[where<条件>]
9.创建视图:
create view <视图名> [<类名>,......]
as
<子查询>
[with check option]
10.删除视图:
drop view <视图名> [cascade]
/*重点归纳:*/
1、判断一个属性的值是否为空值,用is null或is not null来表示。
2、
a.如果select子句选择列表的列,既有普通列,又有聚集函数的列,则一定要分组,
并且把select选择列表中的普通列,全部放到group by子句的后面。
b.如果select子句后面仅仅只有普通列,没有聚集函数的列,则不一定需要分组,
需要分组时,select子句后面的全部普通列放到group by子句的后面。
3.SQL语句中,列名之间用",",条件之间用and。
4.where子句中是不能用聚集函数作为条件表达式的。
聚集函数只能用于select子句和group by中的having子句。
5.where子句与having短语的区别在于作用对象不同。where子句作用于基本表或视图,
从中选择满足条件的元组。having短语作用于组,从中选择满足条件的组。
6.delete语句删除的是表中的数据,而不是关于表的定义,删除关于表的定义用到的
是SQL语句关键字drop。
7.with check option表示对视图进行update、insert和delete操作时要保证更新、
插入或删除的行满足视图定义中的谓词条件(即子查询中条件表达式,where条件)
8.%(百分号)代表任意长度(长度可以为0)的字符串。_(下划线)代表任意单个字符。
9.子查询的select语句中不能使用order by子句,order by子句只能对最终查询结果排序。
10.集合操作主要包括并操作union、交操作intersect和差操作except.
参加集合操作的各查询结果的列数必须相同;对应项的数据类型也必须相同。
/*错题再练整理:*/
1.关系代数中的π运算符对应SQL语句中的select子句。
2.关系代数中的σ运算符对应SQL语句中的where子句。
3.关系代数中的×(笛卡尔积)运算符对应SQL语句中的from子句。
4.在SQL语言中,用于删除一个视图的命令关键字是drop。
5.在SQL语言中,用alter table语句修改表结构。
6.在聚集函数中遇到空值时,除了COUNT(*)外,都跳过空值而去处理非空值。
7.SQLServer中,COUNT()聚集函数里面,只能写*或者列名,不能写表达式,如
COUNT(Ssex='女')这一写法是错误的。

一、选择题

1.SQL语言是( )的语言,易学习。
A.过程化    B.非过程化    C.格式化    D.导航式  
参考解答:B
解析:(书本P77)
高度非过程化。
  
2.SQL语言是( )语言。
A.层次数据库    B.网络数据库    C.关系数据库    D.非数据库 
参考解答:C
解析:(书本P75)
结构化查询语言(Structured Query Ianguage,SQL)是关系数据库的标准语言。

3.SQL语言具有( )的功能。
A.关系规范化、数据操纵、数据控制    B.数据定义、数据操纵、数据控制
C.数据定义、关系规范化、数据控制    D.数据定义、关系规范化、数据操纵 
参考解答:B
解析:(书本P77)
SQL集数据定义语言、数据操纵语言、数据控制语言的功能为一体,语言风格统一。
  
4.SQL语言具有两种使用方式,分别称为交互式SQL和( )。
A.提示式SQL    B.多用户SQL    C.嵌入式SQL    D.解释式SQL
参考解答:C
解析:(书本P77,见本段代码块下方解析图片)
SQL语言既是独立的语言,又是嵌入式语言。
 
5.假定学生关系是S(S#,SNAME,SEX,AGE),课程关系是C(C#,CNAME,TEACHER),
学生选课关系是SC(S#,C#,GRADE)。要查找选修“COMPUTER”课程的“女”学生姓名,将涉及到关系(  )。
A.S      B.SC,C      C.S,SC      D.S,C,SC  
参考解答:D
                           
6.若用如下的SQL语句创建一个student表:
CREATE TABLE student
(NO Char(4) NOT NULL,
 NAME Char(8) NOT NULL,
 SEX Char(2),
 AGE tinyint
)
可以插入到student表中的是                    。
A.(‘1031’,‘曾华’,男,23)    B.(‘1031’,‘曾华’,NULL,NULL)
C.(NULL,‘曾华’,‘男’,‘23’)  D.(‘1031’,NULL,‘男’,23)  
参考解答:B
解析:(见本段代码块下方解析图片)
A.男为字符类型,没加单引号。
C.没满足“NO非空”和"AGE为tinyint数据类型"的条件。
D.没满足“NAME非空”条件。
                                       
7. SQL语言的数据操纵语句包括select,insert,update和delete等。
其中最重要的,也是使用最频繁的语句是()。
A.select    B.insert   C.update    D.delete
参考解答:A

第8到第10题基于这样的三个表即学生表S、课程表C和学生选课表SC,它们的结构如下:
S(S#,SN,SEX,AGE,DEPT)
C(C#,CN)
SC(S#,C#,GRADE)
其中:S#为学号,SN为姓名,SEX为性别,AGE为年龄,DEPT为系别,C#为课程号,CN为课程名,GRADE为成绩。

8.检索所有比“王华”年龄大的学生姓名、年龄和性别。正确的SQL语句是( )
A.
SELECT SN,AGE,SEX 
FROM S
WHERE AGE>(SELECT AGE
    		FROM S
            WHERE SN='王华'
           )
B.
SELECT SN,AGE,SEX
FROM S
WHERE SN='王华'
C.
SELECT SN,AGE,SEX 
FROM S
WHERE AGE>(SELECT AGE
            WHERE SN='王华'
           )
D.
SELECT SN,AGE,SEX 
FROM S
WHERE AGE>王华.AGE
参考解答:A

9、检索选修课程“C2”的学生中成绩最高的学生的学号。正确的SQL语句是          。
A.
SELECT S# 
FORM SC    
WHERE C#='C2'AND GRAD>=(SELECT GRADE 
   					     FORM SC
                		 WHERE C#='C2'
                		 )
B.
SELECT S# 
FORM SC
WHERE C#='C2' AND GRADE IN(SELECT GRADE
 						      FORM SC
                 		      WHERE C#='C2'
                 		      )
C.
SELECT S# 
FORM SC
WHERE C#='C2' AND GRADE NOT IN(SELECT GRADE
   							   FORM SC
                               WHERE C#='C2'
                               )
D.
SELECT S# 
FORM SC
WHERE C#='C2'AND GRADE>=ALL(SELECT GRADE 
   							 FORM SC
               			     WHERE C#='C2'
               			     ) 
参考解答:D
               					  
10、检索学生姓名及其所选修课程的课程号和成绩。正确的SQL语句是            。 
A.
SELECT S.SN,SC.C#,SC.GRADE
FROM S
WHERE S.S#=SC.S#
B.
SELECT S.SN,SC.C#,SC.GRADE
FROM SC
WHERE S.S#=SC.GRADE
C.
SELECT S.SN,SC.C#,SC.GRADE
FROM S,SC
WHERE S.S#=SC.S#
D.
SELECT S.SN,SC.C#,SC.GRADE
FROM S.SC
参考解答:C

11.视图是一个“虚表”,视图的构造基于(    )
A.基本表     	B.视图   
C.基本表或视图   D.数据字典
参考解答:C
解析:(书本P78,见本段代码块下方解析图片)
视图是从一个或几个基本表导出的表。
视图在概念上与基本表等同,用户可以在视图上再定义视图。

12.关系代数中的π运算符对应SQL语句中的以下哪个子句?(   )
A.SELECT	B.FROM
C.WHERE	D.GROUP BY
参考解答:A

13.关系代数中的σ运算符对应SQL语句中的以下哪个子句?(   )
A.SELECT	B.FROM
C.WHERE	D.GROUP BY
参考解答:C

14.关系代数中的×(笛卡尔积)运算符对应SQL语句中的以下哪个子句?(   )
A.SELECT	B.FROM
C.WHERE	D.GROUP BY
参考解答:B

15.在SQL的排序子句:ORDER BY 总分 DESC, 英语 DESC 表示(  )
A. 总分和英语分数都是最高的在前面
B. 总分和英语分数之和最高的在前面
C. 总分高的在前面,总分相同时英语分数高的在前面
D. 总分和英语分数之和最高的在前面,相同时英语分数高的在前面
参考解答:C

16.使用查询语句:
SELECT STUDENT.学号, STUDENT.姓名, SUM(分数) 
FROM STUDENT, GRADE
WHERE STUDENT.学号=GRADE.学号
GROUP BY STUDENT.学号, STUDENT.姓名
查询结果是()
A.按学号分类的每个学生所有课程成绩的总分
B.按学号分类的每个学生各课程成绩
C.全体学生的各课程分类的成绩总分
D.所有学生的所有课程成绩总分
参考解答:A

17.在T-SQL语言中,用于删除一个视图的命令的关键字是()
A. DELETE    B. DROP   C. CLEAR  D. REMOVE
参考解答:B
解析:(书本P124)
删除视图语句格式:
drop view <视图名> [cascade]

18. T-SQL语言的GRANT和REMOVE语句主要是用来维护数据库的()
A.完整性   B.可靠性    C.安全性    D.一致性
参考解答:C
解析:(书本P141,见本段代码块下方解析图片)

19.SQL语言中,实现数据检索的语句是( )。
A.SELECT      B.INSERT
C.UPDATE      D.DELETE
参考解答:A

20.下列SQL语句中,修改表结构的是( )。
A.ALTER       B.CREATE
C.UPDATE      D.INSERT
参考解答:A
解析:(书本P85)
SQL语言中用alter table语句修改基本表。

21. 用于实现数据存取安全性的SQL语句是( )
A.CREATE TABLE		B.COMMIT	
C.GRANT和REVOKE 	D.ROLLBACK
参考解答:C

题4解析图片:
在这里插入图片描述

题6解析图片:
在这里插入图片描述

题11解析图片:
在这里插入图片描述

题18解析图片:
在这里插入图片描述

二、应用题

在这里插入图片描述

/*参考解答:*/1/*查询201002班男生的信息*/
select *
from s
where class='201002' and ssex='男'2/*查询最低分大于70、最高分小于90的学生的姓名*/
select sname
from s,sc
where s.s#=sc.s#
group by sname
having min(grade)>70 and max(grade)<903/*查询所有女生记录信息,并以班级降序排列*/
select *
from s
where ssex='女'
order by class desc4/*查询选取修数据结构课程的学生姓名及所在专业代码*/
select sname scode#
from s,sc,c
where s.s#=sc.s# and sc.c#=c.c# and cname='数据结构'5/*查询至少有5名学生选修的并以3开头的课程号的平均分*/
select c#,avg(grade)
from sc
where c# like '3%'
group by c#
having count(*)>=5

在这里插入图片描述

/*参考解答:*/1/*查询来自南京或上海的学生学号和姓名*/
select s#,sname
from s
where placeofb in('南京','上海')2/*查询选修课程号为C401001的学号和成绩,并要求对查询结果按成绩降序排列,
如果成绩相同则按学号升序排列*/
select s#,grade
from sc
  • 14
    点赞
  • 62
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值