一、 简单查询 <*vR_?!
简单的Transact-SQL查询只包括选择列表、FROM子句和WHERE子句。它们分别说明所查询列、查询的表或视图、以及搜索条件等。 6+=_p$crMx
>4g!ic~O
例如,下面的语句查询testtable表中姓名为“张三”的nickname字段和email字段。 nscnG5'{+
=2q#- ,t
SELECT nickname,email (
yLu=
FROM testtable dr)*.<_+a(
WHERE name='张三' %=z>kU1|
z/#,L!Z3
(一) 选择列表 Le83[E*i
xst-zfkH`
选择列表(select_list)指出所查询列,它可以是一组列名列表、星号、表达式、变量(包括局部变量和全局变量)等构成。 5$i(f8*
7,)E1dx -V
1、选择所有列 r?KRK?I
0H rvr
例如,下面语句显示testtable表中所有列的数据: )]n>.ZmLCB
g Cp`J(2v:
SELECT *
kNP-+o
FROM testtable KXZG42w
LYAGpcG
2、选择部分列并指定它们的显示次序 Fs>MFj
[XPAI["
查询结果集合中数据的排列顺序与选择列表中所指定的列名排列顺序相同。 r'ilJ("
Zzlt^#KLx
例如: =lv(
*BxU5)O
SELECT nickname,email :E{)yT
FROM testtable <\nM5-wR
$c*fbBM(&n
3、更改列标题 O:v#M]
7(5d$ W
在选择列表中,可重新指定列标题。定义格式为: ]prw=rD
iK2f]h
列标题=列名 #@nPB.
列名 列标题 !" FEp
dkC_Sh{
如果指定的列标题不是标准的标识符格式时,应使用引号定界符,例如,下列语句使用汉字显示列标题: #0)TS
[`|t( E'
SELECT 昵称=nickname,电子邮件=email /#5rt&q
FROM testtable I!b"Rv=Nf-
4、删除重复行 hxdjmc-
SELECT语句中使用ALL或DISTINCT选项来显示表中符合条件的所有行或删除其中重复的数据行,默认为ALL。使用DISTINCT选项时,对于所有重复的数据行在SELECT返回的结果集合中只保留一行。 kM-8%a2i
vEjf|-Mb9
5、限制返回的行数 R;,5LS&*a
shGUG;
使用TOP n [PERCENT]选项限制返回的数据行数,TOP n说明返回n行,而TOP n PERCENT时,说明n是表示一百分数,指定返回的行数等于总行数的百分之几。 ?taC
!{
uv5NqL&
例如: q'fOlq
^G qO>1U
SELECT TOP 2 * xqdkc^b
FROM testtable O-0 5.
SELECT TOP 20 PERCENT * 'RwfW|~6
FROM testtable Qraq{'3
yl*%P3m|
(二)FROM子句 ;=2JbA+"G
LQqba4$
FROM子句指定SELECT语句查询及与查询相关的表或视图。在FROM子句中最多可指定256个表或视图,它们之间用逗号分隔。 irh Z
_e8Gt6>
在FROM子句同时指定多个表或视图时,如果选择列表中存在同名列,这时应使用对象名限定这些列所属的表或视图。例如在usertable和citytable表中同时存在cityid列,在查询两个表中的cityid时应使用下面语句格式加以限定: nUs=PD3)
6x5Q*^w
SELECT username,citytable.cityid m5/]+xdNX
FROM usertable,citytable [4EIy"
WHERE usertable.cityid=citytable.cityid f7zB_hVDmE
在FROM子句中可用以下两种格式为表或视图指定别名: V(XU^}b#
Mmgm6{
表名 as 别名
Ce//;Op
表名 别名 @@a#DjE%/
Bd*Ok]
(二) FROM子句 5k=04=Iyh#
G(A7=8vW
FROM子句指定SELECT语句查询及与查询相关的表或视图。在FROM子句中最多可指定256个表或视图,它们之间用逗号分隔。 d~.hp
#_Uo^Mw
在FROM子句同时指定多个表或视图时,如果选择列表中存在同名列,这时应使用对象名限定这些列所属的表或视图。例如在usertable和citytable表中同时存在cityid列,在查询两个表中的cityid时应使用下面语句格式加以限定: F)=<|,b1
%X}D(_
SELECT username,citytable.cityid 7aRy])x
FROM usertable,citytable ;Ym6ey0t
WHERE usertable.cityid=citytable.cityid )%9:k9
在FROM子句中可用以下两种格式为表或视图指定别名: H [M:iV
E690'\)31
表名 as 别名 .R)Ho4CE
表名 别名 I+Y Z+
例如上面语句可用表的别名格式表示为: WCaMPz
6wOj,}2Mn
SELECT username,b.cityid ui"`c%2n
FROM usertable a,citytable b @Nm{H
WHERE a.cityid=b.cityid ^^V+0 l
EGRIhnED#
SELECT不仅能从表或视图中检索数据,它还能够从其它查询语句所返回的结果集合中查询数据。 @<OsTF L
p]e.E`'S
例如: * W"Pv,:
mE+=H]`.p
SELECT a.au_fname+a.au_lname XYV`[,^h&
FROM authors a,titleauthor ta $v8T%'p+
(SELECT title_id,title 8z-wdO\
]Gj%-5G
FROM titles b;`MHEzw&q
WHERE ytd_sales>10000 }WR@%)7ay
) AS t NUBzc'qb
WHERE a.au_id=ta.au_id zzC{I@b
AND ta.title_id=t.title_id e*<pO@Uy
此例中,将SELECT返回的结果集合给予一别名t,然后再从中检索数据。