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

mysql常用命令

[复制链接]
跳转到指定楼层
楼主
发表于 2012-9-13 16:32:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
启动:net start mySql;" U; [# Q: d9 V" A+ s3 Y: o% |
  进入:mysql -u root -p/mysql -h localhost -u root -p databaseName;
! i( v! \7 ~4 f2 P7 s) W  列出数据库:show databases;
, N6 L6 O* Z, O/ }7 b6 t% X  选择数据库:use databaseName;
% Z& e  p' s: Z8 m+ i/ @# S7 t  列出表格:show tables;+ U4 ~; Y+ T' i" Q6 F
  显示表格列的属性:show columns from tableName;) x5 F2 a& l1 c7 c, l
  建立数据库:source fileName.txt;8 t' U7 L) f% S
  匹配字符:可以用通配符_代表任何一个字符,%代表任何字符串;* s% D* {$ a4 X/ ?( M
  增加一个字段:alter table tabelName add column fieldName dateType;3 \) U# Z1 _) }+ w
  增加多个字段:alter table tabelName add column fieldName1 dateType,add columns fieldName2 dateType;
# J3 N; K% s- J7 E$ ~  多行命令输入:注意不能将单词断开;当插入或更改数据时,不能将字段的字符串展开到多行里,否则硬回车将被储存到数据中;5 D! E4 U# `- n3 ?" y) w
  增加一个管理员帐户:grant all on *.* to user@localhost identified by "password";: S; ]& L' ^! P8 f$ W
  每条语句输入完毕后要在末尾填加分号';',或者填加'\g'也可以;
$ a. o- F7 k5 u  查询时间:select now();% X9 O+ n' Z+ P$ `
  查询当前用户:select user();
