一、 简单查询 <\5{R@A*6
简单的Transact-SQL查询只包括选择列表、FROM子句和WHERE子句。它们分别说明所查询列、查询的表或视图、以及搜索条件等。 ?Rdi"{.wI
>97N
$
例如,下面的语句查询testtable表中姓名为“张三”的nickname字段和email字段。 '&9b*u";x(
;>~iCFk]?
SELECT nickname,email mS0W@# |K
FROM testtable Wh,kJis<
WHERE name='张三' @9-qqU@
4t":WutC
(一) 选择列表 1 !sYd@iD@
Sz
=z
TPnO
选择列表(select_list)指出所查询列,它可以是一组列名列表、星号、表达式、变量(包括局部变量和全局变量)等构成。 <*[(t;i
%X3T<3<
1、选择所有列 D<MtLwH
\21!NPXH2
例如,下面语句显示testtable表中所有列的数据: bu]bfnYi9
GB#7w82
SELECT * 1n^xVk-G
FROM testtable ~L2Fo~fw
`6zoZM7?Y
2、选择部分列并指定它们的显示次序 Jps!,Mflc
i|t$sBIh
查询结果集合中数据的排列顺序与选择列表中所指定的列名排列顺序相同。 q45n.A6a
z8oSh t`+
例如: x-[l`k.V
N67m=wRx
SELECT nickname,email FX{Sb"
FROM testtable /O9z-!Jz
aa|xZ
3、更改列标题 C-8@elZ1
YJ6Xq||_
在选择列表中,可重新指定列标题。定义格式为: k@?<Aw8_X
:0J;^@
列标题=列名 5lT lZRH1
列名 列标题 PH6uP]
2'D2>^os
如果指定的列标题不是标准的标识符格式时,应使用引号定界符,例如,下列语句使用汉字显示列标题: j9%=^ZoQj
{'/8{dS
SELECT 昵称=nickname,电子邮件=email >1YJETysO
FROM testtable JH 8^ZP:d'
4、删除重复行 /wQDcz
SELECT语句中使用ALL或DISTINCT选项来显示表中符合条件的所有行或删除其中重复的数据行,默认为ALL。使用DISTINCT选项时,对于所有重复的数据行在SELECT返回的结果集合中只保留一行。 {J[0UZ6
k{; 2*6b0
5、限制返回的行数 V[~/sc )
B9]KC i
使用TOP n [PERCENT]选项限制返回的数据行数,TOP n说明返回n行,而TOP n PERCENT时,说明n是表示一百分数,指定返回的行数等于总行数的百分之几。 B{44|aq1 |
1c]GS&(RP
例如: bFcI\Q{4
=7a9~&|
SELECT TOP 2 * $(BW |Pc
FROM testtable L~\Ir
SELECT TOP 20 PERCENT * O%OeYO69
FROM testtable 4g|}]K1s
_f/6bpv
(二)FROM子句 `On%1%k8
~x2azY2DP
FROM子句指定SELECT语句查询及与查询相关的表或视图。在FROM子句中最多可指定256个表或视图,它们之间用逗号分隔。 vForj*Xo
2QdqVwm
在FROM子句同时指定多个表或视图时,如果选择列表中存在同名列,这时应使用对象名限定这些列所属的表或视图。例如在usertable和citytable表中同时存在cityid列,在查询两个表中的cityid时应使用下面语句格式加以限定: BRzrtK
flRok?iF
SELECT username,citytable.cityid Gx!Y
4Q}-
FROM usertable,citytable o<Q~pd#Ip,
WHERE usertable.cityid=citytable.cityid Wh,p$|vL
在FROM子句中可用以下两种格式为表或视图指定别名: `rvS(p[s
{q:6;yzxl
表名 as 别名 HUZI7rC[=)
表名 别名 ^]K_k7`I
,#nyEE
(二) FROM子句 5-*/wKjLz
Vf0m7BJc3
FROM子句指定SELECT语句查询及与查询相关的表或视图。在FROM子句中最多可指定256个表或视图,它们之间用逗号分隔。 }5EvBEv-)
_qr?v=,-A
在FROM子句同时指定多个表或视图时,如果选择列表中存在同名列,这时应使用对象名限定这些列所属的表或视图。例如在usertable和citytable表中同时存在cityid列,在查询两个表中的cityid时应使用下面语句格式加以限定: i6aM}p<
F.4xi+S_
SELECT username,citytable.cityid C-&\qAo?<:
FROM usertable,citytable i!(u4wTFF
WHERE usertable.cityid=citytable.cityid Tv!zqx#E
在FROM子句中可用以下两种格式为表或视图指定别名: P9BShC5
RK< uAiU
表名 as 别名 K1Mn_)%
表名 别名 XsEDI?p2
例如上面语句可用表的别名格式表示为: v#TU7v?~
S3$&}I <
SELECT username,b.cityid voiWf?X
FROM usertable a,citytable b =XVw{\#9 b
WHERE a.cityid=b.cityid \Cx2$<8
N:_.z~>%
SELECT不仅能从表或视图中检索数据,它还能够从其它查询语句所返回的结果集合中查询数据。 Dr)B0]KG
f["c,,[
例如: +87|gC7B
qx|~H'UuBN
SELECT a.au_fname+a.au_lname \I( g70
FROM authors a,titleauthor ta KSz;D+L\
(SELECT title_id,title ;?4EVZ#o
B 1jeIk,
FROM titles shKTj5s?
WHERE ytd_sales>10000 \ ,D>zF
) AS t 1
8%+ Hy=
WHERE a.au_id=ta.au_id #Pt_<?JtV
AND ta.title_id=t.title_id >P@g].Q-
此例中,将SELECT返回的结果集合给予一别名t,然后再从中检索数据。