1. 执行计划显示SQL执行的开销
  2. 工具→ SQL Server Profiler : SQL Server 分析器,监视系统调用的SQL Server查询
  3. Top查询
    -- Top Percent 选择百分比
    SELECT top 30 percent * FROM [SchoolDB].[dbo].[Student] -- Top 支持定义变量查询
    declare @per int = 30
    SELECT top ( @per) percent * FROM [SchoolDB].[dbo].[Student] 
  4. 常用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
  5. 聚合函数
    -------------聚合函数-------------
    
    --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
  6. 嵌套查询
    ------------嵌套查询----------
    
    ------------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查询的更多相关文章

  1. 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 ...

  2. (数据科学学习手册28)SQL server 2012中的查询语句汇总

    一.简介 数据库管理系统(DBMS)最重要的功能就是提供数据查询,即用户根据实际需求对数据进行筛选,并以特定形式进行显示.在Microsoft SQL Serve 2012 中,可以使用通用的SELE ...

  3. SQL Server 2012附加数据库时,错误提示如下:尝试打开或创建物理时,CREATE FILE 遇到操作系统错误 5(拒绝访问。)

    错误提示:Create File遇到操作系统错误5(拒绝访问) 解决方案: 在所有程序-SQL Server 2012-"SQL Server 配置管理器",点击"SQL ...

  4. 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 ...

  5. SQL Server 2012 books

    SQL Server 2012 Introducing Microsoft SQL Server 2012 Microsoft SQL Server 2012 High-Performance T-S ...

  6. 升级到SQL Server 2012/2014时一些需要考虑的事项

    1. 使用Upgrade Adviser评估升级前需要解决的事情. https://msdn.microsoft.com/zh-cn/library/ms144256(v=sql.110).aspx ...

  7. 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 ...

  8. [Windows Server 2012] 安装SQL Server 2012

    ★ 欢迎来到[护卫神·V课堂],网站地址:http://v.huweishen.com★ 护卫神·V课堂 是护卫神旗下专业提供服务器教学视频的网站,每周更新视频.★ 本节我们将带领大家:安装SQL S ...

  9. SQL Server 2012:SQL Server体系结构——一个查询的生命周期(第1部分)

    为了缩小读取操作所涉及范围,本文首先着眼于简单的SELECT查询,然后引入执行更新操作有关的附加过程.最后你会读到,优化性能时SQLServer使用还原工具的相关术语和流程. 关系和存储引擎 如图所示 ...

随机推荐

  1. daemontools检测进程,退出拉起

    一.学习的原因: 为了实现在服务异常停止运行后,有一个监控程序能监控到它,并自动重新启动这个服务.以下以tomcat为例子 二.工具supervise Daemontools是一个包含了很多管理Uni ...

  2. CSS animation online生成工具

    利用HTML5.css的一些动画功能,可以设计出非常炫酷的动画,但是由于并不是所有的浏览器都支持,所以可能需要prefix,这个过程是比较烦的.一个比较好用的线上工具: http://matthewl ...

  3. CentOS: 将虚拟机迁移到 Azure (以阿里云为例)

    Azure 虚拟机能很容易地导出 vhd 并迁移到各种环境中,包含本地及云端环境,或者迁移至其他区域.这为开发.测试.扩展带来了极大的便利.因此本文以阿里云为例,阐述的是如何将 CentOS 6.8 ...

  4. PHP通过header和meta实现页面编码声明

    一.使用方式: <META http-equiv=”content-type” content=”text/html; charset=xxx”> header(“content-type ...

  5. mongodb使用mongos链接复制集

    我们知道mongodb现在生产环境大部分还是使用的复制集来作为主流,据我了解.很多公司现在都是使用复制集的方式,而我们通过mongos可以巧妙的解决链接的问题,我们先从环境说起: 首先我们要模仿搭建的 ...

  6. Java程序中解决数据库超时与死锁

    Java程序中解决数据库超时与死锁 2011-06-07 11:09 佚名 帮考网 字号:T | T   Java程序中解决数据库超时与死锁,每个使用关系型数据库的程序都可能遇到数据死锁或不可用的情况 ...

  7. shell脚本需求

    需求一:写一个脚本 1.设定变量FILE的值为/etc/passwd 2.依次向/etc/passwd中的每个用户问好,并且说出对方的ID是什么 形如:(提示:LINE=`wc -l /etc/pas ...

  8. vsphere的P2V工具做的物理机迁移到虚拟机报错out of memory

     vsphere的P2V工具做的物理机迁移到虚拟机  迁移成功,但是启动报错  进入rescue模式后发现是sysctl.conf文件的参数设大了因为虚拟机的内存没有物理机内存大 kernel.shm ...

  9. java学习第一步,使用IntelliJ IDEA编写自己的第一个java程序

    首先下载java的jdk,然后说一下IDEA的配置 IntelliJ IDEA目前公认的最好的java开发工具,不过一般的学校的教学还是使用eclipse来进行java的开发.所以老师一般只会教你如何 ...

  10. Intellij IDEA 修改编辑器背景颜色

    对眼睛有益的RGB数值分别是(199,237,204)