English

速达软件
     
当前位置:速达软件 >> 技术支持 >> 浏览文章

SQL语句大全

发布日期:2009年07月30日 浏览次数: 作者:佚名  

SQL语句大全rf(1aNy{=?-k

SQL语句浩繁,常用的滚瓜烂熟,可不常用的,你就不肯定记得了,这里放一些SQL语句,保留字什么的,以备查阅。\n#f_dGV{2QB&;

SELECT --从数据库表中检索数据行和列=8HG"Q.q7rqV4 &L
INSERT --向数据库表添加新数据行&1`f/O }L%! INc0?l
DELETE --从数据库表中删除数据行0t8%(\CZ,U9mLvyj=
UPDATE --更新数据库表中的数据\6$y[H$# ^ m*

--SQL数据定义28fWnayx,s/^_reM

CREATE TABLE --创建一个数据库表8rv 6mD .SEP?83Zd#
DROP TABLE --从数据库中删除表Tq!4jpcd$V@vGq~K?
ALTER TABLE --修改数据库表结构1p(qB(B Ylx.lVw
CREATE VIEW --创建一个视图wWplYEdt- jAP:2CZ
DROP VIEW --从数据库中删除视图chgxs]%/JK0B_G
CREATE INDEX --为数据库表创建一个索引%DS.%_l%N `UK`X
DROP INDEX --从数据库中删除索引5'#;I1w€P=@{R-L
CREATE PROCEDURE --创建一个存储过程 ow@YC$xL_cLr AK
DROP PROCEDURE --从数据库中删除存储过程z~ZF^}xp'1R=Y
CREATE TRIGGER --创建一个触发器gi4\_| S1 ^v
DROP TRIGGER --从数据库中删除触发器H(ftTwu?aY@4
CREATE SCHEMA --向数据库添加一个新模式{)y?L c:Jq01q}*5p3
DROP SCHEMA --从数据库中删除一个模式gL0lc 'z}&*Zp4qW
CREATE DOMAIN --创建一个数据值域("hOR[h?Zhp@.€Nl,
ALTER DOMAIN --改变域定义vvr=xp#sLQ?[KH!wGz0
DROP DOMAIN --从数据库中删除一个域*PEhPM=*"~i|]#n-.,

--SQL数据控制~,5o]xOKorrT!PBh

GRANT --授予用户访问权限{PG5MVdsn|lTf_(
DENY --拒绝用户访问wyGhK=K.3J`2r(`
REVOKE --解除用户访问权限qt^r_q C#%Zcwtpa

--SQL事务控制9'z0d9Q;W7e O9?

COMMIT --结束当前事务2x_XZ(z&:NZ5 y`$
ROLLBACK --中断当前事务lY#w,UyLK=#z562|
SET TRANSACTION --定义当前事务数据访问特性y,!e.QCPJ,U)wg5

--程序化SQLFNob"U:Q k_?C V

DECLARE --为查询设定游标@'0 Tfj:/34f,b]
EXPLAN --为查询描述数据访问计划gN%7B uq#IM'at3
OPEN --检索查询效果打开一个游标hg%w/usDHN 8U(xd&
FETCH --检索一行查询效果M:F]BHuDG @@vq€H*
CLOSE --关闭游标 .D.sF$`'€o*yC6m
PREPARE --为动态实行预备SQL 语句6& Bk` .cpbxK 5-
EXECUTE --动态地实行SQL 语句?K:=b)])xJ \9
DESCRIBE --描述预备好的查询#g6-x|XCa]~%`*cMt

---SQL局部变量hj -Ng|MJW5=+

declare @id char(10)&QX8f')H e -dVT
--set @id = '10010001'u4Z=C!Qyhbv*]
select @id = '10010001'=+{ia.=fF ./3],U~

---SQL全局变量y;vx2;i[%& kW9lN
---必须以@@开头2JoXdwcI]F3(n)h

