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

mysql常用命令

[复制链接]
跳转到指定楼层
楼主
发表于 2012-9-13 16:32:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
启动:net start mySql;/ V4 A" ], q3 }# y
  进入:mysql -u root -p/mysql -h localhost -u root -p databaseName;
* ?1 O; I- Q' m9 L  列出数据库:show databases;& W) j% ?! \3 J# T$ a( r" b
  选择数据库:use databaseName;5 K2 g: q% U: W' i% f& N
  列出表格:show tables;
# Z+ X; w% w0 `7 O  G9 w, h( N. N  显示表格列的属性:show columns from tableName;* o* R, \% g+ Q7 H8 h
  建立数据库:source fileName.txt;% B2 S6 D; u& E. ~
  匹配字符:可以用通配符_代表任何一个字符,%代表任何字符串;
7 m% u5 k: o  T7 X  B: Z8 ?  增加一个字段:alter table tabelName add column fieldName dateType;
' D/ _3 {9 `- {  |  增加多个字段:alter table tabelName add column fieldName1 dateType,add columns fieldName2 dateType;
. M& D+ [! i3 f# c5 n2 x  多行命令输入:注意不能将单词断开;当插入或更改数据时,不能将字段的字符串展开到多行里,否则硬回车将被储存到数据中;
' ]. r) o& j' M% X& W9 E  增加一个管理员帐户:grant all on *.* to user@localhost identified by "password";: K* u4 k. V( K4 A
  每条语句输入完毕后要在末尾填加分号';',或者填加'\g'也可以;( v) L2 g4 M3 V0 S* R$ r& f' G
  查询时间:select now();
9 P- D# ~( T: J* b$ V& ]8 Q  查询当前用户:select user();
; S# [( ~2 P7 X8 o" A  查询数据库版本:select version();
2 F/ w, f/ q- s7 b; {% q  查询当前使用的数据库:select database();# X% F" k- L6 z3 ?7 p
  & q$ |. K& \  _; s
  1、删除student_course数据库中的students数据表:7 ~" J7 Z6 f5 y' |6 m
  rm -f student_course/students.*  X9 u0 E" @% p1 r
  : i' d" L6 J8 r6 W/ d) |0 C& x0 e( F
  2、备份数据库:(将数据库test备份)
+ v- c) ^# I& {; |$ n  mysqldump -u root -p test>c:\test.txt
2 M+ l3 R% J: M8 K  L7 w  备份表格:(备份test数据库下的mytable表格)
. V- b1 D1 N$ \! h* g) q9 c" {4 z  mysqldump -u root -p test mytable>c:\test.txt: @" @2 ]9 _1 f# T, i1 N
  将备份数据导入到数据库:(导回test数据库)% {  T& l, V; Q! U2 i7 A, k& P  E8 l
  mysql -u root -p test<c:\test.txt5 H! s$ ]7 q: ^$ g$ Q& m
  
  P& o+ A6 `  R- n$ U" i: U/ `  3、创建临时表:(建立临时表zengchao)
