2021-02-28 SQL server实践记录---3Select

本文详细介绍了SQL查询中的各种操作,包括使用相关表进行Select语句的示例,如条件筛选、分组统计、连接查询等。通过具体的表格数据展示了如何查询仓库、职工和订单信息,并探讨了内连接、左连接、右连接和全连接的用法,以及如何利用聚合函数进行数据汇总。此外,还涉及到了运算符优先级、谓词和量词的运用。
摘要由CSDN通过智能技术生成

SQL server实践记录---3Select

举例用相关表

CangKu[cangkuid, cangkuhao, chengshi, mianji, chuangjiansj]

cangkuidcangkuhaochengshimianjichuangjiansj
1wh1北京9002020-08-01 00:00:00.000
2wh2Null6002020-08-02 00:00:00.000
3wh3杭州7002020-08-03 00:00:00.000
4wh4余杭10002020-08-04 00:00:00.000
5wh5青岛5002020-08-05 00:00:00.000
6wh6余杭4002021-02-21 00:00:00.000

DingGouDan[dinggoudid, gongyingsh, zhigonghao, dinggourq, jine]

dinggoudidgongyingshzhigonghaodinggoudhdinggourqjine
6s3zg11or62019-10-07 00:00:00.0004600
7s4zg13or72019-01-27 00:00:00.0004100
8s1zg15or82019-09-27 00:00:00.0004500
12s5zg10or122019-03-04 00:00:00.0007645
16s2zg18or162018-09-26 00:00:00.0001623
18s2zg18or182018-11-28 00:00:00.0007894
19s4zg15or192018-08-16 00:00:00.0004668
20s2zg16or202019-11-24 00:00:00.0006852
21s5zg16or212018-07-18 00:00:00.0004665
22s2zg16or222017-11-17 00:00:00.0008520
24s5zg01or12020-08-02 00:00:00.0005000
25s1zg02or22020-08-01 00:00:00.0008700
26s1zg01or32019-10-13 00:00:00.0005400
27s5zg02or42019-10-10 00:00:00.0005200
32s5zg04or92019-08-14 00:00:00.0004812
33s2zg080r102019-07-13 00:00:00.0004613
36s5zg09or132019-04-07 00:00:00.0002846
37s2zg07or142019-03-05 00:00:00.0005195
38s4zg07or152018-05-09 00:00:00.0008946
40s5zg05or172018-04-19 00:00:00.0007645
47s2zg18or242017-08-28 00:00:00.0002541

GongYingShang[GongYingSID , GongYingSH, GongYingSMC, ChengShi, LianXiDH, Email]

GongYingSIDGongYingSHGongYingSMCChengShiLianXiDHEmail
1s1青岛三元电子厂青岛0532-836698754shangyuan@163.com
2s2济南轻工业集团济南0531-83698754jinan@126.com
3s3济南电子原件有限公司济南0531-83698754jinansddd@126.com
4s4上海天桥厂上海83698684shanghai@sina.com
5s5青岛天桥厂青岛83698684qingdaones@sina.com

ZhiGong[ZhiGongID, ZhiGongHao, CangKuHao, XingMing, XingBie, GongZi]

ZhiGongIDZhiGongHaoCangKuHaoXingMingXingBieGongZi
1zg01wh1刘岗1250
2zg02wh1林安平NULL1310
3zg03wh2张可2250
4zg04wh1吴平台1850
5zg05wh3王峰1350
6zg06wh2吴艳平1500
7zg07wh4张亮1650
8zg08wh2刘或生1750
9zg09wh3王静1250
10zg10wh3李明1825
11zg11wh4鄙平1890
12zg12wh4李宁1459
13zg13wh2吴忠成2150
14zg14wh4周岗1660
15zg15wh1林森NULL1910
16zg16wh2陈璐2155
17zg17wh4Baobo3250
18zg18wh4Angela3335

各种Select语句

select * from zhigong;
select * from zhigong where zhigongid = '1';
select * from zhigong where gongzi > 2000 and cangkuhao != 'wh2';
--运算符优先级	() → Not、+、- → *、/ → 比较运算符 → And → Or
--谓词
select * from zhigong where zhigonghao = 'zg1' or zhigonghao = 'zg2';	--or
select * from zhigong where zhigonghao in ('zg1','zg2','zg3')			--in
select * from zhigong where zhigonghao not in ('zg1','zg2','zg3')		--not
select * from zhigong where xingming like '%艳%';						--模糊 like, '%'-0个或者多个通配,'_'-一个通配,'[]'-指定范围,'[^]'-不属于指定范围,如[^a-z]
select * from zhigong where xingbie is null;							--查询空值
select * from zhigong where gongzi between 1800 and 3000;				--between...and 包含边界(>=、<=)
--消除重复 distinct
select distinct gongzi from zhigong;				--只查询到gongzi,并且只有不同的值
select * from zhigong where cangkuhao > (select cangkuhao from cangku where chengshi = '北京');
select * from zhigong order by gongzi desc;			--降序-desc,升序-asc
--count(), sum(), avg(), max(), min()
select 	max(gongzi) as 最大工资, min(gongzi) as 最小工资, sum(gongzi) as 工资总和, avg(gongzi) as 平均工资, count(*) as 职工人数 from zhigong;
--compute by必须有order by配合使用
select * from zhigong order by cangkuhao
	compute avg(gongzi), max(gongzi), min(gongzi), sum(gongzi) by cangkuhao;	//有点尴尬,版本问题没查出来

