一、简单查询 "A(D}~i
|WkWZZ^
简单的Transact-SQL查询只包括选择列表、FROM子句和WHERE子句。它们分别说明所查询列、查询的 V; pRw`
84f(B E
表或视图、以及搜索条件等。 d/"%fpp^0G
XE#a#
例如,下面的语句查询testtable表中姓名为“张三”的nickname字段和email字段。 plNoI1st
8}M-b6RV
SELECT nickname,email MnLo{G]
*x!j:/S`n
FROM testtable B~ ?R 6
h5)4Z^n
WHERE name='张三' a!@(bb
z>
XY`{F.2h
(一)选择列表 XWq`MwC9
}HCt=W`
选择列表(select_list)指出所查询列,它可以是一组列名列表、星号、表达式、变量(包括局部变 EpW89X
5'<J@3B
量和全局变量)等构成。 m~I@q
[
c9ye[81
1、选择所有列 ge#0Q L0K
QbJE+m5
例如,下面语句显示testtable表中所有列的数据: /KTWBcs 7
d[F3"b%
SELECT * uv|RpIv e:
sB@9L L]&|
FROM testtable Nf5zQ@o_y
i}L*PCP
2、选择部分列并指定它们的显示次序 $x/VO\Z{-
A3Xfu$[u
查询结果集合中数据的排列顺序与选择列表中所指定的列名排列顺序相同。 <B
Vx%
:R'={0Jg
例如: 2^X<n{0N)
\b;z$P\+*
SELECT nickname,email qV#,]mX
(VM.]B<
FROM testtable G_QV'zQ
6ys|'<?
3、更改列标题 6vfut$)[{
lyS`X
在选择列表中,可重新指定列标题。定义格式为: Fy*t[>
`t7z
LC^c
列标题=列名 K_Pbzj4(P
:u,Ji9
u
列名 列标题 h1~/zM/`
7](aPm8
如果指定的列标题不是标准的标识符格式时,应使用引号定界符,例如,下列语句使用汉字显示列 \zJb}NbnT
ms&6N']
标题: r0Zj'F_e
tXCgRU
SELECT 昵称=nickname,电子邮件=email HGao} @'
/[qLf:rGI
FROM testtable #e[S+a
2Rqpok4
4、删除重复行 Ofc
u4pi
$ba*=/{[q
SELECT语句中使用ALL或DISTINCT选项来显示表中符合条件的所有行或删除其中重复的数据行,默认 782 oXyD
|;(>q
为ALL。使用DISTINCT选项时,对于所有重复的数据行在SELECT返回的结果集合中只保留一行。 (GoxiX l
jL{k!V`s
5、限制返回的行数 8 4lT# ^q
&s{d r
使用TOP n [PERCENT]选项限制返回的数据行数,TOP n说明返回n行,而TOP n PERCENT时,说明n是 I.gF38Mx
3>v-,S+
表示一百分数,指定返回的行数等于总行数的百分之几。 y&A&d-
'5lwlF
例如: 3V]08
)b~+\xL5J
SELECT TOP 2 * hZ|8mV
~bqw !rz
FROM testtable +3k.xP?QS
ro+8d
SELECT TOP 20 PERCENT * uO( (Mg
O!'gylj/
FROM testtable G|I}x/X"Q7
BZa`:ah~x
(二)FROM子句 pwvmb\
Jz]OWb *
FROM子句指定SELECT语句查询及与查询相关的表或视图。在FROM子句中最多可指定256个表或视图, cK,&huk
t>2EZ{N+y
它们之间用逗号分隔。 mT>RQ.
;v!Ef"E|cV
在FROM子句同时指定多个表或视图时,如果选择列表中存在同名列,这时应使用对象名限定这些列 gDjAnz#
$Ji;zR4,
所属的表或视图。例如在usertable和citytable表中同时存在cityid列,在查询两个表中的cityid时应 ,*sKr)9)
u}?|d8$h\
使用下面语句格式加以限定: IC6'>2'=T
;*{Ls#
SELECT username,citytable.cityid eF(oHn,
NE><(02qW
FROM usertable,citytable ` Nv1sA#C
QBCEDv&j
WHERE usertable.cityid=citytable.cityid kZ0z]Y
Ekn3ODz,
在FROM子句中可用以下两种格式为表或视图指定别名: ? r}2JHvN
YB_fy8Tfx
表名 as 别名 l15Z8hYhj
6H!l>@a7v
表名 别名 \D-X
_.v
_=9m[
例如上面语句可用表的别名格式表示为: wn.UjxX.
\"X_zM
SELECT username,b.cityid @ %o'
wkY$J\J
FROM usertable a,citytable b `NyO|9/4
HOr Xxxp1^
WHERE a.cityid=b.cityid w}YcAnuB{%
R1Fcd@DWD
SELECT不仅能从表或视图中检索数据,它还能够从其它查询语句所返回的结果集合中查询数据。 }((P)\s
}&]T0U`@
例如: tlYB'8bJY
N+vsQ!Qz
SELECT a.au_fname+a.au_lname W!|l_/L'
a{Y8hR
FROM authors a,titleauthor ta ?weuq"*a
}%c0EY'
(SELECT title_id,title &w{z
Rsx?8Y^5
FROM titles -,ojZFyRi
{rzQ[_)EC
WHERE ytd_sales>10000 x=N0H
%6x3G
) AS t Knp}88DR^j
59(kk;
WHERE a.au_id=ta.au_id QS@eqN
9R:?vk4
AND ta.title_id=t.title_id 8\+XtS
<.ZD.u
此例中,将SELECT返回的结果集合给予一别名t,然后再从中检索数据。 Z^ .qX\<M
(rQ)0g@
(三)使用WHERE子句设置查询条件 `j'gt&
!>WW(n07Ma
WHERE子句设置查询条件,过滤掉不需要的数据行。例如下面语句查询年龄大于20的数据: H {uR+&<
,nWZJ&B
SELECT * of'H]IZ
u}7r\MnwK,
FROM usertable .PCbGPbk
miV 8jaV
WHERE age>20 {5SJ0'.B2g
5*O]`Q7
WHERE子句可包括各种条件运算符: Mn*5oH
uFG ;AY|
比较运算符(大小比较):>、>=、=、<、<=、<>、!>、!< 0xV[C4E[6
?SX0e(+}}
范围运算符(表达式值是否在指定的范围):BETWEEN…AND… b~?3HY:t~K
w ; PV
&M
NOT BETWEEN…AND… AQPzId*z
6-\C?w
A
列表运算符(判断表达式是否为列表中的指定项):IN (项1,项2……) N::.o+1
UdFYG^i
NOT IN (项1,项2……) p]6/1&t