7 O9 F& D( j+ r9 Y' y, ]  create temporary table zengchao(name varchar(10));$ s/ K: N$ ~) c- a5 s" D2 ^
  
# _9 Y& X7 W/ R8 \( f6 Y& ^  4、创建表是先判断表是否存在/ m: h+ h: c" U  a( y0 c, D" l
  create table if not exists students(……);! i9 c6 C7 e( I& G
  4 D5 r( M/ b0 K9 W
  5、从已经有的表中复制表的结构
' Q5 S; c2 L  U" S$ e# @  create table table2 select * from table1 where 1<>1;
4 m6 z' ^* A# Y  p/ H2 _  7 L# U7 h) K7 c2 p* e
  6、复制表
$ i$ i- d/ G9 x4 k4 A' @" n# J5 ~  create table table2 select * from table1;
: E, m3 |' _% _' R) Q  - f8 v$ E( U+ ^# E/ o2 Y
  7、对表重新命名
4 d: b9 `9 [0 g$ ?  alter table table1 rename as table2;
. M' u2 l; Z% v$ \& m: i6 D  
) S* R6 u7 t% \! u6 K  8、修改列的类型
3 @) x& H4 q3 C9 X  alter table table1 modify id int unsigned;//修改列id的类型为int unsigned
& [* G0 l4 [( P! V. ]  alter table table1 change id sid int unsigned;//修改列id的名字为sid,而且把属性修改为int unsigned
' K* Q  U( |  ^5 w. w! F  
) }. u: U$ F$ M# T. p; _  9、创建索引
7 w. E1 |% C+ C4 X/ L0 i. S  alter table table1 add index ind_id (id);
; L* H- l/ d3 r  create index ind_id on table1 (id);& P) Q. |, Q  Z2 Y. C
  create unique index ind_id on table1 (id);//建立唯一性索引
. J9 t# n3 a$ Y& N0 w  p9 Q  
+ P% A+ q5 ^. A  10、删除索引$ W* U% A% q+ @/ x: J( }# X
  drop index idx_id on table1;. m0 a. h: C; f4 t
  alter table table1 drop index ind_id;
8 c% W2 N% f* x8 b  8 v! h+ w4 Q# J7 E/ ~: w
  11、联合字符或者多个列(将列id与":"和列name和"="连接)0 o3 B9 H! \* C
  select concat(id,':',name,'=') from students;
/ A; M- S# w! _: J0 {  1 m; G) R5 ]: ^, }( k  h2 o2 |
  12、limit(选出10到20条)<第一个记录集的编号是0>
8 [; u) P5 N( U4 P: `3 K  select * from students order by id limit 9,10;
- O3 K- a- F# Y/ N& t5 `) B1 @  3 p9 d" `' t' u) u. `. q- @6 y  w
  13、MySQL不支持的功能# `' t9 R  S" o1 x
  事务,视图,外键和引用完整性,存储过程和触发器
* ]' T- H( g- s8 l; i1 s# f  
; i  h  [0 m$ `0 c( g2 u  
, f; M2 P, [. }$ K# G  14、MySQL会使用索引的操作符号, u( L5 v) v" D, @+ i
  <,<=,>=,>,=,between,in,不带%或者_开头的like3 p2 ^# T9 n6 [6 _; _
  & F5 G6 \) d7 M0 }7 t  t
  15、使用索引的缺点8 v. |5 P! a4 s9 |3 N9 L( ~) O* x
  1)减慢增删改数据的速度;
/ A! J. H( X' d4 j9 ^  G" J9 g5 t  2)占用磁盘空间;
" C. W- r! Y* W5 O. w  3)增加查询优化器的负担;4 |- u$ O8 W6 {" b6 I2 i: \1 J3 W
  当查询优化器生成执行计划时,会考虑索引,太多的索引会给查询优化器增加工作量,导致无法选择最优的查询方案;
* p3 f1 c$ S) W  
$ q5 G: ^3 d4 D# B1 h# q  16、分析索引效率
$ v7 ^. y" l6 K2 E1 [% J  方法:在一般的SQL语句前加上explain;
2 v5 n& T3 b, E4 W" V  分析结果的含义:( O& X$ \0 d1 A# j) k9 f
  1)table:表名;
+ v# D) \2 Y" A/ }2 {) m/ \  2)type:连接的类型,(ALL/Range/Ref)。其中ref是最理想的;
( T9 h- g& ^( ^, j$ P  3)possible_keys:查询可以利用的索引名;+ Z/ |. s* f% I9 e  M1 [2 c
  4)key:实际使用的索引;8 ~, r  B1 ]+ }* {  q+ B" {
  5)key_len:索引中被使用部分的长度(字节);% ~5 Z  N: e' U
  6)ref:显示列名字或者"const"(不明白什么意思);
( ]" F  {3 }, i2 J8 b7 U  7)rows:显示MySQL认为在找到正确结果之前必须扫描的行数;+ V2 g; f; o% x) f# ^
  8)extra:MySQL的建议;/ Q4 t' T9 l" N+ f
  
7 C1 Z0 _. O* _  17、使用较短的定长列% @0 b% j$ Z* ]0 v
  1)尽可能使用较短的数据类型;; U9 _* K9 m0 R
  2)尽可能使用定长数据类型;
6 C  D/ h3 ^- h/ |/ \5 u, }& B  a)用char代替varchar,固定长度的数据处理比变长的快些;
, E' b8 \8 r: O# |0 E9 v% r9 S  b)对于频繁修改的表,磁盘容易形成碎片,从而影响数据库的整体性能;# g7 k0 u1 [* q- g$ J) P7 K$ R
  c)万一出现数据表崩溃,使用固定长度数据行的表更容易重新构造。使用固定长度的数据行,每个记录的开始位置都是固定记录长度的倍数,可以很容易被检测到,但是使用可变长度的数据行就不一定了;: n4 x9 `( }- q
  d)对于MyISAM类型的数据表,虽然转换成固定长度的数据列可以提高性能,但是占据的空间也大;3 x) E3 G4 y! s8 k
  
0 J) \+ U6 t) d4 v" I  18、使用not null和enum( Q  n. }1 L; q& n* Z$ m; z) o6 r
  尽量将列定义为not null,这样可使数据的出来更快,所需的空间更少,而且在查询时,MySQL不需要检查是否存在特例,即null值,从而优化查询;
