SQL语法大全[转]

时间:2022-11-18 00:32:43

--数据操作
4 q2 I! X! M0 z9 p* LSELECT --从数据库表中检索数据行和列
8 X) H9 }- x4 T- V9 SINSERT --向数据库表添加新数据行" j6 p) K- w6 S1 t
DELETE --从数据库表中删除数据行# }1 a4 x4 [% s' h  l# t# V
UPDATE --更新数据库表中的数据
7 L. d) Q2 P& k4 N--数据定义
( ]' n; I" n% q4 U# U/ G( x0 U& DCREATE TABLE --创建一个数据库表# p  A+ {, I! G1 T$ Q2 v% h
DROP TABLE --从数据库中删除表  M/ e1 ?( ]  t: Y) M0 w! r
ALTER TABLE --修改数据库表结构/ N+ S" N5 M; U, i6 X
CREATE VIEW --创建一个视图% F! J1 J( J7 {- U
DROP VIEW --从数据库中删除视图
  r7 l0 {/ m3 K# s+ j  V9 c- @, yCREATE INDEX --为数据库表创建一个索引
1 {: J/ U+ ?& f' _' JDROP INDEX --从数据库中删除索引
! P1 o; d% k& wCREATE PROCEDURE --创建一个存储过程
; h# I, H( |9 C4 E: V6 a$ f7 gDROP PROCEDURE --从数据库中删除存储过程
9 Y3 w: N$ Q! K- b( vCREATE TRIGGER --创建一个触发器' w, m* m( M. X7 c- q
DROP TRIGGER --从数据库中删除触发器, W$ h  T" t& J3 d1 F* N" P, X
CREATE SCHEMA --向数据库添加一个新模式% K$ a5 n0 }2 `4 j( k$ |& b
DROP SCHEMA --从数据库中删除一个模式$ @9 c. z( q* ?# {0 {! v3 m
CREATE DOMAIN --创建一个数据值域
' M* m+ [0 M; k3 D  ]3 rALTER DOMAIN --改变域定义
4 f- [8 Z& s5 c6 u8 [* X$ m. pDROP DOMAIN --从数据库中删除一个域
: ^8 Z/ E% z$ x6 a--数据控制
9 H4 _# a& t) `( D" {% CGRANT --授予用户访问权限
! A1 x; G9 {( q4 L( zDENY --拒绝用户访问
, H0 E9 i# ^% L/ ^! d" mREVOKE --解除用户访问权限2 X- l$ @. ~" r  t, b$ r  @2 t
--事务控制/ k" O1 ^) [" Q8 E
COMMIT --结束当前事务
  }% F! o6 N8 d1 PROLLBACK --中止当前事务: g3 F- C$ I0 {! p5 e' @# h3 o
SET TRANSACTION --定义当前事务数据访问特征" Z. C% O$ A$ x
--程序化SQL
7 ?  f' K! t" `5 fDECLARE --为查询设定游标
0 z0 y5 Z  X6 C+ t5 c/ [) c1 p0 WEXPLAN --为查询描述数据访问计划
+ M4 v' ]: v! hOPEN --检索查询结果打开一个游标
8 d( h7 S. |) I, ~- K  z; s$ J; SFETCH --检索一行查询结果
! ]& Z, b% ]7 B; D, I# gCLOSE --关闭游标
& ^; v" F, _; j: T, a- j5 S0 bPREPARE --为动态执行准备SQL 语句
& c* L5 A  q6 M! `3 }7 oEXECUTE --动态地执行SQL 语句
1 X0 C9 u) I( k- GDESCRIBE --描述准备好的查询
1 V) c6 Z- V. m) P: c---局部变量
. b  o- Y& @/ V+ adeclare @id char(10)
# j7 _! ]7 ?" h1 G--set @id = '10010001'
" N. i" |* I8 Y; g5 Y, wselect @id = '10010001' / L* N. D+ ?/ C+ J& D
% M' x# v  I) z* v$ [5 W0 x" J
---全局变量1 {1 ~  i$ N; k6 \( z' F* E8 u9 U
---必须以@@开头  X( P- U2 ^  i$ }5 u
- I: Z/ I9 M* B- X% N9 ?  o: `3 O4 C$ O6 k
+ C5 a9 u' Z3 v  _- B' r
. S/ m. f1 E) Q2 K3 u' B& G$ i
--IF ELSE
* Q8 M0 x8 s  x( pdeclare @x int @y int @z int
! r. Y& b) t& b: }  z, q2 }: Q! gselect @x = 1 @y = 2 @z=3- Q) o" v* g' m# ?
if @x > @y! b3 j( D1 g5 G# |
print 'x > y' --打印字符串'x > y'! {# R9 O4 F$ K8 u4 R0 l& l
else if @y > @z
5 x9 p# Y& l* U5 r" J1 E7 \print 'y > z'
+ F. _) ^* N; K# e8 Jelse print 'z > y'
  L8 a8 \, ^. o; b/ R! O1 O$ r) x  i8 a& N3 [4 ]9 U/ S  O
, {/ v8 g% K& g  v5 C* H9 `7 O

5 J( O% g9 K$ o& T--CASE6 b/ t& l- `" I; v/ r, L
use pangu
* D$ G, x) C7 x( K  U1 Bupdate employee! p& u# v  }8 a& s$ J) D
set e_wage =2 L% [0 q& _8 h
case
) D3 }$ A& `: Lwhen job_level = ’1’ then e_wage*1.08
- g. ^9 u( B1 P( n$ @5 E& pwhen job_level = ’2’ then e_wage*1.07
2 d/ j3 O4 _: awhen job_level = ’3’ then e_wage*1.06
' i2 D8 a( X- i. R- telse e_wage*1.05
9 _0 x% ?! Y8 P8 rend
$ ~7 u+ I- G, d4 r( n- N
  G$ w* w; [& ?! H/ n& [. V" g8 Y2 v" d8 g
# v% V3 L9 h) F5 V/ z
--WHILE CONTINUE BREAK
  j9 ]5 s$ Y1 B/ O4 j# v) Q3 zdeclare @x int @y int @c int6 K5 W# X" {# V' A; Z6 ?% b3 T2 C- N& H
select @x = 1 @y=1
0 W( ]# I& ~4 Nwhile @x < 3! B" H1 n; i# J2 _
begin% S5 Z( F3 [' J* E5 J9 C
print @x --打印变量x 的值
5 z5 H4 V" b) X, bwhile @y < 3
8 k) `/ I! P2 R0 Rbegin7 t0 T6 ^8 L( h3 K% O; z( A
select @c = 100*@x + @y
$ @4 l$ U: t) U# A" |# [print @c --打印变量c 的值8 |$ z$ X# G- u- f, |# R! L! W
select @y = @y + 1
- ~+ n2 q8 s/ C0 kend. S0 O; z0 W! Q( @6 \" l+ R
select @x = @x + 1; j, n2 K& m% T+ B8 c- E9 }8 `
select @y = 1
4 n0 y* H$ A9 u' Wend7 G6 W: T0 l( C$ X2 }! J9 k
0 y9 P% U8 k# [1 S( `; ^% C

) f" W* J) m+ [1 X, R  _
. K6 W5 W" a! K1 t5 s; O3 p--WAITFOR! i' e) M" p4 F! G  ]
--例 等待1 小时2 分零3 秒后才执行SELECT 语句
* M1 ?3 k9 d) Vwaitfor delay ’01:02:03’4 m! y: I5 k0 p' J/ b
select * from employee
# C; ^2 h& @! g" h- }--例 等到晚上11 点零8 分后才执行SELECT 语句3 t0 p% E* q/ n% w; R
waitfor time ’23:08:00’
2 S$ b. c6 t6 m7 q+ T5 Nselect * from employee( {+ K; ?/ Z3 |7 D  U2 K+ N- e

$ N2 R1 w8 v% f: M8 V$ z2 G' z# x
0 t% S" _1 r! ~7 C3 ]( k
4 u3 |1 N3 ^6 y% F! n3 v% J+ a! D8 V. W
***SELECT***4 D% ?$ R3 s9 ?9 ]8 H0 P# I
9 w0 }" y1 g8 ]! A, a' U

