找回密码
 立即注册
欢迎中测联盟老会员回家,1997年注册的域名
查看: 2356|回复: 0
打印 上一主题 下一主题

mysql常用命令

[复制链接]
跳转到指定楼层
楼主
发表于 2012-9-13 16:32:24 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
启动:net start mySql;, n% ], m+ A; b
  进入:mysql -u root -p/mysql -h localhost -u root -p databaseName;  F! Q/ x/ l  g. t; U
  列出数据库:show databases;* w# f% q* `1 l$ q
  选择数据库:use databaseName;  w2 z: A7 w- C7 W3 I& e4 M  f
  列出表格:show tables;6 a3 M9 v# k6 Z" x# u
  显示表格列的属性:show columns from tableName;
& g6 g6 e2 d  S2 T  建立数据库:source fileName.txt;
5 _, [0 j* f! c0 n  匹配字符:可以用通配符_代表任何一个字符,%代表任何字符串;
0 O/ `: H, j# g3 n  增加一个字段:alter table tabelName add column fieldName dateType;
  A" A$ P# E* j* i" A  增加多个字段:alter table tabelName add column fieldName1 dateType,add columns fieldName2 dateType;' y8 f0 P& O7 R# o$ n5 L6 r- M
  多行命令输入:注意不能将单词断开;当插入或更改数据时,不能将字段的字符串展开到多行里,否则硬回车将被储存到数据中;
. k8 y+ w! ?: f+ Q1 t  增加一个管理员帐户:grant all on *.* to user@localhost identified by "password";' I" E  O: k( s  q
  每条语句输入完毕后要在末尾填加分号';',或者填加'\g'也可以;
4 R: ^& D  e* D8 \7 K" t5 j; N  查询时间:select now();% m2 E) \+ U6 v9 n2 Z1 x6 {! J, _
  查询当前用户:select user();9 I6 i$ {; n- f* U9 H# F
  查询数据库版本:select version();
- A' B( E0 h& w' `$ o  查询当前使用的数据库:select database();0 f% V: I; d( D# F3 ]- l, H7 n
  ' N/ ~1 g  @& w' U& Q3 m
  1、删除student_course数据库中的students数据表:8 m9 W5 S0 e3 a4 L+ U/ X% w
  rm -f student_course/students.*
9 o, o6 j" m0 i" d6 M  2 S4 G+ q' p% h. N8 f
  2、备份数据库:(将数据库test备份)
0 E6 |; E  Q( J7 p- l, w' D% t0 P  mysqldump -u root -p test>c:\test.txt4 D, }, k7 f2 {$ l: x4 W
  备份表格:(备份test数据库下的mytable表格)
- E2 x$ K' X0 [0 _) ]  mysqldump -u root -p test mytable>c:\test.txt
; A+ t% X# E$ D0 f  将备份数据导入到数据库:(导回test数据库)" U! J6 {3 l( u/ s6 l
  mysql -u root -p test<c:\test.txt
+ R1 b5 ~3 k) }( p( }  $ u) O/ e3 b0 s9 q) L: ^5 ], }6 G
  3、创建临时表:(建立临时表zengchao)
2 H; ?" Q4 |0 R+ J. \  create temporary table zengchao(name varchar(10));
  P+ b1 J1 \0 a! y" ~  @. e  
$ L% n5 v9 Z" A  4、创建表是先判断表是否存在! s# _% y6 u# J% I; t0 r
  create table if not exists students(……);
, n! u) [2 q, t7 ]  
* z* Y# ~$ ~5 f' n4 h+ h& }3 P: q  5、从已经有的表中复制表的结构
6 W7 Y( V7 O. I7 n2 R  create table table2 select * from table1 where 1<>1;
) B/ j2 ]# q( p! j* n; C  [  + a9 F5 M, R! G4 `( B
  6、复制表3 g9 D0 ~  V  y! z' e  ^
  create table table2 select * from table1;
9 p1 ^* I  J/ V1 F8 w  6 a" r' |9 w, w; x. f
  7、对表重新命名0 t) }4 g- I; m& s) z* Y
  alter table table1 rename as table2;( R/ \* ]5 p8 O" T# T0 M% J; U
  & B3 a- g. z# O8 X
  8、修改列的类型7 X8 _2 Y) M! B# }2 Y+ z0 [7 y7 B
  alter table table1 modify id int unsigned;//修改列id的类型为int unsigned
