航空论坛_航空翻译_民航英语翻译_飞行翻译

 找回密码
 注册
搜索
查看: 1841|回复: 0
打印 上一主题 下一主题

经典MYSQL语句大全 [复制链接]

Rank: 9Rank: 9Rank: 9

跳转到指定楼层
1#
发表于 2009-4-5 13:24:44 |只看该作者 |倒序浏览
SQL分类:
7 G; T" |* n  b7 j: L, n  pDDL―数据定义语言(Create,Alter,Drop,DECLARE)+ w3 i& t2 H7 a7 w. P
DML―数据操纵语言(Select,Delete,Update,Insert)
) c3 z" P" [# o8 F+ N8 K9 P  f. Q! pDCL―数据控制语言(GRANT,REVOKE,COMMIT,ROLLBACK)
" b' |: R0 q7 s- u- x& U7 R9 z' Q' L2 C
首先,简要介绍基础语句:. `1 Z6 ~) i! f  ~
1、说明:创建数据库
/ F9 w% R. j9 D" yCreate DATABASE database-name
2 y9 N" t( N% l: c2、说明:删除数据库
$ e; B7 `0 }! R3 x/ C5 zdrop database dbname
( P% H) C2 S, q6 F2 M1 c4 ^3、说明:备份sql server: r6 j+ ^: C$ W7 J
--- 创建 备份数据的 device7 y" R# z$ J. n" V6 S
USE master$ {+ ?9 @1 A! u& o% i# u
EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat'! r! q. ~) F5 N# G* C( _
--- 开始 备份" |! t, B0 V+ M2 h# f
BACKUP DATABASE pubs TO testBack8 o2 ~( b2 H3 _& R
4、说明:创建新表
# c- Q$ Y# O2 i7 ocreate table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..)# F9 z/ j, x+ p  k. m  L- |
根据已有的表创建新表:. h  c' B4 w, b0 J) }3 n
A:create table tab_new like tab_old (使用旧表创建新表)& a7 ^, z  A6 w/ M, i4 E, v
B:create table tab_new as select col1,col2… from tab_old definition only
" o) h4 N' O6 y! \8 g5、说明:删除新表
- J3 X, y0 k5 C4 [) Idrop table tabname; p7 S; d$ u' L, h0 f1 z( i7 g% j: a
6、说明:增加一个列% _9 v. x1 Y; P+ Q# A! |% q
Alter table tabname add column col type
+ y* G  l5 N" Z; |6 W* y8 }注:列增加后将不能删除。DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。, F# G* a' q7 L
7、说明:添加主键: Alter table tabname add primary key(col)1 F4 Z4 f6 B1 r4 n2 h4 O
说明:删除主键: Alter table tabname drop primary key(col)
! I3 L0 T& _% P8、说明:创建索引:create [unique] index idxname on tabname(col….)
' ]: l. Z+ y+ V- |4 D9 E) k删除索引:drop index idxname
/ |' l% I4 }; W, z! L注:索引是不可更改的,想更改必须删除重新建。
6 H$ n/ Z9 u6 I1 Q3 r3 X5 x9、说明:创建视图:create view viewname as select statement6 g! I3 U5 l3 Q6 k  X
删除视图:drop view viewname2 Q5 c' z  O! N! e- Z
10、说明:几个简单的基本的sql语句
6 |  d! G" q) K( W选择:select * from table1 where 范围
! o1 I3 q" f- s+ G! h9 Y$ Y# e插入:insert into table1(field1,field2) values(value1,value2), T9 O1 M! F1 ]" L! P
删除:delete from table1 where 范围
( j" R) b3 C* y2 H$ I) m更新:update table1 set field1=value1 where 范围& l  o4 I1 Y7 }3 `
查找:select * from table1 where field1 like ’%value1__’   g9 F' m, f1 k. ~( c0 w
排序:select * from table1 order by field1,field2 [desc]4 S5 R  C8 [8 `# x9 c$ ]
总数:select count * as totalcount from table1
3 T, F8 u, D, Y- C0 C% h求和:select sum(field1) as sumvalue from table10 z) d7 b2 Q9 ?7 P! _# L' a: ~0 ?
平均:select avg(field1) as avgvalue from table1
8 v7 m& Z  _8 C: q7 P7 N! L最大:select max(field1) as maxvalue from table10 v, ]8 t/ S. K# A0 @/ H
最小:select min(field1) as minvalue from table15 Q5 p" V6 [  f1 k) j1 ?9 {- @
11、说明:几个高级查询运算词* |- N% O/ P' b( s
A: UNION 运算符
0 \; r# q  X( K- z4 A+ GUNION 运算符通过组合其他两个结果表(例如 TABLE1 和 TABLE2)并消去表中任何重复行而派生出一个结果表。当 ALL 随 UNION 一起使用时(即 UNION ALL),不消除重复行。两种情况下,派生表的每一行不是来自 TABLE1 就是来自 TABLE2。
* u% j2 b; s. H8 T  a3 oB: EXCEPT 运算符3 _- M/ E9 h5 t" R
EXCEPT 运算符通过包括所有在 TABLE1 中但不在 TABLE2 中的行并消除所有重复行而派生出一个结果表。当 ALL 随 EXCEPT 一起使用时 (EXCEPT ALL),不消除重复行。
8 d2 {9 x, u- MC: INTERSECT 运算符
# E& }5 }3 s; ~: vINTERSECT 运算符通过只包括 TABLE1 和 TABLE2 中都有的行并消除所有重复行而派生出一个结果表。当 ALL 随 INTERSECT 一起使用时 (INTERSECT ALL),不消除重复行。
5 y4 N4 f$ T+ E/ u* L9 F$ Y注:使用运算词的几个查询结果行必须是一致的。
2 z/ F0 a* n+ O$ ]" t/ C: N7 O
- D3 u. `  H% [& r& w! Y. V4 L# Q" n& `12、说明:使用外连接. e$ j' r* L9 j; Q' |0 L0 I
A、left outer join:
$ \3 ^# B. ?, @9 X! Y) i: S左外连接(左连接):结果集几包括连接表的匹配行,也包括左连接表的所有行。) `. I% ], ^2 G/ D
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
4 g( d; ]7 p1 Q) S! H' W# ~! JB:right outer join:
. I. P/ F( Q# f" U9 f% j! L右外连接(右连接):结果集既包括连接表的匹配连接行,也包括右连接表的所有行。
+ o1 k5 V. j0 ~# }& @8 [, `5 UC:full outer join:
4 t' B- A' R# O9 e6 A8 X3 h' F9 F2 `全外连接:不仅包括符号连接表的匹配行,还包括两个连接表中的所有记录。8 u) |" w& [# k0 A5 \+ s2 S

! Q4 r1 e$ Z8 n9 b/ o) Y; I其次,大家来看一些不错的sql语句
# Q0 B$ S1 p! J" P: f2 ?1、说明:复制表(只复制结构,源表名:a 新表名:b) (Access可用)% w( l9 R9 |" h5 M5 V" m: L
法一:select * into b from a where 1<>1% N* ]0 p: o2 H- [+ ^5 ~6 l
法二:select top 0 * into b from a8 D6 Y4 Q$ s! P& t: |
" \( x6 b$ _3 `$ M( S0 C9 D: J4 o: g
2、说明:拷贝表(拷贝数据,源表名:a 目标表名:b) (Access可用)8 ~# \/ |! n3 ?* [% S6 Z- w
insert into b(a, b, c) select d,e,f from b;
: H( ^( o, Y( y8 {3、说明:跨数据库之间表的拷贝(具体数据使用绝对路径) (Access可用)
: b& _9 R6 q$ q; i% l% |insert into b(a, b, c) select d,e,f from b in ‘具体数据库’ where 条件
+ n0 [2 z/ E. C' Y8 I* i例子:..from b in '"&Server.MapPath(".")&"\data.mdb" &"' where..
) @# Z3 a: ?9 \3 ~3 T; g6 M! t1 A3 O
) n& B# r# {  |8 R1 V5 {4、说明:子查询(表名1:a 表名2:b)
' s$ u: T4 Q0 \! r8 d* ]) Tselect a,b,c from a where a IN (select d from b ) 或者: select a,b,c from a where a IN (1,2,3)
' ^2 _2 I6 C7 D9 h9 E6 h- i- O9 C
) n& Z  [0 q; P1 O& u; a5、说明:显示文章、提交人和最后回复时间
* Q4 m. C# a0 M8 ^( D% N) eselect a.title,a.username,b.adddate from table a,(select max(adddate) adddate from table where table.title=a.title) b
$ b/ d% c6 c! J$ I9 ]2 P4 e. @" h
$ Y, C& C7 d0 R( r: R6、说明:外连接查询(表名1:a 表名2:b). A! X5 D2 s* V+ G3 s
select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c
$ ^2 M1 L& z' ]! _7 o! S8 o
8 j) F6 _; G- Q  n: h$ q7、说明:在线视图查询(表名1:a )5 f2 k# F& m1 k0 S2 ~
select * from (Select a,b,c FROM a) T where t.a > 1;
3 {1 C: \( }- B- ]4 n# D
6 K- ]. f; ^# B0 \& y$ Z8、说明:between的用法,between限制查询数据范围时包括了边界值,not between不包括7 ~7 e$ D/ s& L9 ~7 C: H
select * from table1 where time between time1 and time2
, f+ M' v2 T& [! n& J) oselect a,b,c, from table1 where a not between 数值1 and 数值2, C& V+ X7 @3 A3 l& {
  }) O6 n- R; l- j
9、说明:in 的使用方法
& y% L7 p9 m% W' |, xselect * from table1 where a [not] in (‘值1’,’值2’,’值4’,’值6’)( W# s1 e8 ^, V0 C
- N) s4 O) z' r& R* |3 z
10、说明:两张关联表,删除主表中已经在副表中没有的信息' \, p; ~- h7 [5 C8 T
delete from table1 where not exists ( select * from table2 where table1.field1=table2.field1 )
6 ?# Z! r* e2 R- ]
- u% g7 J# D' v* z, a11、说明:四表联查问题:/ Q, h5 z; N9 T2 F3 f& ^
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 .....
+ J% B+ Q3 ]3 T! B2 _) e6 k2 u! o- v1 ?" J% v) N
12、说明:日程安排提前五分钟提醒. @) m0 p# E8 Y: M6 ^9 w- Q1 E4 K
SQL: select * from 日程安排 where datediff('minute',f开始时间,getdate())>5
% B) H9 K2 g9 b5 }6 |9 }0 T4 A; ?. ]9 n
' x5 E9 v# o/ F8 Z13、说明:一条sql 语句搞定数据库分页
! I0 I4 j5 y3 yselect top 10 b.* from (select top 20 主键字段,排序字段 from 表名 order by 排序字段 desc) a,表名 b where b.主键字段 = a.主键字段 order by a.排序字段
4 Z& u4 ?0 I4 v, I$ J1 _5 n8 q+ Y' f. M+ B6 m
14、说明:前10条记录
, d- h# [! I$ N: |3 Yselect top 10 * from table1 where 范围( J, A( I  v% n' r, H

