数据库系统概论SQL编程题合集(包含期末题、考研初试题以及复试题)

您所在的位置:网站首页 学生试卷怎么从网上查找 数据库系统概论SQL编程题合集(包含期末题、考研初试题以及复试题)

数据库系统概论SQL编程题合集(包含期末题、考研初试题以及复试题)

2024-07-12 06:13| 来源: 网络整理| 查看: 265

二、现有数据库casemanage中表结构如下图 在这里插入图片描述 1)请编写sql语句对年龄进行升序排列

select * from afinfo order by birth;

2)请编写sql语句查询对“徐”姓开头的人员名单

select * from afinfo where name like '徐%';

3)请编写sql语句修改“陈晓”的年龄为“45”

update afinfo set age=45 and birth=birth-YEAR(45) where name="陈晓";

4)请编写sql删除王芳芳这表数据记录。

delete from afinfo where name="王芳芳";198

二、 用SQL语句完成下列功能(每小题4分,共20分)

设学生—社团数据库有三个基本表: 学生(学号,姓名,年龄,性别); 社团(编号,名称,负责人,办公地点); 参加(学号,编号,参加日期);

其中:

学生表的主码为学号;社团表的主码为编号;外码为负责人,被参照表为学生表,对应属性为学号;参加表的学号和编号为主码;学号为外码,其被参照表为学生表,对应属性为学号;编号为外码,其被参照表为社团表,对应属性为编号。

1)定义社团表,说明其主码和参照关系。 2)建立视图:社团负责人(社团编号,名称,负责人学号,负责人姓名,负责人性别); 3)查询参加科协的学生学号、姓名和性别。 4)求每个社团的参加人数。 5)把对社团表的插入和删除数据的权力赋给用户李平,并允许他将此权力授予其他用户。

1 )

CREATE TABLE 社团 (编号 NUMBER(4) PRIMARY KEY, 名称 VARCHAR(10), 负责人 NUMBER(4), 办公地点 VARCHAR(20), CONSTRAINT FK_FZR FOREIGN KEY (负责人) REFERENCES学生(学号));

2)

CREATE VIEW 社团负责人(社团编号,名称,负责人学号,负责人姓名,负责人性别) AS SELECT 社团.编号,名称,负责人,姓名,性别 FROM 学生,社团,参加 WHERE 学生.学号=参加.学号 and社团.编号=参加.编号;

3)

SELECT 学号,姓名,性别 FROM 学生,社团,参加 WHERE学生.学号=参加.学号 and社团.编号=参加.编号 and名称='科协'

4)

SELECT 编号,COUNT(学号) FROM 参加 GROUP BY 编号

5)

GRANT INSERT , DELETE ON 社团 TO 李平 WITH GRANT OPTION

三、现有如下关系:

职工(职工号,姓名,性别,职务,家庭地址,部门编号) 部门(部门编号,部门名称,地址,电话) 保健(保健卡编号,职工号,检查身体日期,健康状况)

1.查找所有女科长的元组: 2.查找“办公室”的科长姓名和家庭地址: 3.查找“财务科”中健康状况为“良好”的职工姓名和家庭地址: 4.将职工号为“3016”的职工的健康状况改为“一般” 5.删除职工关系表中职工号为“3016”的记录: 6.建立健康状况为“差”的职工的视图: 7.向保健表中增加一个“备注”列,其数据类型为字符型,长度为20。

1.

SELECT ﹡ FROM 职工 WHERE 性别=’女’ AND 职务=’科长’

2.用多表查询方法:

SELECT 姓名,家庭地址 FROM 职工,部门 WHERE 职工.部门编号=部门.部门编号 AND 部门名称=’办公室’ AND 职务=“科长”

或者用子查询方法:

SELECT 姓名,家庭地址 FROM 职工 WHERE 职务=’科长’AND 部门编号 IN (SELECT 部门编号 FROM 部门 WHERE 部门名称=’办公室’)

3.用多表查询方法:

SELECT 姓名,家庭地址 FROM 职工,部门,保健 WHERE 职工.部门编号 = 部门.部门编号 AND 职工.职工号=保健.职工号 AND 健康状况=’良好’AND 部门名称=’财务科’

或者用子查询方法:

SELECT 姓名,家庭地址 FROM 职工 WHERE 部门编号 IN (SELECT 部门编号 FROM 部门 WHERE 部门名称=’财务科’ AND 职工号 IN (SELECT 职工号 FROM 保健 WHERE 健康状况=’良好’))

4.

UPDATE 保健 SET 健康状况=’一般’ WHERE 职工号=’3016’

5.

DELETE FROM 职工 WHERE 职工号=’3016’

6.

CREATE VIEW VW as Select ﹡ From 职工 where 职工号 in(Select 职工号 from 保健 where健康状况=’差’)

7.

ALTER TABLE 保健ADD 备注 CHAR(20)

四、假设教学数据库中已建立三个关系:

学生关系 student(sno, sname, sex, birth, height, class, address) 课程关系course(cno, cname, credit) 选修关系elective(sno, cno, grade)