--SQL IF ELSE &tbfiF6.ib1spB.7JC
declare @x int @y int @z int0'x=?c3[l\4Gt [AV
select @x = 1 @y = 2 @z=3!1Ij*r?8/€H6/2
if @x > @y3 ~n# G3+FAc_€0]:3
print 'x > y' --打印字符串'x > y'p6a?X;cv^? 5 j
else if @y > @zHSY d4\2b7.Hs K
print 'y > z' *Ww;=&HUE")\C%u
else print 'z > y'MzJ ?Sd;337* z^

--SQL CASE€i';m€b)fm1)U+ 9^
use pangu3t8rP$?%ePdlAU[
update employeeN+ :_F|+Q:`VB
set e_wage = ,T.^WyG5y84)(uW
case:Fhmu7*G?r}.G;:g
when job_level = ’1’ then e_wage*1.0883UK€7BoxAqYwgoK
when job_level = ’2’ then e_wage*1.07p4g+= KU]jwn1G`
when job_level = ’3’ then e_wage*1.06V= V$$}=o}\|? ~J
else e_wage*1.05`*;sh&-]-QcI€ M
end1=xz[?uAN+: #/"=

--SQL WHILE CONTINUE BREAKe376nm€d`2
declare @x int @y int @c int@mU.gt=KDgggC 1}
select @x = 1 @y=1Btpz;TT_%kcTnr)
while @x < 3 AKM/kCmUpS4sx:=
begin=o[@ ZD3%VH`V
print @x --打印变量x 的值fPe`S{_xWU?,_siDs@
while @y < 38]c 3 9ba%P?,@
begin}T6G@;Nf$o6Bn |j?#
select @c = 100*@x + @y$ * jEqJ?7T0?€eZL
print @c --打印变量c 的值Y€;/:a(T$04jYO=?5QC
select @y = @y + 1*I0Z:DMpd)Qkzrq4DC
endO@  stzjM]x]Gj=&
select @x = @x + 1!n'J~] uo*7]em
select @y = 1Gqh?$(IyjoK #€i
endpDrH`gw&WO+Bq$

--WAITFORq Nz%mvn!{~s
--例 等待1 小时2 分零3 秒后才实行SELECT 语句=:-cNeq(% Scrd%5D
waitfor delay ’01:02:03’6~a=vc^`[\? "'NrN
select * from employee{v;`H`d}4F;ylE
--例 等到晚上11 点零8 分后才实行SELECT 语句~|#Bdq'FHY0#\
waitfor time ’23:08:00’#BN&;DK$EzK_eH
select * from employeeJ5\j Q4ZsS||ead4

***SELECT***"%\m+YnI+K&?wd

select *(列名) from table_name(表名) where column_name operator valueNmz'_bSJa'GC@o
ex:(宿主)d*[ur NIW QxMIY2F
select * from stock_information where stockid = str(nid)D"L!#Wc;[;0 eH,O^
stockname = 'str_name' €1td?#,*?OOn&z5h
stockname like '% find this %' ]N;PjH^NsDqC!€J
stockname like '[a-zA-Z]%' --------- ([]指定值的范围) YQk,3u€aRwxH,9Y?x
stockname like '[^F-M]%' --------- (^排除指定范围)`dB%W&#$mph[z8
--------- 只能在使用like关键字的where子句中使用SQL通配符)/pN (Pp` 8]D e_;^
or stockpath = 'stock_path'-Ua7Xn3e]#}&a)?
or stocknumber < 1000aK({`6@fv|!_S
and stockindex = 24~}"?_2Mf-s|dU`]o
not stock*** = 'man'- ?z!0Ve2zXQC
stocknumber between 20 and 100? HApdB[ 4
stocknumber in(10,20,30)pZQ~P-XgMJ/+CP
order by stockid desc(asc) --------- 排序,desc-降序,asc-升序uSjN~U1/VwgW V!-z
order by 1,2 --------- by列号,D//aLC !(x/xWIAn
stockname = (select stockname from stock_information where stockid = 4)sF6 .n{Iq\,aK
--------- SQL子查询c€\m"?P!p8WJXudwwC1
--------- 除非能确保内层select只返回一个行的值,zG 33 IUMvND3Dp
--------- 否则应在外层where子句中用一个in限制符(€IwIU_qa.d€+Ub
select distinct column_name form table_name --------- distinct指定检索独有的列值,不重复}\0RfM0 $UQmE0.0
select stocknumber ,stocknumber + 10 = stocknumber + 10 from table_name Xy'? yby;wrNICJ/ e@
select stockname , stocknumber = count(*) from table_name group by stocknamea]_/C:6M0f
--------- group by 将表按行分组,指定列中有雷同的值=J3=€J ZOE=(&;L=6
having count(*) = 2 --------- having选定指定的组,@iVMGr$eJ~426y=

select * ?Ee"qjcC1a eiJ=#O_
from table1, table2 Nz?&@ 2=ScR=kJH|m)
where table1.id *= table2.id -------- 左外部连接,table1中有的而table2中没有得以null透露表现71qnA@WnK&78TzZ
table1.id =* table2.id -------- 右外部连接1}oQ[%$GZ&G "5Gi

select stockname from table1T==EdW)lPtr'xJ=Qp
union [all] ----- union合并查询效果集,all-保留重复行=@TJ^R4Jk3lFbj82L
select stockname from table247fx[}rXM?r9zIz

***insert***NKl9W+~Pfx=L4^UI

insert into table_name (Stock_name,Stock_number) value (xxx,xxxx)=&NeOx]Gi5[(E=n ?=
value (select Stockname , Stocknumber from Stock_table2)---value为select语句6 JK 6+@bD?dL?Dr

***update***= 5l?Xn@e D\pX -9h

update table_name set Stockname = xxx [where Stockid = 3]He}Fp=V.DM ]d
Stockname = defaultsA%JE 1*^/W
Stockname = null_vWF\PItiT(s!A?
Stocknumber = Stockname + 44?o)n=na!,L€}/5

