一、语法结构

sqlserver 查询语句转 mysql_结果集

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 ]

sqlserver 查询语句转 mysql_结果集

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子句

六、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筛选查询

八、into查询

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

  into查询的语法结构:

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