% E+ {0 K% ?5 W& R15、说明:选择在每一组b值相同的数据中对应的a最大的记录的所有信息(类似这样的用法可以用于论坛每月排行榜,每月热销产品分析,按科目成绩排名,等等.)6 U) `+ u, k( ^% R6 c7 X6 d
select a,b,c from tablename ta where a=(select max(a) from tablename tb where tb.b=ta.b)9 P2 i2 s. c0 X8 d

( n8 M5 i- g- a3 h* u- F2 {16、说明:包括所有在 TableA 中但不在 TableB和TableC 中的行并消除所有重复行而派生出一个结果表
; A+ N( n- p5 \6 h0 x(select a from tableA ) except (select a from tableB) except (select a from tableC)
* d3 z; `5 S/ f+ [+ q* t6 Y4 i+ q
6 P- ?% S8 V6 k" S, p, Z17、说明:随机取出10条数据0 a, O3 _: T+ P+ r/ G0 T
select top 10 * from tablename order by newid()) @. p, R. W: V0 o9 r2 d

! d, F, y' z) }7 J18、说明:随机选择记录
  k$ S  t6 s2 gselect newid()
9 `9 A1 ^+ w6 ]7 b4 X% \/ e2 E1 F6 G' _) m9 ?1 I# s
19、说明:删除重复记录
8 A: h! ?# {: ^" |% r8 gDelete from tablename where id not in (select max(id) from tablename group by col1,col2,...)# f% U% @1 E0 n6 V% O$ ~1 j# V; A

  `$ Z5 {  J' ^% J+ D- m* y- G$ [20、说明:列出数据库里所有的表名
& e  |- ^. `) t- i% gselect name from sysobjects where type='U'/ K& @& z# H5 w# }

1 A( u0 c1 h; v" k: R' \/ p! \21、说明:列出表里的所有的5 c0 P4 Y+ O/ n( ^" A2 t
select name from syscolumns where id=object_id('TableName')
; B: j1 Y8 v- ~$ ~  C. F% b! z- Y7 k) N$ P9 F# m2 j
22、说明:列示type、vender、pcs字段,以type字段排列,case可以方便地实现多重选择,类似select 中的case。
5 Y+ T  d( j9 c0 ^6 a/ D9 {6 R8 }select type,sum(case vender when 'A' then pcs else 0 end),sum(case vender when 'C' then pcs else 0 end),sum(case vender when 'B' then pcs else 0 end) FROM tablename group by type
2 o, G( U7 T9 k$ Z! B. z  u显示结果:
& Q+ u3 O) Z( y- ^type vender pcs  [6 e' {9 e6 b( }
电脑 A 1
# Y2 e% Q5 @0 N( H( q; s0 `1 k7 d: B电脑 A 19 ?) k9 J' \8 p- ~# j3 O
光盘 B 22 v5 W9 m+ ^+ y" s, `9 U
光盘 A 24 c3 R" e. _$ A: h
手机 B 35 I" g& I$ P/ O6 U4 {+ e6 f
手机 C 3: u$ M5 m0 s  t6 j3 Q; S. _3 u
" D: M- l( ~+ J; I% G6 N
23、说明:初始化表table13 w: c: N% L" d) O2 }$ \5 _  A/ l. A
TRUNCATE TABLE table17 R" @: d: M$ N  ~$ p7 |) ?3 ~7 c! ~
& e6 o4 u/ E' S" {+ L
24、说明:选择从10到15的记录
& H6 \9 p7 \: _select top 5 * from (select top 15 * from table order by id asc) table_别名 order by id desc
您需要登录后才可以回帖 登录 | 注册


Archiver|航空论坛 ( 渝ICP备10008336号 )

GMT+8, 2025-12-15 05:42 , Processed in 0.024002 second(s), 10 queries .

Powered by Discuz! X2

© 2001-2011 MinHang.CC.

回顶部