1、最基本的Select语句:

Select [Top n [With Ties]]

<*|Column_Name [As <Alias>][, ...n]>

From <Table_name>

Order by <Column_Name [DESC]>[, ...n]

1)*(星号)表示所有列,在选择特定列时可以在结果集中更改显示的列名

Select * from Products

Select ProductID,ProductName,CategoryID,UnitPrice
From Products

Select ProductID As ID,ProductName As Name,CategoryID,UnitPrice As Price
From Products

2)在结果集中可以使用表达式计算列

Select ProductID,ProductName,CategoryID,UnitPrice,
OutPrice=UnitPrice*1.2
From Products

3)Order by对结果集中的列进行排序,如果倒序,加DESC,如果是多列,选按第一列排序,如果第一列相同,按第二列排序,依此类推

Select ProductID,ProductName,CategoryID,UnitPrice
From Products
Order by CategoryID,Unitprice Desc

4)Top n:显示结果集中的前n行,使用Top n时可以不存在Order by;Top n With Ties:如果第n行后存在与第n行相等的值,则也显示这些行,使用Top n With Ties时,一定要有Order by。

Select Top 12 
ProductID,ProductName,CategoryID,UnitPrice
From Products

Select Top 12 With Ties
ProductID,ProductName,CategoryID,UnitPrice
From Products
Order By UnitPrice

2、where条件子句:

使用where时后接条件表达式,条件表达式可以是:

1)使用比较操作符连接的条件

2)使用逻辑操作符连接的条件

3)使用Between...and连接的条件:
where c betweeb v1 and v2相当于where c>=v1 and c<=v2

4)使用in:
where c in(v1,v2,v3)相当于where c=v1 or c=v2 or c=v3

5)使用Is Null或Is Not Null

6)使用like做字符串的模糊查询,其中支持的通配符有:
下划线,表示任意单一字符;
星号,表示任意多个任意字符;
[<list>],表示单一字符,字符必须是列表中存在的字符;
[^<list>],表示单一字符,字符必须是列表中不存在的字符;

3、汇总和分类汇总

1)使用聚集函数进行数据汇总,使用Group by <Column_Name [, ...n]>进行分类汇总

Select sum(UnitPrice) as [SUM]
From Products

Select CategoryID, sum(UnitPrice) as [SUM]
From Products
group by CategoryID

2)查询的列必须是在Group By中出现的类

3)必须按条件语句(where)、分类汇总语句(group by)、排序语句(order by)的顺序查询。系统也将按照条件语句(where)、分类汇总语句(group by)、排序语句(order by)的顺序执行。

Select CategoryID,sum(UnitPrice) as [SUM]
From Products
Where ProductID<50
group by CategoryID
Order By [Sum] Desc

4)如果对汇总结果实现条件,使用Having子句,不可以使用Where条件。

4、关于排名等的函数

在SQL Server中新引入的函数:Rank、Dense_Rank、Row_Number、NTile(n)

Select ProductID,ProductName,UnitPrice,
    Rank() over(Order By UnitPrice) as [Rank],
    Dense_Rank() over(Order By UnitPrice) as [Dense_Rank],
    Row_Number() over(Order By UnitPrice) as [Row_Number],
    NTile(10) over(Order By UnitPrice) as [NTile]
From Products

5、多表连接

1)使用Where连接的情况

Select ProductID,ProductName,CategoryName
From Products,Categories
where Products.CategoryID=Categories.CategoryID

2)使用Join语句连接

Select ProductID,ProductName,CategoryName
From Products p join Categories c
on p.CategoryID=c.CategoryID

3)Join连接类型:

(1)内连接

(2)外连接

(3)交叉连接

6、子查询

1)做为单值使用:要求查询的结果为单行单列,与比较操作符搭配使用。

declare @sum money
select @sum=sum(UnitPrice) from Products
select * from Products
where UnitPrice>@sum

Select * from 
Where UnitPrice>(Select sum(UnitPrice) from Products)

2)做为多值使用:要求查询的结果为单列,与In操作符搭配使用。

Select p.* from
Products p join Categories c on p.CategoryID=c.CategoryID
where CategoryName like 'c%'

Select * from Products 
where CategoryID in 
(Select CategoryID from Categories
where CategoryName like 'c%')

3)做为结果集(也可以简单地理解为一个“表”)使用。

Select ProductID,ProductName,UnitPrice
from
(
    Select ProductID,ProductName,UnitPrice
        Row_Number() over(order by UnitPrice) as RowNumber
    From Prodcuts
) as t
where RowNumber between 41 and 50

