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

mysql常用命令

[复制链接]
跳转到指定楼层
楼主
发表于 2012-9-13 16:32:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
启动:net start mySql;* f( B5 C+ p2 Z5 t9 q
  进入:mysql -u root -p/mysql -h localhost -u root -p databaseName;4 q7 x3 o8 ]& J: U5 D/ k1 j% ^
  列出数据库:show databases;) X. q7 C9 ^: n2 @+ y
  选择数据库:use databaseName;7 F) S$ d, K) g& g2 E' k7 B
  列出表格:show tables;
! O- {- B1 W# t- K, Y  显示表格列的属性:show columns from tableName;3 b8 D* j* U+ I( ?$ ^* p
  建立数据库:source fileName.txt;5 L% q( c  d$ T  a, d) W! @' G
  匹配字符:可以用通配符_代表任何一个字符,%代表任何字符串;
* x; k( W: h( b% y$ A  增加一个字段:alter table tabelName add column fieldName dateType;4 c3 h3 E) o) |) R( D
  增加多个字段:alter table tabelName add column fieldName1 dateType,add columns fieldName2 dateType;  I( d* q: ?4 \7 M/ x( g
  多行命令输入:注意不能将单词断开;当插入或更改数据时,不能将字段的字符串展开到多行里,否则硬回车将被储存到数据中;/ S7 d0 F0 h9 Z0 Y( I+ X% v
  增加一个管理员帐户:grant all on *.* to user@localhost identified by "password";
% {/ ?6 w8 p' e7 T' t" L  每条语句输入完毕后要在末尾填加分号';',或者填加'\g'也可以;4 g# z. \5 U$ s' v3 K
  查询时间:select now();
" n9 H7 O% F: J8 j  查询当前用户:select user();
9 p* J) R1 f& H5 v  查询数据库版本:select version();
* a0 B* v) x; t  查询当前使用的数据库:select database();
- L, j$ R/ {0 o8 V3 g  , H# [0 _9 m' Q# @5 I
  1、删除student_course数据库中的students数据表:
) P: T, o2 \: X5 [$ `& ]  rm -f student_course/students.*
+ V: H5 _1 e) U8 ~& ]; y' r  9 }0 c# }; V6 Q( V
  2、备份数据库:(将数据库test备份)
) V- E: D$ G) n$ h  mysqldump -u root -p test>c:\test.txt1 l& A5 C$ j2 G/ j) D: O5 H
  备份表格:(备份test数据库下的mytable表格)
5 s/ N' i5 K+ T1 i, j  mysqldump -u root -p test mytable>c:\test.txt, |% n& s! X6 k
  将备份数据导入到数据库:(导回test数据库)
7 _/ T$ g3 Y% j, _  mysql -u root -p test<c:\test.txt
$ |' X9 U8 R2 W: L: f; [  / O0 X% r( x0 I  c  n3 A0 E
  3、创建临时表:(建立临时表zengchao)0 ?4 X3 x3 |: M# e0 {3 ]
  create temporary table zengchao(name varchar(10));) a5 ?  C( E! \4 d* ~: O
  / f2 X/ Y' Y) c* s  G
  4、创建表是先判断表是否存在6 p* W7 N  `- C, h2 c
  create table if not exists students(……);" s9 W3 K5 K0 f" q0 t/ ~" f0 E
  
) T+ Z) w' n$ c( w& r  5、从已经有的表中复制表的结构3 U* P4 D9 ?, U$ d, {+ N- r( J& U
  create table table2 select * from table1 where 1<>1;; W8 o5 ?# u' z2 X, n$ c! o- c: j
  
3 j' u0 q) V; L0 y! j# i5 i& f  6、复制表
) z  Q8 B/ w1 J6 c" K% i% Z  create table table2 select * from table1;; O( y& M; y7 Z+ V- I! c* X
  
/ n- \- X. Z  S' a/ g' v( p  7、对表重新命名
% @! h) A$ h3 |) e8 e1 ]1 a  alter table table1 rename as table2;
9 |  B) ^, {* Z$ r6 r2 M  : V. l" X5 S) C& `$ g$ b% |
  8、修改列的类型9 g- Y6 J9 m3 B/ ~2 s( k3 U
  alter table table1 modify id int unsigned;//修改列id的类型为int unsigned
' X( r5 H+ Y. i  alter table table1 change id sid int unsigned;//修改列id的名字为sid,而且把属性修改为int unsigned% V1 Y! z2 C6 {7 N
  ) J$ I) U% E# g
  9、创建索引" \" G+ b% n. Y2 ]+ A# q
  alter table table1 add index ind_id (id);/ }1 P4 N, x8 H. a1 J8 r
  create index ind_id on table1 (id);
