一、简单查询 fR<_ 4L
v^2q\A-?
简单的Transact-SQL查询只包括选择列表、FROM子句和WHERE子句。它们分别说明所查询列、查询的 z
zL@3/<j
A&_H%]{<:
表或视图、以及搜索条件等。 bmN'{09@
d`9%:2qE
例如,下面的语句查询testtable表中姓名为“张三”的nickname字段和email字段。 +{Yd\{9
9[}L=n
SELECT nickname,email ]pi"M3f_
n'a=@/
FROM testtable JK:i-
+[C(hhk("
WHERE name='张三' V'(yrz!
MKIX(r(|
(一)选择列表 6$-Ex
0<"4W:
选择列表(select_list)指出所查询列,它可以是一组列名列表、星号、表达式、变量(包括局部变 0~{jgN~
"IbXKS>t
量和全局变量)等构成。 M:V'vme)+
iev02 8M
1、选择所有列 \k\ {S2SU
GZ.Xx
例如,下面语句显示testtable表中所有列的数据: 3>X]`Oj7y
kBZnR$Cl
SELECT * ZN75ONL
0LX;Vvo
FROM testtable ^hPREbD+f
jA@js v
2、选择部分列并指定它们的显示次序 C}grY5:
ST'M<G%4E
查询结果集合中数据的排列顺序与选择列表中所指定的列名排列顺序相同。 `j+aAxJ=\
k?-GI[@X
例如: WK;X6`
?v8.3EE1\o
SELECT nickname,email nojJGeW%
4D(5WJ&
FROM testtable le1
h:{rjXK
3、更改列标题 <u>l#weG,
i>Wsc?
在选择列表中,可重新指定列标题。定义格式为: ?K9&ye_rgw
hUy"XXpr
列标题=列名 82ay("ZY
HD^ Ou5YB
列名 列标题 ,z A9*
h!l&S2)D`
如果指定的列标题不是标准的标识符格式时,应使用引号定界符,例如,下列语句使用汉字显示列 ;"/[gFD5u
C+\c(M a
标题: UYJMW S=
u0^Vy#@_
SELECT 昵称=nickname,电子邮件=email TC 7&IqT
c^ $_epc*
FROM testtable LLE\ ;,bv
dO/iL7K&
4、删除重复行 ^Pqj*k+F
/[
_aw&W}Z
SELECT语句中使用ALL或DISTINCT选项来显示表中符合条件的所有行或删除其中重复的数据行,默认 ^2C)Wk$
-1'O
为ALL。使用DISTINCT选项时,对于所有重复的数据行在SELECT返回的结果集合中只保留一行。 xZ'-G6O
"~
y(gL.08<
5、限制返回的行数 fyYHwG
\@IEqm6
使用TOP n [PERCENT]选项限制返回的数据行数,TOP n说明返回n行,而TOP n PERCENT时,说明n是 XL9smFq
f;os\8JdM
表示一百分数,指定返回的行数等于总行数的百分之几。 J_PAWW
kpT>xS^6<
例如: _}8hEv
GQ=Zp3[
SELECT TOP 2 * OCR`1
~<[$.8*
FROM testtable byALM
)UBU|uYR\
SELECT TOP 20 PERCENT * (9g L
SrlTwcD
FROM testtable &>Zm gz
1%Yd ] 1c(
(二)FROM子句 bYsK|n
b,vSE,&xP
FROM子句指定SELECT语句查询及与查询相关的表或视图。在FROM子句中最多可指定256个表或视图, z?T;2/_7
6T*MKu
它们之间用逗号分隔。 k@[\C`P
n=t50/jV3=
在FROM子句同时指定多个表或视图时,如果选择列表中存在同名列,这时应使用对象名限定这些列 i_/A,5TF
mab921-n
所属的表或视图。例如在usertable和citytable表中同时存在cityid列,在查询两个表中的cityid时应 j1[Ng #.
T22
4L.?
使用下面语句格式加以限定: MR")
rw:z|-r
SELECT username,citytable.cityid B49:
R>
6-"@j@l5<
FROM usertable,citytable ky2n%<0]
'mwgHo<u
WHERE usertable.cityid=citytable.cityid Q,pnh!.-c
(<bYoWrK#
在FROM子句中可用以下两种格式为表或视图指定别名: m
|Isi
An0DqjR
表名 as 别名 l', +l{\Z
j@g`Pm%u`
表名 别名 1Ce7\A
Z5x&P_.x[
例如上面语句可用表的别名格式表示为: b'x26wT?
HL8onNq
SELECT username,b.cityid dnEIR5%+.
=@e3I)D#?i
FROM usertable a,citytable b SX/E@vYb
OKW}8 qM
WHERE a.cityid=b.cityid z@za9U`6i
n 0/<m.
SELECT不仅能从表或视图中检索数据,它还能够从其它查询语句所返回的结果集合中查询数据。 ,\fp.K<
Jcy{ ~>@7
例如: G5Mo IC
pCacm@(hG
SELECT a.au_fname+a.au_lname ~&}e8ah2
P8&BtA
FROM authors a,titleauthor ta |DUWB;
RA];hQI?
(SELECT title_id,title o]R*6$
KM-d8^\:
FROM titles 1>~bzXY#
-hd@<+;E
WHERE ytd_sales>10000 #BLx +mLq
L0lqm0h
) AS t (
* &E~g
t,bQ@x{zVC
WHERE a.au_id=ta.au_id >O;V[H2[
u;
]4ydp
AND ta.title_id=t.title_id 9~7s*3zI
1 eP`
此例中,将SELECT返回的结果集合给予一别名t,然后再从中检索数据。 )~X.x"}8k
1]&FB{l
(三)使用WHERE子句设置查询条件 +,g3Xqs}X
}Quk n
WHERE子句设置查询条件,过滤掉不需要的数据行。例如下面语句查询年龄大于20的数据: &':Ecmo~`
U ;%cp
SELECT * F<V.OFt
2gasH11M
FROM usertable 5&