一、 简单查询 Xsq@E#@S
简单的Transact-SQL查询只包括选择列表、FROM子句和WHERE子句。它们分别说明所查询列、查询的表或视图、以及搜索条件等。 )/;KxaKt
p/h\QG1
例如,下面的语句查询testtable表中姓名为“张三”的nickname字段和email字段。 Y
[`+7w
?*fa5=ql
SELECT nickname,email Ww]$zd-bo
FROM testtable 6R6Ub
0
WHERE name='张三' $p0nq&4c
G$<(>"Yr~$
(一) 选择列表 5p0~AN)
tDK@?PfKz
选择列表(select_list)指出所查询列,它可以是一组列名列表、星号、表达式、变量(包括局部变量和全局变量)等构成。 Q]k<Y
B5lwQp]
1、选择所有列 +Iyyk02V
r6DLShP-Ur
例如,下面语句显示testtable表中所有列的数据: U zy@\
MKHnA|uQ](
SELECT * ]&*POri&
FROM testtable 9p{4-]
#t+?eye~
2、选择部分列并指定它们的显示次序 G]K1X"W?
#I/P9)4
查询结果集合中数据的排列顺序与选择列表中所指定的列名排列顺序相同。 oB:7R^a
1V%tev9a
例如: jRK}H*uem
37U8<
SELECT nickname,email ]>n{~4a
FROM testtable (t4i&7-
[?]N
GTr#
3、更改列标题 7H7
Xbi@
6$`< Y?
在选择列表中,可重新指定列标题。定义格式为: @kYY1m v;
_jQ:9,;
A
列标题=列名 iM]O
列名 列标题 L AQ@y-K3
7+jxf[(XQ
如果指定的列标题不是标准的标识符格式时,应使用引号定界符,例如,下列语句使用汉字显示列标题: q)q3p
d<m;Q}/l&h
SELECT 昵称=nickname,电子邮件=email uzd7v,
FROM testtable I,?NYIG"(
4、删除重复行 %_!/4^smE
SELECT语句中使用ALL或DISTINCT选项来显示表中符合条件的所有行或删除其中重复的数据行,默认为ALL。使用DISTINCT选项时,对于所有重复的数据行在SELECT返回的结果集合中只保留一行。 C;BO6$*_e
A2'i~_e
5、限制返回的行数 4)8k?iC*
@cDB 7w\
使用TOP n [PERCENT]选项限制返回的数据行数,TOP n说明返回n行,而TOP n PERCENT时,说明n是表示一百分数,指定返回的行数等于总行数的百分之几。 LRJX>+@
+:KZEFY?<
例如: i).%GMv*r
{*_Ln
SELECT TOP 2 * Aiq Kf=
FROM testtable ,1]UOQ>AP
SELECT TOP 20 PERCENT * '}OdF*L
FROM testtable TFSdb\g
#7uH>\r
(二)FROM子句
+25}X{r$_
omfX2Oa2
FROM子句指定SELECT语句查询及与查询相关的表或视图。在FROM子句中最多可指定256个表或视图,它们之间用逗号分隔。 A*h8 o9M
ti5fsc
在FROM子句同时指定多个表或视图时,如果选择列表中存在同名列,这时应使用对象名限定这些列所属的表或视图。例如在usertable和citytable表中同时存在cityid列,在查询两个表中的cityid时应使用下面语句格式加以限定: aBAoSn
%'2P4(
SELECT username,citytable.cityid 8FsQLeOE
FROM usertable,citytable t[|oSF#i
WHERE usertable.cityid=citytable.cityid }z]d]
在FROM子句中可用以下两种格式为表或视图指定别名: UF9={fN1
M\1CDU+*Ns
表名 as 别名 -laH^<jm5
表名 别名 HhbBt'fH
$(1t~u<17
(二) FROM子句 )~'UJPK
:5kDc"
=Z|
FROM子句指定SELECT语句查询及与查询相关的表或视图。在FROM子句中最多可指定256个表或视图,它们之间用逗号分隔。 5wK==hZ
vl (``5{
在FROM子句同时指定多个表或视图时,如果选择列表中存在同名列,这时应使用对象名限定这些列所属的表或视图。例如在usertable和citytable表中同时存在cityid列,在查询两个表中的cityid时应使用下面语句格式加以限定: 1g;2e##)
}8O9WS
SELECT username,citytable.cityid }&v}S6T
FROM usertable,citytable L$ T2 bul
WHERE usertable.cityid=citytable.cityid "aGmv9\
在FROM子句中可用以下两种格式为表或视图指定别名: rZUTBLZ`j
(kL"*y/"p
表名 as 别名 4
]oe`yx
表名 别名 x?i
wtZ@
例如上面语句可用表的别名格式表示为: jFQ y[k-B
!'$*Z(
SELECT username,b.cityid )<x9t@$
FROM usertable a,citytable b M"z=114
WHERE a.cityid=b.cityid >N^<Q4%2
cW3'057
SELECT不仅能从表或视图中检索数据,它还能够从其它查询语句所返回的结果集合中查询数据。 wSR|uh
Zg+.`>z
例如: igu1s}F
l$u52e!7
SELECT a.au_fname+a.au_lname '/GB8L
FROM authors a,titleauthor ta tQ}GTqk
(SELECT title_id,title Ana[>wSZO@
-@AhJY.
FROM titles `^#Rwn#
WHERE ytd_sales>10000 =Uk#7U"P
) AS t ra~=i|s
WHERE a.au_id=ta.au_id >MYxj}I4{z
AND ta.title_id=t.title_id ^B.Z3Y
此例中,将SELECT返回的结果集合给予一别名t,然后再从中检索数据。