0 g! P. h9 M1 v: b6 Y; W  create unique index ind_id on table1 (id);//建立唯一性索引4 T' V5 E2 S2 E+ ^, L
  ( e* O* p7 J3 a' Z: m9 r
  10、删除索引
$ n& T* o. B1 |1 s- d% z3 g$ x  drop index idx_id on table1;' s3 S$ y! E; N! X/ `- o& e' o
  alter table table1 drop index ind_id;+ x' Z, \4 |! W  O
  0 K4 [- u: M; D2 w2 ]
  11、联合字符或者多个列(将列id与":"和列name和"="连接)% ^. |( h8 R! x5 V7 j' J( X
  select concat(id,':',name,'=') from students;
" u' n: _! w0 C: Q  & b2 C4 }$ m- o3 P) F! }& }7 a+ O
  12、limit(选出10到20条)<第一个记录集的编号是0>( S2 j3 X/ `  ^: m2 Y
  select * from students order by id limit 9,10;
7 Z3 V+ F. u8 y/ A( M  
& @8 r1 F+ l( M$ P  13、MySQL不支持的功能
% `  L' ~: s9 b# {( w, R6 h  g  事务,视图,外键和引用完整性,存储过程和触发器
$ k& i$ b$ q9 K) Z  
5 B0 b. a: i7 X; H' z  
: Q3 _9 w' Y2 r. `2 X6 h" t  14、MySQL会使用索引的操作符号
( ]* F' u; U, n2 d  n) ]1 |  <,<=,>=,>,=,between,in,不带%或者_开头的like
7 w7 M/ ?) K2 _! l  ! ^+ H% _0 J. c% k9 U; ~. C
  15、使用索引的缺点& m/ `* D5 y6 @7 i* B3 Q7 ?0 f
  1)减慢增删改数据的速度;
  Q7 K, W' a6 i/ `' ^* I! R1 V  2)占用磁盘空间;
% n# b7 E3 a) @  3)增加查询优化器的负担;; L0 g& [" f( U" G8 X) n$ n
  当查询优化器生成执行计划时,会考虑索引,太多的索引会给查询优化器增加工作量,导致无法选择最优的查询方案;+ U9 j+ d2 W$ E) b  B$ i
  
5 b4 T4 L  x& ?4 q, l: M) ?/ V  16、分析索引效率
, L& ]* F4 ]2 R6 k0 f  方法:在一般的SQL语句前加上explain;
/ R% a4 L; |4 X4 E  分析结果的含义:
( S+ a0 ?$ s% C/ }  1)table:表名;! f  V% q# y5 P
  2)type:连接的类型,(ALL/Range/Ref)。其中ref是最理想的;
