一、简单查询 beY=g7|
46jh-4)<
简单的Transact-SQL查询只包括选择列表、FROM子句和WHERE子句。它们分别说明所查询列、查询的 ~K_Uq*dCE
Zzua17
表或视图、以及搜索条件等。 &6 -k#r
4tA_YIv
例如,下面的语句查询testtable表中姓名为“张三”的nickname字段和email字段。 Die-@z|Y
$ls[|N:y0l
SELECT nickname,email C@y8.#l
AS!6XT
FROM testtable 5,"l0nrk
wVs.Vcwr
WHERE name='张三' >r5P3G1
!%mAh81{&/
(一)选择列表 $Byj}^ ;1
xk~IN%\
选择列表(select_list)指出所查询列,它可以是一组列名列表、星号、表达式、变量(包括局部变 &tR(n$M@>
jPvDFT^d/
量和全局变量)等构成。 0:Xxl76v4
n7aU<`U
1、选择所有列 pI+!92Z
!X>=l
例如,下面语句显示testtable表中所有列的数据: ~iBgw&Y
>>d m}X
SELECT * {X]R-1>
9V uq,dv
FROM testtable pC,o2~%{
59uwB('|lH
2、选择部分列并指定它们的显示次序 gB,G.QM*6
S&nxok`e^
查询结果集合中数据的排列顺序与选择列表中所指定的列名排列顺序相同。 ewNz%_2
:!&;p
例如: qMBR *f
Is<"OQ
SELECT nickname,email 1&=0Wg0ig
;.sl*q1A
FROM testtable t,)N('m}=
bZ_mYyBh
3、更改列标题 >M!xiQX
_GQz!YA
在选择列表中,可重新指定列标题。定义格式为: jo+w>
| aQ"3d
列标题=列名 EUYCcL'G
_:n b&B
列名 列标题 Gm`}(;(A
TOF
'2&H
如果指定的列标题不是标准的标识符格式时,应使用引号定界符,例如,下列语句使用汉字显示列 vh!v
MB}}
wu<])&F
标题: Bc-yxjsw
SZ![%)83
SELECT 昵称=nickname,电子邮件=email S/vf'gj
rtJl _0`
FROM testtable tqPx$s
Nb2Qp
K
4、删除重复行 W_O)~u8
a\uie$"cr]
SELECT语句中使用ALL或DISTINCT选项来显示表中符合条件的所有行或删除其中重复的数据行,默认 /T^ JS
F,Xo|jjj
为ALL。使用DISTINCT选项时,对于所有重复的数据行在SELECT返回的结果集合中只保留一行。 Hk_y/97OO
v}G]X Z8
5、限制返回的行数 z7.|fE)<6
_?7#MWe&
使用TOP n [PERCENT]选项限制返回的数据行数,TOP n说明返回n行,而TOP n PERCENT时,说明n是 y]..=z_ql
>C WKH~
表示一百分数,指定返回的行数等于总行数的百分之几。 5(2|tJw-H;
"bg'@:4F
例如: g3@Rl2yQJ
3b'tx!tFN
SELECT TOP 2 * ~wnOV#v
1xNVdI
FROM testtable :R6bq!
^_I} x)i*@
SELECT TOP 20 PERCENT * $h9='0Wi0'
`D(
xv
FROM testtable /5AW?2)
#0I{.Wy]
(二)FROM子句 |4)
>4m'tZ8
FROM子句指定SELECT语句查询及与查询相关的表或视图。在FROM子句中最多可指定256个表或视图, -37a.
a^qNJ?R!
它们之间用逗号分隔。 Y-piL8Xc
Ou>u%
在FROM子句同时指定多个表或视图时,如果选择列表中存在同名列,这时应使用对象名限定这些列 q+SD6qM
1PaUI#X"2F
所属的表或视图。例如在usertable和citytable表中同时存在cityid列,在查询两个表中的cityid时应 A\rt6/
<HWS:'1
使用下面语句格式加以限定: @4~=CV%j
Dq\ Jz~
SELECT username,citytable.cityid V{-AP=C7
n;HHogA
FROM usertable,citytable eC
DIwB28
8GPIZh'0h
WHERE usertable.cityid=citytable.cityid c;f!!3&
Z!d7&T}
在FROM子句中可用以下两种格式为表或视图指定别名: =+5,B\~q@C
r90+,aLM#?
表名 as 别名 n>,L=wV
;:S&F
表名 别名 (9\;A*CZ
Ce'pis
例如上面语句可用表的别名格式表示为: 3?E&}J<n
poJg"R4
SELECT username,b.cityid Ft@Wyo`^
?v-1zCls
FROM usertable a,citytable b e0;
w18RA#Zo/
WHERE a.cityid=b.cityid X[W]=yJJ
C#w]4 $/
SELECT不仅能从表或视图中检索数据,它还能够从其它查询语句所返回的结果集合中查询数据。 'ho{eR@d
ap}5ElMR
例如: )nu~9km3
y)F!c29
SELECT a.au_fname+a.au_lname WjMS5^ _
M)cGz$Q|
FROM authors a,titleauthor ta 9B)(>~q
\nqo%5XL
(SELECT title_id,title -iCcoA
s{/qS3=
FROM titles XV'fW~j\
(P==VZQg
WHERE ytd_sales>10000 /9Ilo\MdD
yZJ*dadAr
) AS t <E\V`g
&2EBk= X
WHERE a.au_id=ta.au_id Pj7gGf6v
5eX59:vtl
AND ta.title_id=t.title_id !5x
Ly6=}
@<_`2eW'/R
此例中,将SELECT返回的结果集合给予一别名t,然后再从中检索数据。 `eRLc}aP2
i9UI,b%X
(三)使用WHERE子句设置查询条件 LEh)g[
|
W#~F&{]
WHERE子句设置查询条件,过滤掉不需要的数据行。例如下面语句查询年龄大于20的数据: jiIST^Zq#t
{4ptu~8
SELECT * GoE#Mxh xo
dyQh:u
-
FROM usertable Z{{t^+XG
v5T9Y-{`
WHERE age>20 N_C_O$j
L)-*,$#<oW
WHERE子句可包括各种条件运算符: M@?"t_e1
NcL
=zo<
比较运算符(大小比较):>、>=、=、<、<=、<>、!>、!< LCQkgRs}~{
!=[uT+v
范围运算符(表达式值是否在指定的范围):BETWEEN…AND… # bX~=`
qmmv7==
NOT BETWEEN…AND… F(CRq`
~HP
LV
列表运算符(判断表达式是否为列表中的指定项):IN (项1,项2……) Kj*m r%IaU
Sa]mm/G
NOT IN (项1,项2……) )
YSh D
ItK
模式匹配符(判断值是否与指定的字符通配格式相符):LIKE、NOT LIKE r#xk`a
B5Va%?Wg?H
空值判断符(判断表达式是否为空):IS NULL、NOT IS NULL A9BxwQU#
>rwYDT#m]
逻辑运算符(用于多条件的逻辑连接):NOT、AND、OR n0.8)=;2
`I>], J/
1、范围运算符例:age BETWEEN 10 AND 30相当于age>=10 AND age<=30 `?SG XXC
96W4c]NT
2、列表运算符例:country IN ('Germany','China') N^@
\tg=
vug-n 8
3、模式匹配符例:常用于模糊查找,它判断列值是否与指定的字符串格式相匹配。可用于char、 yv${M u
",ad7Y7i
varchar、text、ntext、datetime和smalldatetime等类型查询。 hCLk#_
7l}~4dm2J
可使用以下通配字符: p#b{xK
R+^z y"~
百分号%:可匹配任意类型和长度的字符,如果是中文,请使用两个百分号即%%。 eH=c|m]!P
X'2Gi
下划线_:匹配单个任意字符,它常用来限制表达式的字符长度。 _z:Qhe
bD@@tGr;W
方括号[]:指定一个字符、字符串或范围,要求所匹配对象为它们中的任一个。 {gIEZ{
A}eOR=E
[^]:其取值也[] 相同,但它要求所匹配对象为指定字符以外的任一个字符。 -eYL*Pa
Fhi5LhWe+.
例如: x=3I)}J(kn
Ge9}8
限制以Publishing结尾,使用LIKE '%Publishing' 0(vdkC4\A
H8"tbU
限制以A开头:LIKE '[A]%' *08+\ed"#
9R:(^8P8
限制以A开头外:LIKE '[^A]%' hE5G!@1F
Ey= 4 b
4、空值判断符例WHERE age IS NULL J]]\&MtaO
,A?v,Fs>O[
5、逻辑运算符:优先级为NOT、AND、OR jhcuK:`L
4`G=q^GL,
(四)查询结果排序 7?]!Ecr"
#?5VsD8
使用ORDER BY子句对查询返回的结果按一列或多列排序。ORDER BY子句的语法格式为: ,|QU] E
@
U:Fpj~E_w
ORDER BY {column_name [ASC|DESC]} [,…n] s|p(KWo2U
"D!Dr1
其中ASC表示升序,为默认值,DESC为降序。ORDER BY不能按ntext、text和image数据类型进行排 xx}'l:}2]
4=
$!_,.
序。 tJG (*
!z.^(Tj
例如: ^1vq{/ X
YL!oF^XO
SELECT * h?3f5G*&H
iQ0&