sql

简介: 四年过去了,让这些sql消失在我的硬盘里... 第三次作业 1、查询仓库表中所有记录 select*from 仓库 2、查询所有有订单的职工号。

四年过去了,让这些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 产品)

还有很多丢失了,呵呵

目录
相关文章
|
14天前
|
SQL
SQL IN
【11月更文挑战第05天】
29 5
|
3月前
|
SQL 数据库 开发者
SQL中为什么不要使用1=1?
【8月更文挑战第11天】在SQL查询语句中,偶尔会遇到使用1=1作为WHERE子句一部分的情况,这种做法看似无害,实则隐藏着一些潜在的问题和更好的替代方案。本文将深入探讨为什么不建议在SQL中使用1=1,并分享更优化的查询构建策略。
85 2
|
4月前
|
SQL 存储 大数据
SQL技巧
【7月更文挑战第26天】SQL技巧
23 1
|
5月前
|
SQL Java 数据库连接
SQL中为什么不要使用1=1
本文探讨了在SQL查询中使用`1=1`的现象及其背后的原因与问题。开发人员有时使用`1=1`作为始终为真的条件来方便动态构建SQL语句,但这样做可能会带来性能问题,尽管现代数据库查询优化器可能能优化掉这种条件,但在复杂查询或特定系统中仍可能影响效率。此外,`1=1`还降低了代码的可读性和跨数据库的兼容性。建议使用更佳实践,如MyBatis的动态SQL标签或Entity Framework的函数式查询,以避免不必要的条件。代码质量的重要性在于每一行代码都应有其明确的目的,避免浪费计算资源。
|
6月前
|
SQL 数据库 索引
SQL常用知识
SQL常用知识
|
6月前
|
SQL 数据库 索引
八、SQL-Limite
八、SQL-Limite
48 0
|
SQL Oracle 关系型数据库
一个需求的三种实现(sql)
一个需求的三种实现(sql)
一个需求的三种实现(sql)
|
SQL 数据库
了解SQL
了解SQL
121 0
|
关系型数据库
|
SQL Go 移动开发
常用SQL收藏
原文:常用SQL收藏 MSSQL Split表字段 --拆分字符串之后匹配结果集合 CREATE FUNCTION [dbo].[fnSplit]( @sInputList VARCHAR(8000) -- List of delimited items , @sDelimi...
784 0