! O) W; D5 K" |% m6 D  3)possible_keys:查询可以利用的索引名;
! _: w9 ?7 t  |, @0 H  4)key:实际使用的索引;
) ]7 l! b) M5 x) Y  5)key_len:索引中被使用部分的长度(字节);
6 S# ~4 P2 U6 R+ y! _  6)ref:显示列名字或者"const"(不明白什么意思);
& U3 l3 O* U  T) [" ]8 V' Y8 C7 h  7)rows:显示MySQL认为在找到正确结果之前必须扫描的行数;
2 ^( Z& x' e5 t+ J* I9 K( {  8)extra:MySQL的建议;
8 I" x% w" @. y  , `* F% A' v' C4 r3 [/ E/ ?" k
  17、使用较短的定长列- Z. L; h, u+ v9 r
  1)尽可能使用较短的数据类型;4 z4 }1 x$ k# I& t9 [
  2)尽可能使用定长数据类型;
: X& E$ p; a* T/ m- c0 I/ X% q  a)用char代替varchar,固定长度的数据处理比变长的快些;
/ F8 ?) j: B- Z! u0 ]/ C  b)对于频繁修改的表,磁盘容易形成碎片,从而影响数据库的整体性能;. h& t. r/ _4 b7 K
  c)万一出现数据表崩溃,使用固定长度数据行的表更容易重新构造。使用固定长度的数据行,每个记录的开始位置都是固定记录长度的倍数,可以很容易被检测到,但是使用可变长度的数据行就不一定了;
' p, ?* W' x  g2 e& T6 @4 m3 d  d)对于MyISAM类型的数据表,虽然转换成固定长度的数据列可以提高性能,但是占据的空间也大;4 H, D5 Z# S- c; @
  / n/ M1 s0 F) ~( [
  18、使用not null和enum
9 A- `3 [6 n! Y5 _  尽量将列定义为not null,这样可使数据的出来更快,所需的空间更少,而且在查询时,MySQL不需要检查是否存在特例,即null值,从而优化查询;
  Q& I* L- Z; g2 X7 H  I  如果一列只含有有限数目的特定值,如性别,是否有效或者入学年份等,在这种情况下应该考虑将其转换为enum列的值,MySQL处理的更快,因为所有的enum值在系统内都是以标识数值来表示的;; l5 v5 s' r% Q4 v% T) I' A
  & L! {$ q% r" C3 B- n3 I$ V
  19、使用optimize table) b- h& I7 L: L; \2 P8 l. |) W$ S
  对于经常修改的表,容易产生碎片,使在查询数据库时必须读取更多的磁盘块,降低查询性能。具有可变长的表都存在磁盘碎片问题,这个问题对blob数据类型更为突出,因为其尺寸变化非常大。可以通过使用optimize table来整理碎片,保证数据库性能不下降,优化那些受碎片影响的数据表。 optimize table可以用于MyISAM和BDB类型的数据表。实际上任何碎片整理方法都是用mysqldump来转存数据表,然后使用转存后的文件并重新建数据表;0 w+ ~  u: k4 ~8 J
  # _' O3 |( u+ Z/ G! c
  20、使用procedure analyse()
" f, {3 Q  T6 v! E3 i! i7 T, L4 z, I  可以使用procedure analyse()显示最佳类型的建议,使用很简单,在select语句后面加上procedure analyse()就可以了;例如:7 N2 [& X! H8 O7 A  W
  select * from students procedure analyse();
9 x' j! C2 X5 D8 u  select * from students procedure analyse(16,256);- L/ j3 a" y, ]; e+ M
  第二条语句要求procedure analyse()不要建议含有多于16个值,或者含有多于256字节的enum类型,如果没有限制,输出可能会很长;
! _% I2 H5 @+ ^% M0 _+ P/ Y  
$ \- Q! E) I# B" q7 j  |6 e  21、使用查询缓存
7 `, S" O5 ]1 N& s, [; e  1)查询缓存的工作方式:$ `! M: {" Y5 v; ^5 w
  第一次执行某条select语句时,服务器记住该查询的文本内容和查询结果,存储在缓存中,下次碰到这个语句时,直接从缓存中返回结果;当更新数据表后,该数据表的任何缓存查询都变成无效的,并且会被丢弃。
' p) z5 v* ~  o' d: ]; Z% R  2)配置缓存参数:* B3 c; g+ |+ f6 v6 l
  变量:query_cache _type,查询缓存的操作模式。有3中模式,0:不缓存;1:缓存查询,除非与select sql_no_cache开头;2:根据需要只缓存那些以select sql_cache开头的查询;query_cache_size:设置查询缓存的最大结果集的大小,比这个值大的不会被缓存。) r0 e9 R1 p; k7 D+ c
  
  i; q) ?. F# L( D# l4 m  22、调整硬件* Y, `' d1 s& s3 v* T' W
  1)在机器上装更多的内存;
" C6 u/ i% t1 n& i% b/ }  2)增加更快的硬盘以减少I/O等待时间;
2 e7 w) ]# ~1 a6 V& U& V  寻道时间是决定性能的主要因素,逐字地移动磁头是最慢的,一旦磁头定位,从磁道读则很快;
7 @% S3 c. y$ ]6 V8 |$ U8 Z  3)在不同的物理硬盘设备上重新分配磁盘活动;
/ A+ e! z' B! F& O9 G  如果可能,应将最繁忙的数据库存放在不同的物理设备上,这跟使用同一物理设备的不同分区是不同的,因为它们将争用相同的物理资源(磁头)。& X" }5 T9 c1 W8 }
回复

使用道具 举报

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

本版积分规则

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