分组查询
注意选择的分组需要有实际意义,本例的含义为“查询不同分组的工资情况”

select cangkuhao, 
	   max(gongzi) as maxgongzi, 
	   min(gongzi) as mingongzi,
	   sum(gongzi) as sumgongzi,
	   avg(gongzi) as avggongzi,
	   count(*) as numzhigong
  from zhigong
 group by CangKuHao;

本例分组查询结果如下:
分组查询结果

--查询工资比职工01这个人多的工资总体情况,并且根据仓库号分组(带有条件)
select cangkuhao,max(gongzi),min(gongzi),sum(gongzi),count(*)
  from zhigong
 where gongzi > (select gongzi from zhigong where zhigonghao = 'zg01')
 group by cangkuhao;
--带有Having的分组查询。分组之前要用where,分组后用Having
--本例显示不同仓库的平均工资、工资总和、最大工资、最小工资和职工人数,并且查询结果质保函平均工资大于1760小于2000的.
select cangkuhao, 
	   max(gongzi) as maxgongzi, 
	   min(gongzi) as mingongzi,
	   sum(gongzi) as sumgongzi,
	   avg(gongzi) as avggongzi,
	   count(*) as numzhigong
  from zhigong
  group by CangKuHao
  having avg(gongzi) > 1760 and avg(gongzi) < 2000;

谓词与量词(exists, any, all)

--in和exists
select * from cangku where cangkuhao not in (select cangkuhao from zhigong);	//in
select * from cangku where not exists (select * from zhigong where cangkuhao = cangku.cangkuhao );	
--any
select * from zhigong where gongzi >= any(select gongzi from zhigong where cangkuhao = 'wh2');
--等同于
select * from zhigong where gongzi >= (select min(gongzi) from zhigong where cangkuhao = 'wh2');
--all
select * from zhigong where gongzi >= all(select gongzi from zhigong where cangkuhao = 'wh1');
--等同于
select * from zhigong where gongzi >= (select max(gongzi) from zhigong where cangkuhao = 'wh1');

top

select top 3 * from zhigong order by gongzi desc;			--工资前3的职工信息
select top 40 percent * from dinggoudan order by jine asc;	--金额前40%的订单信息
--查询工资第二高的工资
select (select distinct gongzi from zhigong order by gongzi limit 1,1) as 2stSZ;
--into
select * into zhigong_back from zhigong;					--强迫症  drop table zhigong_back;

集合的运算
要求两个查询结果具有相同的字段个数,并且对应的字段的值要出自同一个值域(相同的数据类型和取值范围)

--并(union)
select * from cangku where chengshi = '北京'
union
select * from cangku where chengshi = '余杭';
--交(intersect)
select cangkuhao from cangku
intersect
select cangkuhao from zhigong;

连接查询
笛卡尔积
关系R(4行5列)和关系S(6行7列)
那么R和S做笛卡尔积后形成T(24行12列)的新关系。
以表zhigong(18行6列)、表cangku(6行5列)为例

select * from zhigong,cangku		--铸就是笛卡尔积
序号ZhiGongIDZhiGongHaoCangKuHaoXingMingXingBieGongZiCangKuIDCangKuHaoChengShiMianJiChuangJianSJ
011zg01wh1刘岗12501wh1北京9002020-08-01 00:00:00.000
022zg02wh1林安平NULL13101wh1北京9002020-08-01 00:00:00.000
033zg03wh2张可22501wh1北京9002020-08-01 00:00:00.000
044zg04wh1吴平台18501wh1北京9002020-08-01 00:00:00.000
10818zg18wh4Angela33356wh6余杭4002021-02-21 00:00:00.000

这是从两张表中显示的所有字段,所以字段有重复,并且产生了108条记录,cangku表6条(行),zhigong表18条(行)
连接查询就是

select * from zhigong,cangku where zhigong.cangkuhao = cangku.cangkuhao		--就这?

内连接、左连接、右连接、全连接
显示面积大于600的仓库号、职工号、城市、面积和职工信息
1)内连接 - - - 只有满足连接条件的记录才会被查询出来

--内连接
select a.cangkuhao, zhigonghao, chengshi, mianji, gongzi from cangku a inner join zhigong b on b.cangkuhao = a.cangkuhao and mianji > 600;		--超连接
select a.cangkuhao, zhigonghao, chengshi, mianji, gongzi from cangku a, zhigong b where b.cangkuhao = a.cangkuhao and mianji > 600;		--普通连接

2)左连接 - - - 除了显示满足条件的记录之外,第一张表中不满足条件的记录也会被查询出来。这时不满足条件的记录中zhigonghao,gongzi为空

select a.cangkuhao, zhigonghao, chengshi, mianji, gongzi from cangku a left join zhigong b on b.cangkuhao = a.cangkuhao and mianji > 600;		--左连接

3)右连接 - - - 除了显示满足条件的记录外,第二张表中不满足条件的记录会被查询出来

select a.cangkuhao, zhigonghao, chengshi, mianji, gongzi from cangku a right join zhigong b on b.cangkuhao = a.cangkuhao and mianji > 600;		--右连接

4)全连接

select a.cangkuhao, zhigonghao, chengshi, mianji, gongzi from cangku a full join zhigong b on b.cangkuhao = a.cangkuhao and mianji > 600;		--全连接
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wxiangjianhuan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值