select [all|distinct] [top (<expression>) [Percent] [with ties]] <column list>
[from <source table(s)/views>]
[where <restrictive condition>]
[group by <column name or expression using a column in the select list>]
[having <restrictive condition based on the group by results>]
[order by <column list>]
[[for xml {raw|auto|explicit|path [(<element>)]} [,xmldata] [,ELEMENTS] [,BINARY BASE 64] ]]
[OPTION (<QUERY HINT>,[,...N])]
上述语法结构非常复杂,一点一点逐步解析开。
基本的:
SELECT 列名称 FROM 表名称;
加上where子句后,变为:SELECT 列名称 FROM 表名称 WHERE 条件
这里详细的体现一下where子句的详细用法,如下:
运算符 | 示例用法 | 功能 |
=、>、<、>=、<=、<>、!=、!>、!< | <column> = 'Bob' | 在区分大小写的情况下,"ROMEY" <> "romey"。!=和<>都表示"不相等",!<、!>表示"不小于"和"不大于" |
and、 or 、not |
<column1> = <column2> and
<column3> = <column4> |
在语句中运算的顺序是not、and、or。如果要改变顺序可以用小括号。 |
between | <column> between 1 and 5 |
第一个值在第二个值与第三个值之间时其值为true,其等价于A>=B AND A<=C。
指定的值可以为列名、变量或字面量。 |
like | <column> like "ROM%" |
可使用%和_作为通配符。%表示可以代替任意长度的字符串。_表示可以代替任意的单个字符。[]符号用于指定
一个字符、字符串或范围,要求所匹配对象为他们中的任一个(如[a-c]表示a、b和c。而[ab]表示a或b)。^ 运算 符的作用与NOT运算符相同,表示下一个字符是要被排除的。 |
in | <column> in ("a","b","345") | 关键字in左边的表达式与其右边的任意值匹配时返回true。in常用于子查询。 |
all、any、some |
<column|expression>
(比较运算符) <ANY|SOME>(子查询) |
子查询中全部值/任意值满足比较运算符(如<、>、=、>=)的条件时返回true。ALL指示表达式要匹配的
结果集中的所有值。any和some功能相似,在表达式匹配结果集中的任意值时返回true。 |
exists | exists(子查询) | 子查询返回至少一行记录时为true。 |