SQL Server(三):Select语句的更多相关文章

  1. SQL Server 基本SELECT语句

    1.SELECT 和 FROM 语句 SELECT表示执行的是查询,接着需要更知道从哪边查询数据,FROM就是限制读取的数据在哪一个表或哪几个表中,这样就构成了一个基本语句. SELECT * FRO ...

  2. SQL Server中SELECT会真的阻塞SELECT吗?

    在SQL Server中,我们知道一个SELECT语句执行过程中只会申请一些意向共享锁(IS) 与共享锁(S), 例如我使用SQL Profile跟踪会话86执行SELECT * FROM dbo.T ...

  3. SQL Server 2017 SELECT…INTO 创建的新表指定到文件组

    原文:SQL Server 2017 SELECT-INTO 创建的新表指定到文件组 SELECT-INTO 在 SQL Server 中也是常见的一个功能,过去用此方法创建的新表只能存储到默认的文件 ...

  4. SQL server 查看什么语句在使用临时表

    SQL server 查询那些语句在使用临时表 最近在日常的性能测试工作中发现,数据库端的IO读写比较大,有规律的2-8M的波动,数据库的版本为 SQL server 2008 sp3. 这些IO操作 ...

  5. 【转载】SQL Server - 使用 Merge 语句实现表数据之间的对比同步

    原文地址:SQL Server - 使用 Merge 语句实现表数据之间的对比同步 表数据之间的同步有很多种实现方式,比如删除然后重新 INSERT,或者写一些其它的分支条件判断再加以 INSERT ...

  6. Sql server的Merge语句,源表中如果有重复数据会导致执行报错

    用过sql server的Merge语句的开发人员都应该很清楚Merge用来做表数据的插入/更新是非常方便的,但是其中有一个问题值得关注,那就是Merge语句中的源表中不能出现重复的数据,我们举例来说 ...

  7. SQL Server 中SELECT INTO 和 INSERT INTO SELECT 两种表复制语句

    1.INSERT INTO SELECT语句 语句形式为:Insert into Table2(field1,field2,...) select value1,value2,... from Tab ...

  8. SQL Server读懂语句运行的统计信息 SET STATISTICS TIME IO PROFILE ON

    对于语句的运行,除了执行计划本身,还有一些其他因素要考虑,例如语句的编译时间.执行时间.做了多少次磁盘读等. 如果DBA能够把问题语句单独测试运行,可以在运行前打开下面这三个开关,收集语句运行的统计信 ...

  9. 转 一篇关于sql server 三种恢复模式的文章,从sql server 的机制上来写的,感觉很不错,转了

    简介 SQL Server中的事务日志无疑是SQL Server中最重要的部分之一.因为SQL SERVER利用事务日志来确保持久性(Durability)和事务回滚(Rollback).从而还部分确 ...

  10. SQL Server三种表连接原理

    在SQL Server数据库中,查询优化器在处理表连接时,通常会使用一下三种连接方式: 嵌套循环连接(Nested Loop Join) 合并连接 (Merge Join) Hash连接 (Hash ...

随机推荐

  1. ruby中excel简单操作以及文件读取操作方法

    # -*-coding:utf-8 -*-#author:kanlijunrequire 'win32ole'require 'fileutils'class ResultAnalyse @@i=0 ...

  2. ARM-ContexM3/4组优先级和子优先级抢占规则

    多个中断源在它们的抢占式优先级相同的情况下,子优先级不论是否相同,如果某个中断已经在服务当中,则其它中断源都不能打断它:只有抢占式优先级高的中断才可以打断其它抢占式优先级低的中断. 就是说, 组优先级 ...

  3. 从click事件理解DOM事件流

    事件流是用来解释页面上的不同元素接受一个事件的顺序,首先要明确两点: 1.一个事件的影响元素可能不止一个(同心圆理论),但目标元素只有一个. 2.如果这些元素都绑定了相同名称的事件函数,我们怎么知道这 ...

  4. maven添加仓库地址

    mvn install时,好多包从mvn中央库下载不下来,搜索到一个maven库地址:http://conjars.org/repo/,将其添加到maven仓库中 编辑 conf/setting.xm ...

  5. [转]云计算研究必备——精典Google论文

    Google云计算技术奠定其在业界的领先地位,收集经典云计算技术公开文章供大家研究学习: 01)GFS-The Google File System 02) Bigtable - A Distribu ...

  6. oracle 邮件发送

    CREATE OR REPLACE PROCEDURE PRC_sendmail(p_receiver VARCHAR2, -- 邮件接收人                               ...

  7. cctype头文件中的一些内容

    1. string 标准库 1.1初始化 string s1; 默认构造函数s1为空 string s2(s1); 将s2初始化为s1的一个副本 string s3(“value”); 将s3初始化为 ...

  8. IOS 本地通知推送消息

    在现在的移动设备中,好多应用性的APP都用到了推送服务,但是有好多推送的内容,比如有的只是单纯的进行推送一个闹钟类型的,起了提醒作 用,有的则是推送的实质性的内容,这就分为推送的内容来区别用什么推送, ...

  9. swiper

    <!DOCTYPE html><html lang="en"><head> <meta charset="utf-8" ...

  10. SqlServer实现先将所有数据排好序再进行分页

    平时,我们对数据进行分页,然后将分页后的数据再进行排序输出.这样做只是针对每次请求,也就是前TOP个数据进行了排序,并不是将数据库中的所有的数据进行了排序.当我们需要将数据库中的所有数据排序后在进行分 ...