, d* i; E1 g- u7 z  alter table table1 change id sid int unsigned;//修改列id的名字为sid,而且把属性修改为int unsigned
& Y) z* f5 z; u0 }  
$ H2 L; ~. y: i8 ^! O9 C7 z; h  9、创建索引
# X% a* N7 H. @5 }) ]) r# n( a  alter table table1 add index ind_id (id);
" W, X+ G3 e( a5 m1 h  create index ind_id on table1 (id);( I. _; V" c& Y$ Y; K2 R& P8 }: m
  create unique index ind_id on table1 (id);//建立唯一性索引
  v* v& O' U$ ?* h" s  
- a" e* S8 @- q: u! T+ R2 x9 @  10、删除索引$ v4 j/ h9 W" M6 }8 i
  drop index idx_id on table1;
7 W0 G. A( R4 M- a" `2 d  alter table table1 drop index ind_id;
. G: N: c$ N) a  
# s9 H* R7 `- `, a  11、联合字符或者多个列(将列id与":"和列name和"="连接)
  y* o. K! X$ B. U/ G8 k  select concat(id,':',name,'=') from students;  A' e9 m+ V) M$ l
  & b5 p, i% I9 ]# a1 i
  12、limit(选出10到20条)<第一个记录集的编号是0>) u8 \% ^. ?$ a  o
  select * from students order by id limit 9,10;
+ Y7 ~# n4 \' n  
: k* A$ a: i6 I+ \  13、MySQL不支持的功能
. W; H) [/ Y1 E$ i) S  M1 `, V  事务,视图,外键和引用完整性,存储过程和触发器- o4 ?  M2 S. L
  $ |7 b) I) S) h
  
% q( x1 l- \' f: g, X8 G/ l2 u7 ^  14、MySQL会使用索引的操作符号: ^) D. q; b8 y1 H
  <,<=,>=,>,=,between,in,不带%或者_开头的like
1 ?1 h; l( k3 x- B3 k, P( [) j  
. j6 K+ l% U# {: C- |/ _( k  15、使用索引的缺点
6 O4 j& z8 m+ ]/ X2 ?  1)减慢增删改数据的速度;1 z5 `& y" T; x% Z1 d
  2)占用磁盘空间;
4 E/ U5 ~+ N9 C. [5 f  3)增加查询优化器的负担;
& ?5 x( ?& O2 U( q  当查询优化器生成执行计划时,会考虑索引,太多的索引会给查询优化器增加工作量,导致无法选择最优的查询方案;- R; `; C4 U+ z9 `: l" E
  0 U8 y5 E4 u. ^
  16、分析索引效率
0 ?% F" F( r0 U2 O. Y& \  方法:在一般的SQL语句前加上explain;) F9 J- r  f+ Z6 T+ k5 c
  分析结果的含义:; c$ R, i! s) B8 b( m8 f( b7 Y
  1)table:表名;
" T4 o& Q# A6 e  2)type:连接的类型,(ALL/Range/Ref)。其中ref是最理想的;. @4 O6 p  l! k
  3)possible_keys:查询可以利用的索引名;$ T9 S8 b5 r9 @* S
  4)key:实际使用的索引;
# k& O$ o6 ]5 O/ s. o  5)key_len:索引中被使用部分的长度(字节);
; T3 c* D$ A- u% d  6)ref:显示列名字或者"const"(不明白什么意思);5 f' y8 j7 L# @: L6 Q
  7)rows:显示MySQL认为在找到正确结果之前必须扫描的行数;
  Y. ?! V+ B! J8 w# B7 ]1 B7 q  8)extra:MySQL的建议;/ R! b/ ^  z4 d8 A  k0 W# P
  
