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. flask框架下的jinja2模板引擎(1)(模板渲染)

    #转载请留言联系 模板是什么? 在 flask 框架中,视图函数有两个作用:处理业务逻辑和返回响应内容.在大型应用中,把业务逻辑和表现内容放在一起,会增加代码的复杂度和维护成本.模板作用即是承担视图函 ...

  2. c 读取整个文件内容

    char* textFileRead(char* filename){char* text;FILE *pf = fopen(filename,"r");fseek(pf,0,SE ...

  3. 事件循环进阶:macrotask与microtask

    这段参考了参考来源中的第2篇文章(英文版的),(加了下自己的理解重新描述了下), 这里没法给大家演示代码,我就简单说下我的理解吧. promise和settimeout 在一起的时候执行顺序是个有意思 ...

  4. stream操作 z

    常见并常用的stream一共有 文件流(FileStream), 内存流(MemoryStream), 压缩流(GZipStream), 加密流(CrypToStream), 网络流(NetworkS ...

  5. 生成证书,用于签名Android应用

    1. keytool 命令 1)使用JDK中的一个命令keytool,都有哪些命令呢,使用 keytool -help 进行查看 2)本次使用 keytool -genkeypair 命令生成签名,查 ...

  6. 最短路径-Dijkstra算法与Floyd算法

    一.最短路径 ①在非网图中,最短路径是指两顶点之间经历的边数最少的路径. AE:1    ADE:2   ADCE:3   ABCE:3 ②在网图中,最短路径是指两顶点之间经历的边上权值之和最短的路径 ...

  7. Linux-python的一些小问题

    1.python版本和pip版本 2.PATH和PYTONPATH 1.python版本和pip版本 1.python版本 一般Ubuntu里面都装的不止一个版本的python,比如有python2. ...

  8. UI层实现

    领域驱动设计实践 —— UI层实现   目录 1. User Interface 2. Controller 3.  DTO 4.  infrastructure层的公共组件 5. UI层类图 6. ...

  9. tp3.2上一篇下一篇功能

    1. 后台 //上一页 $map1['a_id'] = array('gt',$a_id); $map1['cate_id'] = array('eq',$cate_id); $front=$arc- ...

  10. php 多种输入参数完整性检查

    说明:(1)输入可能有多重类型的输入,即需要对输入参数进行多次匹配. (2)希望能够返回缺少的参数 代码如下: /** * @param $param 输入参数 (get,post 参数) * @pa ...