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

Content

更正

应用题第8题第7小问:

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

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

/*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解析图片:
南京晓庄学院-数据库系统概论期末复习习题册(3)关系数据库标准语言SQL_第2张图片

题6解析图片:
南京晓庄学院-数据库系统概论期末复习习题册(3)关系数据库标准语言SQL_第3张图片

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

题18解析图片:
南京晓庄学院-数据库系统概论期末复习习题册(3)关系数据库标准语言SQL_第4张图片

二、应用题

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

/*参考解答:*/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

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

/*参考解答:*/1/*查询来自南京或上海的学生学号和姓名*/
select s#,sname
from s
where placeofb in('南京','上海')2/*查询选修课程号为C401001的学号和成绩,并要求对查询结果按成绩降序排列,
如果成绩相同则按学号升序排列*/
select s#,grade
from sc
where c#='c401001'
order by grade desc,s# ---或者写成order by grade desc,s# asc。3/*查询计算机科学或网络工程专业姓张的学生的信息*/
select *
from s,ss
where s.scode#=ss.scode# and ssname in ('计算机科学','网络工程') and sname like '张%'4/*查询缺少了成绩的学生的学号和课程号*/
select s#,c#
from sc
where grade is null5/*查询每个专业的男、女生分别有多少人数*/
select scode#,ssex,count(*)
from s
group by scode#,ssex

南京晓庄学院-数据库系统概论期末复习习题册(3)关系数据库标准语言SQL_第7张图片
南京晓庄学院-数据库系统概论期末复习习题册(3)关系数据库标准语言SQL_第8张图片