试用关系代数和SQL语言分别写出下列查询:

(1)检索至少选修课程号为C02和C06的学生学号。(4分) (2)检索没有选修C06课程的学生姓名及其所在班级。(4分) (3)检索学习全部课程的学生姓名。(4分) (4)检索学习课程中包含了S08学生所学课程的学生学号。(4分)

关系代数

(1)πsno(σ1=42=’C02’ 5=’C06’(electiveelective)) (2分) (2)πsname,class(student)-πsname,class(σcno=’C06’(student elective)) (2分) (3)πsname(student (πsno,cno(elective)πcno(course))) (2分) (4)πsno,cno(elective)(πcno(σsno=’S08’(elective))) (2分)

SQL语言

(1)

SELECT FIRST.sno FROM elective FIRST, elective SECOND WHERE FIRST.sno=SECOND.sno AND FIRST.cno=’C02’ AND SECOND.cno=’Co6’ (2分)

(2)

SELECT sname, class FROM student WHERE NOT EXISTS (SELECT * FROM elective WHERE sno=student.sno AND cno=’C06’) (2分)

(3)

SELECT sname FROM student WHERE NOT EXISTS (SELECT * FROM course WHERE NOT EXISTS (SELECT * FROM elective WHERE sno=student.sno AND cno=course.con)) (2分)

(4)

SELECT DISTINCT sno FROM elective X WHERE NOT EXISTS (SELECT * FROM elective Y WHERE Y.sno=’S08’ AND NOT EXISTS (SELECT * FROM elective Z WHERE Z.sno=X.sno AND Z.cno=Y.cno)) (2分)

