一、 简单查询 ~VKw%WK
简单的Transact-SQL查询只包括选择列表、FROM子句和WHERE子句。它们分别说明所查询列、查询的表或视图、以及搜索条件等。 R~i<*
KR*/ye G!E
例如,下面的语句查询testtable表中姓名为“张三”的nickname字段和email字段。 "O4Z).5q3
VYBl0!t
SELECT nickname,email w%ForDB>P
FROM testtable D+V^nCcx%
WHERE name='张三' 8Y9mB#X
7"NUof?i
(一) 选择列表 7j
Q`i;L}Y
e|I5Nx2)
选择列表(select_list)指出所查询列,它可以是一组列名列表、星号、表达式、变量(包括局部变量和全局变量)等构成。 ,RZktWW_
R?W8l5CIk
1、选择所有列 j{vzCRa>8
MI/1uw
例如,下面语句显示testtable表中所有列的数据: ]mp.KvB
__QTlj
SELECT * y!#1A?|k
FROM testtable eR/7*G5
a4wh-35/
2、选择部分列并指定它们的显示次序 (n<xoV[e
*VH1(E`hl
查询结果集合中数据的排列顺序与选择列表中所指定的列名排列顺序相同。 e\89;)
Q_dFZ
例如: P|\,kw>l
Y4_i=}\*vf
SELECT nickname,email oDC3AK&
FROM testtable VbN]z:
p"T4;QBxQ
3、更改列标题 G*QQpSp
gC 4w&yL
在选择列表中,可重新指定列标题。定义格式为: 4l|Am3vzX
mp#5Vc
列标题=列名 . &e,8
列名 列标题 Y/ `fPgE
G/y< bPQ
如果指定的列标题不是标准的标识符格式时,应使用引号定界符,例如,下列语句使用汉字显示列标题: GXAcyOV
Uz0mSfBp
SELECT 昵称=nickname,电子邮件=email G
-;Yua2\
FROM testtable ]?kf;A@
4、删除重复行 ' :Te#S
SELECT语句中使用ALL或DISTINCT选项来显示表中符合条件的所有行或删除其中重复的数据行,默认为ALL。使用DISTINCT选项时,对于所有重复的数据行在SELECT返回的结果集合中只保留一行。 Cc^t&Eg
Po2YDj`
5、限制返回的行数 !} 1p:@
qRU8uu
使用TOP n [PERCENT]选项限制返回的数据行数,TOP n说明返回n行,而TOP n PERCENT时,说明n是表示一百分数,指定返回的行数等于总行数的百分之几。 {M=tw
{f!m m3'2v
例如: <Z vG&
3y@'p(}Az
SELECT TOP 2 * )b
=$!
FROM testtable A`@we
SELECT TOP 20 PERCENT * f.,-KIiF
FROM testtable 9+L!
A
Q/< $ (Y
(二)FROM子句 )P$
IXA\
Nk7Q
FROM子句指定SELECT语句查询及与查询相关的表或视图。在FROM子句中最多可指定256个表或视图,它们之间用逗号分隔。 P"- ,^?6
X\ h]N
在FROM子句同时指定多个表或视图时,如果选择列表中存在同名列,这时应使用对象名限定这些列所属的表或视图。例如在usertable和citytable表中同时存在cityid列,在查询两个表中的cityid时应使用下面语句格式加以限定: p5*i
d5
?znSA
>
SELECT username,citytable.cityid AVi|JY)>
FROM usertable,citytable cD{[rI
E3
WHERE usertable.cityid=citytable.cityid r6^DD$X
在FROM子句中可用以下两种格式为表或视图指定别名: 0c]Lm?&
6gp3n;D
表名 as 别名 !_]WUQvV?
表名 别名 O9opX\9
_h5@3>b3r
(二) FROM子句 5!AzEB
i$ Zhk1
FROM子句指定SELECT语句查询及与查询相关的表或视图。在FROM子句中最多可指定256个表或视图,它们之间用逗号分隔。 Xdjxt?*
*bZV4}
在FROM子句同时指定多个表或视图时,如果选择列表中存在同名列,这时应使用对象名限定这些列所属的表或视图。例如在usertable和citytable表中同时存在cityid列,在查询两个表中的cityid时应使用下面语句格式加以限定: !D1F4v[c=
RY*6TYX!
SELECT username,citytable.cityid I3SLR
FROM usertable,citytable gSP|;Gy
WHERE usertable.cityid=citytable.cityid xbIxtZm
在FROM子句中可用以下两种格式为表或视图指定别名: 2lGq6Au:
}C)
表名 as 别名 s |qB;
表名 别名 fx9c1h9s
例如上面语句可用表的别名格式表示为: -tDmzuD6
JL]6o8x
SELECT username,b.cityid {4#'`Eejj
FROM usertable a,citytable b 9ah,a 4
WHERE a.cityid=b.cityid o\2#o5#
]92@&J0w
SELECT不仅能从表或视图中检索数据,它还能够从其它查询语句所返回的结果集合中查询数据。 yaeX-'(Fv[
}4+S_b
例如: Xmtq~}K>
J7S
SELECT a.au_fname+a.au_lname xHI>CNC,
FROM authors a,titleauthor ta -[ F<u
(SELECT title_id,title 7:;P>sF@
r]2}S=[
FROM titles Nk]r2^.z[
WHERE ytd_sales>10000 Ww@Rewo
) AS t .4U::j}
WHERE a.au_id=ta.au_id i5|!MIY
AND ta.title_id=t.title_id 8W#whK2El
此例中,将SELECT返回的结果集合给予一别名t,然后再从中检索数据。