6 f: k1 N( d  U  c& d  17、使用较短的定长列8 E( J& y4 b2 K7 K8 G& M
  1)尽可能使用较短的数据类型;
: L0 a0 k$ H+ V5 m3 W7 U0 N  2)尽可能使用定长数据类型;
! U0 s$ z* l8 u7 V/ V6 q8 K  a)用char代替varchar,固定长度的数据处理比变长的快些;
8 b9 l, Q$ [; I3 A: H2 F: Z% }  b)对于频繁修改的表,磁盘容易形成碎片,从而影响数据库的整体性能;
6 J8 v; p  ^/ W2 h0 r! m# e9 W' u  c)万一出现数据表崩溃,使用固定长度数据行的表更容易重新构造。使用固定长度的数据行,每个记录的开始位置都是固定记录长度的倍数,可以很容易被检测到,但是使用可变长度的数据行就不一定了;
9 K! c  }, Q3 m  d)对于MyISAM类型的数据表,虽然转换成固定长度的数据列可以提高性能,但是占据的空间也大;# `5 Q; \9 a) Y
  ( {! l, I8 {/ `/ g, E* i, b
  18、使用not null和enum6 d; A' Q) V6 N7 H2 C
  尽量将列定义为not null,这样可使数据的出来更快,所需的空间更少,而且在查询时,MySQL不需要检查是否存在特例,即null值,从而优化查询;
0 p6 e$ I# C% i. Y  如果一列只含有有限数目的特定值,如性别,是否有效或者入学年份等,在这种情况下应该考虑将其转换为enum列的值,MySQL处理的更快,因为所有的enum值在系统内都是以标识数值来表示的;9 ^4 ?2 i- D! F& @' s, O( C
  2 f. J& f/ V' Q( @
  19、使用optimize table, s  Q  I' E1 q' q0 b& c, O1 H: M& f
  对于经常修改的表,容易产生碎片,使在查询数据库时必须读取更多的磁盘块,降低查询性能。具有可变长的表都存在磁盘碎片问题,这个问题对blob数据类型更为突出,因为其尺寸变化非常大。可以通过使用optimize table来整理碎片,保证数据库性能不下降,优化那些受碎片影响的数据表。 optimize table可以用于MyISAM和BDB类型的数据表。实际上任何碎片整理方法都是用mysqldump来转存数据表,然后使用转存后的文件并重新建数据表;" E" r7 n0 c' Z" p& O
  7 x  y  ^. d6 u# O
  20、使用procedure analyse()
9 W- X  Q$ w  [  G  I  可以使用procedure analyse()显示最佳类型的建议,使用很简单,在select语句后面加上procedure analyse()就可以了;例如:
' I0 s) n3 x- ]& j/ C# i  select * from students procedure analyse();
2 i! P8 F! b( ?9 f  select * from students procedure analyse(16,256);0 ^8 g1 u: b: a4 v
  第二条语句要求procedure analyse()不要建议含有多于16个值,或者含有多于256字节的enum类型,如果没有限制,输出可能会很长;, s, y) ]5 @& C
  
$ A; }+ l- p- R+ l' ?  21、使用查询缓存8 K/ e6 p7 x7 b; T& ]( O
  1)查询缓存的工作方式:! r. w7 H6 q5 _# ?* Y
  第一次执行某条select语句时,服务器记住该查询的文本内容和查询结果,存储在缓存中,下次碰到这个语句时,直接从缓存中返回结果;当更新数据表后,该数据表的任何缓存查询都变成无效的,并且会被丢弃。' n. I7 l$ v: m* |5 b+ p0 A0 g8 I
  2)配置缓存参数:
+ i2 z7 v2 y" P+ |+ S' i+ B4 P  变量:query_cache _type,查询缓存的操作模式。有3中模式,0:不缓存;1:缓存查询,除非与select sql_no_cache开头;2:根据需要只缓存那些以select sql_cache开头的查询;query_cache_size:设置查询缓存的最大结果集的大小,比这个值大的不会被缓存。$ v- Q8 M4 {4 G4 Y# x9 b7 p8 K
  
5 X9 r6 h/ f* x( k; ], c' i  p) Q  22、调整硬件
. B4 U0 }7 O% N; L5 E5 Y  l) D  1)在机器上装更多的内存;; a, G' B3 w1 ?( ]% S2 a
  2)增加更快的硬盘以减少I/O等待时间;
. R% P7 l8 K# l. b, S  寻道时间是决定性能的主要因素,逐字地移动磁头是最慢的,一旦磁头定位,从磁道读则很快;& C* Z+ ^- {- }2 e
  3)在不同的物理硬盘设备上重新分配磁盘活动;
  ]# x# I% }' v% E  如果可能,应将最繁忙的数据库存放在不同的物理设备上,这跟使用同一物理设备的不同分区是不同的,因为它们将争用相同的物理资源(磁头)。
# j: H! C1 P+ \
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表