比较经典,常用的SQL语句供大家参考,希望对大家有所帮助

说明:复制表(只复制结构,源表名:a 新表名:b)   ( f# l/ Y7 L( S# u5 M. A5 C
! h3 h) D1 ^$ }7 y& I2 X
  SQL: select * into b from a where 1<>1
4 }6 ^( h+ ~$ T: \4 M/ W8 d- Y; v
( h% Z* M3 b0 q( P( I2 p  说明:拷贝表(拷贝数据,源表名:a 目标表名:b)   # R/ `0 K6 O" T& R; U+ _9 |" G
- H% e  `9 o; M; J" y/ `
  SQL: insert into b(a, b, c) select d,e,f from b; $ G0 h# L0 R6 A( h

3 e* f4 S7 P& E. d  说明:显示文章、提交人和最后回复时间   6 m9 p0 I# _' X2 O$ N: c
3 U: K$ K. N  B6 @; T" d
  SQL: select a.title,a.username,b.adddate from table a,(select max(adddate) adddate from table where table.title=a.title) b - }# L  B, R$ g0 L
0 W5 `6 \! f2 G$ o! ]' c, Y, f
  说明:外连接查询(表名1:a 表名2:b)  
6 Z1 t+ `% J7 |; b( ^  T
4 f) z5 s0 A: }% _0 Y  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
7 k1 {$ P! v% N& c8 |
, M* j8 X# V% X1 Z$ }% Z$ U2 ]  说明:日程安排提前五分钟提醒   % V% ]4 ]) o( |. Y" k& W+ z+ Q2 x

, j5 v7 Q1 `( x  SQL: select * from 日程安排 where datediff('minute',f开始时间,getdate())>5  
( x5 {8 ^, H5 b' S4 L# q- [/ K$ D; r5 e' B
  说明:两张关联表,删除主表中已经在副表中没有的信息
3 i1 `- v, W# [6 p, x7 f- L  B
) f8 d4 t5 o3 q4 _% s  SQL:   
0 w9 H( p' |. c  l9 k2 o7 }4 M) _! F# f8 s. e
  delete from info where not exists ( select * from infobz where info.infid=infobz.infid 0 {9 L& `9 Z4 L" f" }
- m/ y$ c+ I$ l0 U) S! [
  说明:--
& D. v! ^' L* z/ X. w- `
! Q' t3 K" i+ R/ n  SQL:    / g. y2 }6 f3 b$ p# g/ k- D
# U  g- Q# T) b) w' a: r
  SELECT A.NUM, A.NAME, B.UPD_DATE, B.PREV_UPD_DATE
* X9 {2 s( c6 ^, x7 B- k  L2 o. |
% \+ O9 J$ z9 k' [5 [. ~   FROM TABLE1, # r/ ]" D# m# F. _  l
( }8 ^: ^2 Q# A
   (SELECT X.NUM, X.UPD_DATE, Y.UPD_DATE PREV_UPD_DATE
% E7 G7 b8 D6 o) r! o
/ K' r! e' h; ^  x   FROM (SELECT NUM, UPD_DATE, INBOUND_QTY, STOCK_ONHAND # M4 }. e$ ~7 M; s- @
/ ]( l) }1 `- m9 O' X6 M3 D/ J
   FROM TABLE2
2 |) g+ k5 @# p% w1 t, [# w) K+ x9 t" q: k
   WHERE TO_CHAR(UPD_DATE,'YYYY/MM') = TO_CHAR(SYSDATE, 'YYYY/MM')) X,
4 L4 O% D% o( w/ K
  X9 E7 |' m3 K/ Z4 z6 K   (SELECT NUM, UPD_DATE, STOCK_ONHAND
2 i7 c! I1 A2 Y8 C1 O. q7 `4 d" b+ l  p2 [4 y; C) I# ^; X0 \
   FROM TABLE2 & x* a1 s1 R; D" [9 V8 i) a
1 J7 V) b  k8 o" z: r; P. y
   WHERE TO_CHAR(UPD_DATE,'YYYY/MM') =
* W/ ~6 I: ]: F! s5 l- O$ G9 ~1 w/ M, V( J8 @( k
   TO_CHAR(TO_DATE(TO_CHAR(SYSDATE, 'YYYY/MM') Ζ '/01','YYYY/MM/DD') - 1, 'YYYY/MM') Y, 7 g* g* X( P/ Y. {: S

& _5 N9 Z0 D6 w+ k5 p  l   WHERE X.NUM = Y.NUM (+) # M4 u1 r/ k( O1 [# c
- X/ _4 \% t1 m& Y, i$ Q! K
   AND X.INBOUND_QTY + NVL(Y.STOCK_ONHAND,0) <> X.STOCK_ONHAND B
# H4 {2 h. u5 H8 r0 Q7 P9 \+ N! u; O% K* d, T$ t+ E" N
  WHERE A.NUM = B.NUM " h7 X3 }; R: n! N6 H/ {

7 f" s" ~/ \+ }# z  说明:-- $ R& L6 I' P* }9 l. ~5 e2 Q( Q

& O$ E; L& O  Q5 w$ ]8 ~3 u  SQL:   
$ [2 V4 `, w. Q( q
) R0 l* a: J7 O" y* y* z- }  M  select * from studentinfo where not exists(select * from student where studentinfo.id=student.id) and 系名称='"&strdepartmentname&"' and 专业名称='"&strprofessionname&"' order by 性别,生源地,高考总成绩
6 d. Y, Y+ y2 R' r. X( j2 x, Y; |2 O/ R3 U# y' L$ e
  说明: : u. a* y; e8 k7 G* O
. _- V) |7 i! M. O- \2 X
  从数据库中去一年的各单位电话费统计(电话费定额贺电化肥清单两个表来源)
0 G; W# m& b; w, [+ C
% r5 D) w3 m& R+ J( U- F  SQL:  
1 Q. \7 {+ P9 y/ n6 I' ]9 _$ q/ B5 d" ?/ q0 N
  SELECT a.userper, a.tel, a.standfee, TO_CHAR(a.telfeedate, 'yyyy') AS telyear,
# v# \1 q! \  o% Z7 o: `0 c
% w" r/ e& u0 @, \' G& s   SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '01', a.factration)) AS JAN, . k' o* a$ U+ i2 d& G
) B, c8 s* L: c# ^6 r
   SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '02', a.factration)) AS FRI,
+ g. ]3 A8 f# j1 V9 ~- [+ \$ w1 C$ ?; \8 G3 |' n. w, e
   SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '03', a.factration)) AS MAR, 2 |  Z; p8 X5 ~; |$ h, v" ^
6 L) O' g, Q; j+ Z
   SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '04', a.factration)) AS APR,