: l  @- ?* o, y' Y3 x# q4 o3 G6 u1 c  ]
select *(列名) from table_name(表名) where column_name operator value
- |/ L, I. x( d* o! ^exSQL语法大全[转]宿主)+ Z; _  m0 R3 {& p2 ]  _
select * from stock_information where stockid = str(nid)
1 V2 z$ |* o5 ^% ~# ostockname = 'str_name'
/ t; o) s8 D- e0 i+ {# p$ i! U( astockname like '% find this %'
% U& n# V7 C2 Pstockname like '[a-zA-Z]%' --------- ([]指定值的范围)" X5 I3 a% y# D% d# D8 f
stockname like '[^F-M]%' --------- (^排除指定范围)/ \" P9 b: l1 `- U' p
--------- 只能在使用like关键字的where子句中使用通配符)
5 g1 B2 y, o" |# }or stockpath = 'stock_path'
) M, e% }& Z. @or stocknumber < 1000
( P" Y4 ?( J$ U9 L  T- ?and stockindex = 247 w' b7 s$ ~9 H; X
not stock*** = 'man'
# z9 u# Z0 y1 E0 R& V& C5 Z9 d, hstocknumber between 20 and 100
$ O. R) v2 i& i+ E& h% jstocknumber in(10,20,30)
8 o5 b. L3 L2 ~; q9 }4 I0 jorder by stockid desc(asc) --------- 排序,desc-降序,asc-升序, `8 }6 t) C; k  {1 |) ]# f5 a
order by 1,2 --------- by列号# @1 O; R( ]; f! e8 P2 O
stockname = (select stockname from stock_information where stockid = 4)
* c' @' a% h9 o9 T6 L--------- 子查询
( y9 L! q+ r2 ~9 d' T7 U* P--------- 除非能确保内层select只返回一个行的值,) {& N0 m: t2 f+ N7 d  R8 @7 Z
--------- 否则应在外层where子句中用一个in限定符
, K/ G# x; I& j$ H$ ?select distinct column_name form table_name --------- distinct指定检索独有的列值,不重复" X* n" q8 L) g" ?
select stocknumber ,"stocknumber + 10" = stocknumber + 10 from table_name5 D" M' R' B, C" a) J- e7 M/ K
select stockname , "stocknumber" = count(*) from table_name group by stockname/ [2 [) T7 ~! \8 Q. c/ I
--------- group by 将表按行分组,指定列中有相同的值3 Z1 X& D- b! V6 u4 T+ \  r- f
having count(*) = 2 --------- having选定指定的组6 k5 |6 C, p4 e! w& Y2 I* s; [
8 B) t3 U- N3 x. F+ k& W, [0 i5 r3 w

/ u/ e  h. G+ w2 ]4 A
" i! ^1 e9 T2 Z& x! ]select * 4 h! N$ F9 I5 z8 g  \" u. s
from table1, table2
! g7 X  B/ V. X' H$ }) awhere table1.id *= table2.id -------- 左外部连接,table1中有的而table2中没有得以null表示2 C/ _9 q+ [- C1 E# `' I
table1.id =* table2.id -------- 右外部连接
1 ?, R9 m3 G+ ]' j( i, ^" \; A; o
1 s$ `7 j" B4 G, K

/ r1 _: ]$ F: H0 m/ T9 Eselect stockname from table1
0 [: K- Z6 e# T/ ^! Y. f% S( xunion [all] ----- union合并查询结果集,all-保留重复行5 x9 ^7 O. |$ c! K) k! O
select stockname from table2
5 {4 U* K; J- q& N* s- J+ u
, F8 O* n7 y4 n) i
, k2 m: C% ]' W1 y1 Z$ b+ V( q4 v2 @8 {2 D; q5 _5 S  L
***insert***
' j& L; h8 b" b" e5 Y8 z2 y; g3 R

2 }2 Z! f; \8 H# `3 C3 O: G  k* W( B+ `. [8 z
insert into table_name (Stock_name,Stock_number) value ("xxx","xxxx"), M- o# z+ s% t9 S/ o; Y: b
value (select Stockname , Stocknumber from Stock_table2)---value为select语句. l, ~& Y& X& y% B6 p: [

! \6 g; D; o0 l" i4 _
0 B! Z2 u% K- i/ U5 t9 T1 Y3 z* g/ Q5 }( {
***update***; z- s% a* m$ g
! g' p% i6 g% y" t
7 G) i/ {' G- h

! m/ F+ ~2 |2 F2 }/ @. X% U% nupdate table_name set Stockname = "xxx" [where Stockid = 3]( ?: n" U/ U9 f2 M, D
Stockname = default6 L+ Q+ S# ?' J% I
Stockname = null
! ]& l/ ?  N9 J9 Y* _4 t2 C. c: qStocknumber = Stockname + 4
: h" m1 T: u* L& ^, J( |2 ~8 e9 \  s; N5 l, s+ n3 J

& K, h% b" J( O' w% r9 z& a1 d- E$ @; K% Z- ~5 a3 P2 ^1 q! |
***delete***( ]7 k  K7 s- S9 v6 R, c% C. m
9 q6 |' Q& ?9 P2 S) q
) @' j0 v/ Y( M! D
1 m1 z+ B. g" f5 I1 O% _. t- e
delete from table_name where Stockid = 3
7 d! Q& A  S+ P5 `  Q  utruncate table_name ----------- 删除表中所有行,仍保持表的完整性
& R* g1 g' x" z7 S0 {8 ]# E/ |% Adrop table table_name --------------- 完全删除表5 }7 \1 l8 @  Y! ^  X1 j

: j, }; g8 X# F1 o2 q7 l! K6 D8 S4 o. a4 i

