第三章 关系数据库标准语言SQL语言
- 格式:docx
- 大小:39.99 KB
- 文档页数:5
第三章关系数据库标准语言SQL语言一、选择题1. 在SQL语言中授权的操作是通过________________语句实现的。
C A.CREATEB.REVOKEC.GRANTD.INSERT2. 假定学生关系是S(S#,SNAME,SEX,AGE),课程关系是C(C#,CNAME,TEACHER),学生选课关系是SC(S#,C#,GRADE)。
要查找选修“COMPUTER”课程的“女”学生姓名,将涉及到关系____。
DA.S B.SC,C C.S,SC D.S,C,SC3. 在 MS SQL Server中建立了表 Student(no,name,sex,birthday),no为表的主码,其他属性的默认值为 null。
表中信息如图所示:能够正确执行的插入操作是________。
A No Name Sex Birthday 101 张丽丽女 1967/05/07 102 李芳女 1970/04/14103 王朋男 1982/10/27 A.INSERT INTO student (no,sex) VALUES(102,′男′) B.INSERT INTO student (name,sex) VALUES(′王中′,′男′)D.INSERT INTO student VALUES(106,′王中′,′男′,′1984/03/08′) C.INSERT INTO stude nt VALUES(102,′男′,′王中′,′1984/03/08′) 4. SQL语言中,删除一个表的命令是________。
B A. DELETE B. DROP C. CLEAR D. REMORE 5. 为数据表创建索引的目的是________ AA.提高查询的检索性能B.创建唯一索引C.创建主键D.归类6. 在SQL语言中,条件“RETWEEN 20 AND 30”表示年龄在20到30之间,且________A. 包括20岁和30岁B. 不包括20岁和30岁C. 包括20岁不包括30岁D. 不包括20岁包括30岁7. 为了使索引键的值在基本表中唯一,在建立索引语句中应使用保留字________ AA. UNIQUEB. COUNTC. DISDINCTD. UNION 8. 下面关于SQL语言的说法中,哪一种说法是错误的? ________ AA. 一个SQL数据库就是一个基本表B. SQL语言支持数据库的三级模式结构C. 一个基本表可以跨多个存储文件存放,一个存储文件可以存放一个或多个基本表D. SQL的一个表可以是一个基本表,也可以是一个视图二、简答题1. 什么是基本表?什么是视图?两者的区别和联系是什么?【解答】基本表是本身独立存在的表,在SQL中一个关系就对应一个表。
视图是从一个或1 几个基本表导出的表。
视图本身不独立存储在数据库中,是一个虚表。
即数据库中只存放视图的定义而不存放视图对应的数据,这些数据仍存放在导出视图的基本表中。
视图在概念上与基本表等同,用户可以如同基本表那样使用视图,可以在视图上再定义视图。
2. 试述视图的优点。
⑴视图能够简化用户的操作。
⑵视图使用户能从多种角度看待同一数据。
⑶视图对重构数据库提供了一定程度的逻辑独立性。
⑷视图能够对机密数据提供安全性。
3. 所有的视图是否都可以更新?为什么?不是。
视图是不实际存储数据的虚表,因此对视图的更新,最终要转换为对基本表的更新。
因为有些视图的更新不能惟一有意义地转换成对相应基本表的更新,所以并不是所有的视图都是可更新的。
如对视图S_G(学生的学号及其平均成绩)而言,要修改平均成绩,必须修改各科成绩,但无法知道哪些课程成绩的变化导致了平均成绩的变化。
CREATE VIEW S_G(Sno,Gavg)AS SELECT Sno,AVG(Grade) FROM SC GROUP BY Sno;三、应用题1. 设有两个基本表R(A,B,C)和S(D,E,F),试用SQL查询语句表达下列关系代数表达式:1)πA(R) (2)σB='17'(R)(3)R×S (4))πA,F(σC=D(R×S))(1)SELECT A FROM R(2)SELECT * FROM R WHERE B='17' (3)SELECT A,B,C,D,E,F FROM R,S(4)SELECT A,F FROM R,S WHERE R.C=S.D2. 设有两个基本表R(A,B,C)和S(A,B,C)试用SQL查询语句表达下列关系代数表达式:(1)R∪S (2)R∩S (3)R-S (4)πA,B(R)πB,C(S)(1)SELECT A,B,C FROM R UNIONSELECT A,B,C FROM S (2)SELECT A,B,C FROM R INTERSECTSELECT A,B,C FROM S (3)SELECT A,B,C FROM R WHERE NOT EXISTS (SELECT A,B,C FROM SWHERE R.A=S.A AND R.B=S.B AND R.C=S.C) (4)SELECT R.A,R.B,S.C FROM R,S WHERE R.B=S.B2 3. 根据下面所给的商品库表,写出SQL语句商品表1(商品代号char(8),分类号char(8),单价float数量int) 商品表2(商品代号char(8),产地char(8),品牌char(8) ) (1)从商品库中查询出数量在10和20之间的商品种数 (2)从商品库中查询出每类(即分类名相同)商品的总数量 (3)从商品库中查询出比所有商品单价的平均值要低的全部商品 (4)从商品库中查询出所有商品的不同产地的总数 (1)select * from 商品表1 where 数量 between 10 and 20(2)select 分类名,sum(数量) as 总数量 from 商品表1 group by 分类名(3)select * from 商品表1where 单价< (select avg(单价) from 商品表1 ) (4)select count(distinct产地) as产地数from商品表2 4. 教学数据库的三个基本表如下:学生S(S#,SNAME,AGE,SEX) 学习SC(S#,C#,GRADE) 课程C(C#,CNAME,TEACHER) 试用SQL的查询语句表达下列查询。
(1) 检索LIU老师所授课程的课程号和课程名。
(2) 检索年龄大于23岁的男学生的学号和姓名。
(3) 检索至少选修LIU老师所授课程中一门课程的女学生姓名。
(4) 检索WANG同学不学的课程的课程号。
(5) 检索至少选修两门课程的学生学号。
(6) 检索全部学生都选修的课程的课程号与课程名。
(7) 检索选修课程包含LIU老师所授课的学生学号。
【解答】(1)SELECT C#,CNAME FROM C WHER E TEACHER=‘LIU’ (2)SELECT S#,SNAME FROM S WHERE (AGE>23) AND (SEX=‘M’) (3)SELECT SNAME FROM S WHERE SEX=‘F’ AND S# IN (SELECT S# FROM SC WHERE C# IN(SELECT C# FROM C WHERE TEACHER=‘LIU’)(4)SELECT C# FROM C WHERE C# NOT IN (SELECT C# FROM SC WHERE S# IN(SELECT S# FROM S WHERE SNAME='WANG'))(5)SELECT DISTINCT X.SNO FROM SC X,SC Y WHERE X.SNO=Y.SNO ANDO<>O(6)SELECT C#,CNAME FROM C WHERE NOT EXISTS3(SELECT * FROM S WHERE S# NOT IN(SELECT * FROM SC WHERE SC.C#=C.C#)) (7) SELECT DISTINCT S# FROM SC WHERE C# IN(SELECT C# FROM C WHERE TEACHER='LIU')) 5. 有三个关系如下:教师:(教师编号整数型 ,教师姓名字符型(4) ,职称字符型(10)) ,教师编号是主码。
课程:(课程编号整数型 ,课程名称字符型(20) ),课程编号是主码。
授课:(教师编号整数型,课程编号整数型 ,讲课效果浮点数型),教师编号和课程编号整体是主码,教师编号是参照教师关系的外码,课程编号是参照课程关系的外码。
是完成下列问题:(1) 编写 SQL 语句,创建教师表。
(2) 编写 SQL 语句,创建讲师视图(职称为“讲师”的所有教师)。
(3) 用汉语阐述 SQL 语句的查询结果:SELECT 教师姓名,职称 FROM 教师 WHERE 教师编号IN(SELECT 教师编号 FROM 授课 WHERE 讲课效果>=8.5 ); (4) 编写 SQL 语句,统计所有教师的人数。
(5) 编写 SQL 语句,将课程名称由“多媒体”更改为“多媒体技术” 。
(6) 编写SQL 语句,删除课程名称为“多媒体”的课程信息。
【解答】(1) CREATE TABLE 教师(教师编号 int NOT NULL,教师姓名 char(4),职称char(10),PRIMARY KEY(教师编号)) ;(2) CREATE VIEW 讲师 AS SELECT * FROM 教师 WHERE 职称=’讲师’ ; (3) 查询讲课效果不低于 8.5 分的教师姓名和职称信息。
(4) SELECT COUNT(*) FROM 教师;(5) UPDATE 课程 SET 课程名称=’多媒体技术’ WHERE 课程名称=’多媒体’;(6) DELETE FROM 课程 WHERE 课程名称=’多媒体’; 6. 教学数据库的三个基本表如下:学生S(S#,SNAME,AGE,SEX) 学习SC(S#,C#,GRADE) 课程C(C#,CNAME,TEACHER) 试用SQL的查询语句表达下列查询。
(1)统计有学生选修的课程门数。
(2)求选修C4课程的学生的平均年龄。
(3)求LIU老师所授课程的每门课程的学生平均成绩。
(4)统计每门课程的学生选修人数(超过10人的课程才统计)。
要求输出课程号和选修人数,查询结果按人数降序排列,若人数相同,按课程号升序排列。