一、 简单查询 6mxzE3?G
简单的Transact-SQL查询只包括选择列表、FROM子句和WHERE子句。它们分别说明所查询列、查询的表或视图、以及搜索条件等。 2';{o=TXV
>I+p;V$@
例如,下面的语句查询testtable表中姓名为“张三”的nickname字段和email字段。 ]x'd0GH"]
G) 37?A)
SELECT nickname,email rfh`;G5s
FROM testtable JM*!(\Y
WHERE name='张三' I%z,s{9p
$B]_^
(一) 选择列表 _@_EQ!=
R|*Eg,1g -
选择列表(select_list)指出所查询列,它可以是一组列名列表、星号、表达式、变量(包括局部变量和全局变量)等构成。 IfP?+yPa
G//hZwf0
1、选择所有列 '_91(~P
|vBy=:
例如,下面语句显示testtable表中所有列的数据: ~*tn|?%
fzN?X=
SELECT * y (%y'xBP
FROM testtable |NWHZo
' Yy+^iCus
2、选择部分列并指定它们的显示次序 V'K:52
+Je%8jH
查询结果集合中数据的排列顺序与选择列表中所指定的列名排列顺序相同。 `j 4>
h5v=h>c
例如: .W\x{h
$?;)uoAg
SELECT nickname,email L3*HgkQQ
FROM testtable yy`XtJBWWs
gL7rX a j
3、更改列标题 7oCY@>(f
m:9|5W
在选择列表中,可重新指定列标题。定义格式为: y7Hoy.(
be(hY{y`
列标题=列名 /%bnG(4
列名 列标题 8 9maN
Vf$$e)
如果指定的列标题不是标准的标识符格式时,应使用引号定界符,例如,下列语句使用汉字显示列标题: E>u U6#v
wF*9%K'E
SELECT 昵称=nickname,电子邮件=email "9NWsy}<c
FROM testtable K}Q:L(SSr\
4、删除重复行 v&sl_w/tn
SELECT语句中使用ALL或DISTINCT选项来显示表中符合条件的所有行或删除其中重复的数据行,默认为ALL。使用DISTINCT选项时,对于所有重复的数据行在SELECT返回的结果集合中只保留一行。 #9HX"<5
M>{*PHze0
5、限制返回的行数 bUuQ"!>ppu
j@/p: fk
使用TOP n [PERCENT]选项限制返回的数据行数,TOP n说明返回n行,而TOP n PERCENT时,说明n是表示一百分数,指定返回的行数等于总行数的百分之几。 zu,Yuq
DjvPeX
例如: fY|[YPGO^
\
# la8,+9
SELECT TOP 2 * nJwP|P_
FROM testtable Qs<L$"L1
SELECT TOP 20 PERCENT * ;B{oGy.
FROM testtable y#/P||PM
{r#uD5NJ/
(二)FROM子句 d@ ]N
l.BiE<&
FROM子句指定SELECT语句查询及与查询相关的表或视图。在FROM子句中最多可指定256个表或视图,它们之间用逗号分隔。 Ieh<|O,-C
qu;$I'Ul%
在FROM子句同时指定多个表或视图时,如果选择列表中存在同名列,这时应使用对象名限定这些列所属的表或视图。例如在usertable和citytable表中同时存在cityid列,在查询两个表中的cityid时应使用下面语句格式加以限定: C4
-y%W"P
`yC[Fn"E^
SELECT username,citytable.cityid HNLr}
Y j
FROM usertable,citytable Dnd
WHERE usertable.cityid=citytable.cityid MieO1l
在FROM子句中可用以下两种格式为表或视图指定别名: C;_0 0EQ=
UMK9[Iy$<M
表名 as 别名 5inCAPXz
表名 别名 nXERj; Q"
4Zn [F^p
(二) FROM子句 ffsF], _J
#6C<P!]V
FROM子句指定SELECT语句查询及与查询相关的表或视图。在FROM子句中最多可指定256个表或视图,它们之间用逗号分隔。 I[n|#N
Fv:x>qZr@
在FROM子句同时指定多个表或视图时,如果选择列表中存在同名列,这时应使用对象名限定这些列所属的表或视图。例如在usertable和citytable表中同时存在cityid列,在查询两个表中的cityid时应使用下面语句格式加以限定: ^Iqu ^n?2.
tY#Zl 54~{
SELECT username,citytable.cityid Th$xk9TK^@
FROM usertable,citytable G\~?.s|^
WHERE usertable.cityid=citytable.cityid zd {sw}
在FROM子句中可用以下两种格式为表或视图指定别名: .dwbJT
6d3YLb4M$i
表名 as 别名 .Y^pDR12
表名 别名 |fo#pwX
例如上面语句可用表的别名格式表示为: $Xqc'4YOZ
;/)$Cm &e
SELECT username,b.cityid h+j*vX/!
FROM usertable a,citytable b & u6ydN1xe
WHERE a.cityid=b.cityid 9I''$DVf
7R,;/3wWjG
SELECT不仅能从表或视图中检索数据,它还能够从其它查询语句所返回的结果集合中查询数据。 Uz%ynH
% pAbkb3m
例如: q(v|@l|)yO
a;\a>N4
SELECT a.au_fname+a.au_lname
6NSSuK3
FROM authors a,titleauthor ta 59~mr:*sF
(SELECT title_id,title ;Nd'GA+1;(
o[q|dhrANh
FROM titles 8fK/0u^`d
WHERE ytd_sales>10000 gu&W:FY
) AS t |\94a
WHERE a.au_id=ta.au_id }]^/`n
AND ta.title_id=t.title_id 3#eAXIW[
此例中,将SELECT返回的结果集合给予一别名t,然后再从中检索数据。