一、 简单查询 @)4]b+8Z
简单的Transact-SQL查询只包括选择列表、FROM子句和WHERE子句。它们分别说明所查询列、查询的表或视图、以及搜索条件等。 I$0)Px%z
j&Wl0
例如,下面的语句查询testtable表中姓名为“张三”的nickname字段和email字段。 >w^YO25q
k+8q{5>A<
SELECT nickname,email h_T7% #0
FROM testtable %]8qAtV^3j
WHERE name='张三' %+K<<iyR|
|>JS!NM
I
(一) 选择列表 Wu_kx2h
9)gC6IiW
选择列表(select_list)指出所查询列,它可以是一组列名列表、星号、表达式、变量(包括局部变量和全局变量)等构成。 <-D0u?8
iMP]W_
1、选择所有列 1PP $XJtyD
~ ArP9
K"
例如,下面语句显示testtable表中所有列的数据: dRaNzK)M
}C>{uXv
SELECT * _oUHJ~&,
FROM testtable (Yis:%c\!
/(BMG/Tb
2、选择部分列并指定它们的显示次序 jr!?v<NoX
Lg*B>=
查询结果集合中数据的排列顺序与选择列表中所指定的列名排列顺序相同。 CS=qj-(
}=8B*
例如: 66I"=:
?}a;}Q6
SELECT nickname,email
S4h:|jLUF
FROM testtable *?Kr*]dnLl
;F~LqC$
3、更改列标题 2m35R&
g;8jK8Kh
在选择列表中,可重新指定列标题。定义格式为: }woo%N P
Gmq/3tw
列标题=列名 m$W <
列名 列标题 S!3S4:]B^
NZ-\h
如果指定的列标题不是标准的标识符格式时,应使用引号定界符,例如,下列语句使用汉字显示列标题: 6^"=dn6K
'toa@5
SELECT 昵称=nickname,电子邮件=email nx^]>w
FROM testtable Qe}`~a9P
4、删除重复行 Xp8]qH|K
SELECT语句中使用ALL或DISTINCT选项来显示表中符合条件的所有行或删除其中重复的数据行,默认为ALL。使用DISTINCT选项时,对于所有重复的数据行在SELECT返回的结果集合中只保留一行。 vL\&6n~M>
<B6&I$Wc+
5、限制返回的行数 d)R:9M}v
KB'qRnkc
使用TOP n [PERCENT]选项限制返回的数据行数,TOP n说明返回n行,而TOP n PERCENT时,说明n是表示一百分数,指定返回的行数等于总行数的百分之几。 sPMa]F(
q&/Yg,p\
例如: NNE<L;u
}=6'MjF]
SELECT TOP 2 * IS#FiH
FROM testtable zOqn<Y@
SELECT TOP 20 PERCENT * !>e5z|1
FROM testtable }c`fW&
_;~,Cgfi
(二)FROM子句 I]Dl /
F;l$.9? .s
FROM子句指定SELECT语句查询及与查询相关的表或视图。在FROM子句中最多可指定256个表或视图,它们之间用逗号分隔。 ,XIz?R>;c
xgNJ eQ
在FROM子句同时指定多个表或视图时,如果选择列表中存在同名列,这时应使用对象名限定这些列所属的表或视图。例如在usertable和citytable表中同时存在cityid列,在查询两个表中的cityid时应使用下面语句格式加以限定: K,boVFs
|&[L?
SELECT username,citytable.cityid 8&3V#sn'
FROM usertable,citytable '&gF>
WHERE usertable.cityid=citytable.cityid E gal4
在FROM子句中可用以下两种格式为表或视图指定别名: `}lJH i
bBS,-vN
表名 as 别名 p Wt)
A
表名 别名 ;+<&8.=,)
1!1beR]
(二) FROM子句 &b?LP]
`(f!*Ru@/z
FROM子句指定SELECT语句查询及与查询相关的表或视图。在FROM子句中最多可指定256个表或视图,它们之间用逗号分隔。 sM?MLB\Za
j|/]#@Yr
在FROM子句同时指定多个表或视图时,如果选择列表中存在同名列,这时应使用对象名限定这些列所属的表或视图。例如在usertable和citytable表中同时存在cityid列,在查询两个表中的cityid时应使用下面语句格式加以限定: O km{Xx
}2uI?i8
SELECT username,citytable.cityid hvuIxqv !y
FROM usertable,citytable %9M~f*
WHERE usertable.cityid=citytable.cityid 0LfU=X0#7
在FROM子句中可用以下两种格式为表或视图指定别名: &znQ;NH#
m"fNK$_d
表名 as 别名 E !a|Xp
表名 别名 \yd
s5g!:
例如上面语句可用表的别名格式表示为: yfx7{naKC`
e|p$d:#!
SELECT username,b.cityid USVqB\#
FROM usertable a,citytable b KTn}w:+B\
WHERE a.cityid=b.cityid }p!HT6 tZ
/u0'
6V
SELECT不仅能从表或视图中检索数据,它还能够从其它查询语句所返回的结果集合中查询数据。 FFH_d <q
kIGbG;"_
例如: 9P~\Mpk
+H9 >A0JF
SELECT a.au_fname+a.au_lname "ajjJ"x A
FROM authors a,titleauthor ta pDh{Z g6t
(SELECT title_id,title -|Y(V5]
B:e
@0049
FROM titles #ceaZn|@m
WHERE ytd_sales>10000 +[R/=$
) AS t 3$m4q`J
WHERE a.au_id=ta.au_id mFSw@CC
AND ta.title_id=t.title_id lNL6M%e$Q
此例中,将SELECT返回的结果集合给予一别名t,然后再从中检索数据。