一、简单查询 }M I9?\"q
E*t0ia8
简单的Transact-SQL查询只包括选择列表、FROM子句和WHERE子句。它们分别说明所查询列、查询的 G3G"SJ np
2\,vq
R
表或视图、以及搜索条件等。 5E#koy7
$s
fWBI}~e
例如,下面的语句查询testtable表中姓名为“张三”的nickname字段和email字段。 u+RdC;_
#
Y*cLN`Y7
SELECT nickname,email jSj
(ZU6
ZoiCdXvTN
FROM testtable 9g*MBe:
Y_)aoRjB
WHERE name='张三' $*Q_3]AY]
$K,6!FyBa
(一)选择列表 |5}~n"R5
q&- A}]
选择列表(select_list)指出所查询列,它可以是一组列名列表、星号、表达式、变量(包括局部变 0*.>
>rI
:K)=Hf2y
量和全局变量)等构成。 Dl#%tYL+3h
w C0fPPeA
1、选择所有列 &dV|~xA6N
L|3wGY9E
例如,下面语句显示testtable表中所有列的数据: lj1wTiaI(
h|!F'F{
SELECT * n+EK}=DK
ly d[GfJ
FROM testtable ;5P>R[p
tN5brf
2、选择部分列并指定它们的显示次序 Rp 2~d
FJN,er~T[
查询结果集合中数据的排列顺序与选择列表中所指定的列名排列顺序相同。 jnK8
[och
kd9GHN;7
例如: !S/hH% C
RPvOup
SELECT nickname,email cs ?@Ri=g
jG3}V3|.
FROM testtable S"iQQV{)Z
"=unDpq]
3、更改列标题 I54O9Aoy
FRicHs n
在选择列表中,可重新指定列标题。定义格式为: fWR]L47n
O/IW.t
列标题=列名 qO<'_7TN[
xy%lp{
列名 列标题 =#i#IF42?
"mAVkq~
如果指定的列标题不是标准的标识符格式时,应使用引号定界符,例如,下列语句使用汉字显示列 N>OF
tP
H7e/6t<x
标题: fuQ|[tpvQG
eo4<RDe<
SELECT 昵称=nickname,电子邮件=email gev7eGH<
sX3Vr&r
FROM testtable j~G^J
VZ*Q|
4、删除重复行 Dk|<&uVV
E\r5!45r
SELECT语句中使用ALL或DISTINCT选项来显示表中符合条件的所有行或删除其中重复的数据行,默认 Q~4o{"3.'
'"5"$)7
为ALL。使用DISTINCT选项时,对于所有重复的数据行在SELECT返回的结果集合中只保留一行。 [FKmZzEy
->-
5、限制返回的行数 gFvFd:"uZ
*n0k2 p
使用TOP n [PERCENT]选项限制返回的数据行数,TOP n说明返回n行,而TOP n PERCENT时,说明n是 WT!8.M;Kv
#[*e$C
表示一百分数,指定返回的行数等于总行数的百分之几。 <?P UF,
^yKP 99(
例如: oOuhbFu
1;ulqO
SELECT TOP 2 * i4.s_@2Y
n%Xw6qV:
FROM testtable =VlO53Hy{
j>M
'nQ,;d
SELECT TOP 20 PERCENT * &b}!KD1
/n7F]Ok'*
FROM testtable *?gn@4Ly
HLAYmXX"w
(二)FROM子句 V9"Kro
joifIp_
FROM子句指定SELECT语句查询及与查询相关的表或视图。在FROM子句中最多可指定256个表或视图, =MG
xZS
它们之间用逗号分隔。 :H<u@%
sp[nKo^
在FROM子句同时指定多个表或视图时,如果选择列表中存在同名列,这时应使用对象名限定这些列 {"e/3
bK%go
所属的表或视图。例如在usertable和citytable表中同时存在cityid列,在查询两个表中的cityid时应 9il!w
g?
@]dN
使用下面语句格式加以限定: "t8mQ;n
{!B0&x
SELECT username,citytable.cityid O#7fkL
C["^%0lj
FROM usertable,citytable dH!k{3bL
@6i^wC
WHERE usertable.cityid=citytable.cityid eF"7[_+D
1,W%t\D
在FROM子句中可用以下两种格式为表或视图指定别名: "Q+'lA[}
3l>P>[<o
表名 as 别名 IqEY.2KN
neQ2+W%oj
表名 别名 lw? f2_fi
)xP]rOT
例如上面语句可用表的别名格式表示为: V/|Ln*rm
M!=v"C#
SELECT username,b.cityid quf,ZK5
2Z,;#t
FROM usertable a,citytable b `R8~H7{I6
~MO'%'@
WHERE a.cityid=b.cityid 9XS+W
w7
/k1&?e
SELECT不仅能从表或视图中检索数据,它还能够从其它查询语句所返回的结果集合中查询数据。 m
|,ocz
h|%d=`P,
例如: D}!U?]la&
h=4m2m
SELECT a.au_fname+a.au_lname ,D3q8?j
"S[VtuxPCU
FROM authors a,titleauthor ta d[rxmEXht
lyZof_/*
(SELECT title_id,title 7 m&M(ct
a|5GC pp
FROM titles pWps-e
e7/J:n$
WHERE ytd_sales>10000 GG;M/}E9
b]Rn Cu"
) AS t 9A3Q&@,
&)fPz-s
WHERE a.au_id=ta.au_id 4pq >R
?Dm! ;Z+7
AND ta.title_id=t.title_id tq@<8?
LiQs;$V
此例中,将SELECT返回的结果集合给予一别名t,然后再从中检索数据。 IwFg1\>
ffm19 B=
(三)使用WHERE子句设置查询条件 3=dGz^Zdv:
gNs@Q!
WHERE子句设置查询条件,过滤掉不需要的数据行。例如下面语句查询年龄大于20的数据: m^T$H_*;
6Om-[^
SELECT * Cj5M
~v,LFIT
FROM usertable QE)g==d
.1|'9@]lj4
WHERE age>20 ?e]4HHgU]
9S6vU7W
WHERE子句可包括各种条件运算符: Fw"~f5O
o,Ha-z]f
比较运算符(大小比较):>、>=、=、<、<=、<>、!>、!< |EU}&