: @' b; W5 x& [3 w) F9 ?. S, \2 ^- n4 t6 K- B
   SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '05', a.factration)) AS MAY, 0 s* `: P+ u+ Q/ q' `! \

/ E) R2 j) G2 H8 b0 c   SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '06', a.factration)) AS JUE, 8 d1 y. q" X& F
: {( W! ]0 z. ?! T
   SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '07', a.factration)) AS JUL, / U) K' R2 j8 b" V- o
8 L- N' q! w5 {. R, Z4 \
   SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '08', a.factration)) AS AGU,
% [+ B; h! E* g& ^
' J& n) }/ v, V) g1 o- O   SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '09', a.factration)) AS SEP,
9 z5 d& I% w% w! h  {- f+ P4 B* N/ D9 {
1 Q$ ]" \4 d1 m1 g. d# ?" k) l   SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '10', a.factration)) AS OCT, 1 t% ?# \& c& X

) W2 V0 D' Y! s8 i" w9 F   SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '11', a.factration)) AS NOV, # m" B) q, r6 v# b0 e* G. E4 w
5 ?; h3 p5 r; u& Z
   SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '12', a.factration)) AS DEC
0 d) b2 C' Y7 F# C
0 o8 ~8 |! c% M' u7 ^# b0 E5 A  FROM (SELECT a.userper, a.tel, a.standfee, b.telfeedate, b.factration # V7 m; Y+ x; f8 g. J: e
2 R' Z7 B! Z# {6 ~+ T: \4 `
   FROM TELFEESTAND a, TELFEE b 6 d" }. V2 [/ U. [  a

! F$ f1 [: K4 U! ?1 k0 L   WHERE a.tel = b.telfax) a 5 l3 J+ {- a+ K4 V" g* u6 e9 p
5 R" a. ^7 ~/ R+ ~4 j
  GROUP BY a.userper, a.tel, a.standfee, TO_CHAR(a.telfeedate, 'yyyy') 8 N0 O) U( |" @/ h  k

; c, g9 W' F$ z! Z2 d4 J3 g  说明:四表联查问题:  
& v4 j8 e: e4 }  [% N  B/ w
. k; b6 D0 X' G, b+ K/ y  SQL: 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 .....
0 G4 ~6 o* b* k+ b5 y/ N' J6 R4 P- J
* b, P& P$ G6 k5 W1 O0 w  说明:得到表中最小的未使用的ID号
( r/ |. @2 \2 i+ y6 J* M  R% W! a1 Q2 N3 p) `
  SQL: 
7 s# e8 x) X$ R, i5 l9 a. O  E8 x& z& d+ ?0 ~3 n7 K$ S2 ~1 n0 ~5 ^
  SELECT (CASE WHEN EXISTS(SELECT * FROM Handle b WHERE b.HandleID = 1) THEN MIN(HandleID) + 1 ELSE 1 END) as HandleID
0 E2 |9 ~/ A' U! `2 ?! f
$ g* J$ v, j/ z   FROM Handle 2 \$ ~# H- t# \- i2 d2 E
1 @( p$ s7 t$ w5 h8 R3 K
   WHERE NOT HandleID IN (SELECT a.HandleID - 1 FROM Handle a)