第六章
1. 简述SQL语言的功能及特点。
SQL是Structured Query Language(结构化查询语言)的缩写。查询是SQL语言的重要
组成部分,但不是全部,SQL还包含数据定义、数据操作和数据控制功能等部分。SQL语言具有如下特点:
(1) SQL是一种一体化的语言。
(2) SQL语言是一种高度非过程化的语言。
(3) SQL语言非常简洁。
SQL语言可以直接以命令方式交互使用,也可以嵌入到程序设计语言中以程序方式
(4) 使用。
2. 利用第5章习题中给出的订货管理
数据库和记录实例,用SQL语句完成下列操作:
(1) 列出在北京的供应商的名称;
select 供应商名 from 供应商表 where 地址= ’北京’
(2) 列出发给供应商S6的订购单号;
select 订购单号 from 订购单表 where 供应商号=’S6’
(3) 列出职工E6发给供应商S6的订购单信息;
select * from 订购单表 where 职工号=’E6’ and 供应商号=’S6’
(4) 列出向供应商S3发过订购单的职工的职工号和仓库号;
select 职工号,仓库号 from 职工表 where 订购单表.供应商号=’S3’ and 订购单表.职工号=职工表.职工号
(5) 列出和职工E1、E3都有联系的北京的供应商信息;
select b.供应商号 ,供应商名,地址 from 订购单表 a ,供应商表 b ,订购单表 c where a.供应商号=b.供应商号 and b.供应商号=c.供应商号 and a.职工号=’E1’ and c.职工号=’E3’ and 地址=’北京’
(6) 列出与工资在1220元以下的职工没有联系的供应商的名称;
select 供应商号,供应商名 from 供应商表 where not(供应商号 in(select 供应商号 from 订购单表 where 订购单表.职工号=职工表.职工号 and 职工表.工资<1220))
(7) 列出向供应商S4发出订购单的仓库所在的城市;
select distinct 城市 from 仓库表 a,职工表 b,订购单表 c where c.供应商号=’S4’ and c.职工号=b.职工号 and b.仓库号=a.仓库号
(8) 列出在上海工作并且向供应商S6发出了订购单的职工号;
select distinct b.职工号 from 仓库表 a,职工表 b,订购单表 c where c.供应商号=’S6’ and c.职工号=b.职工号 and b.仓库号=a.仓库号 and a.城市=’上海’
(9) 列出由工资多于1 230元的职工向北京的供应商发出的订购单号;
select distinct c.订购单号 from 仓库表 a,职工表 b,订购单表 c ,供应商表 d where c.供应商号=d.供应商号 and 地址=’北京’ and c.职工号=b.职工号 and b.工资>1230
(10) 列出仓库的个数;
select count(*) from 仓库表
(11) 列出有最大面积的仓库信息;
select * from 仓库表 where 面积=(select max(面积) from 仓库表)
(12) 列出所有仓库的平均面积;
select avg(面积) as ‘平均面积’ from 仓库表
(13) 列出每个仓库中工资多于1 220元的职工个数;
select 仓库号 ,count(*) from 职工表 group by 仓库号 where 工资>1220
(14) 列出和面积最小的仓库有联系的供应商的个数;
select count(a.供应商号) from 订购单表 a ,职工表 b ,仓库表 c where a.职工号=b.职工号 and b.仓库号=c.仓库号 and c.面积=(select min(面积) from 仓库表)
(15) 列出工资低于本仓库平均工资的职工信息。
select * from 职工表 a where a.工资<(select avg(b.工资) from 职工表 b where a.仓库号=b.仓库号)
3. 利用第5章习题中给出的订货管理
数据库和记录实例,用SQL语句完成以下操作:
(1) 插入一个新的供应商记录(S9,智通公司,沈阳);
insert into 供应商表 (供应商号,供应商名,地址) values("S9","智通公司","沈阳")
(2) 删除目前没有任何订购单的供应商;
delete from 供应商表 where not(供应商号 in (select distinct 供应商号 from 订购单表))
(3) 删除由在上海仓库工作的职工发出的所有订购单;
delete from 订购单表 where 订购单表.职工号=职工表.职工号 and 职工表.仓库号=仓库表.仓库号 and 仓库表.城市=’上海’
(4) 给北京仓库的面积增加100 m2;
update 仓库表 set 面积=面积+100 where 城市="北京"
(5) 给低于所有职工平均工资的职工的工资提高10%。
update 职工表 set 工资=工资*1.1 where 工资<(select avg(工资) from 职工表)