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行数据

3.2 查询指定列

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

3.3 Isnull函数:判断空值

select cno, cname, isnull(cpno, ''), ccredit
from course
-- isnull(cpno,'')将cpno中的NULL值置空,用户就看不到NULL了,只能看见空白。但是列的名字会变为(No column name/无列名)

原表如下:

查询出的表如下:

3.4 使用"+"将"列"与"字符串"连接起来(使用as重命名)

select sno, sname as '姓名',
'学号是' + sno + '的同学叫' + sname +'.' as IDname
from student
-- 使用"+"将两列进行合并
-- 使用"as"将列名重命名

4.order by

原表:

4.1 asc(正序)

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

4.2 desc(倒序)

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

4.3 其他

select *
from FactSalesQuota
order by EmployeeKey desc, SalesAmountQuota
-- 先按EmployeeKey倒序排序,如果EmployeeKey相同再按SalesAmountQuota排序

5.where

5.1 比较运算符

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

5.2 or 或 and

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


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

5.3 Like "%" 或 "_" 通配符
原表:

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

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

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

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

5.4 in 或 not in

select *
from FactCallCenter
where DateKey in ('20101101', '20101105', '20101110')

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

5.5 is null 或 is not null

select *
from DimProduct
where ProductSubcategoryKey is nullselect *
from DimProduct
where ProductSubcategoryKey is not null

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'

6.group by & having

6.1 常用的聚合函数 & 经典查询语句

常用的函数有:
count、Avg、Min、Max、Sum

6.2 count

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

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求和

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的最大值

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 进一步对结果进行筛选

转载于:https://www.cnblogs.com/PyLearn/p/7642236.html

SQL Server学习之路(六):“增删改查”之“查”相关推荐

  1. SQL Server学习之路:建立数据库、建立表

    SQL Server学习之路:建立数据库.建立表 1.前言 配置是win10+SQL Server 2012,使用的GUI管理工具是SQL Server 2012自带的SQL Server Manag ...

  2. SQL Server学习之路(五):“增删改查”之“改”

    0.目录 1.前言 2.通过SSMS修改数据 3.通过SQL语句修改数据 3.1 修改单列数据 3.2 修改多列数据 1.前言 增删改查都是对数据的操作,其中"改"对应的SQL语句 ...

  3. 【数据库】SQL Server学习之路(一)

    (图片来源于网络,侵删) [1]SQL Server简介 现在,我们要开始学习SQL Server了,那么它到底是什么呢? 我们看一下百度百科上面的解释

  4. 【SQL Server 学习系列】-- sql 随机生成中文名字

    [SQL Server 学习系列]-- sql 随机生成中文名字 原文:[SQL Server 学习系列]-- sql 随机生成中文名字 1 DECLARE @fName TABLE(Id INT I ...

  5. python对excel增删改查语句_利用python模拟sql语句对员工表格进行增删改查

    本文主要给大家介绍了关于python模拟sql语句对员工表格进行增删改查的相关内容,分享出来供大家参考学习,下面来一起看看详细的介绍: 具体需求: 员工信息表程序,实现增删改查操作: 可进行模糊查询, ...

  6. python对excel增删改查_利用python模拟sql语句对员工表格进行增删改查

    本文主要给大家介绍了关于python模拟sql语句对员工表格进行增删改查的相关内容,分享出来供大家参考学习,下面来一起看看详细的介绍: 具体需求: 员工信息表程序,实现增删改查操作: 可进行模糊查询, ...

  7. java+SQL做学生信息管理系统(增删改查)

    java+SQL做学生信息管理系统(增删改查) [过程中需要用到的所有工具数据库以及数据库管理器等等] https://pan.baidu.com/s/1cLKJPKXauLCl-Vwah6wFIQ ...

  8. SQL Server 学习系列之五

    SQL Server 学习系列之五 SQL Server 学习系列之一(薪酬方案+基础) SQL Server 学习系列之二(日期格式问题) SQL Server 学习系列之三(SQL 关键字) SQ ...

  9. SQL Server索引进阶第六篇:书签

    SQL Server索引进阶第六篇:书签 索引设计是数据库设计中比较重要的一个环节,对数据库的性能其中至关重要的作用,但是索引的设计却又不是那么容易的事情,性能也不是那么轻易就获取到的,很多的技术人员 ...

最新文章

  1. 20165239其米仁增3
  2. java 双调旅行商 hamiltonian,双调欧几里得旅行商问题(TSP)
  3. svn 面板缺少可选项_TortoiseSVN的设置
  4. Windows Server 2008 R2模板机制作(VMware Workstation)
  5. Java程序员必须掌握的常用Linux命令
  6. 解决通过pip安装好的库无法被第三方编译器调用的问题
  7. C#中拷贝指定文件夹下的所有文件夹目录到指定文件夹中的方法
  8. OpenMV(三)--实时获取摄像头图片
  9. 思科VPP 20.05 dpdk node源码分析
  10. 一文讲清如何正确选择图表,学会后再也不会用错图表
  11. python内存地址替换原理(20秒读懂)
  12. Mac基础知识:Mac日历如何添加提醒事件的教程
  13. PHP程序员7小时学会Kotlin 第二小时
  14. spring读取配置文件
  15. ResNet 网络结构与残差连接介绍
  16. IBM发布基于内存的人工智能计算架构
  17. 三星 android 5.0.2,三星官方ROM Android5.0 Deodex教程
  18. 《数据分析:企业的贤内助[陈哲]》——读书笔记
  19. windows不支持scp指令解决方案
  20. 体现中文编程独有特点的一些探索

热门文章

  1. python超时处理_Python如何实现让一个函数超时退出?
  2. php里面get和post请求,php中GET和POST请求发送几种方法总结
  3. 基于java的随机森林算法_基于Spark实现随机森林代码
  4. 仅需5道题轻松掌握Python命令行相关标准库 | Python技能树征题
  5. 简要说明下maven的作用_Maven资料库–简要指南
  6. python日志记录_Python日志记录
  7. Java字符串equals()
  8. C++基础知识:C++语言中的表达式求值
  9. 高通-物理专线2.0新版资费计划
  10. 【读书笔记】100个Switf必备tips