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 ] 
技术分享

select查询语句中的主要参数说明如下

select_list:查询的列或者表达式的列表,用逗号进行分隔。
new_table:新的表名。
table_source:要查询的表。如果是多个表,用逗号进行分隔。
search_condition:查询条件。
group_by_expression:分组表达式。
order_by_expression:排序表达式。
asc:升序排序。
desc:降序排序。

select查询语句字句的功能列表

子句 主要功能 是否必需
select 指定由查询返回的列
from 指定要查询的表
into 创建新表并将结果行插入新表中
where 查询条件
group by 对查询结果进行分组
order by 对查询结果进行排序
having 对查询结果进行筛选

 

二、选择列表

  选择列表用于定义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子句为表和视图指定别名。

2、联接类型。这些类型由on子句中指定的联接条件限定。

分配表名时可以使用如下形式

    •  table_name  as  table alias
    •  table_name  as  table_alias

 需要特别说明的是,如果为表分配了别名,那么T-SQL语句中对该表的所有显示引用都必须使用别名,而不能使用别名。

四、where子句

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

   select <字段列表>
   from <表名>
   where<条件表达式>

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

 where子句中的运算符:

 1、关系运算符

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

关系运算符 含义
= 等于
< 小于
> 大于
!=(或<>) 不等于
>= 大于等于
<= 小于等于
!> 不大于
!< 不小于

 

   2、逻辑运算符

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

逻辑运算符 含义
not 非(否)
and
or

 

  3、特殊运算符

特殊运算符 含义
% 通配符,通常与like配合使用
_ 通配符,代表严格的一个字符。where name like ‘_xxx‘将查找以xxx结尾的所有4个字母的名字(sxxx,dxxx等)
[] 指定范围([a-f])或集合([abcdefg])中的任何单个字符。where name like ‘[a-f]xxxx‘,将超找以abcdef开头,xxxx结尾的字符。
[^] 不属于指定范围的([a-f])或集合([abcdefg])的任何单个字符。
between 定义一个取值范围区间,使用and分开。between开始值与and结束值。
like 字符串匹配
in 一个字段的值是否在一组定义的值之中
exists 子查询有结果集返回(则子查询返回True)
not exists 子查询没有结果集返回(则子查询返回True)
is null 字段是否为null
is not null 字段是否不为null

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

五、group by子句

  详见地址:http://www.cnblogs.com/kissdodog/p/3365789.html

六、order by子句

   order by子句用于指定结果集的排序

  1、语法结构:

    select <字段名列表>
    from 数据库表名
    [where <条件表达式>]
    [order by[<字段名或者表达式> [asc|desc],...]]

   order by子句可以搭配where子句,也可以和select、fromD搭配使用,而不需要where子句。

  order by子句的语法如下:

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

其中主要的参数说明如下:

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

  asc:按递增顺序对指定列中的值进行排序。

  desc:按递减顺序对指定列中的值进行排序。

七、having筛选查询

  详见地址:http://www.cnblogs.com/kissdodog/p/3365789.html

八、into查询

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

  into查询的语法结构:

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

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。