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. 初学js的穷举思想

    初学者,最关机键的,就是掌握for的穷举思想. 穷举:穷尽.完全.全部. 具体方法: 外层:用for循环一一列举所有可能性 内层:用if语句进行判断,如果满足条件就输出,不满足的跳出进行下次循环. & ...

  2. mac安装brew, bower

    Mac安装Brew 安装命令如下:curl -LsSf http://github.com/mxcl/homebrew/tarball/master | sudo tar xvz -C/usr/loc ...

  3. deb文件怎么安装

    deb 是 ubuntu .debian 的格式.rpm 是 redhat .fedora .suse 的格式.deb是debian发行版的软件包ubuntu是基于debian 发行的 所有可以用.d ...

  4. java音频播放器

    java音频播放器备份,支持wav,mp3 都是摘抄于网络,wav播放,mp3播放 播放wav版本 包: 不需要其他jar包 代码: package com; import javax.sound.s ...

  5. pt-archiver(数据导入导出工具)

    数据导入导出工具pt-archiver 工具可以将MySQL的表数据导出到一个新表或者一个文件,也有自己的应用场景,比如数据归档,删除数据,数据合并等. 具体用法: pt-archiver [OPTI ...

  6. MySQL存储过程和临时表

    MySQL创建存储过程 MySQL中,创建存储过程的基本形式如下: CREATE PROCEDURE sp_name ([proc_parameter[,...]]) [characteristic ...

  7. 一个较复杂的执行redis的lue脚本

  8. Pinball Save Earth 正式上线

    有问题或者建议大家可以联系我的QQ 914287516 或者qq邮箱 官方qq群 325631077:

  9. GO语言(八) defer注意点

    package main import ( "net" "os" "fmt" "io/ioutil" ) func Cl ...

  10. electricity meter就是电表

    英式英语metre意思是度量衡里面的单位:米 美式英语拼为 meter 除了“米”,还有一个意思是“计量器”,比如 parking meter就是是路边停车投币计时器,cab meter就是出租车的计 ...