3 F! D+ j3 ~' ~/ s- o  如果一列只含有有限数目的特定值,如性别,是否有效或者入学年份等,在这种情况下应该考虑将其转换为enum列的值,MySQL处理的更快,因为所有的enum值在系统内都是以标识数值来表示的;* W# x, H/ W! c) v! i8 D
  : T: ^* s! B& b0 m
  19、使用optimize table
- b, W: E9 T" q2 i. }  对于经常修改的表,容易产生碎片,使在查询数据库时必须读取更多的磁盘块,降低查询性能。具有可变长的表都存在磁盘碎片问题,这个问题对blob数据类型更为突出,因为其尺寸变化非常大。可以通过使用optimize table来整理碎片,保证数据库性能不下降,优化那些受碎片影响的数据表。 optimize table可以用于MyISAM和BDB类型的数据表。实际上任何碎片整理方法都是用mysqldump来转存数据表,然后使用转存后的文件并重新建数据表;
: n: v0 {+ O5 p2 u  
4 c, X8 y: Y' d% o$ {  20、使用procedure analyse()7 g# B8 |$ D# {" S3 c. ^) k: y
  可以使用procedure analyse()显示最佳类型的建议,使用很简单,在select语句后面加上procedure analyse()就可以了;例如:
1 J- ~6 H- x  H8 M/ n  select * from students procedure analyse();
7 _- k2 \) O+ K/ c# d2 a1 K0 c  select * from students procedure analyse(16,256);
- B2 A4 o& `) ]. o  第二条语句要求procedure analyse()不要建议含有多于16个值,或者含有多于256字节的enum类型,如果没有限制,输出可能会很长;
& i5 Q9 D, ^$ g1 |$ h  
; Z' k7 ?1 I) R. u  c  21、使用查询缓存  ^3 F7 k1 T, [$ G  H
  1)查询缓存的工作方式:
& z# P( c% m" L! w3 ?5 e  第一次执行某条select语句时,服务器记住该查询的文本内容和查询结果,存储在缓存中,下次碰到这个语句时,直接从缓存中返回结果;当更新数据表后,该数据表的任何缓存查询都变成无效的,并且会被丢弃。
& N& l* }* t7 W' y; ]  2)配置缓存参数:4 M. a; I, {: w/ [* F, w
  变量:query_cache _type,查询缓存的操作模式。有3中模式,0:不缓存;1:缓存查询,除非与select sql_no_cache开头;2:根据需要只缓存那些以select sql_cache开头的查询;query_cache_size:设置查询缓存的最大结果集的大小,比这个值大的不会被缓存。
8 p% P  G; J3 E% K  
6 v( A5 ]1 c4 p" A  22、调整硬件
+ j' }: u) u/ {# i! S% D  1)在机器上装更多的内存;
4 ~& I* o( Z# v6 v! y% H& H5 o  2)增加更快的硬盘以减少I/O等待时间;" {' x' Y4 m2 a; }
  寻道时间是决定性能的主要因素,逐字地移动磁头是最慢的,一旦磁头定位,从磁道读则很快;
( Y; u8 ~% C: t( J- r! M2 Q  3)在不同的物理硬盘设备上重新分配磁盘活动;8 |8 p* P6 ]9 T* Q; M$ ~: X- v; S
  如果可能,应将最繁忙的数据库存放在不同的物理设备上,这跟使用同一物理设备的不同分区是不同的,因为它们将争用相同的物理资源(磁头)。" S. y( ~: u5 @1 i: O
回复

使用道具 举报

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

本版积分规则

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