设为首页 收藏本站
查看: 1096|回复: 0

[经验分享] SQL Server学习之路(六):“增删改查”之“查”

[复制链接]

尚未签到

发表于 2017-12-14 07:33:37 | 显示全部楼层 |阅读模式
0.目录

1.前言

2.最基本的SQL查询语句

3.select...from...


  • 3.1 “*”与“Top num *”
  • 3.2 查询指定列
  • 3.3 Isnull函数:判断空值
  • 3.4 使用"+"将"列"与"字符串"连接起来(使用as重命名)
4.order by


  • 4.1 asc(正序)
  • 4.2 desc(倒序)
  • 4.3 其他
5.where


  • 5.1 比较运算符
  • 5.2 or 或 and
  • 5.3 Like "%" 或 "_" 通配符
  • 5.4 in 或 not in
  • 5.5 is null 或 is not null
  • 5.6 between...and...
6.group by & having


  • 6.1 常用的聚合函数&经典查询语句
  • 6.2 count
  • 6.3 Avg、Min、Max、Sum
  • 6.4 group by & having 的作用
1.前言
  增删改查都是对数据的操作,其中“查”对应的SQL语句便是“select”,也就是“选择”的意思。
  
本篇主要介绍数据的查询,主要使用SQL Server提供的T-SQL语句查询数据。
  
本篇主要参考了慕课网的视频SQL Server基础--T-SQL语句,以及部分参考了网易云课堂的视频SQLServer数据库基础,另外还参照了一下w3school的SQL 教程。如果有时间的话,推荐去看一下视频课程。

2.最基本的SQL查询语句
  最基本的SQL查询语句语法如下:
SELECT <table fields list>  
FROM <table names list>
  
WHERE <row constraints specification>
  
GROUP BY <grouping specification>
  
HAVING <grouping selection specification>
  
ORDER BY <order rules specification>
  Tips & Tricks:
  
1、Select...From... 语句是必须的。
  
2、Where, group by 以及 order by 三个语句不是必须的。
  上面的语法先不必死记硬背,以下会依次介绍他们的功能。

3.select...from...

3.1 “*”与“Top num *”
select * from student  
-- "*"代表选择所有,即查询student表中的所有数据
  
select Top 5 * from student
  
-- "Top num"代表选择前num行,即查询student表中的前num行数据
DSC0000.png


3.2 查询指定列
select sno, sname  
from student
  
-- 如果只想看student表中的学号和姓名列,那就只需要查询指定列
DSC0001.png


3.3 Isnull函数:判断空值
select cno, cname, isnull(cpno, ''), ccredit  
from course
  
-- isnull(cpno,'')将cpno中的NULL值置空,用户就看不到NULL了,只能看见空白。但是列的名字会变为(No column name/无列名)
  原表如下:
  
DSC0002.png
  
查询出的表如下:
  
DSC0003.png

3.4 使用"+"将"列"与"字符串"连接起来(使用as重命名)
select sno, sname as '姓名',
  
'学号是' + sno + '的同学叫' + sname +'.' as>  
from student
  
-- 使用"+"将两列进行合并
  
-- 使用"as"将列名重命名
DSC0004.png


4.order by
  原表:
  
DSC0005.png

4.1 asc(正序)
select *  
from FactSalesQuota
  
order by SalesAmountQuota
  
-- 默认就是asc正序排序(从小到大)
DSC0006.png


4.2 desc(倒序)
select *  
from FactSalesQuota
  
order by EmployeeKey desc
  
-- desc倒序排序(从大到小)
DSC0007.png


4.3 其他
select *  
from FactSalesQuota
  
order by EmployeeKey desc, SalesAmountQuota
  
-- 先按EmployeeKey倒序排序,如果EmployeeKey相同再按SalesAmountQuota排序
DSC0008.png


5.where

5.1 比较运算符
-- 比较运算符有 =、>、<、>=、<=、<>("<>"是不等于的意思)  
select *
  
from student
  
where sdept = '理学院'
  

  
select *
  
from student
  
where sage >= 20
  

  
select *
  
from student
  
where ssex <> '男'
DSC0009.png


