一、 简单查询 3T|Y}
简单的Transact-SQL查询只包括选择列表、FROM子句和WHERE子句。它们分别说明所查询列、查询的表或视图、以及搜索条件等。 @GG(7r\/B
os1?6z~
例如,下面的语句查询testtable表中姓名为“张三”的nickname字段和email字段。 Zn@W7c,_I
G`,u40a
SELECT nickname,email 3$c (M99r
FROM testtable ok `]:gf
WHERE name='张三' T0`"kjE
69C8-fF0[I
(一) 选择列表 hI|/>4<
,{?q^"
选择列表(select_list)指出所查询列,它可以是一组列名列表、星号、表达式、变量(包括局部变量和全局变量)等构成。 &:c:9w
n$XdSh/
1、选择所有列 y !<'rg
.!(,$'(@=
例如,下面语句显示testtable表中所有列的数据: aXdf>2c{JD
#e.jY_
SELECT * [IX*sr
FROM testtable P3iA(3I24<
X"[dQ_o
2、选择部分列并指定它们的显示次序 k7^R,.c@
!TP6=ks
查询结果集合中数据的排列顺序与选择列表中所指定的列名排列顺序相同。 ~n[b^b
=s'XR@
例如: &:V@2_6"
,AH0*L
SELECT nickname,email 4K9Rpm
FROM testtable 'aD6>8/Hj
&P
8!]:
3、更改列标题 `,wcQ
u12zRdn
在选择列表中,可重新指定列标题。定义格式为: {r={#mO;p
E@w[
列标题=列名 'h-3V8m^e
列名 列标题 O)`fvpVU
Bx(yu'g|a
如果指定的列标题不是标准的标识符格式时,应使用引号定界符,例如,下列语句使用汉字显示列标题: ! FNf>z+
oi2J:Y4
SELECT 昵称=nickname,电子邮件=email YywEZ?X
FROM testtable j2|XDOf
4、删除重复行 E:
9o;JU
SELECT语句中使用ALL或DISTINCT选项来显示表中符合条件的所有行或删除其中重复的数据行,默认为ALL。使用DISTINCT选项时,对于所有重复的数据行在SELECT返回的结果集合中只保留一行。 %
f2<U;ff
iQt!PMF.
5、限制返回的行数 b5AGk
2B7h9P.N B
使用TOP n [PERCENT]选项限制返回的数据行数,TOP n说明返回n行,而TOP n PERCENT时,说明n是表示一百分数,指定返回的行数等于总行数的百分之几。 &*B>P>x
izCaB~{/
例如: (/"thv5vT{
Bvz62?
SELECT TOP 2 * Wk@
eV\H71
FROM testtable q0&Wk"X%rr
SELECT TOP 20 PERCENT * <rNtY ,
FROM testtable ht?CHUu
n0_B(997*
(二)FROM子句 : *ERRSL)
D"L|"qJ
FROM子句指定SELECT语句查询及与查询相关的表或视图。在FROM子句中最多可指定256个表或视图,它们之间用逗号分隔。 R0%?:!
F
$`|5/,M%QN
在FROM子句同时指定多个表或视图时,如果选择列表中存在同名列,这时应使用对象名限定这些列所属的表或视图。例如在usertable和citytable表中同时存在cityid列,在查询两个表中的cityid时应使用下面语句格式加以限定: -#Np7/
n`]l^qE
SELECT username,citytable.cityid 81Z4>F:
FROM usertable,citytable }wG,BB %N
WHERE usertable.cityid=citytable.cityid wGPotPdE2
在FROM子句中可用以下两种格式为表或视图指定别名: EMLx?JnP
>):m-I
表名 as 别名 mA&=q_gS
表名 别名 W.^Ei\w/t
Cz_AJ-WR
(二) FROM子句 XE9)c
2s 7mI'
FROM子句指定SELECT语句查询及与查询相关的表或视图。在FROM子句中最多可指定256个表或视图,它们之间用逗号分隔。 e1Ob!N-
MRQZIi
在FROM子句同时指定多个表或视图时,如果选择列表中存在同名列,这时应使用对象名限定这些列所属的表或视图。例如在usertable和citytable表中同时存在cityid列,在查询两个表中的cityid时应使用下面语句格式加以限定: !g8*r"[UJ
\M9h&I\7
SELECT username,citytable.cityid [*Q-nZ/L
FROM usertable,citytable ! ,@ZQS
WHERE usertable.cityid=citytable.cityid Zvxp%dES
在FROM子句中可用以下两种格式为表或视图指定别名: pA<eTlH
t\8&*(&3F
表名 as 别名 ( :{"C6x
表名 别名 NS@{~;#R
例如上面语句可用表的别名格式表示为: sGSsUO:@j;
VBM/x|'
SELECT username,b.cityid J{d(1gSZ
FROM usertable a,citytable b UR}kB&t
WHERE a.cityid=b.cityid K"L_`.&Q
U
IfH*6X
SELECT不仅能从表或视图中检索数据,它还能够从其它查询语句所返回的结果集合中查询数据。 W6vf=I@f
AM'gnP>
例如: *8PN!^
q/$GE,"
SELECT a.au_fname+a.au_lname vv &BhIf3
FROM authors a,titleauthor ta 1] j^d
(SELECT title_id,title > @+#
X(]Zr
FROM titles !i^]UN
WHERE ytd_sales>10000 }qAVN
) AS t L1wZU, o
WHERE a.au_id=ta.au_id ibXe"X/_
AND ta.title_id=t.title_id j eq:
此例中,将SELECT返回的结果集合给予一别名t,然后再从中检索数据。