四年过去了,让这些sql消失在我的硬盘里...
第三次作业
1、查询仓库表中所有记录
select*
from 仓库
2、查询所有有订单的职工号。
select 职工号
from 订购单
where 供应商号 IS NOT NULL
3、查询所有工资1220元以上的职工号。
select 职工号,工资
from 职工
where 工资>=1220
4、查询面积在400-500(包括400和500)之间的仓库号、城市、面积。
select 仓库号,面积,城市
from 仓库
where 面积 BETWEEN 400 AND 500
5、查询上海和北京的仓库。
select 仓库号
from 仓库
where 城市='上海'or 城市='北京'
6、查询所有工厂的供应商号及地址。
select 供应商号,地址
from 供应商
7、查所有有供应商的订单号和订货日期。
select 订购单号,订购日期
from 订购单
where 供应商号 IS NOT NULL
8、查询与供应商S4有订货的职工号、订购单号、订货日期,查询结果按订货日期的降序排列。
select 职工号,订购单号,订购日期
from 订购单
WHERE 供应商号='S4'
ORDER BY 订购日期 DESC
9、查询与供应商S4有订货的职工总人数。
select count(职工号) as 职工总人数
from 订购单
WHERE 供应商号='S4'
10、查询仓库WH2中职工的最高工资。
select max(工资)AS 最高工资
from 职工
WHERE 仓库号='WH2'
11、求各个仓库及相应的职工人数。
select 仓库号,count(职工号)as 人数
from 职工
group by 仓库号
12、查询仓库职工人数在2人(包含2人)以上职工的平均工资。
select 仓库号,count(*)as 人数,avg(工资)as 工资
from 职工
group by 仓库号
having count(*)>=2
13、分组列出每个仓库的职工记录,并统计每个仓库的职工的平均工资。
select 仓库号,职工号,工资
from 职工
order by 仓库号
compute avg(工资) by 仓库号
第四次实验
1、查询每个职工工作城市及工资
select 职工号,城市,工资
from 仓库,职工
where 仓库.仓库号=职工.仓库号
2、查询与职工E1在同一仓库工作的职工号。
select 职工号
from 职工
where 仓库号 IN (select 仓库号 from 职工 where 职工号='E1')
4查询与S4有订单且工资在1220元以上的职工号。
select 职工号
from 订购单
where (供应商号='S4')and
职工号 in (select 职工.职工号 from 职工 where 工资>1220)
5、查询每个订单号、经手订单职工所在仓库号、供应商名称。
select 订购单号,仓库号,供应商名
from 订购单,供应商,职工
where (订购单.供应商号*=供应商.供应商号)and (订购单.职工号=职工.职工号)
--左连接,先满足第一个表的要求
6、找出每个职工超过他所有的订单平均金额的订单号。
select 订购单号
from 订购单 w
where 职工号 in(select 职工号
from 订购单
group by 职工号
having avg(总金额)< w.总金额)
7、查询其他仓库中比WH2某一职工工资少的仓库号和职工号。
10、查询其他仓库中比WH2所有职工工资都少的仓库号和职工号。
SELECT 仓库号,职工号
FROM 职工
WHERE 工资< ALL (SELECT 工资 FROM 职工 WHERE 仓库号='WH2')
11
SELECT 职工号,仓库号
FROM 职工
WHERE 职工号 in (select 职工号 from 订购单 where 供应商号='S4')
12查询与S4没有订单的职工号和仓库号。
select 职工号,仓库号
from 职工
where 职工号 in(select 职工号
from 订购单
where 供应商号='S4')
第五次实验
1、在实验2、3的基础上建立如下存储过程,并为每个存储过程设计返回值。
2、在客户端分别以存储过程和输入SQL语句的方式执行相同的操作,比较使用和不使用存储过程的区别。
(1)查询工资范围在X元到Y元范围内的职工。
(2)查询在某年某月某日之后签订的订购单信息。以日期作为参数。
(3)更新操作。将某仓库的职工工资增加一个量。参数为仓库号和增加的量。
存储过程的建立
(1)查询工资范围在1210元到1230元范围内的职工。
create proc gongzi
as
select * from 职工 where 工资 between 1210 and 1230
运行 gongzi
SQL语句
select * from 职工 where 工资 between 1210 and 1230
(2)查询在2008年1月1日之后签订的订购单信息。以日期作为参数。
create proc riqi
(@ datetime )
as
select *
from 订购单
where 订购日期>('2008/01/01')
SQL 语句
select *
from 订购单
where 订购日期>('2008/01/01')
实验6
create PROCedure sp_gettemp;1
AS
select * FROM 职工
create PROCedure sp_gettemp;2
(1230 int)
AS
select * FROM 职工 where 工资>1230
create PROCedure sp_gettemp;3
(@1230 int=null)
AS
if @1230 is null
begin
print'必须提供一个数值作参数!'
return 13
end
if not exists(select * from 职工 where 工资>1230)
begin
print'没有满足条件的记录!'
return -103
end
select * FROM 职工 where 工资>1230
return 0
create trigger chufaqi
on 仓库
for insert
as print '插入了一个仓库元组'
insert into 仓库 values('WH6','海南','230')
CREATE TRIGGER CHARU
ON 职工 FOR INSERT
AS
IF NOT EXISTS (SELECT*FROM 仓库 WHERE 仓库号=
(select 仓库号 from inserted))
begin
raiserror('非法仓库号!',1,1)
rollback transaction
end
create proc tishi
(@salsry int =Null)
as
if 2000 is null
begin
print '必须提供一个数值作为参数!'
return 10
end
if not exists (select * from 职工 where 工资>2000)
begin
print '没有满足条件的记录'
return -103
end
select * from 职工 where 工资>2000
return 0
实验七
5、SELECT * FROM 产品 WHERE 单价>13 AND (产品名称='P9' OR 产品名称='P7')
6、SELECT 客户名称,联系人,电话,订单号
FROM 客户,订购单
WHERE (订购日期='2008-10-20' AND 客户.客户号=订购单.客户号)
7、SELECT 客户名称,联系人,电话
FROM 客户,订购单,订单名细,产品
WHERE (产品名称='P1'AND 产品.产品号=订单名细.产品号
AND 订单名细.订单号=订购单.订单号
AND 订购单.客户号=客户.客户号)
或
SELECT 客户名称,联系人,电话
FROM 客户
WHERE 客户号 IN
(SELECT 客户号
FROM 订购单
WHERE 订单号 IN
(SELECT 订单号
FROM 订单名细
WHERE 产品号 IN
(SELECT 产品号
FROM 产品
WHERE 产品名称='P1'
)))
8、SELECT *
FROM 订单名细
WHERE 产品号 IN]
(SELECT 产品号
FROM 产品
WHERE 产品名称='P1'
)
9、SELECT * FROM 订单名细 WHERE 数量>180
10、SELECT *
FROM 产品
WHERE 单价 IN
(SELECT 单价
FROM 产品
WHERE 规格说明='110')
11、SELECT *
FROM 产品
WHERE 单价 BETWEEN 13 AND 15
12、SELECT *
FROM 客户
WHERE 客户名称 LIKE '%莉莉'
13、SELECT *
FROM 客户
WHERE 客户名称 NOT LIKE '%莉莉'
14、SELECT *
FROM 产品
ORDER BY 单价
15、SELECT *
FROM 产品
ORDER BY 产品名称,单价
16、select COUNT (DISTINCT 产品名称) from 产品
17、SELECT SUM(数量)
FROM 订单名细
WHERE 产品号 IN
(SELECT 产品号
FROM 产品
WHERE 产品名称='P5')
或
SELECT SUM(数量)
FROM 产品,订单名细
WHERE (产品名称='P5' AND 产品.产品号=订单名细.产品号)
18、SELECT SUM(单价*数量)
FROM 订单名细 ,产品
WHERE 产品名称='P5' AND 订单名细.产品号=产品.产品号
19、SELECT 产品名称,COUNT(订单号),AVG(单价*数量)
FROM 订单名细,产品
WHERE 订单名细.产品号=产品.产品号
20、SELECT 订单号,COUNT(DISTINCT 订单名细.产品号),SUM(单价*数量)
FROM 订单名细,产品
WHERE 订单名细.产品号=产品.产品号
GROUP BY 订单号
23、SELECT 客户名称,联系人,电话,订单号
FROM 客户,订购单
WHERE (订购日期 IS NULL AND 客户.客户号=订购单.客户号)
24、SELECT 客户名称,联系人,电话,订单号,订购日期
FROM 客户,订购单
WHERE (订购日期 > '2008-11-02' AND 客户.客户号=订购单.客户号)
25、SELECT OUTA.产品号,OUTA.产品名称,OUTA.规格说明,OUTA.单价
FROM 产品 OUTA
WHERE 单价=
(SELECT MAX(单价)
FROM 产品 INNERA
WHERE OUTA.产品名称=INNERA.产品名称)
26、SELECT 客户名称
FROM 客户
WHERE NOT EXISTS
(SELECT *
FROM 订购单
WHERE 客户号=订购单.客户号 AND 订购日期 IS NOT NULL
)
27、SELECT *
FROM 客户
WHERE EXISTS
(SELECT *
FROM 订购单
WHERE 客户号=订购单.客户号 AND 订购日期 IS NOT NULL
)
28、SELECT *
FROM 产品
WHERE 单价 = ANY
(SELECT 单价*0.5
FROM 产品)
29、SELECT *
FROM 产品
WHERE 单价 = ALL
(SELECT MAX(单价)
FROM 产品)
还有很多丢失了,呵呵