五、设有学生-课程关系数据库,其数据库关系模式(表名与属性名只取英文名)为:学生S(学号S#,姓名SN,所在系SD,年龄SA)、 课程C(课程号C#,课程名称CN,先修课号PC#)、 学生选课SC(学号S#,课程号C#,成绩G)。

试用关系代数及SQL语言分别写出下列查询: (1)求学号为95001的学生所选的成绩为60分以上的课程号;(6分) (2)求选修了“数据库概论”,并且成绩为80或90的学生的学号和姓名;(6分) (3)求选修了全部课程的学生学号、姓名及其所在系名。(6分)试用SQL语言实现下列操作: (1)找出没有学生选修的课程号及课程名称;(2分) (2)列出选课数超过3门的学生学号、其所选课程数及平均成绩;(2分) (3)删除“数据结构”课程及所有对它的选课情况。(2分)

1.关系代数

(1)Πc#(σS#=’95001’ΛG>=60(SC))(3分) (2)ΠS#,SN(σCN=’数据库概论’ (C) σG=80νG=90 (SC) S)(3分) (3)ΠS#,SN,SD(S (ΠS#,C#(SC)÷ΠC#(C)))(3分)

SQL语言

(1)

SELECT C# FROM SC WHERE S#=’95001’ AND G>=60 (3分)

(2)

SELECT S#, SN FROM S, SC, C WHERE C.C#=SC.C# AND SC.S#=S.S# AND C.CN=’数据库概论’ AND (G=80 OR G=90) (3分)

(3)

SELECT S#, SN, SD FROM S WHERE NOT EXISTS (SELECT * FROM C X WHERE NOT EXISTS (SELECT * FROM SC Y WHERE Y.C#=X.C# AND Y.S#=S.S#)) (3分)

(1)

SELECT C#, CN FROM C WHERE C.C# NOT IN (SELECT SC.C# FROM SC) (2分)

(2)

SELECT S#, COUNT(C#), AVG(G) FROM SC GROUP BY S# HAVING COUNT(C#)>3 (2分)

(3)

DELETE FROM SC WHERE SC.C# IN (SELECT C.C# FROM C WHERE CN=’数据结构’) DELETE FROM C WHERE CN=’数据结构’ (2分)

六、定义一个描述订单的客户号和对应订单明细中产品号关系的视图,客户产品(客户号,产品号)。

[说明] 某企业网上销售管理系统的数据库部分关系模式如下所示:   客户(客户号,姓名,性别,地址,邮编)   产品(产品号,名称,库存,单价)   订单(订单号,时间,金额,客户号)   订单明细(订单号,产品号,数量)   关系模式的主要属性及约束如表2-1所示。

在这里插入图片描述 客户、产品、订单和订单明细关系及部分数据分别如表2-2、2-3、2-4、2-5所示。 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

问题1      请根据如下查询语句,回答问题(d) 和(e)和

SELECT 客户号   FROM 订单,订单明细   WHERE 订单明细.订单号 = 订单.订单号 AND      产品号 =‘02’AND      数量>10;

(d)上述查询语句的功能是什么?请简要回答。(30个字以内)

(e)将上述查询语句转换成对应的关系代数表达式。

问题2   请按题意将下述SQL查询语句的空缺部分补充完整。   按客户购买总额的降序,输出每个客户的客户名和购买总额。   SELECT 客户.客户名,(g)   FROM 客户,订单   WHERE 客户.客户号 = 订单.客户号    (h)    (i); 问题3      用SQL语句完成下述要求。      (1)定义一个描述订单的客户号和对应订单明细中产品号关系的视图,客户产品(客户号,产品号)。(2分)

(2)借助(1)所定义的视图,查询至少购买了01号客户购买的所有产品的客户号。(每空2分,共6分)      SELECT 客户号   FROM 客户产品 客户产品1   WHERE___(j)___    (SELECT*     FROM客户产品 客户产品2     WHERE___(k)___     (SELECT*      FROM客户产品 客户产品3      WHERE___(l)___)); 答案:

[问题1] (每个3分,共6分)  (d)查询一次订购(或购买)产品号为02的数量大于10的客户号  (e)π客户号(订单 σ产品号=‘02’∧数量>10(订单明细)) [问题2] ( 每空1分,共3分)  (g)SUM(金额)AS总额  (h)GROUP BY 客户.客户号  (i)ORDER BY 总额 DESC [问题3](共8分) (1)(2分)

CREATE VIEW 客户产品 AS(     SELECT 客户号,产品号     FROM 订单,订单明细     WHERE 订单明细.订单号=订单.订单号)

(2)(每空2分,共6分)

(j)NOT EXISTS (k)客户号=’01’ AND NOT EXISTS (l)客户产品1.客户号=客户产品3.客户号AND客户产品2.产品号=客户产品3.产品号

七、关系模式如下

商品 P(PNO,PNAME,COLOR,PRICE) 商店 S(SNO,SNAME,CITY) 销售 SP(PNO,SNO,QTY)

(1)用SQL语句实现如下查询:查询出售商品“TV”的商店名SNAME; (2)将上述SQL语句转化为等价的关系代数表达式;

答案:(1)

SELECT  SNAME (3分) FROM P,  S,  SP WHERE P.PNO=SP.PNO AND S.SNO=SP.SNO AND PNAME=’TV’

(2)

лSN(S SP (σPN=’TV’(P))) (3分)

八、关系模式如下:(20分) 商品P(PNO, PN, COLOR, PRICE) 商店S(SNO, SN, CITY) 销售SP(PNO, SNO, QTY)

(1)用关系代数及SQL语言分别写出查询语句,查询销售所有商品的商店名SN。 (2)用关系代数及SQL语言分别写出查询语句,查询不销售商品P2(商品号)的商店名SN。 (3)用SQL语言写出查询语句,查询至少销售商品P1、P2(商品号)两种商品的商店名SN。 (4)将在London销售红色商品的商店号SNO,商店名SN建立视图RLS。

答案: (1)ЛSN (ЛSNO,PNO(SP)÷ЛPNO§ ЛSNO,SN(S))(3分)

SELECT SN FROM S WHERE NOT EXISTS (SELECT * FROM P WHERE NOT EXISTS (SELECT * FROM SP WHERE SNO=S.SNO AND PNO=P.PNO));(3

分)

(2)ЛSN(S)-ЛSN(S σPNO=‘P2’(SP) )(3分)

SELECT SN FROM S WHERE NOT EXISTS (SELECT * FROM SP WHERE PNO=’P2’ AND SNO=S.SNO);(3分)

(3)

SELECT SN FROM S, SP X, SP Y WHERE S.SNO=X.SNO AND X.SNO=Y.SNO AND X.PNO=’P1’ AND Y.PNO=’P2’;(4分)

(4)

CREATE VIEW RLS AS SELECT SNO, SN FROM S, SP, P WHERE S.SNO=SP.SNO AND SP.PNO=P.PNO AND S.CITY=’London’ AND COLOR=’Red’;(4分)

九、学生S(SNO, SN, SEX, AGE) 课程C(CNO, CN, PCNO) PCNO为直接先行课 选课SC(SNO,CNO,G) G为课程考试成绩 (1)用关系代数及SQL语言写出查询语句,查询所有学生都选修的课程名CN。 (2)用关系代数及SQL语言写出查询语句,查询“DB”课成绩在90分以上的学生的姓名。 (3)将选修课程“DB”的学生学号,姓名建立视图SDB。 (4)在学生选课关系SC中,把英语课的成绩提高10%。

答案:

(1)

ЛCN (ЛCNO,SNO(SC)÷ЛSNO(S) ЛCNO,CN©) (3分)

SELECT CN FROM C WHERE NOT EXISTS (SELECT * FROM S WHERE NOT EXISTS (SELECT * FROM SC WHERE SNO=S.SNO AND CNO=C.CNO));(3分)

(2)

ЛSN(S σG>90(SC) σCN=’DB’© )(3分)

SELECT SN FROM S, SC, C WHERE S.SNO=SC.SNO AND SC.CNO=C.CNO AND CN=’DB’AND G>90;(3分)

(3

)CTEATE VIEW SDB AS SELECT SNO, SN FROM S, SC, C WHERE S.SNO=SC.SNO AND SC.CNO=C.CNO AND C.CN=’DB’;(4分)


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3