一、 简单查询 4)6xU4eBaL
简单的Transact-SQL查询只包括选择列表、FROM子句和WHERE子句。它们分别说明所查询列、查询的表或视图、以及搜索条件等。 :hRs`=d"r
b'YE9E
例如,下面的语句查询testtable表中姓名为“张三”的nickname字段和email字段。 b:J(b?
MZ>6o5K|
SELECT nickname,email p(F " /
FROM testtable /9pM>Cd*Z
WHERE name='张三' IA&L]
@n&<B`/
(一) 选择列表 I$t3qd{H&
S4^N^lQ]
选择列表(select_list)指出所查询列,它可以是一组列名列表、星号、表达式、变量(包括局部变量和全局变量)等构成。 D${={x
5O/i3m26
1、选择所有列 ZR0r>@M3v<
nH|,T%
例如,下面语句显示testtable表中所有列的数据: -r7]S
bzN-*3YE=
SELECT * w|[RDaA b
FROM testtable +rXF{@
l
E
Y<8B3y
2、选择部分列并指定它们的显示次序 nmU_N:Y
Lw1EWN6}_&
查询结果集合中数据的排列顺序与选择列表中所指定的列名排列顺序相同。 .|qK+Hnc
A3N]8?D
例如: P>ceeoYQuA
R6-n IY,
SELECT nickname,email >EsziRm
FROM testtable =sJ
_yq0#R
[,RI-#n
3、更改列标题 -]uUY e
c
I<td1Y1q
在选择列表中,可重新指定列标题。定义格式为: y&m0Lz53Z
>'uU)Y{
列标题=列名 }A=y=+4j
列名 列标题 b2,mCfLsv
iIT8H\e
如果指定的列标题不是标准的标识符格式时,应使用引号定界符,例如,下列语句使用汉字显示列标题: >LC<O.
xo}b=
v
SELECT 昵称=nickname,电子邮件=email 2&PPz}Sw
FROM testtable iD38\XNMV
4、删除重复行 LQ11ba
SELECT语句中使用ALL或DISTINCT选项来显示表中符合条件的所有行或删除其中重复的数据行,默认为ALL。使用DISTINCT选项时,对于所有重复的数据行在SELECT返回的结果集合中只保留一行。 J5p"7bc
3.d"rl
5、限制返回的行数 #1 1NPo9
Uxfl_@lJ
使用TOP n [PERCENT]选项限制返回的数据行数,TOP n说明返回n行,而TOP n PERCENT时,说明n是表示一百分数,指定返回的行数等于总行数的百分之几。 TL$EV>Nr
D4Al3fe
例如: ._w8J"E5
=L|tp%!
SELECT TOP 2 * aNn"X y\ k
FROM testtable /M;#_+VK<
SELECT TOP 20 PERCENT * E/&Rb*3
FROM testtable u%/fx~t$
H=*5ASc
(二)FROM子句 im} ?rY
{Gq*e/
FROM子句指定SELECT语句查询及与查询相关的表或视图。在FROM子句中最多可指定256个表或视图,它们之间用逗号分隔。 <ljI;xE
%CwL:.|
在FROM子句同时指定多个表或视图时,如果选择列表中存在同名列,这时应使用对象名限定这些列所属的表或视图。例如在usertable和citytable表中同时存在cityid列,在查询两个表中的cityid时应使用下面语句格式加以限定: n% 'tKU\q
*[ #;j$m
SELECT username,citytable.cityid A1)wo^,
FROM usertable,citytable -oeL{9;
WHERE usertable.cityid=citytable.cityid uwf
5!Z:>
在FROM子句中可用以下两种格式为表或视图指定别名: Hs?e0Z=N
{>LIMG-f
表名 as 别名 tWTKgbj(
表名 别名 'i;|c
/-bF$)vN
(二) FROM子句 a,F&`Wg
8.'#?]a
FROM子句指定SELECT语句查询及与查询相关的表或视图。在FROM子句中最多可指定256个表或视图,它们之间用逗号分隔。 J:uW`R
`RU[8@ 2%
在FROM子句同时指定多个表或视图时,如果选择列表中存在同名列,这时应使用对象名限定这些列所属的表或视图。例如在usertable和citytable表中同时存在cityid列,在查询两个表中的cityid时应使用下面语句格式加以限定: e^4 p%
sDr/k`>
SELECT username,citytable.cityid =S '%`] f?
FROM usertable,citytable YprHwL
WHERE usertable.cityid=citytable.cityid 5uq3\a
在FROM子句中可用以下两种格式为表或视图指定别名: fO'Wj`&a
dY?`f<*
表名 as 别名 }bN%u3mHws
表名 别名 c4&' D;=
例如上面语句可用表的别名格式表示为: 73{'kK
/525w^'pd
SELECT username,b.cityid f/WQ[\<!I
FROM usertable a,citytable b t}IkK=f
WHERE a.cityid=b.cityid T=hh oGn
dm-pxE "
SELECT不仅能从表或视图中检索数据,它还能够从其它查询语句所返回的结果集合中查询数据。 />'V!iWyz
RLlU"
sw+{
例如: |qZko[W}=
6sIL.S~c)
SELECT a.au_fname+a.au_lname PB%-9C0
FROM authors a,titleauthor ta X[#zCM
(SELECT title_id,title M8H5K
^7;JC7qmN
FROM titles P%)gO
WHERE ytd_sales>10000 D=:04V}2+
) AS t Vpy 2\wZWb
WHERE a.au_id=ta.au_id DG4d"Jy
AND ta.title_id=t.title_id
!fBF|*/
此例中,将SELECT返回的结果集合给予一别名t,然后再从中检索数据。