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. MSSQLServer——全国省份城市SQL语句

    use hr create table dbo.province ( proID int primary key, proName ), keys ) ) ,'北京市','B'); ,'天津市','T ...

  2. 任务十三:零基础JavaScript编码(一)

    任务目的 JavaScript初体验 初步明白JavaScript的简单基本语法,如变量.函数 初步了解JavaScript的事件是什么 初步了解JavaScript中的DOM是什么 任务描述 参考以 ...

  3. Qt 之模型/视图(自定义按钮)

    https://blog.csdn.net/liang19890820/article/details/50974059 简述 衍伸前面的章节,我们对QTableView实现了数据显示.自定义排序.显 ...

  4. JS调用AngularJS中的方法

    案例: 在IONIC中使用百度地图的JS版SDK,在该JS相关界面中需要触发点击事件来实现在Ionic的JS中定义的函数,参考方法如下: onclick="var $scope = angu ...

  5. 阿里云OSS 上传文件SDK

    Aliyun OSS SDK for C# 上传文件 另外:查找的其他实现C#上传文件功能例子: 1.WPF用流的方式上传/显示/下载图片文件(保存在数据库) (文末有案例下载链接) 2.WPF中利用 ...

  6. Redis 4.0+安装及配置

    系统环境:CentOS 7.3 官方下载最新版:https://redis.io/download:或直接终端下载解析安装: $ wget http://download.redis.io/relea ...

  7. February 18 2017 Week 7 Saturday

    It is not easy to meet each other in such a big world. 世界这么大,能遇见不容易. Sometimes we choose to trust in ...

  8. WEB开发的jsp例子标签库(jstl)的使用

    <!-- e1 --> <%@ page language="java" contentType="text/html; charset=UTF-8&q ...

  9. 用w32tm设置服务器时间同步

    服务器时间同步是一个容易被忽视的问题,但在企业级应用环境中,不同服务器之间的时间差很可能引发应用系统问题.Windows提供的w32tm程序可以用来设置时间同步服务器,其用法如下: 1.指定外部时间源 ...

  10. 为什么要使用base64编码,有哪些情景需求?

    Base64编码原理与应用 Java实现BASE64编解码 公钥证书也好,电子邮件数据也好,经常要用到Base64编码,那么为什么要作一下这样的编码呢? 我们知道在计算机中任何数据都是按ascii码存 ...