***delete***?kv_?.;505ah_

delete from table_name where Stockid = 3rfMyiw v84mY nR g
truncate table_name ----------- 删除表中所有行,仍保持表的完备性a 6m#(}F/`^).'U
drop table table_name --------------- 完全删除表$,*)g&&edxrx=@;\{

***alter table*** --- SQL修改数据库表结构n%cHKO_!pkB[a

alter table database.owner.table_name add column_name char(2) null .....;zc QW zu-AI|8_Oe*
sp_help table_name ---- 表现表已有特性$Tr,s+R&k'o\1
create table table_name (name char(20), age smallint, lname varchar(30))oS1U%:/^B{{nO75%8
insert into table_name select ......... ----- 实现删除列的方法(创建新表)M@lA1(&Z0ux{yBS
alter table table_name drop constraint Stockname_default ---- 删除Stockname的default束缚.aAJOJS|,4  =!

***function(/*常用函数*/)***aRMcl+=|6 ~npPrX{

----统计函数----Y} x:)uQC\*L?{F
AVG--求平均值4q= fAzIzH Z$o
COUNT --统计数目kYU;~o&?1:@"plOx_
MAX --求最大值sX_\ |As0sTi[n5ok "
MIN --求最小值On:M#ps$vlXS~$P+
SUM --求和l y W w=&oVWF^?2+

--AVGT)N')U%/Gd0ZOP/iY
use pangu €t(zqlFl!%nim*
select avg(e_wage) as dept_avgWagek4/XLnedVm6&Qd/Xz
from employee9In}m€p4GoFhH2Mv
group by dept_idBq),):'YMgn6D|eT,S

--MAX'~p=dX|e&2#oI7Mb;#
--求工资最高的员工姓名f"{cvq=Rl@Wv$O%5
use panguj1]vpL}s!ZA\vfrp
select e_nameg)T#\QNN{rfu$@E#^g
from employeerV6)p,\[ rqfYj1FE#3
where e_wage =^BFO;BiR1 . m{
(select max(e_wage)D-|n`5€De3r;
from employee)(J@_Awz_bW0X== CY

--STDEV()!(~vz5 ),]X9E206\
--STDEV()函数返回表达式中所稀有据的标准差@Pshgg&=)X*Z0ulj

--STDEVP()O};05u^[C4;vLI
--STDEVP()函数返回总体标准差 gn3Z3wo`L'.fvN

--VAR()Y"k]{=B gA218-fPJFO
--VAR()函数返回表达式中所有值的统计变异数VS ( l€|Vy3xI [.N[

--VARP()€BXIZ['0B_X2
--VARP()函数返回总体变异数DSaAT{~FTuFoyH)RIsw

----SQL算术函数----wIqXY.C;l s)K l

/***SQL三角函数***/@@UX$[_T e:w"5S
SIN(float_expression) --返回以弧度透露表现的角的正弦!m}+coF :2GCrxFsw^
COS(float_expression) --返回以弧度透露表现的角的余弦c.u }#v(_/8)E_% ;9
TAN(float_expression) --返回以弧度透露表现的角的正切~nx0+gf#694 €8(K
COT(float_expression) --返回以弧度透露表现的角的余切`@3F+P) 06?/; k
/***SQL反三角函数***//C~ ~m JEwSb`-,g
ASIN(float_expression) --返回正弦是FLOAT 值的以弧度透露表现的角).Y]/" S[f8]//
ACOS(float_expression) --返回余弦是FLOAT 值的以弧度透露表现的角&X?\;0t;DDQx*[OU.
ATAN(float_expression) --返回正切是FLOAT 值的以弧度透露表现的角?89X bJ $R?dXnmb
ATAN2(float_expression1,float_expression2) i`ZD$DL7 d ] )
--返回正切是float_expression1 /float_expres-sion2的以弧度透露表现的角vnLyv-R}I4[(vvs?
DEGREES(numeric_expression)gCO€@~f~|D|gqHAS=^
--把弧度转换为角度返回与表达式雷同的数据类型可为7l$*dMbjYp.+?~ C
--INTEGER/MONEY/REAL/FLOAT 类型 €ESj\r#99:RG__
RADIANS(numeric_expression) --把角度转换为弧度返回与表达式雷同的数据类型可为8Jv9 S?7Z:BWk1v
--INTEGER/MONEY/REAL/FLOAT 类型4NR{'f+!$GRnjs e
EXP(float_expression) --返回表达式的指数值FT.JHPNN4IO-8Ilcw
LOG(float_expression) --返回表达式的天然对数值F,=}9Q Mt VgKl}d~{
LOG10(float_expression)--返回表达式的以10 为底的对数值|Qd6xw=5+=E/C I
SQRT(float_expression) --返回表达式的平方根"?O ^`D0d"uRRBt(
/***SQL取近似值函数***/iV O}O'\]xh1BU
CEILING(numeric_expression) --返回>=表达式的最小整数返回的数据类型与表达式雷同可为WS $JhUPW0O9U"n+
--INTEGER/MONEY/REAL/FLOAT 类型m6BqClP]E$d(oK
FLOOR(numeric_expression) --返回<=表达式的最小整数返回的数据类型与表达式雷同可为fv J/P?6}u#mKTDn=
--INTEGER/MONEY/REAL/FLOAT 类型;w=5Lz,^kkxC8S2;
ROUND(numeric_expression) --返回以integer_expression 为精度的四舍五入值返回的数据{=7ey{py|_} %8T
--类型与表达式雷同可为INTEGER/MONEY/REAL/FLOAT 类型W?N lum9F&N}pA
ABS(numeric_expression) --返回表达式的绝对值返回的数据类型与表达式雷同可为Tw=WZ+~'_ZT/f^\
--INTEGER/MONEY/REAL/FLOAT 类型9i!\UgOtKq&Yq1 ~(
SIGN(numeric_expression) --测试参数的正负号返回0 零值1 正数或-1 负数返回的数据类型0#6r:a33|Db_~
--与表达式雷同可为INTEGER/MONEY/REAL/FLOAT 类型)[DA|2t8%.:X ?O`?l'\
PI() --返回值为π 即3.1415926535897936ac=BU0|;kH??*`1\[
RAND([integer_expression]) --用任选的[integer_expression]做种子值得出0-1 间的随机浮点数v(b~"I.+qSV1*^98(I

----SQL字符串函数----Gfm@i!fZPk\#m
ASCII() --函数返回字符表达式最左端字符的ASCII 码值b,@@€l5=EG~[cO
CHAR() --函数用于将ASCII 码转换为字符ngl+Iaye{Ea`=
--假如没有输入0 ~ 255 之间的ASCII 码值CHAR 函数会返回一个NULL 值!~[&W',3xX (n\0
LOWER() --函数把字符串悉数转换为小写.? fj(V*YD?DX EU
UPPER() --函数把字符串悉数转换为大写=2gG/7fGs[Tr6dbh
STR() --函数把数值型数据转换为字符型数据R[U[Ixui=}`'{
LTRIM() --函数把字符串头部的空格去掉I*n!gmlnGe z)M$PRr
RTRIM() --函数把字符串尾部的空格去掉|/f MNg f[] _epN
LEFT(),RIGHT(),SUBSTRING() --函数返回部分字符串]OM0j)\Iji€WsSQY1o
CHARINDEX(),PATINDEX() --函数返回字符串中某个指定的子串出现的开始位置"T0|P'AOj?j%L {)
SOUNDEX() --函数返回一个四位字符码 ,jndS\-^TsPb*o}'W
--SOUNDEX函数可用来查找声音相似的字符串但SOUNDEX函数对数字和汉字均只返回0 值 I?+m ]N}`Bsv`#K
DIFFERENCE() --函数返回由SOUNDEX 函数返回的两个字符表达式的值的差异"Yn9Klf7uYWQ"*|@[
--0 两个SOUNDEX 函数返回值的第一个字符不同K x]}+:|lKft!j{8
--1 两个SOUNDEX 函数返回值的第一个字符雷同A_uG]f$8n]8(pR4\5
--2 两个SOUNDEX 函数返回值的第一二个字符雷同=7Kpz_*aNF5
--3 两个SOUNDEX 函数返回值的第一二三个字符雷同k 7a64b8`p$s{
--4 两个SOUNDEX 函数返回值完全雷同f M/\N'G@DPR7;9

QUOTENAME() --函数返回被特定字符括起来的字符串XZ.E''m nceo!!p
/*select quotename('abc', '{') quotename('abc')M;Afl08uXZY'Z€
运行效果如下p;D tq728v$yD+6
----------------------------------{-~Mx~8Jks,1z "0
{abc} [abc]*/Il!dMrvI PeZYW(,._

REPLICATE() --函数返回一个重复character_expression 指定次数的字符串x=2==]3=Sj0sExzXl!L"
/*select replicate('abc', 3) replicate( 'abc', -2)nd\SnQcs /€_zZ
运行效果如下#/mr"hIhB*I=e}5_e_
----------- -----------1JCC]8B Ud0gh|~On
abcabcabc NULL*/e2WWEYw~pbq*

REVERSE() --函数将指定的字符串的字符排列顺序颠倒uNew0!1,SQX6\d7pL]
REPLACE() --函数返回被替代了指定子串的字符串;To %]#}I*R/pcm
/*select replace('abc123g', '123', 'def') 9L[iFp)q|dnl
运行效果如下BH9Eu?J [g@],
----------- -----------=Gk)#71xlTePR9_O
abcdefg*/CNOo.ZpUJ5q;{}X

SPACE() --函数返回一个有指定长度的空白字符串ta0#jl_5ZR/`0or
STUFF() --函数用另一子串替代字符串指定位置长度的子串Md~-#TAQ]T"77Q/%J

----SQL数据类型转换函数----Qobup|k ?$1$N=
CAST() 函数语法如下bDPMJq3-Yo(H"
CAST() (<expression> AS <data_ type>[ length ])]IiW@!L=;/wF"j-F
CONVERT() 函数语法如下0JDq{?rzWGZs~€D
CONVERT() (<data_ type>[ length ], <expression> [, style])g`As7 N ?6(aD

select cast(100+99 as char) convert(varchar(12), getdate())o$hpTJ=EI H5
运行效果如下H+0LP4V?my^'\I7C=3
------------------------------ ------------|y_idIM#c@x:+O2
199 Jan 15 2000F74+u;}| j,

----SQL日期函数----wW=3.!6bvf.F.%F
DAY() --函数返回date_expression 中的日期值Oi^icc O"QbgT7
MONTH() --函数返回date_expression 中的月份值#b78 e;CL]:- UO
YEAR() --函数返回date_expression 中的年份值rM `0{v#"K0[hOD\H
DATEADD(<datepart> ,<number> ,<date>)  {` 35(?v&?
--函数返回指定日期date 加上指定的额外日期间隔number 产生的新日期r]#uWOeEc;Q U$~
DATEDIFF(<datepart> ,<number> ,<date>)t}7?aL/Oi([(i& C?Sz
--函数返回两个指定日期在datepart 方面的不同之处!0 !9~:9 ZINX ?
DATENAME(<datepart> , <date>) --函数以字符串的情势返回日期的指定部分 I!4"~.&=-qz&0|
DATEPART(<datepart> , <date>) --函数以整数值的情势返回日期的指定部分0&ub6f%HZm1`{m%J i
GETDATE() --函数以DATETIME 的缺省格式返回体系当前的日期和时间z|Ko5rBN,/#F|3V

----SQL体系函数----@pZe=IiJnH$)Jl*_nIZ
APP_NAME() --函数返回当前实行的应用程序的名称€t_ NQq xu-#]
COALESCE() --函数返回浩繁表达式中第一个非NULL 表达式的值€v,Vqq3|icg`b+Zx}
COL_LENGTH(<'table_name'>, <'column_name'>) --函数返回表中指定字段的长度值L0K^VPS16GIZ=Jrk~b
COL_NAME(<table_id>, <column_id>) --函数返回表中指定字段的名称即列名,LiS,UUUtmi6" ;#V5
DATALENGTH() --函数返回数据表达式的数据的现实长度7Kdr1J9UXb9m`1:Dj
DB_ID(['database_name']) --函数返回数据库的编号.}xdA!!}-L|~oE
DB_NAME(database_id) --函数返回数据库的名称[[{UT#wMZE3;[dF
HOST_ID() --函数返回服务器端计算机的名称{DJNZj2,%Z&s 5DDr
HOST_NAME() --函数返回服务器端计算机的名称8pD MF#iXBx3?ZejCu?t
IDENTITY(<data_type>[, seed increment]) [AS column_name])yz\=fwv9*?~"}^O7ck
--IDENTITY() 函数只在SELECT INTO 语句中使用用于插入一个identity column列到新表中r `ySxX|/ktU
/*select identity(int, 1, 1) as column_name+=#LV=a}-'TRE=
into newtablee1\ x_V'9k5qF&(
from oldtable*/Uz% mykb#1j?Z
ISDATE() --函数判断所给定的表达式是否为合理日期€\qnY`htz%?N5 YC
ISNULL(<check_expression>, <replacement_value>) --函数将表达式中的NULL 值用指定值替代xsJ&H:rXVIA)-/67 L
ISNUMERIC() --函数判断所给定的表达式是否为合理的数值0q ,2orG;fE"V
NEWID() --函数返回一个UNIQUEIDENTIFIER 类型的数值,Oxg mu W{Rod)h
NULLIF(<expression1>, <expression2>)&hW!S-5x"L"?fp]-
--NULLIF 函数在expression1 与expression2 相称时返回NULL 值若不相称时则返回expression1 的值 ?Gst\zU|Xj8ej5=

[版权归原作者及coolcxm共同拥有,转载请注明出处]
 
上一篇:管家婆辉煌版的一些经验技巧 下一篇:xp升级之后速达网络版客户端连接不上