zoukankan      html  css  js  c++  java
  • SQL语法 之 基本查询

    一、语法结构

    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 <条件表达式> ]
  • 相关阅读:
    高并发系统如何设计
    PHP的垃圾回收机制(开启垃圾回收机制后的优缺点是什么)
    移动端网站如何开发(电脑端网站到手机端网站我们需要在html代码中添加哪个meta标签)
    家庭洗车APP --- Androidclient开展 之 网络框架包介绍(一)
    一天JavaScript示例-判定web页面的区域
    左右margin top问题百分比值
    Ubuntu14.04设备JDK
    三层架构,四大天王——删
    MEMO:UIButton 中的图片和标题 左对齐
    HDU 3874 离线段树
  • 原文地址:https://www.cnblogs.com/xinaixia/p/5802783.html
Copyright © 2011-2022 走看看