一、简单查询 J"QXu M
_F>1b16:/P
简单的Transact-SQL查询只包括选择列表、FROM子句和WHERE子句。它们分别说明所查询列、查询的 #\N?ka}!
'ah|cMRn
表或视图、以及搜索条件等。 H
.)}|
~fw 6sY#
例如,下面的语句查询testtable表中姓名为“张三”的nickname字段和email字段。 HmKvu"3
Yao>F--?
SELECT nickname,email 5x?eun
(UDF^
FROM testtable QEL^0c8 ~
]\5@N7h
WHERE name='张三' uMa: GDh7
.z&V!2zp
(一)选择列表 m76**X
6g4CUP'Y
选择列表(select_list)指出所查询列,它可以是一组列名列表、星号、表达式、变量(包括局部变 #%z--xuJL
#Z<pks2
y
量和全局变量)等构成。 D
7 l&L
u\=gps/Z
1、选择所有列 jC+>^=J(
SjD,
例如,下面语句显示testtable表中所有列的数据: B%gk[!d}8
='u'/g$'&
SELECT * 9UTWq7KJ
[0.>:wT
FROM testtable u{0+w\xH\
E{gu39 D
2、选择部分列并指定它们的显示次序 LqIMU4Ex
J0zudbP
查询结果集合中数据的排列顺序与选择列表中所指定的列名排列顺序相同。 ANtp7ad
X<@yt HBv
例如: 6GX'&z
N[X%tf\L]F
SELECT nickname,email rg+28tlDn
nR4L4tdS
FROM testtable GjZ@fnF
aGVzg$
3、更改列标题 "wL~E Si
vb/*ILS
在选择列表中,可重新指定列标题。定义格式为: G~_5E]8
HVz-i{M
列标题=列名 2!f0!<te
FQNhn+A
列名 列标题 UXD?gK1
7Z5,(dH>
如果指定的列标题不是标准的标识符格式时,应使用引号定界符,例如,下列语句使用汉字显示列 ^(m`5]qr7J
L(TO5Y]
标题: >0)E\_ u
Y M{Q)115
SELECT 昵称=nickname,电子邮件=email ;y<)RM
5~k-c Ua
FROM testtable :}x\&]uC#k
i,rP/A^q
4、删除重复行
Y<TlvB)w
G&:[G>iSm^
SELECT语句中使用ALL或DISTINCT选项来显示表中符合条件的所有行或删除其中重复的数据行,默认 }hyK/QUCoN
ac>}$Uw)
为ALL。使用DISTINCT选项时,对于所有重复的数据行在SELECT返回的结果集合中只保留一行。 b0X*+q
y2>v'%]2
5、限制返回的行数 }Bw=2 ~
_Ptf^+
使用TOP n [PERCENT]选项限制返回的数据行数,TOP n说明返回n行,而TOP n PERCENT时,说明n是 ]*j>yj.Y'~
,'5P[-
表示一百分数,指定返回的行数等于总行数的百分之几。 ?15k~1nA
6;Cr92
例如: +5Ir=]=T9
RI w6i?/I
SELECT TOP 2 * $t.N|b`'
=bs4*[zq
FROM testtable F3jrJ+nJ
Djx9TBZ5
SELECT TOP 20 PERCENT * B)
&BqZ&
JfKhYRl
FROM testtable U#G
uB&V
S1uW`zQ!+_
(二)FROM子句 *7oPM5J|v
*{W5QEa
FROM子句指定SELECT语句查询及与查询相关的表或视图。在FROM子句中最多可指定256个表或视图, I'"*#QOX
ar+mj=m
它们之间用逗号分隔。 #W
1`vke3
[UNfft=K3P
在FROM子句同时指定多个表或视图时,如果选择列表中存在同名列,这时应使用对象名限定这些列 hDmtBdE
As@~%0 S
所属的表或视图。例如在usertable和citytable表中同时存在cityid列,在查询两个表中的cityid时应 J x-^WB
@A!Ef=R
使用下面语句格式加以限定: q9pBS1Ej
#[sC H
SELECT username,citytable.cityid %_M B-
1mOZ\L!m*
FROM usertable,citytable ']$ttfJB
<9-tA\`8N
WHERE usertable.cityid=citytable.cityid 3Zsqx=w
m#,
F%s
在FROM子句中可用以下两种格式为表或视图指定别名: }@@1N3nnxV
0LoA-c<Ay
表名 as 别名 M7yJ2u <Ty
M<7<L
表名 别名 Bx
E1Ky8@A
aFo%B; 8m
例如上面语句可用表的别名格式表示为: 6`NsX
=N<Hc:<t4
SELECT username,b.cityid L"zOa90ig
b9EJLD
FROM usertable a,citytable b ;Iw'TF
ec1snMY
WHERE a.cityid=b.cityid 8v1asFxs.
6#N1 -@
SELECT不仅能从表或视图中检索数据,它还能够从其它查询语句所返回的结果集合中查询数据。 \ :})R{
*bn9j>|iv
例如: A42At]
\_@u"+,$W
SELECT a.au_fname+a.au_lname =%Ut&6}sQ
5
W(iU
FROM authors a,titleauthor ta Ul@ZCv+
~/3cQN^
(SELECT title_id,title 1}S_CR4XBs
Y+upZ@Ga
FROM titles _<