一、 简单查询 cgzy0$8dj\
简单的Transact-SQL查询只包括选择列表、FROM子句和WHERE子句。它们分别说明所查询列、查询的表或视图、以及搜索条件等。 rtcJ=`)0`
#&}%70R)
例如,下面的语句查询testtable表中姓名为“张三”的nickname字段和email字段。 m\l51}xz
%C6|-?TAd
SELECT nickname,email \f6lT3"VN
FROM testtable i'U,S`L6>
WHERE name='张三' t`)
'LT
PnI)n=(\
(一) 选择列表 zI1(F67d`
Z4=_k{*
选择列表(select_list)指出所查询列,它可以是一组列名列表、星号、表达式、变量(包括局部变量和全局变量)等构成。 N'I?fWN!;R
PQ6T|>
1、选择所有列 3&O% &
"sdcP8])d
例如,下面语句显示testtable表中所有列的数据: <.;@ksCPW{
vM5k4%D
SELECT * :O5Tr03z
FROM testtable G[ ,,L
?Ozk^#H[
2、选择部分列并指定它们的显示次序 aeLBaS
1hF2eNh
查询结果集合中数据的排列顺序与选择列表中所指定的列名排列顺序相同。 \o0z@Ntq
|}l@w+N3
例如: n+v!H O"2u
X *_
SHt
SELECT nickname,email Ar\IZ_Q
FROM testtable >+zAWK9
U+:S7z@j?
3、更改列标题 .%|OGl ?
{ +i; e]c
在选择列表中,可重新指定列标题。定义格式为: YhEiN. ~
=c
:lS&B
列标题=列名 >ly&+3S
列名 列标题 "(9=h@@Y"
wa9'2a1?
如果指定的列标题不是标准的标识符格式时,应使用引号定界符,例如,下列语句使用汉字显示列标题: Ej-=y2j{g
;JMOsn}8
SELECT 昵称=nickname,电子邮件=email n%7A;l!{
FROM testtable ?,.HA@T%
4、删除重复行 \Mobq
SELECT语句中使用ALL或DISTINCT选项来显示表中符合条件的所有行或删除其中重复的数据行,默认为ALL。使用DISTINCT选项时,对于所有重复的数据行在SELECT返回的结果集合中只保留一行。 E|KLK4]
BnY\FQ)K
5、限制返回的行数 V5hp
Y ]
?FkQe~FN{
使用TOP n [PERCENT]选项限制返回的数据行数,TOP n说明返回n行,而TOP n PERCENT时,说明n是表示一百分数,指定返回的行数等于总行数的百分之几。 N:m@D][/sW
<|mE9u
例如: 9{auleu
R
" 8~f
SELECT TOP 2 * f'7d4
FROM testtable 8A`p
SELECT TOP 20 PERCENT * qg) Af
FROM testtable 6$xo# }8
D4YT33$tC
(二)FROM子句 'p4da2%
BaNU}@
FROM子句指定SELECT语句查询及与查询相关的表或视图。在FROM子句中最多可指定256个表或视图,它们之间用逗号分隔。 jM|YW*zNZ
4WBoZJ
在FROM子句同时指定多个表或视图时,如果选择列表中存在同名列,这时应使用对象名限定这些列所属的表或视图。例如在usertable和citytable表中同时存在cityid列,在查询两个表中的cityid时应使用下面语句格式加以限定: %!N2!IiVs
iKR8^sj7S
SELECT username,citytable.cityid g_-?h&W
FROM usertable,citytable X3&SL~&>g
WHERE usertable.cityid=citytable.cityid fRca"v V
在FROM子句中可用以下两种格式为表或视图指定别名: O c^6u
CDwFVR'_Af
表名 as 别名 e<: 4czh8
表名 别名 eSQzjR*
EhmUX@k],
(二) FROM子句 s!nSE
H| eD/6K
FROM子句指定SELECT语句查询及与查询相关的表或视图。在FROM子句中最多可指定256个表或视图,它们之间用逗号分隔。 N]O{T_5-0
GN~[xXJU
在FROM子句同时指定多个表或视图时,如果选择列表中存在同名列,这时应使用对象名限定这些列所属的表或视图。例如在usertable和citytable表中同时存在cityid列,在查询两个表中的cityid时应使用下面语句格式加以限定: E@\d<c.
h^.tomg8
SELECT username,citytable.cityid //`cwnjp
FROM usertable,citytable RE(=! 8lGR
WHERE usertable.cityid=citytable.cityid USHlb#*
在FROM子句中可用以下两种格式为表或视图指定别名: _Ex*%Qf.
J?|K#<%
表名 as 别名 yhJA;&}>
表名 别名 *Bb|N--jI
例如上面语句可用表的别名格式表示为: q.u[g0h;
YU ]G5\UU
SELECT username,b.cityid b7>,-O
FROM usertable a,citytable b [qjAq@@N#q
WHERE a.cityid=b.cityid R-2FNl
,YAPCj
SELECT不仅能从表或视图中检索数据,它还能够从其它查询语句所返回的结果集合中查询数据。 hPEp0("
<IHFD^3|j
例如: W>t&N
1DI"LIL
SELECT a.au_fname+a.au_lname R9|2&pfm(M
FROM authors a,titleauthor ta ci{9ODN
(SELECT title_id,title FBwncG$]F*
;?O883@r8
FROM titles xqi*N13
WHERE ytd_sales>10000 ]IbPWBX
) AS t r=iMo7q
WHERE a.au_id=ta.au_id @?^LxqAWA
AND ta.title_id=t.title_id 5* o\z&*L
此例中,将SELECT返回的结果集合给予一别名t,然后再从中检索数据。