SQL Server 2012 - SQL查询
- 执行计划显示SQL执行的开销

- 工具→ SQL Server Profiler : SQL Server 分析器,监视系统调用的SQL Server查询
- Top查询
-- Top Percent 选择百分比
SELECT top 30 percent * FROM [SchoolDB].[dbo].[Student] -- Top 支持定义变量查询
declare @per int = 30
SELECT top ( @per) percent * FROM [SchoolDB].[dbo].[Student] 
- 常用Where查询
-- Top Percent 选择百分比
SELECT top 30 percent * FROM [SchoolDB].[dbo].[Student] -- Top 支持定义变量查询
declare @per int = 30
SELECT top ( @per) percent * FROM [SchoolDB].[dbo].[Student] --重命名
select StuName as [姓 名] FROM [SchoolDB].[dbo].[Student] --通配符查询
select * FROM [SchoolDB].[dbo].[Student] where Height like '1[67][0-9]' --IsNull 把Null数据转换为其他值。NULL和任何字段做比较返回的都是NULL
select * FROM [SchoolDB].[dbo].[Student] where ISNULL(StuBirthday,0) <'1990-01-01' -- Exists 存在,适用于内外表的查询,Exists不关心查询到的内容,只关心是否能查询到数据
select * From [Student] as Stu1 where exists(
--select 1
select * From [Student] as Stu2 where StuID=Stu1.StuID and Stu2.Height>160
) --CharInedx 字符a在字符串aa中出现的位置
select CHARINDEX('a','sdafasdad',1) --PatIndex ,查询通配符字符串的位置
select * From [Student] where PatIndex ('王_',StuName)>0 - 聚合函数
-------------聚合函数------------- --group by 单字段分组-- --每个班级的人数
select class as '班级', count(*) as '人数' from [Student]
group by Class --每个班级的平均身高、最小生日
select class as '班级',AVG(Height) as '平均身高',Min(StuBirthday) as '最小生日' from [Student]
group by Class select class as '班级',Min(StuBirthday) as '平均身高' from [Student]
group by Class --group by 多字段分组--
select class as '班级',StuSex as '性别',COUNT(*),AVG(Height) as '平均身高',Min(StuBirthday) as '最小生日' from [Student]
group by Class,StuSex
-- having Class='1' --分组后进行过滤
having AVG(Height)>=159 --分组后进行过滤 --SUM求和,AVG平均,MAX最大,Cast转化
select class as '班级', SUM(height) as '总身高',MAX(height) as '身高最高', CAST(AVG(height/1.0) as decimal(18,2)) as '平均高' from [Student]
group by Class --Distinct
select class, count(*) as '班级人数',count(1) as '班级人数',count(StuID) as '班级人数',count(StuSex) as '班级性别',count(distinct(StuSex)) as '班级不同的性别'
from [Student]
group by Class - 嵌套查询
------------嵌套查询---------- ------------1.1子查询 ----------------
SELECT *
FROM ( SELECT dbo.Student.* ,
dbo.ClassInfo.ClassName
FROM dbo.Student
JOIN dbo.ClassInfo ON Student.Class = dbo.ClassInfo.ID
) AS T;
-- T 是临时的查询结果集 ------------1.1 嵌套子查询(内部子查询结果一次性提供结果集供外部查询) ----------------
SELECT *
FROM dbo.Student
WHERE Class IN ( SELECT ID
FROM dbo.ClassInfo ); ------------1.2 相关子查询(外部表中的数据逐条作为参数传递给内部表中的数据) ----------------
SELECT *
FROM dbo.Student AS Stu
WHERE EXISTS ( SELECT * FROM dbo.ClassInfo WHERE ID=Stu.Class ); -- IN :子查询数据量小,而外表数据大 (子查询数据逐条循环)
-- Exist:子查询数据量大,而外表数据小 (Exist只关心是否能查询到数据)
-- 能用关联查询,尽量不用子查询 -----------2. 创建物理临时表 -----------
CREATE TABLE #TableTemp
(
id INT NOT NULL
IDENTITY(1, 1)
PRIMARY KEY ,
name NVARCHAR(10)
); INSERT INTO #TableTemp
( name )
VALUES ( N'你好' -- name - nvarchar(10)
); SELECT *
FROM #TableTemp; DROP TABLE #TableTemp; -----------3. into 临时表(物理表)---------
SELECT dbo.Student.* ,
dbo.ClassInfo.ClassName
INTO #TableTemp
FROM dbo.Student
JOIN dbo.ClassInfo ON Student.Class = dbo.ClassInfo.ID; SELECT *
FROM #TableTemp; DROP TABLE #TableTemp; ----------4.复制表结构----------
SELECT *
INTO Student_His
FROM dbo.Student
WHERE 1 = 2; ----------5.创建表变量----------
DECLARE @tmp_Table TABLE
(
id INT NOT NULL
IDENTITY(1, 1)
PRIMARY KEY ,
name NVARCHAR(20)
); INSERT @tmp_Table
( name )
VALUES ( -- id - int
N'表变量' -- name - nvarchar(20)
); SELECT *
FROM @tmp_Table; ----------6.公共表表达式, CTE:Common Table Expression。可以生成多个临时表,然后再进行连接查询----------
;WITH T AS ( SELECT dbo.Student.* ,
dbo.ClassInfo.ClassName
FROM dbo.Student
JOIN dbo.ClassInfo ON Student.Class = dbo.ClassInfo.ID
),
T1 AS(
SELECT * FROM dbo.Student
)
-- Select、Update 紧跟在 With As 才有效
SELECT T.*
FROM T JOIN T1 ON t.StuID=T1.StuID ----------7.使用ANY、SOME、ALL关键字----------
SELECT *
FROM dbo.Student
WHERE Class =ALL ( SELECT ID
FROM dbo.ClassInfo WHERE ID=1);
SQL Server 2012 - SQL查询的更多相关文章
- SQLSERVER 免费对比数据库结构和数据的工具支持:SQL Server 2012, SQL Server 2008 and SQL Server 2005
New xSQL Schema Compare - version 5 Compare the schemas of two SQL Server databases, review differen ...
- (数据科学学习手册28)SQL server 2012中的查询语句汇总
一.简介 数据库管理系统(DBMS)最重要的功能就是提供数据查询,即用户根据实际需求对数据进行筛选,并以特定形式进行显示.在Microsoft SQL Serve 2012 中,可以使用通用的SELE ...
- SQL Server 2012附加数据库时,错误提示如下:尝试打开或创建物理时,CREATE FILE 遇到操作系统错误 5(拒绝访问。)
错误提示:Create File遇到操作系统错误5(拒绝访问) 解决方案: 在所有程序-SQL Server 2012-"SQL Server 配置管理器",点击"SQL ...
- SQL Sever 各版本下载 SQL Server 2012下载SQL Server 2008下载SQL Server 2005
SQL Server 2012SQL Server 2012 开发版(DVD)(X64,X86)(中文简体)ed2k://|file|cn_sql_server_2012_developer_edit ...
- SQL Server 2012 books
SQL Server 2012 Introducing Microsoft SQL Server 2012 Microsoft SQL Server 2012 High-Performance T-S ...
- 升级到SQL Server 2012/2014时一些需要考虑的事项
1. 使用Upgrade Adviser评估升级前需要解决的事情. https://msdn.microsoft.com/zh-cn/library/ms144256(v=sql.110).aspx ...
- Memory Manager surface area changes in SQL Server 2012
here were various changes to memory related DMVs, DBCC memory status, and Perfmon counters in SQL Se ...
- [Windows Server 2012] 安装SQL Server 2012
★ 欢迎来到[护卫神·V课堂],网站地址:http://v.huweishen.com★ 护卫神·V课堂 是护卫神旗下专业提供服务器教学视频的网站,每周更新视频.★ 本节我们将带领大家:安装SQL S ...
- SQL Server 2012:SQL Server体系结构——一个查询的生命周期(第1部分)
为了缩小读取操作所涉及范围,本文首先着眼于简单的SELECT查询,然后引入执行更新操作有关的附加过程.最后你会读到,优化性能时SQLServer使用还原工具的相关术语和流程. 关系和存储引擎 如图所示 ...
随机推荐
- daemontools检测进程,退出拉起
一.学习的原因: 为了实现在服务异常停止运行后,有一个监控程序能监控到它,并自动重新启动这个服务.以下以tomcat为例子 二.工具supervise Daemontools是一个包含了很多管理Uni ...
- CSS animation online生成工具
利用HTML5.css的一些动画功能,可以设计出非常炫酷的动画,但是由于并不是所有的浏览器都支持,所以可能需要prefix,这个过程是比较烦的.一个比较好用的线上工具: http://matthewl ...
- CentOS: 将虚拟机迁移到 Azure (以阿里云为例)
Azure 虚拟机能很容易地导出 vhd 并迁移到各种环境中,包含本地及云端环境,或者迁移至其他区域.这为开发.测试.扩展带来了极大的便利.因此本文以阿里云为例,阐述的是如何将 CentOS 6.8 ...
- PHP通过header和meta实现页面编码声明
一.使用方式: <META http-equiv=”content-type” content=”text/html; charset=xxx”> header(“content-type ...
- mongodb使用mongos链接复制集
我们知道mongodb现在生产环境大部分还是使用的复制集来作为主流,据我了解.很多公司现在都是使用复制集的方式,而我们通过mongos可以巧妙的解决链接的问题,我们先从环境说起: 首先我们要模仿搭建的 ...
- Java程序中解决数据库超时与死锁
Java程序中解决数据库超时与死锁 2011-06-07 11:09 佚名 帮考网 字号:T | T Java程序中解决数据库超时与死锁,每个使用关系型数据库的程序都可能遇到数据死锁或不可用的情况 ...
- shell脚本需求
需求一:写一个脚本 1.设定变量FILE的值为/etc/passwd 2.依次向/etc/passwd中的每个用户问好,并且说出对方的ID是什么 形如:(提示:LINE=`wc -l /etc/pas ...
- vsphere的P2V工具做的物理机迁移到虚拟机报错out of memory
vsphere的P2V工具做的物理机迁移到虚拟机 迁移成功,但是启动报错 进入rescue模式后发现是sysctl.conf文件的参数设大了因为虚拟机的内存没有物理机内存大 kernel.shm ...
- java学习第一步,使用IntelliJ IDEA编写自己的第一个java程序
首先下载java的jdk,然后说一下IDEA的配置 IntelliJ IDEA目前公认的最好的java开发工具,不过一般的学校的教学还是使用eclipse来进行java的开发.所以老师一般只会教你如何 ...
- Intellij IDEA 修改编辑器背景颜色
对眼睛有益的RGB数值分别是(199,237,204)