; n( N' _  @9 v( C  查询数据库版本:select version();
& T1 i( E2 S4 y, }  查询当前使用的数据库:select database();
# ]* G1 S0 x% U! u5 Y% q8 M  S$ `  
% V  \$ B) i( A. O. `! Q  1、删除student_course数据库中的students数据表:
6 u) e! h9 a: a; _8 L, ^7 T  rm -f student_course/students.*
* U* a6 N$ @: \2 X  
1 j, X, T" j: r& ?4 o; R" V; b5 o. J  2、备份数据库:(将数据库test备份)
) g8 N# r% X$ f6 T: x) v! Z  mysqldump -u root -p test>c:\test.txt
9 f$ [- e: k+ |( u' F+ p( L7 A6 @  备份表格:(备份test数据库下的mytable表格)
$ K& U, j' U/ W1 e" D% m  mysqldump -u root -p test mytable>c:\test.txt
: q4 W  Q2 ^8 D. Q  将备份数据导入到数据库:(导回test数据库)$ M. e" M+ ^. B
  mysql -u root -p test<c:\test.txt/ `$ N& U. V3 e
  
$ G) r, V2 H; y) J! M% D9 w0 h  3、创建临时表:(建立临时表zengchao)
* X/ x: @0 U  `$ Q2 h8 c  create temporary table zengchao(name varchar(10));
: J2 X  d% i( C) l  
7 M% A$ x/ B2 M  4、创建表是先判断表是否存在" U! P* x0 C1 o/ J8 M6 u1 ?( n
  create table if not exists students(……);% I3 l4 H) I# V- `
  ; V  d+ j! S- K/ o8 \! D2 V
  5、从已经有的表中复制表的结构) W( T+ ]) l/ i$ N$ S
  create table table2 select * from table1 where 1<>1;) _, F( c, T+ d0 z) J
  * @. G5 f  Q( K6 O5 g: ^( R
  6、复制表6 `, U' Z% w8 n# s9 c
  create table table2 select * from table1;
" P# Y1 k, \" n+ {- D$ d  
7 N# R" u3 o5 }# U* m5 G- m  7、对表重新命名
5 h' x( f3 J: ~1 w  alter table table1 rename as table2;
0 [- Y+ d+ F3 Y! J2 O  R* n  6 [8 c" K5 R" C, }
  8、修改列的类型2 h2 a/ z3 r& |$ b: a; ^
  alter table table1 modify id int unsigned;//修改列id的类型为int unsigned+ {6 _. D( c. o1 \# j
  alter table table1 change id sid int unsigned;//修改列id的名字为sid,而且把属性修改为int unsigned
2 D" l/ z+ X$ V3 M  
( q3 B4 t- f' L  9、创建索引
" J$ e2 P' r8 P! Y; h8 E% T  alter table table1 add index ind_id (id);* {0 ~) C3 i( P  t6 Z
  create index ind_id on table1 (id);
) b9 J& m) C3 _9 h  create unique index ind_id on table1 (id);//建立唯一性索引2 j5 A1 H) J3 K" s+ l7 `% e
  2 M, W' b; f/ z% t# ]& r
  10、删除索引  {% |- M  ^, g0 g% M
  drop index idx_id on table1;
1 q; Y; h& k  `, q  alter table table1 drop index ind_id;; T9 d* w" E! s2 M6 U$ h5 X
  
) Q# w" B& ~" N/ A9 [  11、联合字符或者多个列(将列id与":"和列name和"="连接)+ I* h' I2 M$ t
  select concat(id,':',name,'=') from students;
; n& @  f; U7 J, v- o3 E  
& B' P. v2 e3 x$ h* H: A8 ~) Q  12、limit(选出10到20条)<第一个记录集的编号是0>
0 N' ~1 c# j, d; B, W  select * from students order by id limit 9,10;, R% C" \$ A( ^- y" _
  9 s  a8 k( W# \- x* k4 u7 z5 [
  13、MySQL不支持的功能6 e1 F4 r* L, E9 J' a4 G. D
  事务,视图,外键和引用完整性,存储过程和触发器
! a' k3 c2 A0 d7 [3 U. ?  7 z$ m2 N. k! u* N7 J+ y
  
. [( y: }: X, o  ?/ J( G' h  14、MySQL会使用索引的操作符号6 l8 ^! B% H: t  ?8 x) L  m
  <,<=,>=,>,=,between,in,不带%或者_开头的like' Z7 l3 P' S+ A9 }; Y
  
5 w4 `5 G: r' V5 l  15、使用索引的缺点
9 Z) ~/ Y/ [1 G  1)减慢增删改数据的速度;
/ t* \1 |: f7 V& l; B  2)占用磁盘空间;
" f! W% k* c9 ?4 C  Q. W! u  3)增加查询优化器的负担;$ w+ }' [. h/ J, p9 g( C2 r2 r3 _
  当查询优化器生成执行计划时,会考虑索引,太多的索引会给查询优化器增加工作量,导致无法选择最优的查询方案;
: J+ u: f* T+ ^# Y5 U  # P7 Y; X2 F/ B$ t( q9 }
  16、分析索引效率  V1 X0 H9 E0 U! r; ^1 Y
  方法:在一般的SQL语句前加上explain;
. `+ J' v9 }2 z  分析结果的含义:/ _1 S4 W4 L7 f/ E$ U$ j4 q
  1)table:表名;
) e+ w5 h! r  W/ \3 E+ L7 V" s: }  2)type:连接的类型,(ALL/Range/Ref)。其中ref是最理想的;
& A9 G5 x$ f5 B5 T, s: C  3)possible_keys:查询可以利用的索引名;
' m" F0 h& M7 u) L* {; e7 G  4)key:实际使用的索引;
$ I, ~% [" h9 M) G+ s' u  5)key_len:索引中被使用部分的长度(字节);
: r+ S' e' _* Y; E9 q  6)ref:显示列名字或者"const"(不明白什么意思);% L6 j/ i, `$ N' g: B5 P/ X
  7)rows:显示MySQL认为在找到正确结果之前必须扫描的行数;
- w$ E2 Y4 e/ h5 a' Y) s+ M3 D  8)extra:MySQL的建议;
" m3 ]0 }  F0 P# [( v* d6 F  
2 V2 O4 @5 w3 E- [# ]  17、使用较短的定长列
8 v; P2 e: V' M+ [  1)尽可能使用较短的数据类型;
5 l) h1 e$ d9 ^# g8 Q5 M! Z  2)尽可能使用定长数据类型;6 T. z: @7 d) A
  a)用char代替varchar,固定长度的数据处理比变长的快些;& b$ z9 Z5 a" v$ K8 h' t3 o: Z
  b)对于频繁修改的表,磁盘容易形成碎片,从而影响数据库的整体性能;- m8 [- ~2 ]* D
  c)万一出现数据表崩溃,使用固定长度数据行的表更容易重新构造。使用固定长度的数据行,每个记录的开始位置都是固定记录长度的倍数,可以很容易被检测到,但是使用可变长度的数据行就不一定了;
