一、简单查询 Ke5fe#
-5&|"YYjr{
简单的Transact-SQL查询只包括选择列表、FROM子句和WHERE子句。它们分别说明所查询列、查询的 {9/ayG[98
P7X':
表或视图、以及搜索条件等。 K #f*LV5
z~Ec *
例如,下面的语句查询testtable表中姓名为“张三”的nickname字段和email字段。 |aaoi4OJ
7H,p/G?]k
SELECT nickname,email \v*WI)]
;|.~'':
FROM testtable )`4g, W
ZRD@8'1p
WHERE name='张三' _QS +{
CH`_4UAX%
(一)选择列表 yjq~O~
.lcI"%>
选择列表(select_list)指出所查询列,它可以是一组列名列表、星号、表达式、变量(包括局部变 ox}LC,!
kS\A_"bc
量和全局变量)等构成。 KRL9dD,&
>k\lE(
1、选择所有列 g_T[m*
96 ozt UK
例如,下面语句显示testtable表中所有列的数据: ;$0)k(c9
KX|7mr90K
SELECT * _ +"V5z
qaj~q(j~C
FROM testtable ]jkaOj
,j'>}'wG)
2、选择部分列并指定它们的显示次序
N1pw*<&
88]UA
查询结果集合中数据的排列顺序与选择列表中所指定的列名排列顺序相同。 Zn-F !Lsv
s}O9[_v
例如: ya*KA.EGg
'`+GC9VG
SELECT nickname,email McXid~
IM^K]$q$47
FROM testtable A3;}C+K
jTDaW8@L
3、更改列标题 0Ud.u
2#^@awJ ?
在选择列表中,可重新指定列标题。定义格式为: )`*=P}D
u> YC4&
列标题=列名 hxedQvW
l9zkx'xt.-
列名 列标题 9:]w|lE:D
ZQ0R3=52r
如果指定的列标题不是标准的标识符格式时,应使用引号定界符,例如,下列语句使用汉字显示列 )S,Rx
_a?(JzLw5
标题: |3h-F5V)
YhZmyYamE
SELECT 昵称=nickname,电子邮件=email \["'%8[:gR
@N?u{|R:d
FROM testtable 1Re5)Y:i
/W vgC)
4、删除重复行 8
<~E;:
)-RI
SELECT语句中使用ALL或DISTINCT选项来显示表中符合条件的所有行或删除其中重复的数据行,默认 iaq+#k@ V
|KC!6<}T~9
为ALL。使用DISTINCT选项时,对于所有重复的数据行在SELECT返回的结果集合中只保留一行。 Pd~{XM,yfW
6oQSXB@
5、限制返回的行数 -=+@/@nV
{p70(
]v
使用TOP n [PERCENT]选项限制返回的数据行数,TOP n说明返回n行,而TOP n PERCENT时,说明n是 G!^}z(Mgi
w7;,+Jq
表示一百分数,指定返回的行数等于总行数的百分之几。 Q;'{~! =
l1EI4Y9KG
例如: +ROwk
YyF=u~l
SELECT TOP 2 * `u *:wJsv
TsvF~Gdp
FROM testtable (;Ad:!9{
)6k([u%;B
SELECT TOP 20 PERCENT * Ag6^>xb^
E &wz0d;gf
FROM testtable ^J[r<Dm8F
{cW%i:
(二)FROM子句 AMm)E
uxKj7!(#
FROM子句指定SELECT语句查询及与查询相关的表或视图。在FROM子句中最多可指定256个表或视图, 9A-=T>|of
ISbhC!59
它们之间用逗号分隔。 '0\v[f{K3G
,f]GOH
在FROM子句同时指定多个表或视图时,如果选择列表中存在同名列,这时应使用对象名限定这些列 Y
>83G`*}b
Zdm7As]
所属的表或视图。例如在usertable和citytable表中同时存在cityid列,在查询两个表中的cityid时应 lV*dQwa?i
v'vYNh
使用下面语句格式加以限定: 9k`}fk\M
_T{
"F
SELECT username,citytable.cityid IGtpL[. ;/
soTmKqj E
FROM usertable,citytable wS)2ymRg
3G;#QK-c
WHERE usertable.cityid=citytable.cityid -%g$~MZ?'
5g$]ou
在FROM子句中可用以下两种格式为表或视图指定别名: _!} L\E~
!97k
表名 as 别名 TrEo5H ;
uE]kv
表名 别名 .wb[cCUQ
bS!4vc1`2
例如上面语句可用表的别名格式表示为: )5O E~}>
J$/'nL<{^
SELECT username,b.cityid 3 cb$g
9 :ubPqt
FROM usertable a,citytable b !
/^Jma7n
mF@)l]UZ'
WHERE a.cityid=b.cityid GjfPba4>
T"tR*2HwSd
SELECT不仅能从表或视图中检索数据,它还能够从其它查询语句所返回的结果集合中查询数据。 $1F$3"k
0[O ."9
例如: +'@j~\>^yJ
G|h@O'
SELECT a.au_fname+a.au_lname *MG*]\D
5r-OE-U{
FROM authors a,titleauthor ta JSAbh\Mq6
hbOyrjanx
(SELECT title_id,title NhgzU+)+
@uJ^k
>B
FROM titles M(8Mj[>>Rj
h5do?b v!
WHERE ytd_sales>10000 zBKfaQI,
dYn<L/#
) AS t *wd@YMOP
xaSg'8-
WHERE a.au_id=ta.au_id *>#mI/#}
'Wv`^{y <^
AND ta.title_id=t.title_id ;L{#TC(]J]
gl$ Ks+od
此例中,将SELECT返回的结果集合给予一别名t,然后再从中检索数据。 _>LI[yf{
W~QH"Sq
(三)使用WHERE子句设置查询条件 ]w+n39da
us0{y7(p
WHERE子句设置查询条件,过滤掉不需要的数据行。例如下面语句查询年龄大于20的数据: 6zf3A:]&{
cj5;XK
SELECT * 6HK
dBW$/
=rB=! ;
FROM usertable Jj:Bi&C
JR_s-&