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

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

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

Rank: 9Rank: 9Rank: 9

跳转到指定楼层
1#
发表于 2009-4-5 13:24:44 |只看该作者 |倒序浏览
SQL分类:8 g( T' A- c/ p# i1 p, s
DDL―数据定义语言(Create,Alter,Drop,DECLARE)  A. E: |8 z2 `+ |' r" W' b1 Q
DML―数据操纵语言(Select,Delete,Update,Insert)& k+ d9 w6 G; j, w
DCL―数据控制语言(GRANT,REVOKE,COMMIT,ROLLBACK)1 y" H- d  G. d# \% n4 ~' e$ ]
) d; L4 a8 R% T* W! E
首先,简要介绍基础语句:
5 m# ^) d7 u' M/ n! Z1、说明:创建数据库' [* d$ L7 p/ p4 q( P6 ?7 V
Create DATABASE database-name6 f. f- M9 Q, L* N: M, k) s8 V+ J
2、说明:删除数据库
; V0 @1 d+ E9 c2 E* u& Tdrop database dbname
8 m6 q+ J% o% z2 E& ?; p, A3、说明:备份sql server+ h" \  R7 X6 M( q/ D% O1 M( B
--- 创建 备份数据的 device
7 V1 Q- d" A. e9 kUSE master% D, H8 g/ B( t& D5 e
EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat'
/ Y0 h$ e; G; R4 ~$ S--- 开始 备份
) q2 o0 K" {) xBACKUP DATABASE pubs TO testBack0 P! I+ m  _1 s- z" j) s& w$ e. a
4、说明:创建新表" ^2 N! `$ T1 L: ?/ W% G
create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..)$ |. A( p, F& P; [; q% l+ y7 V" `8 n
根据已有的表创建新表:% R  E6 z* C) d. C: I$ [! g5 b
A:create table tab_new like tab_old (使用旧表创建新表)
' \6 P  ^- t9 F7 s. RB:create table tab_new as select col1,col2… from tab_old definition only/ w/ k* a- G) e; E+ d
5、说明:删除新表
2 X$ g6 n' W0 Ddrop table tabname
/ P% p" V+ y; |' v: X! J1 f6、说明:增加一个列
" M" ]6 _, {' S3 g5 R' eAlter table tabname add column col type
. {4 l2 N) R) L注:列增加后将不能删除。DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。
" X4 c4 \' ?6 h7、说明:添加主键: Alter table tabname add primary key(col)2 W% w: _% i4 D/ j
说明:删除主键: Alter table tabname drop primary key(col)5 G4 P) N  D6 M- z6 e3 t
8、说明:创建索引:create [unique] index idxname on tabname(col….)
0 `  [$ ~' Y0 @  O删除索引:drop index idxname
, d1 w' e" Q) I  w0 R5 |注:索引是不可更改的,想更改必须删除重新建。
( S8 V$ B" W7 D4 j+ Y( v8 b9 i5 S9、说明:创建视图:create view viewname as select statement* l& g3 z- |2 l3 ?
删除视图:drop view viewname# f6 Y7 L3 v7 J1 [6 a) b
10、说明:几个简单的基本的sql语句
. G) A0 j  I% |- S% g! `选择:select * from table1 where 范围
& h3 E# ^; t% C# `: T7 x/ z插入:insert into table1(field1,field2) values(value1,value2)6 s* A. D3 ]7 e, S  X+ H! U- Q
删除:delete from table1 where 范围
; M& t' e- h* Y& k2 i更新:update table1 set field1=value1 where 范围
3 x" H+ g) x3 }6 a查找:select * from table1 where field1 like ’%value1__’
/ Y, ]2 y7 @8 d: u排序:select * from table1 order by field1,field2 [desc]) k2 S! g' b* C9 E/ P0 L" A
总数:select count * as totalcount from table1
  h  x7 ]0 {, b5 |, N: {/ _求和:select sum(field1) as sumvalue from table1# Q0 l' N* _5 T, {0 E8 R$ K1 G# }
平均:select avg(field1) as avgvalue from table18 h: y( }2 A% e+ K0 E' d5 s4 D
最大:select max(field1) as maxvalue from table1
  p- J6 \% z, q$ _! v  {最小:select min(field1) as minvalue from table1
7 F# u1 g) P0 ~/ H11、说明:几个高级查询运算词( a4 K4 _9 e0 i3 E
A: UNION 运算符+ R/ a# v: X8 e8 w: v0 [/ z# h
UNION 运算符通过组合其他两个结果表(例如 TABLE1 和 TABLE2)并消去表中任何重复行而派生出一个结果表。当 ALL 随 UNION 一起使用时(即 UNION ALL),不消除重复行。两种情况下,派生表的每一行不是来自 TABLE1 就是来自 TABLE2。
/ G  f7 [6 o/ E4 v6 N2 LB: EXCEPT 运算符$ L. O  s! r4 ]
EXCEPT 运算符通过包括所有在 TABLE1 中但不在 TABLE2 中的行并消除所有重复行而派生出一个结果表。当 ALL 随 EXCEPT 一起使用时 (EXCEPT ALL),不消除重复行。# j" z6 `8 q$ W4 L$ G# Z5 C+ m% |
C: INTERSECT 运算符
2 ^# n* n' p9 CINTERSECT 运算符通过只包括 TABLE1 和 TABLE2 中都有的行并消除所有重复行而派生出一个结果表。当 ALL 随 INTERSECT 一起使用时 (INTERSECT ALL),不消除重复行。
) I7 ~* P* o* M+ u注:使用运算词的几个查询结果行必须是一致的。2 j, }9 y" ~2 R7 c0 _0 i2 ]

/ s% W3 Y3 Q: Z* p$ `12、说明:使用外连接  [; [4 w2 a0 p& I/ j
A、left outer join:$ M9 e5 h8 s4 p, W
左外连接(左连接):结果集几包括连接表的匹配行,也包括左连接表的所有行。6 g9 C* b+ L. a, O2 E
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. j# Z' V* U) i# r- T+ K9 `/ k
B:right outer join:
' O' E: O7 \: p$ O7 Z( n3 e3 Y" S9 F右外连接(右连接):结果集既包括连接表的匹配连接行,也包括右连接表的所有行。
2 d& S% ~3 S+ R; Q6 ~5 f1 yC:full outer join:
7 @  o9 p% N$ {3 a2 G4 r: I全外连接:不仅包括符号连接表的匹配行,还包括两个连接表中的所有记录。
; d8 K0 w% e2 {
7 l  ^+ j/ @& H9 j: G7 F' T; J其次,大家来看一些不错的sql语句- n! f+ s# r: y: q, {9 i- m
1、说明:复制表(只复制结构,源表名:a 新表名:b) (Access可用). y: X5 n; @  W' d$ n4 W
法一:select * into b from a where 1<>1
( _& `" v9 B& l  `, Z法二:select top 0 * into b from a
7 o8 w7 P& Q  u+ o1 ]  Z7 N# [5 ?# x7 o$ d4 b  G( k
2、说明:拷贝表(拷贝数据,源表名:a 目标表名:b) (Access可用)  O5 i& `) u5 @( H( h
insert into b(a, b, c) select d,e,f from b;
  `5 k0 C3 ]2 x3、说明:跨数据库之间表的拷贝(具体数据使用绝对路径) (Access可用)+ p/ K; F5 `; L5 p
insert into b(a, b, c) select d,e,f from b in ‘具体数据库’ where 条件
6 E3 J0 C" X6 }4 e例子:..from b in '"&Server.MapPath(".")&"\data.mdb" &"' where..
7 e4 o9 V% I) F( d; I/ z) \* J0 u, U( Q% I& O9 Z& F
4、说明:子查询(表名1:a 表名2:b)9 C4 M  O  g+ Y, X6 v6 i( F
select a,b,c from a where a IN (select d from b ) 或者: select a,b,c from a where a IN (1,2,3)
9 ^. }. B1 N' a$ J9 N4 {3 f5 h
8 d$ }7 y) Q$ v% @" f& H* P5、说明:显示文章、提交人和最后回复时间- w( g5 W8 ~1 q1 u3 x
select a.title,a.username,b.adddate from table a,(select max(adddate) adddate from table where table.title=a.title) b7 s' G" w6 N: y0 |2 n* D" {* M, Z4 h

. F) F. ]: O: ^- Y9 _) z& ~7 x3 O6、说明:外连接查询(表名1:a 表名2:b)
7 w# J8 T' U6 W  I1 W+ K1 \5 tselect a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c: x8 }7 h2 y9 ?  _' X( i, W
' N3 p* X1 g  i/ l3 L/ ~
7、说明:在线视图查询(表名1:a )# Q1 e7 c- A0 A: E
select * from (Select a,b,c FROM a) T where t.a > 1;
. {% g5 {) M$ {+ p0 `0 Y4 q) m
! C7 X7 g4 I+ N% i0 E$ n9 S8、说明:between的用法,between限制查询数据范围时包括了边界值,not between不包括1 y; N0 w1 n+ b3 j8 r" k
select * from table1 where time between time1 and time20 K7 U& O; d, F! C4 n; M3 m
select a,b,c, from table1 where a not between 数值1 and 数值2
- [5 m$ A% M& j8 X2 d4 p; ^* \# Y0 t5 [4 Y) f) b0 v
9、说明:in 的使用方法; b6 K% I3 q! E5 ^: v
select * from table1 where a [not] in (‘值1’,’值2’,’值4’,’值6’)- D+ J3 x! S& P0 p( s* k

7 x; ?' e+ _6 s7 w$ P) D  u% a9 A10、说明:两张关联表,删除主表中已经在副表中没有的信息
, l2 @3 y1 Z! s8 g" J/ {0 S: vdelete from table1 where not exists ( select * from table2 where table1.field1=table2.field1 )( u  t( b- @/ H7 I( j) a

7 Q1 u5 {( l4 u5 t11、说明:四表联查问题:
2 V8 ^! k) Q3 }+ m) Kselect * 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 .....2 b4 V: A# |" r8 T
- H) ?' B7 @, }2 I: K0 C" t/ n/ j0 d3 p
12、说明:日程安排提前五分钟提醒0 l$ H7 h, m4 I8 ^" {
SQL: select * from 日程安排 where datediff('minute',f开始时间,getdate())>5+ [9 h0 C1 `3 i0 k! M
7 A9 q3 M( k' T4 y/ e5 P0 j9 m
13、说明:一条sql 语句搞定数据库分页8 }7 g" z7 \3 O2 n" }: x! }# W
select top 10 b.* from (select top 20 主键字段,排序字段 from 表名 order by 排序字段 desc) a,表名 b where b.主键字段 = a.主键字段 order by a.排序字段
& Z: B1 d$ Q2 n
8 u( m8 p1 H. |8 A  M: _; |' \, m14、说明:前10条记录
  t& j. l3 T. N! `" A# iselect top 10 * from table1 where 范围
4 V' F7 r$ u; L2 J6 J
  g" \2 q, L* F/ x- B5 P15、说明:选择在每一组b值相同的数据中对应的a最大的记录的所有信息(类似这样的用法可以用于论坛每月排行榜,每月热销产品分析,按科目成绩排名,等等.); x. a- j6 `1 o$ w1 Q- O* r
select a,b,c from tablename ta where a=(select max(a) from tablename tb where tb.b=ta.b)
* j/ R+ i. |( W1 I/ H9 j/ M/ ~8 ?: ^2 r0 M
16、说明:包括所有在 TableA 中但不在 TableB和TableC 中的行并消除所有重复行而派生出一个结果表2 D2 T; y) K/ g5 z/ h
(select a from tableA ) except (select a from tableB) except (select a from tableC)( Y8 S& M( R# M: r  W
6 ?2 e& f! V+ Z' U0 {! ~: H
17、说明:随机取出10条数据
0 s9 E; T4 W4 `# R' |9 w/ W+ nselect top 10 * from tablename order by newid()  G- [5 B4 ^# P# M' f4 k: y( A' h
" O& ], P6 q% T/ H7 Q3 t5 l
18、说明:随机选择记录  i! ~4 `; A# c/ l0 X5 f
select newid()
" J7 ]' e+ U. L+ @; L7 f  e9 c* U: F; c( ^/ C8 h( K
19、说明:删除重复记录; W. N% z- M" e7 M: }7 N
Delete from tablename where id not in (select max(id) from tablename group by col1,col2,...)" h: c# t# [. Z
0 p4 n* J* ]  p" s, m7 W  v
20、说明:列出数据库里所有的表名+ n* v2 p4 |4 q
select name from sysobjects where type='U'
* I. A. D" _8 F$ b& \* w/ b  Q/ M  h0 w! k, N- T) Q
21、说明:列出表里的所有的
6 }& b* \# c3 ^# ?select name from syscolumns where id=object_id('TableName')/ K* Z) V5 ]& `# L0 `

. \: E+ v2 E. J1 ]- Y& W, b22、说明:列示type、vender、pcs字段,以type字段排列,case可以方便地实现多重选择,类似select 中的case。
, O% v; T# Q; F5 x2 z9 e: q5 n4 F; Yselect 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
6 w; w! I+ [$ H1 x' ~( F+ S- u" W显示结果:6 Y/ }! @0 Q& N* v$ }
type vender pcs
/ S4 W0 j& |( ~% V6 [3 ?: |电脑 A 1& i; x: l& ?. R3 U; V1 n
电脑 A 1
5 D# P3 H; B7 o/ f! Y5 V7 y光盘 B 2. B: K, W) I, G% I3 ]7 m3 g/ y
光盘 A 2
: X6 J, d* d- y- }- V) i) i/ \( B手机 B 3
  T4 o/ V1 ?  u* r# [- c手机 C 32 E2 {* E# S" j" w$ H! J$ Y/ V
3 F3 i* K7 I/ F6 \8 W) H# d
23、说明:初始化表table1
" Z- U7 I8 O5 P$ u  TTRUNCATE TABLE table1
7 H% r, B& ^* e$ z. n$ {4 ^
; c, o- j3 f2 z6 Z24、说明:选择从10到15的记录
( d* E8 z, A3 g. \# Z) ]" sselect top 5 * from (select top 15 * from table order by id asc) table_别名 order by id desc
您需要登录后才可以回帖 登录 | 注册


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

GMT+8, 2026-1-13 07:38 , Processed in 0.022001 second(s), 9 queries .

Powered by Discuz! X2

© 2001-2011 MinHang.CC.

回顶部