SQL Server(三):Select语句
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<=v24)使用in:
where c in(v1,v2,v3)相当于where c=v1 or c=v2 or c=v35)使用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语句的更多相关文章
- SQL Server 基本SELECT语句
1.SELECT 和 FROM 语句 SELECT表示执行的是查询,接着需要更知道从哪边查询数据,FROM就是限制读取的数据在哪一个表或哪几个表中,这样就构成了一个基本语句. SELECT * FRO ...
- SQL Server中SELECT会真的阻塞SELECT吗?
在SQL Server中,我们知道一个SELECT语句执行过程中只会申请一些意向共享锁(IS) 与共享锁(S), 例如我使用SQL Profile跟踪会话86执行SELECT * FROM dbo.T ...
- SQL Server 2017 SELECT…INTO 创建的新表指定到文件组
原文:SQL Server 2017 SELECT-INTO 创建的新表指定到文件组 SELECT-INTO 在 SQL Server 中也是常见的一个功能,过去用此方法创建的新表只能存储到默认的文件 ...
- SQL server 查看什么语句在使用临时表
SQL server 查询那些语句在使用临时表 最近在日常的性能测试工作中发现,数据库端的IO读写比较大,有规律的2-8M的波动,数据库的版本为 SQL server 2008 sp3. 这些IO操作 ...
- 【转载】SQL Server - 使用 Merge 语句实现表数据之间的对比同步
原文地址:SQL Server - 使用 Merge 语句实现表数据之间的对比同步 表数据之间的同步有很多种实现方式,比如删除然后重新 INSERT,或者写一些其它的分支条件判断再加以 INSERT ...
- Sql server的Merge语句,源表中如果有重复数据会导致执行报错
用过sql server的Merge语句的开发人员都应该很清楚Merge用来做表数据的插入/更新是非常方便的,但是其中有一个问题值得关注,那就是Merge语句中的源表中不能出现重复的数据,我们举例来说 ...
- SQL Server 中SELECT INTO 和 INSERT INTO SELECT 两种表复制语句
1.INSERT INTO SELECT语句 语句形式为:Insert into Table2(field1,field2,...) select value1,value2,... from Tab ...
- SQL Server读懂语句运行的统计信息 SET STATISTICS TIME IO PROFILE ON
对于语句的运行,除了执行计划本身,还有一些其他因素要考虑,例如语句的编译时间.执行时间.做了多少次磁盘读等. 如果DBA能够把问题语句单独测试运行,可以在运行前打开下面这三个开关,收集语句运行的统计信 ...
- 转 一篇关于sql server 三种恢复模式的文章,从sql server 的机制上来写的,感觉很不错,转了
简介 SQL Server中的事务日志无疑是SQL Server中最重要的部分之一.因为SQL SERVER利用事务日志来确保持久性(Durability)和事务回滚(Rollback).从而还部分确 ...
- SQL Server三种表连接原理
在SQL Server数据库中,查询优化器在处理表连接时,通常会使用一下三种连接方式: 嵌套循环连接(Nested Loop Join) 合并连接 (Merge Join) Hash连接 (Hash ...
随机推荐
- 3.2 一般的哈尔空间Vj
例3.2给予我们继续往下面做的动力.很明显的我们对于g(t)的逼近还是太粗糙了.很自然的,我们会想到,如果继续细分我们的短点,比如每1/2取一个值,甚至每1/4取一个值,那么就会有更好的逼近效果. 不 ...
- oracle之synonym小结
oracle中的同义词可以认为是对表.视图.序列.存储过程.函数.程序包或者其他同义词的一个别名,也就是用一个别名来映射的作用. oracle中的同义词可以分为私有和公有两种,私有同义词(privat ...
- Openfire 编译插件
新增的插件打包方法: 3.打包插件 a.第一次打包需配置ant工具.在环境变量中, 添加 path=C:\Program Files\Java\jdk1.5.0_09\;D:\Program File ...
- I'm an artist who loves linux (转)
My father got me a computer for graduation with 512MB RAM and a Pentium processor. It came with Wind ...
- 剖析JavaScript函数作用域与闭包
在我们写代码写到一定阶段的时候,就会想深究一下js,javascript是一种弱类型的编程语言,而js中一个最为重要的概念就是执行环境,或者说作用域.作用域重要性体现在哪呢?首先,函数在执行时会创建作 ...
- 【node】使用gulp来维护网站项目
基本参照此:http://www.gulpjs.com.cn/docs/getting-started/ 1.电脑需要安装好nodejs,安装好的时候会自带npm 2.在命令行中执行命令安装gulp ...
- source tree 推送错误解决
fatal: The remote end hung up unexpectedly 出现这个问题是因为文件过大 解决办法: 打开git bash 输入git config --global http ...
- 封装tip控件
在界面上有时需要显示一个提示,大多的前端框架都把提示做成一个带有小尖角的提示框,因此自己也仿照了实现了一下,效果图如下: 尖角的实现很简单的,一般都是通过css将div的宽高设置为0,然后将尖角朝向的 ...
- HTTP头的Expires与Cache-control
HTTP头的Expires与Cache-control 1.概念 Cache-control用于控制HTTP缓存(在HTTP/1.0中可能部分没实现,仅仅实现了Pragma: no-cache) 数据 ...
- HTML5移动端图片上传模块
上传图片的功能是极为常用的,之前做过一个移动端上传文件的功能(基于jquery的),总结梳理一下. html <div class="uploadPic clearBox"& ...