我们使用一下两张表作为范例:

select * from [dbo].[employee]

select * from [dbo].[dept]

1、select语句

  • DISTINCT:去掉记录中的重复值。

select distinct dept_no from [dbo].[employee]

  • TOP:返回第一行或者是前几行

select top(3) * from [dbo].[employee]

  • AS:修改列标题

select e_no as '员工编号', e_name as '员工姓名' from [dbo].[employee]

注:AS关键字也可以省略

  • 使用等号‘=’修改列标题

select '员工编号'=e_no,  '员工姓名'=e_name from [dbo].[employee]

2、在查询的结果内集中显示某字符串

select '员工姓名:' ,e_name from [dbo].[employee]

3、查询的列为表达式

select e_no+10 as '新员工编号' ,e_name '员工姓名' from [dbo].[employee]

4、where子句条件查询

  • BETWEEN AND 表示范围

select * from  [dbo].[employee]  where e_no between 1001 and 1006

  • 使用IN关键字

select * from  [dbo].[employee]  where e_no in (1001 , 1007 )

使用IN关键词时,将所有检索条件用逗号分隔开。与括号内的值相匹配便可以被查出。

  • 使用LIKE关键字

LIKE关键字使用的通配符:

%:包含零个或多个字符的任意字符串。

_:任何单个字符。

[]:指定范围[a-f]或者是集合[abcdef]中的任何单个字符。

[^]:不属于该范围的任何单个字符。

select * from [dbo].[employee] where e_name like 'a%'

  • IS NULL  (IS NOT NULL)

在SELECT语句中使用IS NULL(IN NOT NULL)某字段内容是否为空(不为空)

select * from [dbo].[employee] where e_name is null

5、EXISTS(NOT EXISTS)关键字

EXISTS关键字后面的参数是一个任意的子查询,系统对子查询进行运算以判断它是否返回行,如果至少返回一行,那么EXISTS的结果为TURE,此时外层查询语句将进行查询;如果子查询没有返回行,那么EXISTS反悔的结果为FALSE,此时外层语句将不进行查询。EXISTS语句可以与where或if一起使用。

select top(2) * from [dbo].[employee] where exists (select top (1) * from [dbo].[employee])

注:EXISTS的结果只取决于是否会返回行,而不取决于这些行的内容具体是什么。

6、ORDER BY

对指定的列数据进行排序。

升序(ASC)

降序(DESC)

select * from [dbo].[employee] order by e_no desc

多列排序:先按照第一列排序,若第一列中有相同的值,则在这些值中再按照第二列排序。

select * from [dbo].[employee] order by dept_no desc ,e_no

7、GROUP BY 分组

GROUP BY 子句通常和聚合函数一起使用,例如:MAX,MIN,COUNT,SUM,AVG。

select dept_no ,count(*) as '部门人数' from [dbo].[employee] group by dept_no

注意:选择列表中任一非聚合表达式内的所有列都应包含在 GROUP BY 列表中,或者 GROUP BY 表达式必须与选择列表表达式完全匹配。

多字段分组:GROUP BY 子句后面根据需要分组的字段,分组层次从左到右,先按照第一个字段分组,然后在第一个字段值相同的记录中,再根据第二个字段的值进行分组,以此类推。

  • 使用HAVING对分组结果过滤

GROUP BY 和HAVING一起限定显示记录所需满足的条件,只有满足条件的分组才会被显示。

select dept_no ,count(*) as '部门人数' from [dbo].[employee] group by dept_no having count(*)>2

注:HAVING与WHERE都可以用来过滤数据,两者的区别是:HAVING用在数据分组之后进行过滤,即用来选择分组;WHERE在分组之前用来选择记录,它排除的记录不包括在分组中。

8、UNION合并查询结果集

利用UNION关键字,可以给出多条SELECT语句,并将他们的结果组合成单个结果集。若UNION不使用关键字ALL,执行的时候会自动删除重复的记录,所有返回值的行都是唯一的;使用关键字ALL的作用是不删除重复行也不对结果进行自动排序。注意合并是两个表对应的列数和数据类型必须是相同的。

select * from [dbo].[employee] where dept_no=20

union

select * from [dbo].[employee] where dept_no=30

9、多表连接查询

会有另外博文单独讲解

