一、简单查询 +)<H,?/
BpR#3CfW
简单的Transact-SQL查询只包括选择列表、FROM子句和WHERE子句。它们分别说明所查询列、查询的 hsJS(qEh.'
<#ZDA/G(
表或视图、以及搜索条件等。 A5q%ytI
C<B1zgX
例如,下面的语句查询testtable表中姓名为“张三”的nickname字段和email字段。 |M$ESj4@
Cn"L*\o
SELECT nickname,email k2Dq~zn
@C"w
1}
FROM testtable R=m9[TgBm
&60#y4
WHERE name='张三' .>^iU}
/4{.J=R}
(一)选择列表 -;s-*$I
^2<nn op
选择列表(select_list)指出所查询列,它可以是一组列名列表、星号、表达式、变量(包括局部变 &{=`g+4n
V|T3blG?D
量和全局变量)等构成。 ~=Q|EhF5
p}K\rpvJpu
1、选择所有列 $ 0Up.
*nYb9.T]i
例如,下面语句显示testtable表中所有列的数据: O8<@+xlX
HLYo+;j3|
SELECT * N1l&$#Fr!s
o4d[LV4DS
FROM testtable yS";
q
|)pgUI2O[
2、选择部分列并指定它们的显示次序
gU%R9
R) 'AI[la
查询结果集合中数据的排列顺序与选择列表中所指定的列名排列顺序相同。 ;FH_qF`.
MU#$tXmnC
例如: \+I+Lrj%
&h67LMD!
SELECT nickname,email ?YA5g' l
PTf.(B"z
FROM testtable F qH@iZ
zrazFI0G
3、更改列标题 'boAv%1_sa
nv-_\M
在选择列表中,可重新指定列标题。定义格式为: +jrMvk"
c
;@k\6
列标题=列名 YA'_Ba(v)
`mo>~c7
列名 列标题 mj^]e/s%
n<3*7/-
如果指定的列标题不是标准的标识符格式时,应使用引号定界符,例如,下列语句使用汉字显示列 :d`8:gv?
KGq4tlM6
标题: P6([[mmG
bR&<vrMmrA
SELECT 昵称=nickname,电子邮件=email FK!UUy;
)WR*8659e
FROM testtable dq
U.2~9
*Jm U",X
4、删除重复行 K26x,m]p
1u\kxlZ
SELECT语句中使用ALL或DISTINCT选项来显示表中符合条件的所有行或删除其中重复的数据行,默认 d*(wU>J '
%n<.)R
为ALL。使用DISTINCT选项时,对于所有重复的数据行在SELECT返回的结果集合中只保留一行。 +/Vi"
[-*8S1
5、限制返回的行数 K" U!SWv
a8[Q1Fa4|
使用TOP n [PERCENT]选项限制返回的数据行数,TOP n说明返回n行,而TOP n PERCENT时,说明n是 DUOSL
TU,k(
`tn<
表示一百分数,指定返回的行数等于总行数的百分之几。 =S|^pN
$KGpcl
例如: mzoNXf:x
/c9%|<O%
SELECT TOP 2 * 1WbawiG}
EHC^ [5
FROM testtable #{L
!o5
`h+1u`FJ
SELECT TOP 20 PERCENT * u,Rhm-`
Vo-]&u&cr
FROM testtable RI2Or9.
@Tl!A1y?
(二)FROM子句 D |BP]j}6
eV x
&S a
FROM子句指定SELECT语句查询及与查询相关的表或视图。在FROM子句中最多可指定256个表或视图, #Ies
yNKZ
y9'F D5\s
它们之间用逗号分隔。 Q`4]\)Dp
!YJ^BI
在FROM子句同时指定多个表或视图时,如果选择列表中存在同名列,这时应使用对象名限定这些列 /qalj\ud
nM,5KHU4a
所属的表或视图。例如在usertable和citytable表中同时存在cityid列,在查询两个表中的cityid时应 DZ9qIc}Y
TV&4m5
使用下面语句格式加以限定: D_MNF=7
O&c~7tM%
SELECT username,citytable.cityid avI
@N0(%o&
FROM usertable,citytable }bxx]rDl
`+go|
5N2
WHERE usertable.cityid=citytable.cityid bAl0z)p
GP/Gv
在FROM子句中可用以下两种格式为表或视图指定别名: 05>xQx?"m4
FII>6c
表名 as 别名 1>1ii
*;I F^u1
表名 别名 7L=V{,,v
e2xqKG
例如上面语句可用表的别名格式表示为: bk#t+tuk
}hjJt,m
SELECT username,b.cityid 8*V8B=q}K
^-'t`mRl]d
FROM usertable a,citytable b ->S6S_H/+&
^MZdht
WHERE a.cityid=b.cityid 9+sOSz~
P
nPj/C7j
SELECT不仅能从表或视图中检索数据,它还能够从其它查询语句所返回的结果集合中查询数据。 LpJ_HU7@lk
0- 'f1 1S
例如: ,B<Tt|'
Hx]{'?
SELECT a.au_fname+a.au_lname G$buZspL'd
T'TxC)
FROM authors a,titleauthor ta s`$px2Gw
vs)1Rm
(SELECT title_id,title tt7l%olw
4gNF;
FROM titles .C2.j[>
\I4*|6kA
WHERE ytd_sales>10000 qt#a_F*rV
&2!F:L
) AS t .7nr :P
&Z^,-Y
WHERE a.au_id=ta.au_id X[cSmkp7
^5l4D3@E
AND ta.title_id=t.title_id CbA2?( 1o1
$ZPiM
此例中,将SELECT返回的结果集合给予一别名t,然后再从中检索数据。 v$`AN4)}
W,^(FR.
(三)使用WHERE子句设置查询条件 uW,L<