一、InnoDB特点
优点:
1、支持事务
2、行锁
3、支持外键
缺点:
1、不支持全文索引
二、MyIsaM
BLOB和TEXT列可以被索引。
可以把数据文件和索引文件放在不同目录,用DATA DIRECTORY和INDEX DIRECTORY选项CREATE TABLE以获得更高的速度
mysql备份:
1:mysqldump
几个常用用例:
1.导出整个数据库
mysqldump -u 用户名 -p 数据库名 > 导出的文件名
mysqldump -u wcnc -p smgp_apps_wcnc > wcnc.sql
2.导出一个表
mysqldump -u 用户名 -p 数据库名 表名> 导出的文件名
mysqldump -u wcnc -p smgp_apps_wcnc users> wcnc_users.sql
3.导出一个数据库结构
mysqldump -u wcnc -p -d --add-drop-table smgp_apps_wcnc >d:\wcnc_db.sql
-d 没有数据 --add-drop-table 在每个create语句之前增加一个drop table
4.导入数据库
常用source 命令
进入mysql数据库控制台,
如mysql -u root -p
mysql>use 数据库
然后使用source命令,后面参数为脚本文件(如这里用到的.sql)
mysql>source d:\wcnc_db.sql
表复制:
CREATE TABLE A LIKE B
此种方式在将表B复制到A时候会将表B完整的字段结构和索引复制到表A中来。
如果想复制数据可以在创建后用:
insert into table A select * from B where ...
CREATE TABLE A AS SELECT x,x,x,xx FROM B LIMIT 0
此种方式只会将表B的字段结构复制到表A中来,但不会复制表B中的索引到表A中来。这种方式比较灵活可以在复制原表表结构的同时指定要复制哪些字段,并且自身复制表也可以根据需要增加字段结构,及复制数据
两种方式在复制表的时候均不会复制权限对表的设置。比如说原本对表B做了权限设置,复制后,表A不具备类似于表B的权限。
MySQL查看和修改表的存储引擎
1 查看系统支持的存储引擎
show engines;
2 查看表使用的存储引擎
两种方法:
a、show table status from db_name where name='table_name';
b、show create table table_name;
如果显示的格式不好看,可以用\g代替行尾分号
有人说用第二种方法不准确,我试了下,关闭掉原先默认的Innodb引擎后根本无法执行show create table table_name指令,因为之前建的是Innodb表,关掉后默认用MyISAM引擎,导致Innodb表数据无法被正确读取。
3 修改表引擎方法
alter table table_name engine=innodb;
4 关闭Innodb引擎方法
关闭mysql服务: net stop mysql
找到mysql安装目录下的my.ini文件:
找到default-storage-engine=INNODB 改为default-storage-engine=MYISAM
找到#skip-innodb 改为skip-innodb
启动mysql服务:net start mysql
http://www.cnblogs.com/ggjucheng/archive/2012/11/03/2752082.html
如何执行一个mysql的sql脚本文件
平时sql语句比较短的情况下,可以通过在mysql shell 界面下一条条的执行并查看输出结果 。如果sql语句比较多的情况下,这种方法就不现实了 。只能通过直接执行sql文件的方式 。
方法一:mysql 调用法
操作方式如下:
mysql –u用户名–p密码–D数据库<【sql脚本文件路径全名】
如果想输出到文件,可以按下面的方式执行:
mysql –uroot –p123456 -Dtest<d:\test\ss.sql>d:\dd.txt
注:该方法在windows和linux平台下都可以 。
方法二:source 命令法
该方法是先登陆进入mysql控制台,并通过source 命令调用sql文件 ,如:
mysql –uroot –p123456 -Dtest mysql> source /opt/test.sql
查看:http://dev.mysql.com/doc/refman/5.1/zh/client-side-scripts.html#batch-commands