SQL语句集锦

SQL语句集锦

--语 句                                功 能 / N9 ^! o; D4 e3 b( Q7 X
--数据操作 * [* G% T% f5 T
SELECT      --从数据库表中检索数据行和列 ( q' N. e" W& ^3 i# E6 {
INSERT      --向数据库表添加新数据行 6 D5 `6 Y6 o* R& {
DELETE      --从数据库表中删除数据行
9 m6 u. M3 l0 ]2 |0 n6 o& ~% sUPDATE      --更新数据库表中的数据
$ T% A$ j& M6 N: H5 l# c; W7 S. G7 p--数据定义
. u# F1 |8 l+ V( S5 v: f7 C5 QCREATE TABLE    --创建一个数据库表 3 u  V9 N1 w, J
DROP TABLE     --从数据库中删除表 & z/ E: a, I9 }$ g' u0 `
ALTER TABLE     --修改数据库表结构
. /3 w3 H4 ~  k) J4 j+ X7 u/ eCREATE VIEW     --创建一个视图
# w9 V" }- Z$ N* U5 @% n2 EDROP VIEW     --从数据库中删除视图
: r; h2 B% r' o# }CREATE INDEX    --为数据库表创建一个索引 7 ?! A$ E7 }/ g9 /# T, B) o) t! L
DROP INDEX     --从数据库中删除索引
; T" Z. N( b/ ECREATE PROCEDURE   --创建一个存储过程
) T; h: L" b+ ]( UDROP PROCEDURE    --从数据库中删除存储过程
) Z+ }8 I: V4 V9 m! l7 N- e: o. WCREATE TRIGGER    --创建一个触发器 : f  p% s. H. E) K
DROP TRIGGER    --从数据库中删除触发器   ?* k0 ~2 z8 K6 E9 Y- Q. i) A
CREATE SCHEMA    --向数据库添加一个新模式 8 `' {- O% Q. Q9 ^# z& M) l! O# O
DROP SCHEMA     --从数据库中删除一个模式 7 L0 v- V1 c1 o; o# R
CREATE DOMAIN    --创建一个数据值域
9 G- S* /- Q1 p) _, jALTER DOMAIN    --改变域定义
: i- N, h$ O, sDROP DOMAIN     --从数据库中删除一个域 # V( J4 w/ g  y7 p$ Q, N# @
--数据控制
/ b7 Q. Y; ~' u( z' x) y; _GRANT      --授予用户访问权限 3 ?! d7 A+ ?5 `$ ]1 Z( x
DENY      --拒绝用户访问 6 I1 D6 C1 P, x1 Y
REVOKE      --解除用户访问权限
- w8 M- ]6 Q4 k' L* t) ]--事务控制
: [2 s1 B! E' f& ]" ]# `: B# V+ b2 sCOMMIT      --结束当前事务 ! v) p9 ]$ c% c8 [: c; F0 J0 w
ROLLBACK     --中止当前事务 + U7 G5 L( v  x/ m
SET TRANSACTION    --定义当前事务数据访问特征 % i/ F9 x/ M2 E5 s
--程序化SQL - e6 e5 a& j9 V( g& F- M
DECLARE      --为查询设定游标
* _0 ^2 N; I- K% ~: AEXPLAN      --为查询描述数据访问计划 ' x6 }/ g2 g5 G0 K) ^% ~( H3 /' _9 l
OPEN      --检索查询结果打开一个游标 5 S6 d8 p( a3 K% ~2 /# p) G" G0 m- J
FETCH      --检索一行查询结果 . Z. |: N0 T# y/ x& ?! x9 z( P
CLOSE      --关闭游标 - k) L6 v: e$ r
PREPARE      --为动态执行准备SQL 语句
9 [7 L9 ~- f" ~. tEXECUTE      --动态地执行SQL 语句 ; r( S; y. A& Z8 x/ ]" N
DESCRIBE     --描述准备好的查询
" |+ w' U2 M& ^1 Y9 Q* h 0 E" `3 O: w3 h3 {) G8 K

( {2 p9 t+ /% L2 e7 ?* h
% Y. V. O" Y* B
* K6 t! y: x* n2 e* E4 G7 O---局部变量
6 Y0 m& `6 W  pdeclare @id char(10) , A5 U+ v8 M0 l/ l. x6 [
--set @id = '10010001'
2 J0 A/ g, K6 z# I! o7 ^1 G7 Qselect @id = '10010001' 4 ~; i6 B1 |, s) r* X
* b4 T; R* [  ?9 ^3 L+ s
8 J0 Z+ b% h5 W7 D9 B

0 K. w: r  R/ /( ]! ~( z/ G& U9 A
* {, r* j. c4 K+ Y0 G7 f! N---全局变量
& G( S5 /" t  o/ R( R! K* a+ L2 U---必须以@@开头
5 n7 a$ J0 /9 C2 `0 Q0 F, D$ [
+ l9 T" V. L( X, n
  ?0 M* X4 I$ @: m  S # H  s. U" z5 J
( j* i" [% O  U% S  K
--IF ELSE - U  A, Y2 _! l* u# x
declare @x int @y int @z int
$ d! M: A! X% k9 _5 ?; Uselect @x = 1 @y = 2 @z=3
2 ~4 w! Z! G' r6 wif @x > @y
% /" a. P( /* n  W+ F" Yprint 'x > y' --打印字符串'x > y' ! Y& q' X' N" m; ^: |, o
else if @y > @z
% p4 ?9 l2 J0 ~) E6 T$ m; h7 uprint 'y > z'
2 y4 j2 }" }, U  D& M1 @# B9 ]else print 'z > y' * w9 p, h# L% [+ N5 M

! _7 {6 V8 E' _$ D 8 w, d9 ^0 I, l3 }0 |

" q& E1 U% g& N) H# Y8 o
" h; /& T; T7 f/ H--CASE
+ i9 X5 Y5 z5 t4 |" luse pangu
% n6 A( |9 q  uupdate employee 3 k  C8 P2 h& s& r8 ?+ H- x5 _
set e_wage =
- d5 F  V2 B1 y  Zcase 4 X( ]5 h0 ^. e* W
  when job_level = ’1’ then e_wage*1.08
( _6 @8 V) n. q% T  when job_level = ’2’ then e_wage*1.07
% [+ i2 j* h$ G5 ^8 O9 R1 J. ?" @/ N! F  when job_level = ’3’ then e_wage*1.06 " d+ n  P7 r6 N0 m5 p) J+ C
  else e_wage*1.05
# v6 b2 C' _% l2 I# m! p( K' Tend 6 `8 |- ?6 w' u
8 d2 H1 v0 p& o

. t/ s" y) r' S  b& @' k, X9 E - g: e) I3 w* @; Z

1 r' V" {* M3 W, l9 /2 V; a  ?$ B4 j--WHILE CONTINUE BREAK
, x4 j8 h" F$ K  l) s  O3 H- Ldeclare @x int @y int @c int 9 U' q+ {, U( ]# a' V$ k/ t1 C
select @x = 1 @y=1 6 d  S: b1 }; I4 i) n
while @x < 3
/ w0 p) N$ G2 a) Z5 Sbegin
  L+ S: t& g0 P7 L   print @x --打印变量x 的值
) N  [8 s2 Y5 y* I8 i3 T( N  while @y < 3 7 r. R$ N0 r2 Z
   begin
5 y9 @6 O9 R# a3 W( q! L    select @c = 100*@x + @y
( E0 i& _; b/ z    print @c --打印变量c 的值 % [) s4 /1 t! @& F8 b0 h2 L
    select @y = @y + 1 9 F; L2 y. S: `+ u4 ?( a
   end
- t: q7 [, J/ [3 [( P( Q% @+ U$ o  p  select @x = @x + 1
/ Y7 a" @. n1 ?' /! H& m+ u4 z  Q  select @y = 1 + {% d! }7 j7 S
end
7 E) x: T: y) [6 E$ _
: /8 n% [9 A! U9 O
4 l$ A" s# R" j. `
6 d0 z' n% k  e* f/ S0 G
! Y) s; r: q7 D/ {' R--WAITFOR
! I+ j! Z7 F* |' V. Q( O3 b) I--例 等待1 小时2 分零3 秒后才执行SELECT 语句
7 ~6 i: G5 D* H/ F/ Zwaitfor delay ’01:02:03’ 4 b: a) [; }8 w- Q. s7 ~
select * from employee 4 ~- D( S7 }0 @, h
--例 等到晚上11 点零8 分后才执行SELECT 语句   o- O+ ~2 N2 |8 /+ K# N1 W
waitfor time ’23:08:00’
+ Y% G8 y% U" zselect * from employee
3 V- h4 j( Z2 d 7 L, q! H: u) D* h
' V8 h& k& I8 I' Z8 D
% T5 ^9 p6 K. i3 l4 c

2 e6 ?0 e6 ?) O- /( S( c***SELECT*** . U' v3 x. W% d$ R+ H. n! u
* M5 Q- v( V+ k  R9 P! c
  k6 g4 u0 X$ b' ~* C; C; I
- z$ u2 [0 {7 p  s8 {
/ Q# `( _7 o. j# E  v. f
   select *(列名) from table_name(表名) where column_name operator value
' d. o' H3 x0 Y: z5 R+ i" s. b   ex 宿主) 3 ]: Z: G7 i3 p+ J0 _
  select * from stock_information where stockid   = str(nid) " {5 M; s" t. K9 {) F" T4 x1 u
     stockname = 'str_name' 0 n  j  c4 _+ Z2 B
     stockname like '% find this %'
/ `0 C) w0 l0 s; s/ I     stockname like '[a-zA-Z]%' --------- ([]指定值的范围) % ]* g5 v2 o8 M
     stockname like '[^F-M]%'   --------- (^排除指定范围)
. i' r  D) Q! G' b8 c4 ]     --------- 只能在使用like关键字的where子句中使用通配符) - |& a- H) b2 f( J( j
     or stockpath = 'stock_path' - f3 J1 k  G/ E) s6 H! ~3 X0 l
     or stocknumber < 1000 * D) A+ J6 M4 }" e" Z% ~1 A4 O& z
     and stockindex = 24 6 Z. S/ i, z8 z$ e# X7 S+ F. i
     not stock*** = 'man'
& R3 I" d, G7 t5 z$ b! S     stocknumber between 20 and 100
& ?1 z5 p3 ]  C     stocknumber in(10,20,30)
/ r$ I2 H9 P- b$ r     order by stockid desc(asc) --------- 排序,desc-降序,asc-升序 6 Q3 X6 ?( s0 _# R3 N& R" J( t4 k# R! i. c
     order by 1,2 --------- by列号 ! w3 ~" i4 U  _8 E
     stockname = (select stockname from stock_information  where stockid  = 4) % a* N2 |9 `( g' X# _  V
     --------- 子查询 0 |% C, `* L7 T  l* P
     --------- 除非能确保内层select只返回一个行的值, & N8 m7 U4 F- G" H
     --------- 否则应在外层where子句中用一个in限定符
1 E  T; j3 t* f0 _3 V  select distinct column_name form table_name --------- distinct指定检索独有的列值,不重复
" ~$ `+ Q. T7 C' Q! f  select stocknumber ,"stocknumber + 10" = stocknumber + 10 from table_name 0 _" Y+ n( h$ {7 W
  select stockname , "stocknumber" = count(*) from table_name group by stockname
/ E  [9 V8 S" ^% /* H, H* s9 p                                      --------- group by 将表按行分组,指定列中有相同的值
8 `2 h! V* s$ @2 X' u1 J          having count(*) = 2  ---------  having选定指定的组
5 v- |" _3 r4 {: n1 @         4 d9 W: |5 a- O( N$ y
  select * " F2 v% |% W$ N4 x0 K$ p& e0 C
  from table1, table2                   / Q  c8 {& ~3 N3 y: e2 Y
  where table1.id *= table2.id -------- 左外部连接,table1中有的而table2中没有得以null表示
8 I6 Y+ U2 D" C) [* R     table1.id =* table2.id -------- 右外部连接 ! }2 D7 q2 Z: d1 B5 L$ T

! g( O( G: q9 O) O3 w
# X/ m5 [/ C) Y+ g
7 L0 q" b% ^) d8 e
2 L9 }% D) n. T: ^4 _  l2 V( w  select stockname from table1 ( i2 [  R# A/ b2 R3 Q
  union [all]  -----  union合并查询结果集,all-保留重复行
4 F( Z% `" a$ Z) w; g  select stockname from table2 5 j# I/ D2 r7 l0 c/ Q

/ a; G' x" x1 v; N) k7 o
1 p% p" A; ~# l/ L8 l 6 u. ]% M) s2 s0 /
0 i5 U0 v" A+ s: N9 L
***insert*** + o4 ]5 B- A+ `5 h8 T/ G

( P/ V4 V% ?! x+ Z3 {7 h4 r
( ^4 `; f& P8 r* _
/ |7 K8 w, ~2 u  q5 b1 S, y
# Y& z4 k- V# `3 A6 r  insert into table_name (Stock_name,Stock_number) value ("xxx","xxxx") ) W, o8 e) i; `% `3 D
              value (select Stockname , Stocknumber from Stock_table2)---value为select语句
( M% Q" l* v2 W 1 C1 X' K. O$ f* A) I6 a% ]

9 Q2 W" ]" }* B% G, e& ?2 K + K3 F# e* _$ {6 }/ k3 H/ ]! Y" z3 j
; c# x0 A' z4 O* Y8 @; l- c* t
***update***
, g. V) z. p* q4 ^ / B. k, Y  M. b# O" q& P
$ r1 e4 B% X( i0 L' |% _
! {, t2 H3 U# l& m7 p

, m( e  D9 /; l& Q  update table_name set Stockname = "xxx" [where Stockid = 3]
: @# j  E- n* a: D7 i  |1 E8 |" C         Stockname = default
- B! U  O% G$ T& B4 u: X, T# u% G         Stockname = null
9 m) N3 T! J9 C         Stocknumber = Stockname + 4 ) I/ l3 a3 T4 ]; N9 k

" r# z/ ^: k. f7 L4 o  f/ P
6 _1 f2 u# g% R- v
2 ^' q0 q* O* S$ t  R : t$ _" ^& y1 L/ d  ~; s$ u
***delete*** ! t* a; L' {3 d% ~& /( y4 l

1 H3 V& L% q( P ) P3 x5 I8 A# m+ Y! C: g
: N* l0 j) Q) _2 A' w( h! B7 G+ C7 X
; R* n9 W* v' j* t$ f+ o& @. Z
  delete from table_name where Stockid = 3 ) w: _$ J, v+ V" }$ p
  truncate table_name ----------- 删除表中所有行,仍保持表的完整性 & ~3 G. s' I* x' |. J9 O$ C
  drop table table_name --------------- 完全删除表
+ m9 r' N& B; R/ p& m# O: A; u
/ L- |9 ~( x2 v
4 K3 s, z; _( |* d, g, c0 C+ w 3 M( C4 ~+ t( o0 G

! c% S! p" P! u" z4 L4 ^  h2 N; ~***alter table*** --- 修改数据库表结构 6 ?0 C- Y- E+ {6 A

; I4 p2 b7 P0 b/ i6 M  n+ d
' v; z! M+ U/ F6 R6 V/ O( m1 `4 z; u
6 i* Z/ L: M" M  z
: L( B0 [6 |* `  ?$ _8 j  alter table database.owner.table_name add column_name char(2) null ..... 2 h. P4 x7 C; Z' h% V% ?
  sp_help table_name ---- 显示表已有特征
# n0 i5 r5 v& Z0 I. R8 d) M$ L  create table table_name (name char(20), age smallint, lname varchar(30)) $ Y9 |3 h1 m( |
  insert into table_name select ......... ----- 实现删除列的方法(创建新表) ) g. K2 L3 {5 i
  alter table table_name drop constraint Stockname_default ---- 删除Stockname的default约束 0 s- ]& [4 ^. ^4 J
   
+ k5 ]6 h+ |' V5 v% U2 E5 X  ^% H***function(/*常用函数*/)*** ! |9 r7 Q% K9 N1 X+ r8 K: x
% /$ O- D5 r1 E% V2 c: |/ P
  t3 F  a4 s5 p4 _( F0 X: K) ^

& _8 // m8 k+ ~5 [1 h
% T4 h9 ]! |) }6 u9 S. u----统计函数----
( s5 L+ |' C8 K0 y0 a4 fAVG    --求平均值 ; D8 f: h* @5 D  R
COUNT   --统计数目
. C4 {2 k$ }, _  X5 _MAX    --求最大值
0 h+ O7 x7 w0 I% ]$ }6 ~* ]4 n7 t' /MIN    --求最小值
$ y/ t4 q& W/ n1 t% j! TSUM    --求和 , S% G$ W; W9 c' g. N+ I
" a/ c( J9 @: ?8 K. a$ _  O+ O4 P

, k5 |: {  g+ c' a* ~ 1 c7 ^) Y& o6 F% O$ T. @1 v

1 w, F) n( k* Z8 b( @. c--AVG ! O3 p2 z0 Z) @1 n
use pangu
" l; _4 y0 W3 n4 `- E) _) aselect avg(e_wage) as dept_avgWage 3 Y& M6 @; y7 y8 G! z
from employee + f* i4 v: V$ [, x+ A
group by dept_id
" l- y$ G$ {& c9 H9 Y' B$ G3 j ( ~4 [" E" }' /5 q
+ /1 f+ Y. {7 h
) S  u! U. ~" `7 s! k8 p/ j! _
* }1 {$ I+ C9 p& @. A2 |
--MAX - l* B" {' i/ {3 M
--求工资最高的员工姓名
; @% c  b; M6 |' ^# S2 q: l' q$ X8 Duse pangu
" N0 ?7 B1 Z9 t  nselect e_name
( F+ a) T" p5 x8 M: k7 Ffrom employee $ }" w: j2 m# ]$ ?- a
where e_wage =
6 n5 r1 F/ {% C% o4 W6 x7 G" J(select max(e_wage) 2 ?. j! h% _8 r' X( P
  from employee) # k# E% k* a7 o  v
9 X- ?  r; b4 w

- o( r2 F0 M' [: B, r 1 X& _  h. X. w. b$ J  ?1 j

4 k$ U' V5 P* ~% {7 s--STDEV() ! Q- o3 I3 u1 m9 j, A
--STDEV()函数返回表达式中所有数据的标准差
1 w  [; _; a: V  t% h 3 {( I0 G. R! M1 Z

* l# _$ n% ]/ m: y/ x$ _+ @2 F0 k
9 p+ L1 |$ P% v# q2 P& p 4 i5 N8 E- i2 @2 d. Z
--STDEVP()
* f, }6 I4 d0 L: d- b3 C--STDEVP()函数返回总体标准差 6 [! n* ~" Y7 m6 f/ D
' I5 J$ w( c" M+ ?9 b
) L- w; i% /: `

2 l7 h+ c, Z- R6 q7 j
4 [+ L9 U  w5 c. w- _--VAR() ; s4 [' {( {# S) f2 }# S, `) ~
--VAR()函数返回表达式中所有值的统计变异数
4 E+ {6 /% {% c$ q3 Q4 a7 ~
: e/ e0 C4 ]# u0 O0 q% c6 r- C 4 K% }0 l2 i$ Q, `

' k/ S, ?3 f- Q  f" v 8 B! r$ T& m( F/ D, ~
--VARP()
) d2 n6 y; B) f* h: ?: W--VARP()函数返回总体变异数 9 D) ]2 `' ~: h8 G1 J$ g2 q
, j$ S: d& u; O9 /$ w: w

8 s* S9 [: M  L- O. S) c , H4 B% }' x* `9 Y) G) M- N+ Q: d
; Z- j9 O9 h4 c
----算术函数----
5 ~! F, h: Z& v7 b- K0 D1 I 3 M- `: D# Y. I9 e2 H$ v7 w  H, T

" H+ s$ G4 E9 _+ [ ' l+ r* o& _8 [3 d, l2 J9 s* r2 m

8 C% a- q' ], B, P8 ~: e+ c/***三角函数***/
0 |' L8 /$ U9 SSIN(float_expression) --返回以弧度表示的角的正弦
( T& X9 N8 l4 f/ j9 R' JCOS(float_expression) --返回以弧度表示的角的余弦 4 G8 E0 ]) v5 M. p
TAN(float_expression) --返回以弧度表示的角的正切 6 W6 b! /9 I1 [: c4 T- z1 |
COT(float_expression) --返回以弧度表示的角的余切 - C( J2 v+ o' p5 Q5 v
/***反三角函数***/
! Z+ h- X" K  C; UASIN(float_expression) --返回正弦是FLOAT 值的以弧度表示的角
$ y: K0 V7 k. n5 GACOS(float_expression) --返回余弦是FLOAT 值的以弧度表示的角
; m$ J/ `/ r- f8 s4 B/ oATAN(float_expression) --返回正切是FLOAT 值的以弧度表示的角
; s6 e+ B5 y* I/ e2 z) KATAN2(float_expression1,float_expression2) 7 e# n$ a$ ?! g6 H+ ]8 @/ O% o2 K) W& W
        --返回正切是float_expression1 /float_expres-sion2的以弧度表示的角
6 l& ]# P! e( L6 e' qDEGREES(numeric_expression)
2 v) /* v" ~) I5 f# D- H                       --把弧度转换为角度返回与表达式相同的数据类型可为 8 a) /: c6 H" ^' N& G0 R
        --INTEGER/MONEY/REAL/FLOAT 类型
+ _0 |, S" x0 Z% ]' ^/ x$ cRADIANS(numeric_expression) --把角度转换为弧度返回与表达式相同的数据类型可为
; H6 |! i. P5 A: H        --INTEGER/MONEY/REAL/FLOAT 类型 ( o/ I) ^1 M, B0 t9 s6 z- h
EXP(float_expression)  --返回表达式的指数值
; o, m7 d6 o5 A  _& [LOG(float_expression)  --返回表达式的自然对数值 5 {+ j2 Z. r  Z' c0 }/ ]1 K2 {
LOG10(float_expression)--返回表达式的以10 为底的对数值
7 [. {5 e, P% p) R7 e9 {SQRT(float_expression) --返回表达式的平方根 ) W+ C" y% A" y# ~
/***取近似值函数***/
7 k1 l% U/ S" c: O: y9 D0 Q% fCEILING(numeric_expression)  --返回>=表达式的最小整数返回的数据类型与表达式相同可为
2 {, M; @5 ^/ x& Y& V+ P        --INTEGER/MONEY/REAL/FLOAT 类型 ! o1 o# K1 b" A; l* H/ E
FLOOR(numeric_expression)    --返回<=表达式的最小整数返回的数据类型与表达式相同可为
2 e8 R( L0 o+ _- W        --INTEGER/MONEY/REAL/FLOAT 类型
+ `+ v; /5 o! /1 d( SROUND(numeric_expression)    --返回以integer_expression 为精度的四舍五入值返回的数据 ! x5 C. M8 b. [# B; s
        --类型与表达式相同可为INTEGER/MONEY/REAL/FLOAT 类型
0 t% a( z  @( k  f. TABS(numeric_expression)      --返回表达式的绝对值返回的数据类型与表达式相同可为
; Z- l- ]! ~8 s$ s+ [' x. B# m        --INTEGER/MONEY/REAL/FLOAT 类型
) r8 T1 M/ ?. j8 KSIGN(numeric_expression)     --测试参数的正负号返回0 零值1 正数或-1 负数返回的数据类型
& I+ c% K6 i  G# N        --与表达式相同可为INTEGER/MONEY/REAL/FLOAT 类型 8 v; y( W* ]" X% h! X' J
PI()       --返回值为π 即3.1415926535897936 8 B+ x$ B9 /( s3 n; D: X
RAND([integer_expression])   --用任选的[integer_expression]做种子值得出0-1 间的随机浮点数
. u! }7 C" v7 R/ Y$ T8 s2 P 4 I1 c% T6 q8 q3 G3 r: X$ e: M

2 e" O5 g5 q5 W3 J' ? ; v, P/ [# q, W$ Q; O* f8 |

7 `3 ~1 v1 M9 N; n4 T9 L+ /- c: U& I" B 7 A1 [: a* U* J" ?3 d4 ~' y* s# G  S
----字符串函数---- - z3 f6 F3 g0 k  e3 b
ASCII()         --函数返回字符表达式最左端字符的ASCII 码值
& q. f! }2 ?$ `$ E3 a" aCHAR()   --函数用于将ASCII 码转换为字符
" b4 s4 m2 b7 J    --如果没有输入0 ~ 255 之间的ASCII 码值CHAR 函数会返回一个NULL 值
7 u+ H, ]- x+ t6 L3 D6 E; ^" rLOWER()   --函数把字符串全部转换为小写 $ C  E- y- g" a
UPPER()   --函数把字符串全部转换为大写 6 D% C2 h' ^0 I' j) p6 E
STR()   --函数把数值型数据转换为字符型数据
# w! r4 |1 g! O3 YLTRIM()   --函数把字符串头部的空格去掉
1 A1 Y" T& u! `7 E5 fRTRIM()   --函数把字符串尾部的空格去掉
" {- m9 K& s9 P; ~! B* bLEFT(),RIGHT(),SUBSTRING()  --函数返回部分字符串
# @/ ~; R1 O& T; S5 T$ WCHARINDEX(),PATINDEX()  --函数返回字符串中某个指定的子串出现的开始位置 ! o+ }/ d0 J5 |. K: n7 g3 D
SOUNDEX()  --函数返回一个四位字符码 9 D9 i+ X, p* D, z
    --SOUNDEX函数可用来查找声音相似的字符串但SOUNDEX函数对数字和汉字均只返回0 值     
7 N. {, }! {# n! t6 lDIFFERENCE()    --函数返回由SOUNDEX 函数返回的两个字符表达式的值的差异 & `7 @7 ~7 V" N4 J
    --0 两个SOUNDEX 函数返回值的第一个字符不同
9 V8 V) R. P1 R3 N$ k9 r6 ]: g" Y    --1 两个SOUNDEX 函数返回值的第一个字符相同
$ N2 M# L9 C  s+ m" J$ j5 ^7 |: N    --2 两个SOUNDEX 函数返回值的第一二个字符相同
( a7 Y5 H8 K" }    --3 两个SOUNDEX 函数返回值的第一二三个字符相同
; P& V2 ?( ^" ^* v: j7 D9 {    --4 两个SOUNDEX 函数返回值完全相同
5 b% ]$ Q8 n9 L9 T                                       
$ S& U. w! u* F% X/ P- V* M. Q) }6 t
5 [* t, b8 ?* k3 d6 X2 Y 1 |3 L! q" D1 O4 u0 [
" e# U& }8 s1 v9 v7 j
! T+ l; a- }  q7 X! F! R$ m% k
QUOTENAME()  --函数返回被特定字符括起来的字符串 : Y4 e* l% u- }1 `- H- j7 }
/*select quotename('abc', '{') quotename('abc')
/ G0 p) n7 |8 H4 `- m运行结果如下 ; z$ A8 z: L: W! h* }% w
----------------------------------{ & x  m6 |' l8 M4 O1 S1 B) u9 P
{abc} [abc]*/ / f# Q1 |0 V/ q9 q1 d1 d9 h) Y" j
1 m8 m( f, e! Y7 k) s0 [

: R7 B4 }; O& l5 K' v  O, q " j5 B& |4 M, ^' n0 U/ g

; C( K7 j2 G3 `& M7 [) q6 H7 c/ T) ZREPLICATE()     --函数返回一个重复character_expression 指定次数的字符串 , l4 g* }1 w  _8 w
/*select replicate('abc', 3) replicate( 'abc', -2)   `: |* C$ _& N# M
运行结果如下 9 x7 {9 g! V5 E6 q9 M
----------- -----------
8 a% |2 k% _3 E$ z  M; H4 N' Zabcabcabc NULL*/
# ]% E" S! Q- a- Q* f : }. M2 |/ R1 ~$ S, [
! E& F" H- R& e

7 [# h7 h$ c: ]3 ^% o) r 3 o3 [) {4 w9 L4 _+ A3 A4 m- A
REVERSE()       --函数将指定的字符串的字符排列顺序颠倒
; Z3 j/ [& |$ s' S* a% _0 PREPLACE()       --函数返回被替换了指定子串的字符串 ) e8 z1 p' T( X/ @( l! }! x' {
/*select replace('abc123g', '123', 'def')
* z" ^; R# h2 K5 E运行结果如下   J: t8 g- x+ {! X* U; o
----------- -----------
  v& K! Q7 @! U) v& F/ w abcdefg*/ 0 N* ?% m! I; u  ?+ U
  @0 k) U& s( /
6 H% Y+ a8 q( F5 F5 ~
6 X4 H- y; m& u  `/ l

6 J2 _- x+ b0 |: |+ bSPACE()   --函数返回一个有指定长度的空白字符串
; _+ [2 ?* Q- I$ DSTUFF()   --函数用另一子串替换字符串指定位置长度的子串 8 e1 C4 m( i$ ^% /4 O, U

, V: B& F" y4 [4 m0 M6 w
' p" R1 B5 n% Q- p4 }1 n 0 j/ G* ?* ]1 U. |9 x# i

6 T5 O- t( P: c# q6 /
' E- j7 S1 `/ X----数据类型转换函数----
6 {7 l% S, K9 Z9 ?: ]CAST() 函数语法如下 ( @1 H; m5 U$ L7 ^8 s% |
CAST() (<expression> AS <data_ type>[ length ]) 6 D' s% T* t# l: U8 I6 L- u
CONVERT() 函数语法如下 ; I: X( F) u, F( a, x
CONVERT() (<data_ type>[ length ], <expression> [, style])
9 @9 ~. ]" ~+ G8 p( p, W5 H / e" t8 T, b; c' f

$ o7 g5 X/ C+ ` : _( L- Q9 {1 [% Z! i. X+ R; [
1 |$ N4 n2 H& Q' g+ v! g
select cast(100+99 as char) convert(varchar(12), getdate()) 7 B$ V, `, a$ k0 e, I0 ~6 {
运行结果如下 $ a' U+ D0 E7 B  T" Z
------------------------------ ------------ ! D; q$ _  t5 y& d- R
199   Jan 15 2000 ! A9 y" c' j% [3 G" K2 m
  h; t" c" D* b+ w" w9 t

8 r1 /; I! A2 {" y# |7 E. i
/ /0 b  t) i+ u5 p6 ~ & f( v, R& g5 P2 J. H4 n4 [
----日期函数---- % E$ f+ T/ [, S6 [
DAY()   --函数返回date_expression 中的日期值
6 X0 E. k: Q. v+ l, XMONTH()   --函数返回date_expression 中的月份值
1 y* f7 G" u) R6 tYEAR()   --函数返回date_expression 中的年份值
( V& Y3 j3 p7 F$ w; |DATEADD(<datepart> ,<number> ,<date>)
+ e, ~) q& w. X4 N2 ?. h& R; N    --函数返回指定日期date 加上指定的额外日期间隔number 产生的新日期 9 A, z; G2 E" U4 y$ o
DATEDIFF(<datepart> ,<number> ,<date>) ; g5 r0 H6 @9 k0 E: {
    --函数返回两个指定日期在datepart 方面的不同之处 8 ]0 B6 B7 u! `: @
DATENAME(<datepart> , <date>)  --函数以字符串的形式返回日期的指定部分 - d9 g/ I* E; a) ^
DATEPART(<datepart> , <date>)  --函数以整数值的形式返回日期的指定部分 8 A% n9 k' ?: g  A
GETDATE()  --函数以DATETIME 的缺省格式返回系统当前的日期和时间 2 U& ?% v4 r, X

5 X+ F8 j( H. g; e: c5 f ' J! }+ G/ w, w' w# b
8 ~6 E, d8 q  n2 O
5 K- X8 n; a/ t" x+ F9 {: }7 E
----系统函数----
5 x; n+ k+ i! y& @1 bAPP_NAME()      --函数返回当前执行的应用程序的名称 2 a" x+ I* F0 w+ v  V5 G9 r1 q' ^
COALESCE()  --函数返回众多表达式中第一个非NULL 表达式的值
2 N: ]5 F2 }7 l# f0 M+ h' P, UCOL_LENGTH(<'table_name'>, <'column_name'>) --函数返回表中指定字段的长度值
+ i, q7 [. O9 b% e3 }COL_NAME(<table_id>, <column_id>)   --函数返回表中指定字段的名称即列名
8 }5 ?# W3 t8 jDATALENGTH() --函数返回数据表达式的数据的实际长度
) Q* S) h" {6 e5 e! @; y" O, V9 x6 VDB_ID(['database_name']) --函数返回数据库的编号 " w% Y5 A- Z! W$ p- _2 E
DB_NAME(database_id)  --函数返回数据库的名称 2 Y& t$ S! P# o1 H( C4 B
HOST_ID()     --函数返回服务器端计算机的名称
; D6 l" A$ D4 K, b, VHOST_NAME()     --函数返回服务器端计算机的名称 $ _6 W/ I$ C% S, Z" k
IDENTITY(<data_type>[, seed increment]) [AS column_name]) ! e; C" S9 A1 K1 c- t& p
--IDENTITY() 函数只在SELECT INTO 语句中使用用于插入一个identity column列到新表中
0 d$ Z  _7 /- R- ]! k3 s4 R8 k' p/*select identity(int, 1, 1) as column_name
6 z) f' u$ U8 ointo newtable $ c9 n4 }2 F) W$ c+ K$ D
from oldtable*/
9 z. K4 `9 Y2 ZISDATE()  --函数判断所给定的表达式是否为合理日期 5 g0 d8 }0 i  B  V' O* `
ISNULL(<check_expression>, <replacement_value>) --函数将表达式中的NULL 值用指定值替换 8 O; A3 h; t; E/ O4 [
ISNUMERIC()  --函数判断所给定的表达式是否为合理的数值
4 d0 i& t( e& v2 d' j4 jNEWID()   --函数返回一个UNIQUEIDENTIFIER 类型的数值
! x* q$ u9 U5 i+ P8 V0 O2 j* S  a4 eNULLIF(<expression1>, <expression2>)
9 o- ^! f0 {8 z8 r8 |: }--NULLIF 函数在expression1 与expression2 相等时返回NULL 值若不相等时则返回expression1 的值   n" b- t8 V/ S( n) I
精妙SQL语句
7 F6 g6 j. _- p% F  s说明:复制表(只复制结构,源表名:a 新表名:b)
9 H. O; ~2 b1 oSQL: select * into b from a where 1<>1 0 p0 @3 y! x8 f6 d
说明:拷贝表(拷贝数据,源表名:a 目标表名:b)
) `: T$ Q. H5 {4 m2 t- G7 d( G# ?  sSQL: insert into b(a, b, c) select d,e,f from b;
) P3 k2 v; t. X: ~; n说明:显示文章、提交人和最后回复时间 . O" o1 V: q6 B$ t" y! |
SQL: select a.title,a.username,b.adddate from table a,(select max(adddate) adddate from table where table.title=a.title) b ' K( K. m, e0 U6 U# ~, ?$ G4 ]
说明:外连接查询(表名1:a 表名2:b) " L: c, p, Z, B! y- }+ S% c  {, m
SQL: select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c
# |% v  ~! V+ N" N说明:日程安排提前五分钟提醒
* I& I$ A  u. v8 MSQL: select * from 日程安排 where datediff('minute',f开始时间,getdate())>5 ) z# j8 z% O1 v7 j3 g: z8 n

5 n6 A' P. T# Y0 F: S  M说明:两张关联表,删除主表中已经在副表中没有的信息 ' C. `( g' /& q! f: W9 Y# G
SQL: & p! n* h4 I7 j) j) P
delete from info where not exists ( select * from infobz where info.infid=infobz.infid )
* x: p) _$ p) i! w说明:--
+ U+ R+ i5 `  Q+ J0 k( qSQL: + g& `( t( ~+ f8 w( h
SELECT A.NUM, A.NAME, B.UPD_DATE, B.PREV_UPD_DATE ! I- o+ X& h$ n9 /( M% r6 R
FROM TABLE1, 6 N* H+ a8 Y# Q' d6 /1 v7 f5 n
(SELECT X.NUM, X.UPD_DATE, Y.UPD_DATE PREV_UPD_DATE
% B- F7 w& E6 r7 V( U8 R/ {FROM (SELECT NUM, UPD_DATE, INBOUND_QTY, STOCK_ONHAND $ f) o5 U9 _! K5 u0 ~4 y- o7 U0 S
FROM TABLE2
* Q5 v2 ~6 ?7 c. B5 u+ W' pWHERE TO_CHAR(UPD_DATE,'YYYY/MM') = TO_CHAR(SYSDATE, 'YYYY/MM')) X,   [2 I8 /! `) o2 ~1 H" r/ e( c
(SELECT NUM, UPD_DATE, STOCK_ONHAND ; T% A* {# E' N
FROM TABLE2 : |9 n& ?8 n: h/ F& j6 Q" S. ^5 v2 F
WHERE TO_CHAR(UPD_DATE,'YYYY/MM') =
/ l5 u* u2 v) z  N' S- // [TO_CHAR(TO_DATE(TO_CHAR(SYSDATE, 'YYYY/MM') || '/01','YYYY/MM/DD') - 1, 'YYYY/MM') ) Y,
2 E8 N# g% g- j% cWHERE X.NUM = Y.NUM (+)
4 t% ?" c7 H% W, QAND X.INBOUND_QTY + NVL(Y.STOCK_ONHAND,0) <> X.STOCK_ONHAND ) B ' o! C7 A: l& g
WHERE A.NUM = B.NUM 3 O- d7 g, C# s3 m
说明:-- ! {! {  M) x# m+ ]
SQL:
1 S, ]3 U8 /4 @( uselect * from studentinfo where not exists(select * from student where studentinfo.id=student.id) and 系名称='"&strdepartmentname&"' and 专业名称='"&strprofessionname&"' order by 性别,生源地,高考总成绩 : M) a: x' }. A! d: b0 W3 m0 B
说明:
. n# [9 N- `0 b0 x6 a) K) _从数据库中去一年的各单位电话费统计(电话费定额贺电化肥清单两个表来源)
1 w0 s' Q- m+ d. |1 z  HSQL:
/ n# |- N# U4 {* zSELECT a.userper, a.tel, a.standfee, TO_CHAR(a.telfeedate, 'yyyy') AS telyear,
& }, W0 r6 Q5 gSUM(decode(TO_CHAR(a.telfeedate, 'mm'), '01', a.factration)) AS JAN, ' c" Y$ b) m' c5 E6 q( U
SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '02', a.factration)) AS FRI,
, r; f7 e% q8 z! I7 h3 @SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '03', a.factration)) AS MAR, ' G9 R5 L! t, `# X
SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '04', a.factration)) AS APR, ; Q1 l! /' P; ^+ `" O5 i
SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '05', a.factration)) AS MAY,
+ P- f* L" o3 U2 g( RSUM(decode(TO_CHAR(a.telfeedate, 'mm'), '06', a.factration)) AS JUE, * d9 o$ ~$ ?5 r& T8 M
SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '07', a.factration)) AS JUL,
9 q9 F, _+ b2 V' T, p9 OSUM(decode(TO_CHAR(a.telfeedate, 'mm'), '08', a.factration)) AS AGU,
: ^8 }0 H9 e$ S2 l% Y' x6 G' NSUM(decode(TO_CHAR(a.telfeedate, 'mm'), '09', a.factration)) AS SEP, 4 a' b$ x9 L& G
SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '10', a.factration)) AS OCT, / j5 l7 B' [9 ?0 q% b. `
SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '11', a.factration)) AS NOV, 4 k( y4 }: F( ?6 g" S* @
SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '12', a.factration)) AS DEC
* q3 G" k4 ~) E) _$ y& ?" HFROM (SELECT a.userper, a.tel, a.standfee, b.telfeedate, b.factration
* |) e+ h! u. {- a$ U* R# dFROM TELFEESTAND a, TELFEE b
8 B( P, V6 H9 |" ]8 |& lWHERE a.tel = b.telfax) a / t1 ?1 I1 y- }  M9 J  O9 U
GROUP BY a.userper, a.tel, a.standfee, TO_CHAR(a.telfeedate, 'yyyy') ' k, D% ~; K4 O7 D( _6 J; E
说明:四表联查问题:
7 x6 i) t6 A0 s  p& E3 gSQL: select * from a left inner join b on a.a=b.b right inner join c on a.a=c.c inner join d on a.a=d.d where ..... 3 j$ {- |4 M1 a  a& q: d
说明:得到表中最小的未使用的ID号 ; O% r2 O7 Z" n/ o* M
SQL:
) u: @5 J% n+ a  f4 {0 s) p% X/ JSELECT (CASE WHEN EXISTS(SELECT * FROM Handle b WHERE b.HandleID = 1) THEN MIN(HandleID) + 1 ELSE 1 END) as HandleID
5 G2 B4 w. r- B+ G; X" I8 RFROM Handle
6 Q9 y& X- G" ~& ?WHERE NOT HandleID IN (SELECT a.HandleID - 1 FROM Handle a) . @% b2 R0 @2 F; m( S$ A6 p

' I5 @8 B0 W  i: 我在ms sql中建了一个表,可由于种种原因有些记录重复了 4 G( o% P4 B) r) k1 C# H
: 记录完全的一模一样。 8 i* G- D2 r3 i$ C! s
: 现在我想把重复的都删掉,只保留重复记录中的第一条。
2 F0 h( s  g  T& V1 T: 我在database好象看到有介绍oracle的, . a) F: {! X2 b0 ~2 _5 w/ I

6 K4 @% /* q- C- M0 H4 ?$ z # C6 I! Y5 |1 O% h8 h* q
select distinct * into #table_name from table_name 5 D- E1 s, X5 B% U
delete from table_name
7 ]! ^% N% j/ l4 a. }select * into table_name from #table_name ' W6 _: ]0 t- Z. C2 Z
drop table #table_name
* z: W& E& ~/ Q# j4 _* @# o# f
2 x7 j  j; G$ }8 |" m与此相关的是“select into”选项,可以在数据库属性
0 ?0 a7 b" {( y( n对话框中,勾起来此项,或者在Query Analyzer中执行
5 x9 `- W3 I9 C: sexecute sp_dboption 'db_name','select into','true' 0 N" S% A6 }* w1 ~+ I' J. q
开启。默认值是关闭的。 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值