3 }% S6 ]3 e! j+ Z8 E9 o: P6 G***alter table*** --- 修改数据库表结构
( m. ^- a# H# D
! `, s5 k) c, v; r/ U: _& j! q8 B
2 N; J" T  ]- z" v0 |: o0 I  q& K$ v( u
alter table database.owner.table_name add column_name char(2) null ....., s2 L8 z# |2 D- U& E
sp_help table_name ---- 显示表已有特征
' T9 C# b! Y4 V6 v5 lcreate table table_name (name char(20), age smallint, lname varchar(30)); H  b! Q+ K  O
insert into table_name select ......... ----- 实现删除列的方法(创建新表)! m: i0 X* E5 |
alter table table_name drop constraint Stockname_default ---- 删除Stockname的default约束: ^$ Q- D5 D: w
) F1 y" L, W# m1 {& `
: J; ~/ p, S6 e  A" m# V
" G( H% x* z6 C1 _7 Q
***function(/*常用函数*/)***
- v" s- V) D8 r5 o! B5 d4 j
/ @  q4 V" Y5 Z9 q* `1 s; g  P/ B( l* T2 K7 G

6 b8 s( k' f. E# x* }  r( J. \7 a2 Y----统计函数----
1 ^+ Z" X# W) P6 E6 a: K( p' y2 tAVG --求平均值
: y7 i4 b& R8 r% DCOUNT --统计数目8 a7 w9 j& W7 {7 K- K
MAX --求最大值
* a3 A/ t" L: e( w2 {; xMIN --求最小值
1 _) j4 r2 m* m" B* ^5 {SUM --求和
1 c' z* ^8 }8 B; t! D6 Y* j
* p8 R- B6 q+ J! T' X6 D% m, a7 I  d9 F1 I
3 K  H) s5 p3 `) x4 t% P/ E
--AVG
) n9 \- I& l& buse pangu+ X  T2 w) u+ r
select avg(e_wage) as dept_avgWage6 B. r! @/ _; X$ ]# a2 N
from employee
8 E$ `2 g: p0 }! \, }1 \; Tgroup by dept_id; X8 K. v  c& ]/ e% ?2 n7 N0 X8 @; G
8 g  }1 B0 S4 E" v8 T  Z

) |4 C4 q7 L. B/ S3 v; n# k0 x
2 I. |, `9 ]! B6 F2 j/ g- N--MAX
0 T' S  l2 T0 T2 ?1 l4 ]1 B4 d, i--求工资最高的员工姓名; D" D9 C* u% Z+ ?
use pangu
1 K" {$ @% B. hselect e_name
) n. C3 D; J* p  l( @; b/ p* Gfrom employee5 w0 F! D# |9 C- Z
where e_wage =
& I1 G$ _6 X' @* |5 d3 e- K(select max(e_wage)$ D: m! ]' q# Q1 }( }' w
from employee)( Q4 r2 u1 q/ D2 ^, H8 C
8 B6 a( M$ `; P: X$ {5 E  b3 g9 Q) J
4 a# c) y0 y6 i; @3 M8 g2 b  v& ^

/ V) k9 t8 [5 _* h--STDEV()
1 T0 R# i# M6 u7 c2 K--STDEV()函数返回表达式中所有数据的标准差
4 n4 m. l) L4 t/ N$ Y6 R! G9 O, _& O8 g9 M5 i- h2 g! j
" O. ]" a4 _& ~1 i6 W$ s$ D2 s
% Y0 f  s+ d: S
--STDEVP()
' O  X5 y2 z% O- G! ]--STDEVP()函数返回总体标准差
1 n5 D% @1 R* Z( z
8 R: {; l1 g/ h0 [
5 c, v! _3 }, X+ S$ S6 d" R3 `
! T/ {8 w7 ]6 ?- R--VAR()
$ y/ h) `( |0 g5 t0 Q3 e; T* e9 K" O' D--VAR()函数返回表达式中所有值的统计变异数
/ U: }9 S) Q  }9 W4 L& |+ p+ {! n( i- ]1 w' Z7 _
* t0 s1 }: u9 H: o! y) I' }. P
7 Z' a3 W" u+ G9 q5 `5 E
--VARP()
$ E1 m0 ~/ H# c) d--VARP()函数返回总体变异数
) \4 e. R0 Q, E" n
9 s$ P0 E" H+ i( R6 a) n, a  N$ H0 |& G6 T/ d0 G; o1 v2 r5 m5 R

+ Z; Q- I( r, M, l----算术函数----$ _7 Q- W0 {; D* x9 h/ q( s5 [

+ k% F" z& U& _8 `2 E
$ v! v3 _! J+ E
1 [" E# ~' y, [3 E6 B0 w. P/ t/***三角函数***/% R0 L  B% ]! K, ?" z
SIN(float_expression) --返回以弧度表示的角的正弦
( K. d* H4 U! ?9 bCOS(float_expression) --返回以弧度表示的角的余弦; y  H. z4 i5 |
TAN(float_expression) --返回以弧度表示的角的正切& H) c. X; y" r
COT(float_expression) --返回以弧度表示的角的余切
. h0 c2 _0 S/ h! Z# k5 w6 l/***反三角函数***/+ i0 W) m0 s5 y  I0 X
ASIN(float_expression) --返回正弦是FLOAT 值的以弧度表示的角
% w; q) Z2 P1 N' ^. fACOS(float_expression) --返回余弦是FLOAT 值的以弧度表示的角$ h* g! p6 N7 T4 r( G& x
ATAN(float_expression) --返回正切是FLOAT 值的以弧度表示的角
7 j" r* e- Y! ^ATAN2(float_expression1,float_expression2) . n! h9 F$ ^  q
--返回正切是float_expression1 /float_expres-sion2的以弧度表示的角
& i! `. h3 A" ?2 z5 }3 R1 rDEGREES(numeric_expression)- e& u" G! R: |3 V) F
--把弧度转换为角度返回与表达式相同的数据类型可为
8 y+ \3 R$ n: v. j--INTEGER/MONEY/REAL/FLOAT 类型
- C6 K" d+ o- nRADIANS(numeric_expression) --把角度转换为弧度返回与表达式相同的数据类型可为3 y( ]1 H' w" M# @& g( w& A
--INTEGER/MONEY/REAL/FLOAT 类型! I, B* V6 m- M# \# h4 ~8 L' N0 O# J7 P& j
EXP(float_expression) --返回表达式的指数值8 e- l  X* M8 k: `
LOG(float_expression) --返回表达式的自然对数值0 i1 R5 _/ i! }" n# s0 q# W. T
LOG10(float_expression)--返回表达式的以10 为底的对数值
- {& {% G/ \" I' O+ D( TSQRT(float_expression) --返回表达式的平方根& t' H* H+ c4 z& s3 ]5 `
/***取近似值函数***/; O& @8 x3 t+ y8 P, q% {7 I
CEILING(numeric_expression) --返回>=表达式的最小整数返回的数据类型与表达式相同可为) ~, v/ }$ R  I% n" S! C
--INTEGER/MONEY/REAL/FLOAT 类型
- ~4 l' b0 k1 Z! h, u' T( @FLOOR(numeric_expression) --返回<=表达式的最小整数返回的数据类型与表达式相同可为' F* \4 g: S* G2 t) t
--INTEGER/MONEY/REAL/FLOAT 类型+ Z/ D/ v7 J; T
ROUND(numeric_expression) --返回以integer_expression 为精度的四舍五入值返回的数据
) l! j% q4 R8 f, ?5 Q--类型与表达式相同可为INTEGER/MONEY/REAL/FLOAT 类型
0 b" R" V: w+ n$ r& n* m* XABS(numeric_expression) --返回表达式的绝对值返回的数据类型与表达式相同可为
# Z0 l' p/ m6 z% z--INTEGER/MONEY/REAL/FLOAT 类型& b. Z1 m' C' [
SIGN(numeric_expression) --测试参数的正负号返回0 零值1 正数或-1 负数返回的数据类型
" Q- a8 ^- i1 ^. B--与表达式相同可为INTEGER/MONEY/REAL/FLOAT 类型) g8 c4 p! Q9 J
PI() --返回值为π 即3.1415926535897936
6 r0 ^& y+ j: K$ k) W5 e" H9 CRAND([integer_expression]) --用任选的[integer_expression]做种子值得出0-1 间的随机浮点数1 b% B  H% H. u$ X/ i

3 B+ g9 L  e( o% |2 ?3 [" S0 {  D- O- L# J4 e8 k8 a

& {1 f( @* [* J4 _$ @' d9 y$ w
+ i: k. O6 I: R8 @' k& H6 z----字符串函数----, i3 K5 t& ~; w
ASCII() --函数返回字符表达式最左端字符的ASCII 码值! y+ M( b4 ~8 x  E- R0 b
CHAR() --函数用于将ASCII 码转换为字符# U4 q! O+ s) `
--如果没有输入0 ~ 255 之间的ASCII 码值CHAR 函数会返回一个NULL 值8 Q' ^; `, \/ |- g# _
LOWER() --函数把字符串全部转换为小写, B& j7 j2 m7 S, r6 F" o7 u
UPPER() --函数把字符串全部转换为大写
, p" B1 T) ^6 j. g- v/ ^# CSTR() --函数把数值型数据转换为字符型数据- ~* p2 @% ^2 N0 w, K0 e
LTRIM() --函数把字符串头部的空格去掉! Q# a$ H$ r7 X1 e4 S
RTRIM() --函数把字符串尾部的空格去掉
' d/ K( R/ x$ s. CLEFT(),RIGHT(),SUBSTRING() --函数返回部分字符串+ a( V0 D9 H8 J8 H
CHARINDEX(),PATINDEX() --函数返回字符串中某个指定的子串出现的开始位置
( G& |7 }+ s: l9 Z8 }SOUNDEX() --函数返回一个四位字符码
4 ^  h" }! k: D--SOUNDEX函数可用来查找声音相似的字符串但SOUNDEX函数对数字和汉字均只返回0 值
4 i) s: l4 f) Q0 o$ ^* ADIFFERENCE() --函数返回由SOUNDEX 函数返回的两个字符表达式的值的差异. n% q; C- R2 U7 K! q
--0 两个SOUNDEX 函数返回值的第一个字符不同
# L, Z! I6 c+ ~) R+ O, a  K) c--1 两个SOUNDEX 函数返回值的第一个字符相同- A; J; ~/ ?6 `6 I$ y% @
--2 两个SOUNDEX 函数返回值的第一二个字符相同
/ H2 H6 F# b9 `& D* r( n--3 两个SOUNDEX 函数返回值的第一二三个字符相同
; ]4 G& C, A! Q- S--4 两个SOUNDEX 函数返回值完全相同
9 l5 Y' V  o! w0 L- m: r: ^
' d9 r) g* X; ~" ?- D
% `, v: w" P. W. x% T9 O# O7 }+ s; ^; w/ A3 ]4 |. E

6 I2 T+ k- T, yQUOTENAME() --函数返回被特定字符括起来的字符串
7 k9 H% z, ?5 u  f6 R$ B5 n/*select quotename('abc', '{') quotename('abc')& O6 W; m6 e7 z) X* Q
运行结果如下$ l$ f1 @- u2 y1 p
----------------------------------{
  j  I4 t4 s3 w6 A5 |{abc} [abc]*/
& e2 B( L- q) I% ^* z2 F( G3 m* c8 `' Q( P

' Y, ~3 t% |7 @" n1 Y, G* i0 k3 _' b: D2 w# I, A2 q
REPLICATE() --函数返回一个重复character_expression 指定次数的字符串
+ u. {8 }. U6 E+ x- e; M% g& [/*select replicate('abc', 3) replicate( 'abc', -2)8 D5 Q9 G5 M/ q8 b. F0 b
运行结果如下9 d1 p, d4 }3 Y6 e) M
----------- -----------
; k" E) t7 _+ H& z2 Habcabcabc NULL*/
, C+ l7 _2 _- h( E' F8 s
9 ]' O* z4 b$ \- h3 j2 E; |9 ^" X- ^* z6 G

4 l4 Z3 k4 m6 a* m$ ]REVERSE() --函数将指定的字符串的字符排列顺序颠倒
) X" N* @, N0 z4 \1 `/ `REPLACE() --函数返回被替换了指定子串的字符串
0 n) ?! _4 `% {4 }( H# T/*select replace('abc123g', '123', 'def')% {9 w& L9 d" Y
运行结果如下
/ v( a! q: U. ^" J, D0 N) b----------- -----------
# p* B! J7 B( P: G$ Iabcdefg*/: W( n$ F9 W- D; i* U

" }; O* a8 z) Q+ M) S% j1 {2 ^7 w

* P$ L1 ~. e; _! i  W3 OSPACE() --函数返回一个有指定长度的空白字符串/ ~7 z% d) `# S- M2 ?
STUFF() --函数用另一子串替换字符串指定位置长度的子串
: [+ z5 N8 d) b1 H5 @0 B8 b' R
5 g# ?& u( b- C. h/ X3 L2 @* c# w& I) T
+ G& U* J4 q# b
& P1 ?* P9 E* }* p
----数据类型转换函数----
" F9 c, P2 Y( M; XCAST() 函数语法如下
8 h. I" Z! b2 m2 e- L: vCAST() (<expression> AS <data_ type>[ length ])
0 ]8 P7 M3 i, |) T' G* @CONVERT() 函数语法如下5 v8 N% {" N" G! p5 r
CONVERT() (<data_ type>[ length ], <expression> [, style])
0 v; m$ o" F8 w& t/ \
% U: `1 G6 J/ X  m* O) {8 b  X
9 m$ w9 R, b# b. o8 l. J* o; }
$ T/ K( m. Q/ b/ D, q5 g3 y& Mselect cast(100+99 as char) convert(varchar(12), getdate())
/ Y3 g/ R4 {5 R% f运行结果如下
* G3 a: q! X/ K------------------------------ ------------: y8 i# h& [: Q6 C, K
199 Jan 15 2000
! e) H& k( u2 N+ O
6 t2 A0 c2 d4 O. ~3 J6 \7 n( J+ _' }' F# S( |1 Q
( [6 p$ I: R3 K3 z6 m& q
----日期函数----. z0 B' q- b7 w6 \
DAY() --函数返回date_expression 中的日期值5 f( u. J- ~  m( X
MONTH() --函数返回date_expression 中的月份值
7 \5 A7 S; R9 C6 R3 |3 ZYEAR() --函数返回date_expression 中的年份值- n2 S9 Q" r0 X/ R* o6 H: p
DATEADD(<datepart> ,<number> ,<date>) : E- h# B* l1 V* ]
--函数返回指定日期date 加上指定的额外日期间隔number 产生的新日期' U8 B( `5 ^& Z" D* P1 f
DATEDIFF(<datepart> ,<number> ,<date>)
# ~4 D1 v3 o: z  p& v$ f--函数返回两个指定日期在datepart 方面的不同之处
3 o0 W( V$ ]# j  ?1 P0 ODATENAME(<datepart> , <date>) --函数以字符串的形式返回日期的指定部分' j! R: Q( I" c! C* F' G* T6 e
DATEPART(<datepart> , <date>) --函数以整数值的形式返回日期的指定部分
& C# ~( z8 L0 `7 ]1 B1 s2 fGETDATE() --函数以DATETIME 的缺省格式返回系统当前的日期和时间
; J5 w' q/ |. f! T1 ]2 T+ o7 G1 J+ D8 N
2 c2 E& b6 K  t6 j: V6 @# v' e
+ v( x% x1 o% @5 C: q
----系统函数----, J! K4 U/ ?0 Q6 V
APP_NAME() --函数返回当前执行的应用程序的名称
$ b$ g4 a% j9 J+ FCOALESCE() --函数返回众多表达式中第一个非NULL 表达式的值
# B' J3 @  i- p" E, f% XCOL_LENGTH(<'table_name'>, <'column_name'>) --函数返回表中指定字段的长度值
9 k9 w+ w0 G' h) @( cCOL_NAME(<table_id>, <column_id>) --函数返回表中指定字段的名称即列名2 V7 e2 h3 X! X. M# u: O2 E3 B& A
DATALENGTH() --函数返回数据表达式的数据的实际长度6 `5 l; P+ h3 ^: `  J
DB_ID(['database_name']) --函数返回数据库的编号$ v% g+ P# d8 Z% f; h, I( s- J; {
DB_NAME(database_id) --函数返回数据库的名称6 t4 `% l8 l1 ~6 \/ e. W
HOST_ID() --函数返回服务器端计算机的名称
! b8 @1 F; G2 LHOST_NAME() --函数返回服务器端计算机的名称
/ X- a* M+ }7 aIDENTITY(<data_type>[, seed increment]) [AS column_name])
5 q$ t0 g7 X: \! q--IDENTITY() 函数只在SELECT INTO 语句中使用用于插入一个identity column列到新表中
% t8 a, O  T% |" f2 ^/ A/*select identity(int, 1, 1) as column_name0 H! }! S: f  M
into newtable0 F" k$ C/ l( ^; i6 V, I+ T
from oldtable*/
% m  d- w( a: fISDATE() --函数判断所给定的表达式是否为合理日期9 v! H6 Q* E% C9 G7 O2 y. \
ISNULL(<check_expression>, <replacement_value>) --函数将表达式中的NULL 值用指定值替换- R' S. P. Q: j" Z0 [
ISNUMERIC() --函数判断所给定的表达式是否为合理的数值
3 m+ D( \% A* w3 VNEWID() --函数返回一个UNIQUEIDENTIFIER 类型的数值
, J) [" B3 k% S% ANULLIF(<expression1>, <expression2>)7 O% o8 w9 _9 l6 z- L& f8 {6 f
--NULLIF 函数在expression1 与expression2 相等时返回NULL 值若不相等时则返回expression1 的值4 a! l2 p5 R7 d3 m1 E  Q
) u) A+ a1 l4 E% h% P% e6 l: M3 r

/ j5 v# K" ?: _& Y- d# V
" Q) i+ [) @% u( |' S3 O7 a) T- y( M
0 r! s( H. t# _* W6 S$ |+ |; j
: g" k: E" D* q% w

: {& ?* T, c. J( H9 U" V3 ^sql中的保留字7 e" y* E4 Q' z

+ O0 }7 t5 q9 h% G' i! g9 U6 A6 f( X9 G. z

# ?- D1 t" d/ M( Faction add aggregate all 8 V/ c' Z' a& x6 b5 r4 B. j7 i
alter after and as   C2 R* e0 i' X# U9 W
asc avg avg_row_length auto_increment # c+ S# T3 A0 e
between bigint bit binary
0 k/ Z% w+ q/ H6 Qblob bool both by 1 |, g/ c0 I2 B8 @/ [0 ?1 `
cascade case char character
; e' a$ r6 ]- I8 v4 \* Ichange check checksum column
0 k& B/ Z! C' c$ ucolumns comment constraint create ( H3 p9 J1 F/ ^
cross current_date current_time current_timestamp % u; K6 q0 H8 s( b# Y
data database databases date
* |2 l1 |& D: P, i+ }' |! Ndatetime day day_hour day_minute
, z/ u6 _  z9 Y; dday_second dayofmonth dayofweek dayofyear
7 V0 z' k% ?9 w9 s% v- Tdec decimal default delayed ! z9 Y9 s) F% _, v$ [) r
delay_key_write delete desc describe
3 [8 T' t& X- T6 X& E+ }% Gdistinct distinctrow double drop ( e, M! D* E+ f, R" [1 [4 E
end else escape escaped 3 i0 g: W( ?/ K) w
enclosed enum explain exists
; Q$ ^: i! Q$ u- sfields file first float
! D- I; x- S2 y+ N, q4 l1 Afloat4 float8 flush foreign
% z, H7 Y. s  y2 g+ Q5 v9 O$ gfrom for full function
8 w, L7 j3 Z) O4 ~' q) cglobal grant grants group
  B" t3 C- D/ m9 H4 p1 Yhaving heap high_priority hour : a: k4 J& h, N( A
hour_minute hour_second hosts identified 3 w; j, I9 S* x4 L5 |# \+ J& V% N
ignore in index infile
2 `; c2 z6 i4 ]inner insert insert_id int - H5 k  c) A9 C( z* h
integer interval int1 int2
7 V# A- H5 G! \! |; i$ x$ G0 Iint3 int4 int8 into
. c+ i- ?: a* Y% _- F: K* Tif is isam join / i# n' X$ A* \9 f3 o4 [/ @( F
key keys kill last_insert_id & }% T( d& ~: W" m! w# Y
leading left length like
; F0 a1 D6 |# i, I! Olines limit load local ; @8 L6 w: T, v1 i, s, u
lock logs long longblob % m5 A) [* [. M' O$ y' O9 s
longtext low_priority max max_rows
' ~0 w* _: ~  L0 L4 Zmatch mediumblob mediumtext mediumint / D/ t  y1 h1 I6 h; r7 g4 z" A
middleint min_rows minute minute_second
0 l. p) P5 ]9 g/ r6 A2 s3 p3 ^modify month monthname myisam - M. W/ y; M+ z# z& ^# ~$ r
natural numeric no not 3 G# N2 O6 X9 W' v) z, [0 E
null on optimize option 4 _5 d7 W2 C0 r% x8 v5 ?
optionally or order outer 6 f. j% i$ T( @; X3 g8 b) H  Q' ~
outfile pack_keys partial password
  I- P4 J5 }& _precision primary procedure process
+ h0 r6 \& Z2 eprocesslist privileges read real ( y3 T5 B9 ]9 X0 y. m% F$ q
references reload regexp rename
. W0 r4 K4 X& a0 creplace restrict returns revoke
2 E. J- q, N6 D9 T/ J& crlike row rows second
) `* T/ P; B6 K, cselect set show shutdown & l- x* H, e# q. [4 V6 }  C
smallint soname sql_big_tables sql_big_selects
( S. C% [$ ~# `4 e! y. x6 o' bsql_low_priority_updates sql_log_off sql_log_update sql_select_limit 5 ]4 H+ N, G4 O* _/ F$ _
sql_small_result sql_big_result sql_warnings straight_join
+ p- Q) `( w1 l- hstarting status string table * P+ u+ s3 ~9 z
tables temporary terminated text
. W+ `3 p6 v" w9 C  ?8 j% @$ u5 mthen time timestamp tinyblob
; v% `8 r! }* n  d3 F- u* U; n* _tinytext tinyint trailing to ' ~, @4 ]4 Z/ C& Z. t6 k7 J
type use using unique
( n6 A+ ~, I; F+ K+ l' Aunlock unsigned update usage + ]- B9 p7 e' ^; `- _$ m
values varchar variables varying . N: t. ?3 s2 K) Y! i
varbinary with write when
2 Y7 Q, H/ g1 Q' h0 U) W1 ewhere year year_month zerofill