一、简单查询 Y|x6g(b
Qn'r+X5t
简单的Transact-SQL查询只包括选择列表、FROM子句和WHERE子句。它们分别说明所查询列、查询的 l b1sV
a?U%l 9F
表或视图、以及搜索条件等。 >r4Y\"/j
XCqfAcNQ
例如,下面的语句查询testtable表中姓名为“张三”的nickname字段和email字段。 yaYIgG
Vbqm]2o&
SELECT nickname,email 8^ ~ZNU-~v
qu#@F\gX
FROM testtable I%zo>s6
3MBz
WHERE name='张三' pn_gq~5ng
_uy5?auQ
(一)选择列表 7,&]1+n
}v(H
E%~}
选择列表(select_list)指出所查询列,它可以是一组列名列表、星号、表达式、变量(包括局部变 8HH.P`Vk#
5x1jLPl'
量和全局变量)等构成。 zx]M/=7,V#
2AdHj&XE
1、选择所有列 )l!&i?h%
IpaJ<~ p
例如,下面语句显示testtable表中所有列的数据: !i"9f_
Velbq
SELECT * ~]_jKe4W
I!0 $%
]F
FROM testtable K~hlwjrt
EJ
&ZZg
2、选择部分列并指定它们的显示次序 1r-,VX7
k}Clq;G
查询结果集合中数据的排列顺序与选择列表中所指定的列名排列顺序相同。 vsr~[d=
aY1#K6(y
例如: I+4qu|0lA
*i]Z=
SELECT nickname,email E/ed0'|m
XGrxzO|{
FROM testtable Rp@}9qijb
k f K"i
3、更改列标题 Zs K'</7
px(1Ppb9
在选择列表中,可重新指定列标题。定义格式为: |#khwH
)mo|.L0
列标题=列名 MgK(gL/&[
[#@p{[ ?r
列名 列标题 a~N)qYL:
}"; hz*a
如果指定的列标题不是标准的标识符格式时,应使用引号定界符,例如,下列语句使用汉字显示列 #.G>SeTn2}
{D2d({7
标题: },QFyT
DkMC!Q\
SELECT 昵称=nickname,电子邮件=email @SVEhk#
GPhwq n{
FROM testtable [r<
Y0|l,m
V{aIhH>P
4、删除重复行 }y=n#%|i.
k3|9U'r!c
SELECT语句中使用ALL或DISTINCT选项来显示表中符合条件的所有行或删除其中重复的数据行,默认 b!tZ bX#
fO}1(%}d
为ALL。使用DISTINCT选项时,对于所有重复的数据行在SELECT返回的结果集合中只保留一行。 W,oV$ s^
+iDz+3v(
5、限制返回的行数 8#JyK+NU
[.#$hOsNR
使用TOP n [PERCENT]选项限制返回的数据行数,TOP n说明返回n行,而TOP n PERCENT时,说明n是 !\|@{UJk/
apWrcaj
表示一百分数,指定返回的行数等于总行数的百分之几。 @Oc}\Rg
N|#x9mE
例如: V9 t:JY
ojs/yjvx
SELECT TOP 2 * ~|d?o5W
[`nyq )
FROM testtable PT*@#:MA
+z/73s0~
SELECT TOP 20 PERCENT * [(^''*7r+T
HBkQ`T
FROM testtable _f2iz4
1~iBzPU2
(二)FROM子句 /SM#hwFxJ&
&7y1KwfXn
FROM子句指定SELECT语句查询及与查询相关的表或视图。在FROM子句中最多可指定256个表或视图, WRyv
>Y
7&U+f:-w
它们之间用逗号分隔。 E^>7jf09,
L$07u{Q
在FROM子句同时指定多个表或视图时,如果选择列表中存在同名列,这时应使用对象名限定这些列 9!OCilG
.;sPG
所属的表或视图。例如在usertable和citytable表中同时存在cityid列,在查询两个表中的cityid时应 hdDI%3vk3
a+Qj[pS
使用下面语句格式加以限定: pDS4_u
fHp#Gi3Lz
SELECT username,citytable.cityid \Hx#p`B%
sy#j+gZ
FROM usertable,citytable L1w4WFWO
o\YdL2:X
WHERE usertable.cityid=citytable.cityid 8i
'jkyInT
T//+&Sk[
在FROM子句中可用以下两种格式为表或视图指定别名: j
W]c9u
9Yne=R/]
表名 as 别名 {y%O_-C'r
,UJPLj^
表名 别名 n7<-lQRaxZ
Xpz-@fqKdf
例如上面语句可用表的别名格式表示为: UVRV7^eTe
7`n8
OR4
SELECT username,b.cityid NNV.x7
24k}~"We
FROM usertable a,citytable b p+1B6 j
N9hWx()v
WHERE a.cityid=b.cityid sSb&r
g}`CdVQ2M<
SELECT不仅能从表或视图中检索数据,它还能够从其它查询语句所返回的结果集合中查询数据。 R1%T>2"~&
!f[N&se
例如: 3JO:n6
\DdVMn
SELECT a.au_fname+a.au_lname ?4dd|n
&%51jM<
FROM authors a,titleauthor ta A)0m~+?{J
G`K7P`m
(SELECT title_id,title KUV{]?'
,tc]E45
FROM titles j>=".^J
(.t:sn"P
WHERE ytd_sales>10000 }{PtQc6RL!
~oyPmIcb
) AS t vYun^(_-
m#(x D~V
WHERE a.au_id=ta.au_id D#(L@{vC
K_Gf\x
AND ta.title_id=t.title_id #.K&]OV/88
PltPIu)F
此例中,将SELECT返回的结果集合给予一别名t,然后再从中检索数据。 uB9+E%jOdQ
|-?b)yuAz
(三)使用WHERE子句设置查询条件
c'4 \F9
x?$Y<=vT
WHERE子句设置查询条件,过滤掉不需要的数据行。例如下面语句查询年龄大于20的数据:
#rC+13
P=i |{vv(
SELECT * :~(^b;yhZ
ZACn_gd[5
FROM usertable K1yM'6Zw
xpo}YF'5
WHERE age>20 jF0BWPL
-Euy5Y
WHERE子句可包括各种条件运算符: uATRZMai
<AXYqH7%A
比较运算符(大小比较):>、>=、=、<、<=、<>、!>、!< v:ZD}Q_
Lg53
Ms%
范围运算符(表达式值是否在指定的范围):BETWEEN…AND… <0MUn#7'
Kn]WXc|("
NOT BETWEEN…AND… hj[g2S%X
lKSI5d
列表运算符(判断表达式是否为列表中的指定项):IN (项1,项2……) \p|!=H@
T{Q&