数据库原理 总复习(6)

2020-05-07 09:30

销售 商品

SALE(S#,G#, QUANTITY)

其属性是商店编号,商品编号,销售数量。 GOODS(G#,GNAME,PRICE)

其属性是商品编号,商品名称,单价。

(1)试写出检索销售“冰箱”的商店的编号和商店名称的SELECT语句表达形式。 (2)试写出下列操作的SQL语句:

从SALE表中,把“开开商店”中销售单价高于1000元的商品的销售元组全部删除。

(3)试写出下列操作的SQL语句:

统计区域名为“EAST”的所有商店销售的每一种商品的总数量和总价值。 要求显示(G#,GNAME,SUM_QUANTITY,SUM_VALUE),其属性为商品编号、

商品名称、销售数量、销售价值。 1、答:解:(1)SELECT语句如下:

SELECT A.S#,SNAME

FROM SHOP A,SALE B,GOODS C

WHERE A.S#=B.S# AND B.G#=C.G# AND GNAME='冰箱'; (2)解:DELETE FROM SALE

WHERE S# IN(SELECT S#

FROM SHOP

WHERE SNAME='开开商店') FROM GOODS

WHERE PRICE>1000);

PRICE*SUM(QUANTITY)AS SUM_VALUE

FROM SHOP A,SALE B,GOODS C

WHERE A.S#=B.S# AND B.G#=C.G# AND AREA='EAST' GROUP BY C.G#,GNAME;

(3)解:SELECT C.G#,GNAME,SUM(QUANTITY)AS SUM_QUANTITY,

AND G# IN(SELECT G#

(注:SELECT子句中的属性C.G#,GNAME应在分组子句中出现) 学生(学号,姓名,系别,专业) 主码为:学号

图书B(图书编号,图书名,出版日期,出版社) 主码为:图书编号 借阅 R(学号,图书编号,借阅日期) 主码为:(学号,图书编号)

外码有:学号 、图书编号

请写出完成下列操作的SQL语句

2、 有图书借阅管理的数据库系统,其数据库关系模式(属性只用英文字母)为:

(1)创建借阅R表,要求指定其主码和外码

Create table 借阅(学号 char(10) foreign key references 学生,

图书编号 char(10) foreign key references 图书, 借阅日期 datetime ,primary key(学号, 图书编号)

(2)向借阅表增加记录(’20030101‘,‘tp201.01’, ‘2006/06/12‘)。 Insert into 借阅 values (’20030101’, ‘tp201.01’, ‘2006/06/12‘) (3)将图书表的查询权授给user用户,并允许其转授给其他人 Grant select on 图书 to uset with grant option (4)、查询借阅了“数据库原理”一书的学生信息。

Select * from 学生 where学号 in (select学号 from 借阅

Where 图书编号 in select 图书编号 from 图书

where 图书名=’数据库原理’

(5)、 查询借阅了关于数据库方面书籍的学生的学号、图书名称和出版社。 Select 学号,图书名,出版社 from 借阅 A, 图书 B

where A. 学号=B. 学号 and 图书名 like ‘%数据库%’ (6)查询2006年5月1日到2006年6月1日期间,图书的借阅情况

Select * from 借阅 where 借阅日期

between ‘2006/05/01’ and ‘2006/06/01’

4、设教学数据库中有四个关系:

教师(教师编号,教师姓名,联系电话) 课程(课程号,课程名,教师编号)

学生(学号,学生姓名,年龄,性别,专业) 选课(学号,课程号,成绩)

(1)创建学生表和选课表,要求:指定每个表的主关键字、外部关键字和check约束。

(2)将所有学生的“高等数学”课程的成绩增加10分。 Update选课 set成绩=成绩+10 where课程号in (

select课程号 from 课程 where课程名=’高等数学’

(3)将课程表的查询和修改权限授给teacher用户,同时允许转授给其它用户。 Grant select,update on 课程 to teacher with grant option (4)查询男生所学课程的课程号和课程名。

Selec 课程号,课程名 FROM 学生,选课,课程

Where学生.学号=选课.学号 and 选课.课程号=课程.课程号 and 性别=’男’

或Selec 课程号,课程名 FROM 课程 where课程号 in (

Select 课程号 from 选课 where 学号 in ( Select学号 from 学生 where 性别=’男’))

(5)查询所有姓王的教师所授课程的课程号和成绩(按课程号排序)。 Select 选课.课程号, 成绩 from 教师,课程,选课 where 教师姓名like ‘王%’

And 教师.教师编号=课程.教师编号 and 课程.课程号=选课.课程号 order by 课程号

(6)统计每门课程的学生选修人数(超过10人的课程才统计)。要求显示课程号和人

数,查询结果按人数降序排列。

Select 课程号 ,count(学号) 人数 from 选课

group by课程号 having count(*)>10 order by 人数 desc (7) 检索所有姓“李”的学生的姓名和年龄

Select 学生姓名,年龄 from 学生 where 学生姓名 like ‘李%’ (8)求男生的最高成绩

Select max(成绩) from 选课 where 学号 in (select 学号 from 学生 Where 性别=’男’)

5、已知有关系:仓库(仓库号,城市,面积) 职工(仓库号,职工号,工资)

订购单(职工号,供应商号,订购单号,订购日期) 供应商(供应商号,供应商名,地址)

(1)创建订购单表,要求:数据类型及长度自定义,并指定其主码和外码 Create table 订购单表(职工号 char(10) foreign key references职工,供应商号 char(10) foreign key references供应商,

订购单号 char(10) primary key, 订购日期 datetime)

(2)修改职工表,增加一个职工名(可变长字符型,最长为20)字段 Alter 职工表 add 职工名 varchar(20) (3)向订购单表中增加一条记录,记录值为:

(’ZG0001’,‘GY0001’, ‘DD0001’,‘2006/06/12’)

Insert into 订购单表 values (’ZG0001‘,‘GY0001’, ‘DD0001’,‘2006/06/12’)

(4)给低于所有职工平均工资的职工提高10%的工资。

UPDATE 职工 SET 工资=工资*1.1 WHERE 工资< (SELECT AVG(工资) FROM 职工)

(5)删除所有目前没有任何订购单的供应商。

DELETE FROM 供应商 WHERE 供应商号 NOT IN

(SELECT 供应商号 FROM 订购单)

(6)将职工表的查询权授给USER用户,并允许其转授给其他人

Grant select on职工表 to USER with grant option (7)检索出向供应商S3发过订购单的职工的职工号和仓库号。

SELECT 职工号,仓库号 FROM 职工 WHERE 职工号 IN

( SELECT 职工号 FROM 订购单 WHERE 供应商号=’S3’ )

(8)检索出目前没有任何订购单的供应商信息。

SELECT * FROM 供应商 WHERE NOT EXISTS

( SELECT * FROM 订购单 WHERE 供应商号=供应商.供应商号 )

(9)检索出和职工E1、E3都有联系的北京的供应商信息。

SELECT * FROM 供应商 WHERE 供应商号 IN

( SELECT 供应商号 FROM 订购单 WHERE 职工号=’E1’ ) AND 供应商号 IN

( SELECT 供应商号 FROM 订购单 WHERE 职工号=’E3’ )

(10)检索出目前和华通电子公司有业务联系的每个职工的工资。

SELECT 职工号,工资 FROM 职工 WHERE 职工号 IN

(SELECT 职工号 FROM 订购单 WHERE 供应商号 IN

(SELECT 供应商号 FROM 供应商 WHERE 供应商名=’华通电子公司’))

(11)检索出与工资在1220元以下的职工没有联系的供应商的名称。

SELECT 供应商名 FROM 供应商 WHERE 供应商号 IN

(SELECT 供应商号 FROM 订购单 WHERE 职工号 NOT IN

(SELECT 职工号 FROM 职工 WHERE 工资 < 1220))

(12)检索出向S4供应商发出订购单的仓库所在的城市。

SELECT 城市 FROM 仓库 WHERE 仓库号 IN

(SELECT 仓库号 FROM 职工 WHERE 职工号 IN

(SELECT 职工号 FROM 订购单 WHERE 供应商号=’S4’))

(13)检索出在上海工作并且向S6供应商发出了订购单的职工号。 SELECT 职工号 FROM 职工 WHERE 仓库号 IN

(SELECT 仓库号 FROM 仓库 WHERE 城市=’上海’) AND 职工号 IN

(SELECT 职工号 FROM 订购单 WHERE 供应商号=’S6’))

(14)检索出在广州工作并且只向S6供应商发出了订购单的职工号。

SELECT 职工号 FROM 职工 WHERE 仓库号 IN

(SELECT 仓库号 FROM 仓库 WHERE 城市=’广州’) AND 职工号 IN (SELECT 职工号 FROM 订购单 WHERE 供应商号=’S6’) AND 职工号 NOT IN (SELECT 职工号 FROM 订购单 WHERE 供应商号!=’S6’) (15)检索出由工资多于1230元的职工向北京的供应商发出的订购单号。 SELECT 订购单号 FROM 订购单 WHERE 职工号 IN

(SELECT 职工号 FROM 职工 WHERE 工资>1230) AND 供应商号 IN (SELECT 供应商号 FROM 供应商 WHERE 地址=’北京’) (16)检索出有最大面积的仓库信息。

SELECT * FROM 仓库 WHERE 面积=(SELECT MAX(面积) FROM 仓库) (17)检索出向S4供应商发出订购单的那些仓库的平均面积。

SELECT AVG(面积) FROM 仓库 WHERE 仓库号 IN (SELECT 仓库号 FROM 职工 WHERE 职工号 IN

(SELECT 职工号 FROM 订购单 WHERE 供应商号=’S4’))

(18)检索出每个城市的供应商个数。

SELECT 地址,COUNT(*) FROM 供应商 GROUP BY 地址 (19)检索出和面积最小的仓库有联系的供应商的个数。

SELECT COUNT(*) FROM 供应商 WHERE 供应商号 IN

(SELECT 供应商号 FROM 订购单 WHERE 职工号 IN

(SELECT 职工号 FROM 职工 WHERE 仓库号 IN

(SELECT 仓库号 FROM 仓库 WHERE 面积=

(SELECT MIN(面积) FROM 仓库))))

(20)插入一个新的供应商元组(S9,智通公司,沈阳)。

INSERT INTO 供应商 VALUES(‘S9’,’智通公司’,’沈阳’) (21)删除由在上海仓库工作的职工发出的所有订购单。

DELETE FROM 订购单 WHERE 职工号 IN

(SELECT 职工号 FROM 职工 WHERE 仓库号 IN

(SELECT 仓库号 FROM 仓库 WHERE 城市=’上海’))


数据库原理 总复习(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:5万立方米煤气柜操作规程(修改)

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: