一、 简单查询 \4qwLM?E^
简单的Transact-SQL查询只包括选择列表、FROM子句和WHERE子句。它们分别说明所查询列、查询的表或视图、以及搜索条件等。 QhqXd
byrK``f
例如,下面的语句查询testtable表中姓名为“张三”的nickname字段和email字段。 M`jqUg
,|u^-J@
SELECT nickname,email %hnv
go:^g
FROM testtable gp`H>Sn.|
WHERE name='张三' m.|__L
md. #n
(一) 选择列表 `Fn6*_n
ja1WI
选择列表(select_list)指出所查询列,它可以是一组列名列表、星号、表达式、变量(包括局部变量和全局变量)等构成。 HC[)):S*
U.mVz,k3
1、选择所有列 CRKuN
w!8xZu
例如,下面语句显示testtable表中所有列的数据: FK ~FC:K
Vy6A]U\%
SELECT * *RpBKm&^7
FROM testtable /xseI)y.B
wAn}ic".b
2、选择部分列并指定它们的显示次序 ^qgOgu
p(J,fus
查询结果集合中数据的排列顺序与选择列表中所指定的列名排列顺序相同。 vsDR@Y}k
pD)$O}
例如: XC NM
]z{f)`;I
SELECT nickname,email AR}q<k6E
FROM testtable /-_<RQ
f:)%+)U<Xm
3、更改列标题 h9J%NH
Ny
oRp
在选择列表中,可重新指定列标题。定义格式为: V/; / &
SA1|7
列标题=列名 pl.D
h
列名 列标题 O,>`#?
[LcHO] _^M
如果指定的列标题不是标准的标识符格式时,应使用引号定界符,例如,下列语句使用汉字显示列标题: /ZcqKC
:% o32
SELECT 昵称=nickname,电子邮件=email `_*NFv1_
FROM testtable 6gSo>F4=
4、删除重复行 gr%!<2w
SELECT语句中使用ALL或DISTINCT选项来显示表中符合条件的所有行或删除其中重复的数据行,默认为ALL。使用DISTINCT选项时,对于所有重复的数据行在SELECT返回的结果集合中只保留一行。 0
jszZ_
\KpSYX1
5、限制返回的行数 luYa+E0
LBs:O*;
使用TOP n [PERCENT]选项限制返回的数据行数,TOP n说明返回n行,而TOP n PERCENT时,说明n是表示一百分数,指定返回的行数等于总行数的百分之几。 afJ`1l
a`:ag~op@&
例如: icnc5G
a*fUMhIi
SELECT TOP 2 * TGe)%jZ
FROM testtable OB&lq.r
SELECT TOP 20 PERCENT * \4B2%H
FROM testtable JC[G5$E
spV E'"^
(二)FROM子句 fQtV-\Bc
-55Pvg0ND
FROM子句指定SELECT语句查询及与查询相关的表或视图。在FROM子句中最多可指定256个表或视图,它们之间用逗号分隔。 68pB*(i
"N|gU;~W
在FROM子句同时指定多个表或视图时,如果选择列表中存在同名列,这时应使用对象名限定这些列所属的表或视图。例如在usertable和citytable表中同时存在cityid列,在查询两个表中的cityid时应使用下面语句格式加以限定: %%=PpKYtSD
AlQE;4yX
SELECT username,citytable.cityid $u`v
k|\R
FROM usertable,citytable R"0fZENTG
WHERE usertable.cityid=citytable.cityid 9*"Ae0ok1
在FROM子句中可用以下两种格式为表或视图指定别名: .S{Q }S
#UO#kC<2(B
表名 as 别名 Ig*qn# Dd
表名 别名 G{8>
8D[,z 7n
(二) FROM子句 n%"0%A
1E]|>)$
FROM子句指定SELECT语句查询及与查询相关的表或视图。在FROM子句中最多可指定256个表或视图,它们之间用逗号分隔。 y_mD9bgW
k~<b~VcU
在FROM子句同时指定多个表或视图时,如果选择列表中存在同名列,这时应使用对象名限定这些列所属的表或视图。例如在usertable和citytable表中同时存在cityid列,在查询两个表中的cityid时应使用下面语句格式加以限定: v;r!rZX
0i4X,oHjG
SELECT username,citytable.cityid >>'t7U##
FROM usertable,citytable Lh"!Z
WHERE usertable.cityid=citytable.cityid N0:gY]o%
在FROM子句中可用以下两种格式为表或视图指定别名: ?[|T"bE5[
#t^y$9^
表名 as 别名 <Fc @T4Q,
表名 别名 j|N8"8"
例如上面语句可用表的别名格式表示为: z
g '1T2t
qBkI9H
SELECT username,b.cityid tmCm54
FROM usertable a,citytable b ~|7jz;$V
WHERE a.cityid=b.cityid 99<0xN(25
m)]A$*`<
SELECT不仅能从表或视图中检索数据,它还能够从其它查询语句所返回的结果集合中查询数据。 ~BSE8M+r
w=r3QKm#K
例如: )kq3q5*_
)7H s
SELECT a.au_fname+a.au_lname ;g0p`wV
FROM authors a,titleauthor ta g7-=kmr|V
(SELECT title_id,title *t,J4c
?2#v`Z=L;
FROM titles K1F,M9 0]
WHERE ytd_sales>10000 &?-LL{W{
) AS t -}h+hS50F
WHERE a.au_id=ta.au_id vw'`t6
AND ta.title_id=t.title_id cP4K9:k
此例中,将SELECT返回的结果集合给予一别名t,然后再从中检索数据。