0.目录

1.前言

2.最基本的SQL查询语句

3.select...from...

4.order by

5.where

6.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 >= 20 select *
from student
where ssex <> '男'

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 = '女'



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

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

SQL Server学习之路(六):“增删改查”之“查”的更多相关文章

  1. 在SQL Server中对视图进行增删改

    原文:在SQL Server中对视图进行增删改 Lesktop开源IM发布以后,有一些网友问及如何在嵌入IM后与自己网站的用户系统整合(即如何让嵌入的IM直接使用网站原有的用户数据库,而不需要将已有的 ...

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

    0.目录 1.前言 2.通过SSMS添加数据 3.通过SQL语句添加数据 3.1 添加单条数据 3.2 添加多条数据 4.通过其他表导入数据 4.1 通过数据库中的其他表导入数据 4.2 通过exce ...

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

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

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

    0.目录 1.前言 2.通过SSMS删除 3.通过SQL语句删除 3.1 删除单行数据 3.2 删除所有行数据 3.3 删除表和数据库 1.前言 增删改查都是对数据的操作,其中"删" ...

  5. SQL Server学习之路(七):Python3操作SQL Server数据库

    0.目录 1.前言 2.准备工作 3.简单测试语句 4.提交与回滚 5.封装成类的写法 1.前言 前面学完了SQL Server的基本语法,接下来学习如何在程序中使用sql,毕竟不能在程序中使用的话, ...

  6. Sql Server xml 类型字段的增删改查

    1.定义表结构 在MSSM中新建数据库表CommunicateItem,定义其中一个字段ItemContentXml 为xml类型 2.编辑表数据,新增一行,发现xml类型不能通过设计器录入数据. 需 ...

  7. sql server连接oracle并实现增删改查

    需要一个软件ODAC112040Xcopy_64bit 我连接的oracle是11g r2  sqlserver 是 2016 软件下载 https://pan.baidu.com/s/1OpYmpR ...

  8. SQL Server学习之路(一):建立数据库、建立表

    0.目录 1.前言 2.建立数据库 2.1 通过SSMS建立数据库 2.2 通过SQL语句建立数据库 3.建立表 3.1 通过SSMS建立表 3.2 通过SQL语句建立表 1.前言 配置是win10+ ...

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

    1.前言 配置是win10+SQL Server 2012,使用的GUI管理工具是SQL Server 2012自带的SQL Server Management Studio(以下简称SSMS).本系 ...

随机推荐

  1. 动态加载js,css(项目中需要的)

    最近做的一个项目需要加入百度统计,大家都知道百度统计在页面引用就是一坨js,实现方法很简单引用到页面就ok了. 那么问题来了,虽然我不知道百度统计的原理是啥,我的测试服引用了百度统计,百度统计账号里面 ...

  2. Coursera上视频无法播放将怎么解决?

    相信很多朋友在播放Coursera中的视频都会遇到一个问题,视频全黑,点击播放,进度条转了一圈又消失不见. 这时候我们该找找是什么问题啦? 解决方法一: 如果你是FQ看的网课视频,那么你把VPN从au ...

  3. Virtual

    Virtual 作用: 允许在派生类中重新定义与基类同名函数并且可以通过其类的指针或引用来访问基类何派生类的同名函数. 1. 概述简单地说,每一个含有虚函数(无论是其本身的,还是继承而来的)的类都至少 ...

  4. Python 面向对象基础知识

    面向对象基础知识 1.什么是面向对象编程? - 以前使用函数 - 类 + 对象 2.什么是类什么是对象,又有什么关系? class 类: def 函数1(): pass def 函数2(): pass ...

  5. 如何自学Python?

    ​关于如何自学Python,我也是有话说的.来看看? Python具有丰富和强大的类库,常被称为胶水语言.而且语法简洁而清晰,功能强大且简单易学,因而得到了广泛应用和支持.它特别适合专家使用,也非常适 ...

  6. Python概述与安装

    Python 一门面向对象的解释性语言. Python优点 开发效率高(有丰富的各种类库,不需要重复造轮子):可移植性:解释性:免费开源:交互式(IDLE,代码写一行执行一行) Python缺点 相对 ...

  7. MES制造执行系统启动篇

    美国先进制造研究机构(AMR)定义了MES为:"位于上层的计划管理系统与底层的工业控制之间的面向车间层的管理信息系统",它为操作人员/管理人员提供计划的执行.跟踪以及所有资源(人. ...

  8. redis源码分析之有序集SortedSet

    有序集SortedSet算是redis中一个很有特色的数据结构,通过这篇文章来总结一下这块知识点. 原文地址:http://www.jianshu.com/p/75ca5a359f9f 一.有序集So ...

  9. iBatis.net技术实践

    随着大数据技术的兴起和快速发展,人们更多的开始关注HDFS.HBase.Hive等技术.但是谈到强一致性,我们又不得不回归现实,只能继续沿用RDBMS存储强一致性的数据.我们日常接触到的绝大多数的应用 ...

  10. asp.net web api 构建api帮助文档

    1 概要 创建ASP.NET Web Api 时模板自带Help Pages框架. 2 问题 1)使用VS创建Web Api项目时,模板将Help Pages框架自动集成到其中,使得Web Api项目 ...