5.2 or 或 and
-- and就是两个条件都要满足,or就是满足一个条件即可  
-- and就是两个条件都要满足,or就是满足一个条件即可
  
select *
  
from student
  
where sdept = '理学院' and sage >= 20
  

  
select *
  
from student
  
where sage >= 20 or sno = '0001'
  

  
select *
  
from student
  
where ssex = '男' and ssex = '女'
DSC00010.png

  
可以看到,没有既是"男"又是"女"的学生,所以第三张表没有任何数据。

5.3 Like "%" 或 "_" 通配符
  
原表:
  
DSC00011.png
-- like代表要模糊查找  
-- "%"代表任意符,表示可以有任何东西也可以没有
  
-- "_"代表占位符,就是有且仅有一个字母,但是忘记了那个字母具体是什么
  
select *
  
from FactCallCenter
  
where Shift like 'AM'
  
-- like'Shift'代表精确查找'AM',相当于where Shift = 'AM'
DSC00012.png

select *  
from FactCallCenter
  
where Shift like 'PM%'
  
-- like 'PM%'代表以PM开头的所有字符串
  
-- like '%PM'代表以PM结尾的所有字符串
DSC00013.png

select *  
from FactCallCenter
  
where Shift like '%M%'
  
-- like '%M%'代表M前面和后面都可以有任何东西
DSC00014.png

select *  
from FactCallCenter
  
where Shift like 'PM_'
  
-- like 'PM_'代表PM后面有且仅有一个字母或者数字,不能是空
DSC00015.png


5.4 in 或 not in
select *  
from FactCallCenter
  
where DateKey in ('20101101', '20101105', '20101110')
DSC00016.png

select *  
from FactCallCenter
  
where WageType not in ('weekday')
  
-- 相当于where WageType <> 'weekday'
DSC00017.png


5.5 is null 或 is not null
select *  
from DimProduct
  
where ProductSubcategoryKey is null
  

  
select *
  
from DimProduct
  
where ProductSubcategoryKey is not null
DSC00018.png


5.6 between...and...
  操作符 BETWEEN ... AND 会选取介于两个值之间的数据范围。这些值可以是数值、文本或者日期。(在SQLServer中两个端点的值都会包括)
  
例如:
select *  
from FactCallCenter
  
where DateKey between '20101105' and '20101107'
  
-- DateKey在20101105-20101107范围内的所有数据
  

  
-- 如果要取不在这个范围的则可以用以下语句
  
select *
  
from FactCallCenter
  
where DateKey not between '20101105' and '20101107'
DSC00019.png


6.group by & having

6.1 常用的聚合函数 & 经典查询语句
  常用的函数有:
  
count、Avg、Min、Max、Sum

6.2 count
select count(*)  
from FactCallCenter
  
where Shift = 'AM'
  
-- count用来统计符合条件的行数
DSC00020.png


6.3 Avg、Min、Max、Sum
select  
Avg(LevelOneOperators) as AverageLevelOneOperators
  
,Min(LevelOneOperators) as MinimumLevelOneOperators
  
,Max(LevelOneOperators) as MaximumLevelOneOperators
  
,Sum(LevelOneOperators) as SummaryLevelOneOperators
  
from FactCallCenter
  
-- Avg平均值,Min最小值,Max最大值,Sum求和
DSC00021.png


6.4 group by & having 的作用
select Shift, Max(LevelOneOperators) as LevelOneOperators最大值  
from FactCallCenter
  
where Shift is not null
  
group by Shift
  
-- group by Shift表示对不同的Shift值,分别求LevelOneOperators的最大值
DSC00022.png

select Shift, Max(LevelOneOperators) as LevelOneOperators最大值  
from FactCallCenter
  
where Shift is not null
  
group by Shift
  
having Max(LevelOneOperators) > 2
  
-- group by Shift表示对不同的Shift值,分别求LevelOneOperators的最大值
  
-- having Max(LevelOneOperators) > 2 进一步对结果进行筛选
DSC00023.png

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-423879-1-1.html 上篇帖子: 解决修改重命名sql Server数据库名称 下篇帖子: 如何远程连接SQL Server数据库
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表