一、语法结构

SELECT select_list
[ INTO new_table ]
FROM table_source
[ WHERE search_condition ]
[ GROUP BY broup_by_expression ]
[ HAVING search_condition ]
[ ORDER BY order_by_expression [ ASC | DESC ]

  查询语句中的主要参数说明:

  [1] select_list:查询的列或者表达式的列表,用逗号进行分隔。
  [2] new_table: 新的表名。
  [3] table_source:要查询的表。如果是多个表,用逗号进行分隔;或者用联接。
  [4] search_condition:查询条件。
  [5] group_by_expression:分组表达式。
  [6] order_by_expression:排序表达式。
  [7] ASC:升序排序。
  [8] DESC:降序排序。

二、选择列表

  选择列表用于定义select语句的结果集中的列

  1、* 查询所有列:

SELECT * FROM person 

  * 就是结果集合,表示查询person表中的所有列。

  2、distinct:去除重复数据

   distinct是对所有列作用,也就是说,所有列都相同才算重复数据。

SELECT distinct name FROM person

  3、可包含函数的查询,如下:

SELECT COUNT(*) FROM person

三、FROM 子句

  FROM 子句实际上就是用逗号分隔的表名、视图名和 JOIN 子句的列表。使用 FROM 子句可以实现如下功能:

  1、列出选择列表和where子句引用的列所在的表和视图。可以使用as子句为表和视图指定别名。

  (1) 别名: 两种方式,如果为表分配了别名,那么T-SQL语句中对该表的所有显示引用都必须使用别名,而不能使用原名。

  [1] 原名与别名之间加 AS 关键字;

  [2] 原名与别名之间加空格;

  2、联接类型。这些类型由on子句中指定的联接条件限定,着要分为内联接和外联接:

------------内联接-----------------
JOIN 等价于 INNER JOIN
------------外联接-----------------
LEFT JOIN 等价于 LEFT OUTER JOIN
RIGHT JOIN 等价于 RIGHT OUTER JOIN
FULL JOIN 等价于 FULL OUTER JOIN

四、WHERE 子句

  可以 通过 where 子句筛选结果集的源表中的行。带有where子句的select语句的结构如下:

  SELECT <字段列表>  FROM <表名> WHERE <条件表达式>

  条件表达式是由各种字段、常量、表达式、关系运算符、逻辑运算符和特殊的运算符组合起来的。

  WHERE 子句中的运算符:

  1、关系运算符

  关系运算符用来表示两个表达式之间的比较关系。

  [1] = :等于;

  [2] < :小于;

  [3] > :大于;

  [4] != 或 <> :不等于;

  [5] >= : 大于等于;

  [6] <= : 小于等于;

  [7] !> :不大于;

  [8] !< : 不小于。

  2、逻辑运算符

  逻辑运算符用于表示两个表达式之间的逻辑关系:

  [1] NOT : 非(否)

  [2] AND : 与

  [3] OR  : 或

  3、特殊运算符

  [1] % :通配符,通常与like配合使用,可指代任意长度的字符串;

  [2] _ : 通配符,代表严格的一个字符。where name like '_xxx'将查找以xxx结尾的所有4个字母的名字(sxxx,dxxx等)

  [3] [] : 指定范围([a-f])或集合([abcdefg])中的任何单个字符。where name like '[a-f]xxxx',将超找以abcdef开头,xxxx结尾的字符。

  [4] [^] : 不属于指定范围的([a-f])或集合([abcdefg])的任何单个字符。

  [5] BETWEEN ... AND ... :定义一个取值范围区间,使用and分开。between开始值与and结束值。

  [6] LIKE :字符串匹配。

  [7] IN : 一个字段的值是否在一组定义的值之中。

  [8] EXISTS:子查询有结果集返回(则子查询返回True)。

  [9] NOT EXISTS:子查询没有结果集返回(则子查询返回True)。

  [10] IS NULL : 字段是否为null。

  [11] IS NOT NULL :字段是否不为null。

  [12] ANY / SOME:ANY和SOME关键字是同义词,表示子查询结果集中任意一条记录满足条件,则返回TRUE。

  [13] ALL:表示子查询结果集所有所有记录均满足条件,才返回TRUE。

  在 WHERE子 句中使用EXISTS(如果使用得当的话)可以大大提高性能。因为使用EXISTS时,只要找到和条件匹配的记录,SQL Server就立即停止。假设有一个包含一百万条记录的表,并且在第三个记录中找到了匹配的记录,那么使用EXISTS选项将避免读取999997条记录!NOT EXISTS以同样的方式工作。

五、group by子句

六、HAVING 筛选查询

  WHERE与HAVING的区别:

  [1] WHERE(分组前过滤):WHERE不能对聚合函数列进行过滤,因为执行WHERE的时候,分组尚未执行,聚合函数也未执行。

  [2] HAVING(分组后过滤):主要用于对聚合函数列进行过滤,因为 HAVING 子句是在分组之后执行的。HAVING子句只能配合GROUP BY子句使用。没有GROUP BY子句时不能使用HAVING。

  使用WHERE与HAVING的示例:

  

七、ORDER BY子句

  ORDER BY 子句用于指定结果集的排序。

  order by子句的语法如下:

    [ order by { order_by_expression [ asc | desc] } [ ,...n ] ]

  参数说明如下:

  [1] order_by_espression:指定要排序的列、列的别名、表达式或者指定为代表选择列表内的名称、别名或表达式的位置的负整数。

  [2] ASC:按递增顺序对指定列中的值进行排序。

  [3] DESC:按递减顺序对指定列中的值进行排序。

八、INTO 查询

  INTO 子句将查询结果生成新表,新表的结构由查询字段列表组成。也可以将查询的结果送入tempdb数据库的临时表中,这样关闭服务器之后临时表会自动删除。

  into查询的语法结构:

  SELECT <字段名列表>
  [ into 新的数据表名 ]
  FROM 数据库表名
  [ where <条件表达式> ]

SQL语法 之 基本查询的更多相关文章

  1. Linq to SQL 语法整理(子查询 & in操作 & join )

    子查询 描述:查询订单数超过5的顾客信息 查询句法: var 子查询 = from c in ctx.Customers where (from o in ctx.Orders group o by ...

  2. Linq to SQL 语法查询(链接查询,子查询 & in操作 & join,分组统计等)

    Linq to SQL 语法查询(链接查询,子查询 & in操作 & join,分组统计等) 子查询 描述:查询订单数超过5的顾客信息 查询句法: var 子查询 = from c i ...

  3. ORACLE分页查询SQL语法——最高效的分页

    --1:无ORDER BY排序的写法.(效率最高)--(经过测试,此方法成本最低,只嵌套一层,速度最快!即使查询的数据量再大,也几乎不受影响,速度依然!) SELECT * FROM (SELECT  ...

  4. Oracle实现分页查询的SQL语法汇总

    1.无ORDER BY排序的写法.(效率最高) 经过测试,此方法成本最低,只嵌套一层,速度最快!即使查询的数据量再大,也几乎不受影响,速度依然! sql语句如下: ) TABLE_ALIAS ; 2. ...

  5. ORACLE分页查询SQL语法——高效的分页

    --1:无ORDER BY排序的写法.(效率最高)--(经过测试,此方法成本最低,只嵌套一层,速度最快!即使查询的数据量再大,也几乎不受影响,速度依然!) SELECT * FROM (SELECT  ...

  6. 160321、ORACLE分页查询SQL语法——最高效的分页

    --1:无ORDER BY排序的写法.(效率最高) --(经过测试,此方法成本最低,只嵌套一层,速度最快!即使查询的数据量再大,也几乎不受影响,速度依然!) SELECT *   FROM (SELE ...

  7. 高级数据查询SQL语法

    接上一篇关系数据库SQL之基本数据查询:子查询.分组查询.模糊查询,主要是关系型数据库基本数据查询.包括子查询.分组查询.聚合函数查询.模糊查询,本文是介绍一下关系型数据库几种高级数据查询SQL语法, ...

  8. SQL语法精讲(包括建库、建表、建视图、查询、增加、删除、)

    SQL语法精讲(包括建库.建表.建视图.查询.增加.删除.修改) SQL分类: DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE) DML—数据操纵语言(SELECT,DELE ...

  9. SQL 语法总结

    学了一个月的java,开始有入门的感觉.这段时间接触到了java的JDBC, 发现学习这部分的内容还是要有SQL的基础,于是花费了几天时间学习了一下SQL语法,并将其总结于下. 选择数据 SELECT ...

随机推荐

  1. HDU 6205[计算几何,JAVA]

    题目链接[http://acm.hdu.edu.cn/showproblem.php?pid=6206] 题意: 给出不共线的三个点,和一个点(x,y),然后判断(x,y)在不在这三个点组成的圆外. ...

  2. 【UOJ #205】【APIO 2016】Fireworks

    http://uoj.ac/problem/205 好神的题啊. dp[i][j]表示以i为根的子树调整成长度j需要的最小代价. 首先要观察到dp值是一个下凸壳. 因为从儿子合并到父亲时要把所有儿子的 ...

  3. luogu P1965 转圈游戏

    题目描述 n 个小伙伴(编号从 0 到 n-1)围坐一圈玩游戏.按照顺时针方向给 n 个位置编号,从0 到 n-1.最初,第 0 号小伙伴在第 0 号位置,第 1 号小伙伴在第 1 号位置,……,依此 ...

  4. BZOJ4554 HEOI2016游戏

    网络流. 我一开始傻傻的将每条边与每一列连边,边权为联通块树,但是这样做是错的因为我们就在跑网络流中会忽略掉边和列的关系. 我们在做网络流题时一定要注意题目中给出的限制条件,一定要以限制条件建图!!! ...

  5. [BZOJ4289][PA2012]TAX(最短路)

    首先考虑一种暴力做法,为每条边拆成两条有向边,各建一个点.若某两条边有公共点,则在边所对应的点之间连一条边,权值为两条边中的较大值.这样跑最短路是$O(m^2\log m)$的. 用类似网络流中补流的 ...

  6. UI/GUI/UE/UX/ID/UED/UCD的区别

    简述: UI (User Interface):用户界面 UE (User Experience):用户体验 ID (Interaction design):交互设计 UID (User Interf ...

  7. CDOJ 1048 Bob's vector 三分

    Bob's vector 题目连接: http://acm.uestc.edu.cn/#/problem/show/1048 Description Bob has a vector with mm ...

  8. HDU 5652 India and China Origins 二分+并查集

    India and China Origins 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5652 Description A long time ...

  9. git用法资料

    上网看到一篇不错的GIT教程,与大家共享(图片上传实在太麻烦),请见具体地址: http://www.liaoxuefeng.com/wiki/0013739516305929606dd1836124 ...

  10. ExifInterface针对照片的使用

    ExifInterface是保存照片信息的,那么我们在有需要的时候就可以通过这类,来获取照片的一些数码参数来做适当来逻辑处理,比较典型的案例就是android有的机型拍照或者选择照片后,照片可能会被旋 ...