# D7 ~" ?0 h6 T5 _  d)对于MyISAM类型的数据表,虽然转换成固定长度的数据列可以提高性能,但是占据的空间也大;
) [/ ~' f% t8 F. m! w  
1 ]4 K6 m& R1 \4 N* H3 K  18、使用not null和enum6 {  W2 p; E% ~  E
  尽量将列定义为not null,这样可使数据的出来更快,所需的空间更少,而且在查询时,MySQL不需要检查是否存在特例,即null值,从而优化查询;, s4 t1 y- S  ^
  如果一列只含有有限数目的特定值,如性别,是否有效或者入学年份等,在这种情况下应该考虑将其转换为enum列的值,MySQL处理的更快,因为所有的enum值在系统内都是以标识数值来表示的;; i3 S+ [; w' h6 z$ T
  
8 t) T* P# v4 O$ P  19、使用optimize table
4 T9 ~- U8 J+ E: L  对于经常修改的表,容易产生碎片,使在查询数据库时必须读取更多的磁盘块,降低查询性能。具有可变长的表都存在磁盘碎片问题,这个问题对blob数据类型更为突出,因为其尺寸变化非常大。可以通过使用optimize table来整理碎片,保证数据库性能不下降,优化那些受碎片影响的数据表。 optimize table可以用于MyISAM和BDB类型的数据表。实际上任何碎片整理方法都是用mysqldump来转存数据表,然后使用转存后的文件并重新建数据表;3 Z1 V' f1 T: o+ w2 E
  
; o' C& ]) n4 e1 s5 H  20、使用procedure analyse(). [( Z3 A' L5 M
  可以使用procedure analyse()显示最佳类型的建议,使用很简单,在select语句后面加上procedure analyse()就可以了;例如:
' U- Z4 T1 \- ]: }  select * from students procedure analyse();
+ A: `; e% |( k" w6 e- y. \  select * from students procedure analyse(16,256);
0 N( W9 _: ~( Q2 ~3 n  第二条语句要求procedure analyse()不要建议含有多于16个值,或者含有多于256字节的enum类型,如果没有限制,输出可能会很长;  D$ v% Q8 u4 O8 `6 [$ z
  
; a) ^9 S$ k" _: S- v& {  21、使用查询缓存& G9 \0 r, `) |
  1)查询缓存的工作方式:
6 M) d2 t* |( T" h' q  第一次执行某条select语句时,服务器记住该查询的文本内容和查询结果,存储在缓存中,下次碰到这个语句时,直接从缓存中返回结果;当更新数据表后,该数据表的任何缓存查询都变成无效的,并且会被丢弃。: A! z( w4 }  Z: `
  2)配置缓存参数:2 U4 h( l6 M6 N* @; H: [( f  r5 q
  变量:query_cache _type,查询缓存的操作模式。有3中模式,0:不缓存;1:缓存查询,除非与select sql_no_cache开头;2:根据需要只缓存那些以select sql_cache开头的查询;query_cache_size:设置查询缓存的最大结果集的大小,比这个值大的不会被缓存。
' H0 J# @1 h! e7 H4 G! ]  # T0 M# \6 P8 j# R. X! N
  22、调整硬件
. d9 w' \1 h: M  1)在机器上装更多的内存;
, w+ N. B5 `. V& y- h) _  2)增加更快的硬盘以减少I/O等待时间;
& S. b! |7 c9 h& ]  寻道时间是决定性能的主要因素,逐字地移动磁头是最慢的,一旦磁头定位,从磁道读则很快;
% ^2 p8 [, E. ~+ L/ H( s1 W  3)在不同的物理硬盘设备上重新分配磁盘活动;
3 ?' |% u7 Z) z  y( G7 A  如果可能,应将最繁忙的数据库存放在不同的物理设备上,这跟使用同一物理设备的不同分区是不同的,因为它们将争用相同的物理资源(磁头)。
+ N& n! o9 H1 [. n' Q/ y" @1 Q
回复

使用道具 举报

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

本版积分规则

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