T-SQL 查询语句总结的更多相关文章

  1. sql查询语句如何解析成分页查询?

    我们公司主要mysql存储数据,因此也封装了比较好用mysql通用方法,然后,我们做大量接口,在处理分页查询接口,没有很好分查询方法.sql查询 语句如何解析成“分页查询”和“总统计”两条语句.可能, ...

  2. 15个初学者必看的基础SQL查询语句

    本文由码农网 – 小峰原创翻译,转载请看清文末的转载要求,欢迎参与我们的付费投稿计划! 本文将分享15个初学者必看的基础SQL查询语句,都很基础,但是你不一定都会,所以好好看看吧. 1.创建表和数据插 ...

  3. SQL查询语句去除重复行

    1.存在两条完全相同的纪录 这是最简单的一种情况,用关键字distinct就可以去掉 select distinct * from table(表名) where (条件) 2.存在部分字段相同的纪录 ...

  4. WordPress 常用数据库SQL查询语句大全

    在使用WordPress的过程中,我们少不了要对数据库进行修改操作,比如,更换域名.修改附件目录.批量修改文章内容等等.这个时候,使用SQL查询语句可以大大简化我们的工作量. 关于如何操作SQL查询语 ...

  5. (转)经典SQL查询语句大全

    (转)经典SQL查询语句大全 一.基础1.说明:创建数据库CREATE DATABASE database-name2.说明:删除数据库drop database dbname3.说明:备份sql s ...

  6. 转: 从Mysql某一表中随机读取n条数据的SQL查询语句

    若要在i ≤ R ≤ j 这个范围得到一个随机整数R ,需要用到表达式 FLOOR(i + RAND() * (j – i + 1)).例如, 若要在7 到 12 的范围(包括7和12)内得到一个随机 ...

  7. 经典SQL查询语句大全

    一.基础1.说明:创建数据库CREATE DATABASE database-name2.说明:删除数据库drop database dbname3.说明:备份sql server--- 创建 备份数 ...

  8. oracle中sql查询语句的执行顺序

    查询语句的处理过程主要包含3个阶段:编译.执行.提取数据(sql查询语句的处理主要是由用户进程和服务器进程完成的,其他进程辅助配合) 一.编译parse 在进行编译时服务器进程会将sql语句的正文放入 ...

  9. SQL查询语句分类

    SQL查询语句有多种,下面总结下.首先先建三张表用于后面的实验 -- 学生表,记录学生信息 CREATE TABLE student( sno ), sname ), ssex ENUM('男','女 ...

  10. 浅谈SQL优化入门:1、SQL查询语句的执行顺序

    1.SQL查询语句的执行顺序 (7) SELECT (8) DISTINCT <select_list> (1) FROM <left_table> (3) <join_ ...

随机推荐

  1. AU3学习笔记

    目录 1. AU3是什么?能做什么? 2. 乱学AU3中的命令(语言相关)? 3. 通过简单示例学习AU3? 4. 正则表达式的学习(对大小写敏感) 5.对于GUI的相关学习 1.        AU ...

  2. TCPDUMP详解(续)

    TCPdump抓包命令  tcpdump是一个用于截取网络分组,并输出分组内容的工具.tcpdump凭借强大的功能和灵活的截取策略,使其成为类UNIX系统下用于网络分析和问题排查的首选工具.  tcp ...

  3. UC浏览器开发者版调试手机页面

    1 关于RI 目前,在手机上使用浏览器访问网页,无法便捷地进行网页语言调试.手机屏幕相对较小且操作不便,直接在手机上进行网页数据调试不太现实. 因此,我们使用技术将手机网页调试信息分离,实现一种能在大 ...

  4. 蓝桥杯算法训练<一>

    一.图形显示 此题虽然简单,但是需啊哟注意的是,每个“*”后边有一个空格] 问题描述 编写一个程序,首先输入一个整数,例如5,然后在屏幕上显示如下的图形(5表示行数): * * * * * * * * ...

  5. JDBC操作封装

    这两天学习了一下jdbc的封装,依据的是下面这篇 http://wenku.baidu.com/link?url=FaFDmQouYkKO24ApATHYmA5QzUcj-UE-7RSSZaBWPqk ...

  6. Django学习笔记(一)

    之前没有接触过django,甚至python也是最近才刚刚着手学习,可以说是零基础.要学习一门新技术,官方文档自然是首选的入门教程.开发环境:python2.7+django1.7+win 1.首先, ...

  7. UIScrollView中添加一个视图,实现让其始终固定在某个位置

    ScrollView中添加一个视图,实现让其始终固定在某个位置,如最底部的位置.方法是自定义一个继承UIScrollView,重写它的layoutSubviews方法.代码如下: #import &q ...

  8. MyEclipse的 lib和Build path(构建路径)(转)

    首先两种方式对于放置jar包的方式是不同的: Build path(构建路径):对于种方式来说,可以算是对jar包文件的一个引用.可以引用lib下的jar包,也可以引用本地磁盘上的jar包. WEB- ...

  9. [C++基础]在构造函数内部调用构造函数

    看下面的面试题: #include <iostream> using namespace std; struct CLS { int m_i; CLS( int i ) : m_i(i){ ...

  10. python two-dimensional array assignment initialize

    #if you want to initialize a 9*9 two-dimensional array [([""]*9) for i in range(9)] #cauti ...