/*参考解答:*/1/*找出店员人数不超过100人或者在长沙市的所有商店的代号和商店名*/
select A#,ANAME
from A
where WQTY<=100 or CITY='长沙'2/*找出供应书包的商店名*/
select ANAME
from B,AB,A
where B.B#=AB.B# and AB.A#=A.A# and BNAME='书包'3/*找出至少供应代号为256的商店所供应的全部商品的商店名和所在城市(一般含有“至少”等字眼的题目,
均为难题,考试时出现的概率较低,可跳过!)*/
---记满足条件的商店供应代号为X,则问题等价于不存在这样的商品,供应代号为256的商店供应了,
---而商店X没有供应。
select ANAME,CITY
from A
where not exists(select *
				from B
				where exists(select *
							 from AB w1
							 where A#=256 and B#=B.B#
							 )
				and not exists(select *
							  from AB w2
							  where A#!=256 and A#=A.A# and B#=B.B#
							  )

应用题3,第3小问题解传送门

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

/*参考解答:*/1/*将R、S和T三个关系按关联属性建立一个视图R-S-T*/
create view R-S-T
as
select R.A,B,C,S.D,E,T.F---列名之间用",",条件之间用"and"。
from R,S,T
where R.A=S.A and S.D=T.D
(2/*对视图R-S-T按属性A分组后,求属性C和E的平均值*/
select avg(C),avg(E)
from R-S-T
group by A

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

/*参考解答:*/1/*查询属性C>50时,R中相关联的属性B之值*/
select B
from R,S
where R.A=S.A and C>502/*当属性C=40时,将R中与之相关连的属性B值修改为b4*/
update R
set B='b4'
where A in (select A
		    from S
			where C=40
			)

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

/*参考解答:*/1/*查询“信息系”的学生来自哪些省区*/
select distinct PROV
from s
where SD='信息系'2/*按分数降序排序,输出“英语系”学生选修了“计算机”课程的学生的姓名和分数*/
select SN,GR
from S,SC
where S.SNO=SC.SNO and SD='英语系' and CN='计算机'
order by GR desc

南京晓庄学院-数据库系统概论期末复习习题册(3)关系数据库标准语言SQL_第12张图片
南京晓庄学院-数据库系统概论期末复习习题册(3)关系数据库标准语言SQL_第13张图片

/*参考解答:*/1/*取出所有工程的全部细节*/
select *
from JB
(2/*取出所在城市为上海的所有工程的全部细节*/
select *
from JB
where CITY='上海'3/*取出重量最轻的零件代号*/
select PN
from PB
where WEIGHT=(select min(WEIGHT)
			  from PB
			 )4/*取出为工程J1提供零件的供应商代号*/
select distinct SN
from SPJB
where JN='J1'5/*取出为工程J1提供零件P1的供应商代号*/
select distinct SN
from SPJB
where JN='J1' and PN='P1'6/*取出由供应商S1提供零件的工程名称*/
select distinct JNAME
from JB,SPJB
where JB.JN=SPJB.JN and SN='S1'7/*取出供应商S1提供的零件的颜色*/
select distinct COLOR
from PB,SPJB
where PB.PN=SPJB.PN and SN='S1'8/*取出为工程J1或J2提供零件的供应商代号*/
select distinct SN
from SPJB
where JN in('J1','J2')9/*取出为工程J1提供红色零件的供应商代号*/
select distinct SN
from SPJB,PB
where SPJB.PN=PB.PN and JN='J1' and COLOR='红色'10/*取出为所在城市为上海的工程提供零件的供应商代号*/
select distinct SN
from SPJB,JB
where SPJB.JN=JB.JN and CITY='上海'11/*取出为所在城市为上海或北京的工程提供红色零件的供应商代号*/
select distinct SN
from JB,SPJB,PB
where JB.JN =SPJB.JN and SPJB.PN=PB.PN and CITY in('上海','北京') and color='红色'12/*取出供应商与工程所在城市相同的供应商提供的零件代号*/
select distinct PN
from SB,SPJB,JB
where SB.SN=SPJB.SN and SPJB.JN=JB.JN and SB.CITY=JB.CITY
(13/*取出上海的供应商提供给上海的任一工程的零件的代号*/
select distinct PN
from SB,SPJB,JB
where SB.SN=SPJB.SN and SPJB.JN=JB.JN and SB.CITY='上海' and JB.CITY='上海'14/*取出至少由一个和工程不在同一个城市的供应商提供零件的工程代码*/
select distinct SPJB.JN
from SB,SPJB,JB
where SB.SN=SPJB.SN and SPJB.JN=JB.JN and SB.CITY!=JB.CITY
(15/*取出上海供应商不提供任何零件的工程的代号*/
select distinct JN
from SPJB
where JN not in(select distinct JN
				from SPJB,SB
				where SB.SN=SPJB.SN and SB.CITY='上海'
				)16/*取出这样一些供应商代号,它们能够提供至少一种由红色零件的供应商提供的零件*/
select distinct SN
from SPJB
where PN in(select SPJB.PN
			from SPJB,PB
			where SPJB.PN=PB.PN and color='红色'
			)17/*取出由供应商S1提供零件的工程的代号*/
select distinct JN
from SPJB
where SN='S1'

南京晓庄学院-数据库系统概论期末复习习题册(3)关系数据库标准语言SQL_第14张图片
南京晓庄学院-数据库系统概论期末复习习题册(3)关系数据库标准语言SQL_第15张图片

/*参考解答:*/1/*检索在北京的供应商的名称*/
select SNAME
from SUPPLIER
where ADDR='北京'2/*检索发给供应商S6的订购单号*/
select ONO
from ORDER
where SNO='S6'3/*检索出职工E6发给供应商S6的订购单号*/
select ONO
from ORDER
where ENO='E6' and SNO='S6'4/*检索出向供应商S3发过订购单的职工的职工号和仓库号*/
select ORDER.ENO,WHNO ---或者写成select EMPLOYEE.ENO,WHNO。
from ORDER,EMPLOYEE
where ORDER.ENO=EMPLOYEE.ENO and SNO='S3'5/*检索出目前与S3供应商没有联系的职工信息*/
select *
from EMPLOYEE
where ENO not in(select ENO
				 from ORDER
				 where SNO='S3'
				 )6/*检索出目前没有任何订购单的供应商信息*/
select *
from SUPPLIER
where SNO not in(select SNO
			     from ORDER
			     )7/*检索出和职工E1、E3都有联系的北京的供应商信息*/
select  *  
from  SUPPLIER  
where ADDR=‘北京’ 
and (exists (select * 
			 from ORDER 
			 where SNO=SUPPIER.SNO and ENO=‘E1’)
			 )
and (exists (select * 
			 from  ORDER 
			 where SNO=SUPPIER.SNO and ENO=‘E3’)
			 )8/*检索出和职工E1、E3都有联系的北京的供应商信息*/
select EMPLOYEE.ENO,SALARY
from EMPLOYEE,ORDER,SUPPLIER
where EMPLOYEE.ENO=ORDER.ENO and ORDER.SNO=SUPPLIER.SNO and SNAME='华通电子公司'9/*检索出与工资在1220元以下的职工没有联系的供应商的名称*/
select SNAME
from SUPPLIER
where SNO not in(select SNO
				 from EMPLOYEE,ORDER
				 where EMPLOYEE.ENO=ORDER.ENO and salary<1220
				 )10/*检索出向S4供应商发出订购单的仓库所在的城市*/
select CITY
from WAREHOUSE,EMPLOYEE,ORDER
where WAREHOUSE.WHNO=EMPLOYEE.WHNO and EMPLOYEE.ENO=ORDER.ENO and SNO='S4'11/*检索出在上海工作并且向S6供应商发出了订购单的职工号*/
select ORDER.ENO ---或者写成select EMPLOYEE.ENO。
from WAREHOUSE,EMPLOYEE,ORDER
where WAREHOUSE.WHNO=EMPLOYEE.WHNO and EMPLOYEE.ENO=ORDER.ENO and CITY='上海' 
and SNO='S6'12/*检索出在广州工作并且只向S6供应商发出了订购单的职工号*/
select ENO  
from EMPLOYEE
WHERE WHNO in(select WHNO       and ENO in (select ENO     and not exist(select *
			  from WAREHOUSE                from ORDER              	 from ORDER
			  where CITY='广州'              where SNO='S6'				 where SNO!='S6' 
			  )                 			)							 and ENO=EMPLOYEE.ENO)13/*检索出由工资多于1230元的职工向北京的供应商发出的订购单号*/
select ONO
from EMPLOYEE,ORDER,SUPPLIER
where EMPLOYEE.ENO=ORDER.ENO and ORDER.SNO=SUPPLIER.SNO and SALARY>1230 
and ADDR='北京'14/*检索出仓库的个数*/
select COUNT(*)
from WAREHOUSE
(15/*检索出有最大面积的仓库信息*/
select *
from WAREHOUSE w1
where w1.SIZE=(select MAX(SIZE)
			   from WAREHOUSE w2
			   )16/*检索出所有仓库的平均面积*/
select AVG(SIZE)
from WAREHOUSE
(17/*检索出向S4供应商发出订购单的那些仓库的平均面积*/
select AVG(SIZE)
from WAREHOUSE,EMPLOYEE,ORDER
where WAREHOUSE.WHNO=EMPLOYEE.WHNO and EMPLOYEE.ENO=ORDER.ENO and SNO='S4'18/*检索出每个城市的供应商个数*/
select ADDR,COUNT(*)
from SUPPLIER
group by ADDR
(19/*检索出每个仓库中工资多于1220元的职工个数*/
select WHNO,COUNT(*)
from EMPLOYEE
group by WHNO
having salary>122020/*检索出和面积最小的仓库有联系的供应商的个数*/
select COUNT(*)
from WAREHOUSE w1,EMPLOYEE,ORDER
where w1.WHNO=EMPLOYEE.WHNO and EMPLOYEE.ENO=ORDER.ENO and w1.SIZE=(select MIN(SIZE)
      			   													from WAREHOUSE w2
      			  												   )21/*检索出工资低于本仓库平均工资的职工信息*/
select *
from EMPLOYEE e1
where e1.SALARY<(select AVG(SALARY)
				 from EMPLOYEE e2
				 where e2.WHNO=e1.WHNO
				 group by WHNO
				 )

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

/*参考解答:*/1/*插入一个新的供应商元组(S9,智通公司,沈阳)*/
insert
into SUPPLIER
values('S9','智通公司','沈阳')2/*删除目前没有任何订购单的供应商*/
delete
from SUPPLIER ---或者写成SUPPLIER。
where SNO not in(select SNO
				 from ORDER
				 )3/*删除由在上海仓库工作的职工发出的所有订购单*/
delete
ORDER ---或者写成from ORDER
where ENO in(select ENO
			 from EMPLOYEE,WAREHOUSE
			 where EMPLOYEE.WHNO=WAREHOUSE.WHNO and CITY='上海'
			 )4/*北京的所有仓库增加100m^2的面积*/
update WAREHOUSE
set size=size+100
where CITY='北京'5/*给低于所有职工平均工资的职工提高5%的工资*/
update EMPLOYEE E1
set E1.SALARY=1.05*E1.SALARY
where E1.SALARY<(select avg(SALARY)
				 from EMPLOYEE E2
				 )

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

参考解答(第五题涉及到除运算,可跳过):

1/*检索所有选修了课程号为“C112”的课程的学生的学号和分数*/
select 学号,分数
from 学习
where 课程号='C112'2/*检索“英语”专业学生所学课程的信息,包括学号、姓名、课程名和分数*/
select 学生.学号,姓名,课程名,分数
from 学生,学习,课程
where 学生.学号=学习.学号 and 学习.课程号=课程.课程号 and 专业='英语'3/*检索“数据库原理”课程成绩高于90分的所有学生的学号、姓名、专业和分数*/
select 学生.学号,姓名,专业,分数
from 学生,学习,课程
where 学生.学号=学习.学号 and 学习.课程号=课程.课程号 and 课程名='数据库原理' and 分数>904/*检索没学课程号为“C135”课程的学生信息,包括学号,姓名和专业*/
select 学号,姓名,专业
from 学生
where 学号 not in (select 学号
				  from 学习
				  where 课程号='C135'
				  )5/*检索至少学过课程号为’C135’和’C219’的课程的学生的信息,包括学号、姓名和专业	*/
select 学号,姓名,专业
from 学生
where 学号 in(select x1.学号
			  from 学习 x1,学习 x2
			  where x1.学号=x2.学号 and x1.课程号='C135' and x2.课程号='C219'
			  )		  

南京晓庄学院-数据库系统概论期末复习习题册(3)关系数据库标准语言SQL_第18张图片
南京晓庄学院-数据库系统概论期末复习习题册(3)关系数据库标准语言SQL_第19张图片

/*参考解答(第一小问涉及到除运算,可跳过):*/2/*用关系代数及SQL语言写出查询语句,查询“DB”课成绩在90分以上的学生的姓名*/
select SN
from S,SC,C
where S.SNO=SC.SNO and SC.CNO=C.CNO and CN='DB' and G>903/*将选修课程“DB”的学生学号,姓名建立视图SDB*/
create view SDB
as
select S.SNO,SN
from S,SC,C
where S.SNO=SC.SNO and SC.CNO=C.CNO and CN='DB'4/*在学生选课关系SC中,把英语课的成绩提高10%*/
 update SC
 set G=1.1*G
 where CNO = (select CNO
 			  from C
 			  where CN='英语'
 			  )	

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

/*参考解答:*/1/*用SQL语句建立数据表SC,以(Sno, Cno)作为主键*/
create table SC
(sno char(5),
 cno char(1),
 Grade int,
 primary key(Sno,Cno)
)2/*向Student表插入一条记录(95011, 张三, 女, 19,CS)*/
insert
into Student
values('95011','张三','女',19,'CS')3/*检索计算机系(CS)所有女同学的姓名和年龄*/
select Sname,Sage
from Student
where Sdept='CS' and Ssex='女'4/*检索选修了2号课程学生的学号、姓名、成绩,并按成绩降序排序*/
select SC.Sno,Sname,Grade
from Student,SC
where Student.Sno=SC.Sno and Cno=2
order by Grade desc5/*建立一个信息系(IS)所有不及格(Grade<60)学生的视图*/
create view IS_fail
as
select *
from Student,SC
where Student.Sno=SC.Sno and Sdept='IS' and Grade <60

你可能感兴趣的:(数据库系统概论期末复习习题册)