mysql存储引擎和数据导出(入)

来源:互联网 发布:java构造函数重载定义 编辑:程序博客网 时间:2024/04/28 15:49

存储引擎:

1:查看支持格式

show variables like  'table_type';

show engines \G;

create table test(id int(255) NOT NULL AUTO_INCREMENT,PRIMARY KEY (id) ) engine=myisam default charset=gbk;  创建一个存数引擎是myisam的表 (engine=innoDB/memory等等设置其他的存储引擎)

2:修改引擎:

alter  table test engine=innodb  ;  原是myisam改为innodb

3:myisam特点

访问速度快 主要针对insert 和select为主的应用,完整和并发性要求不高 常用的格式,mysql默认

check table test ;  检查表健康

optimize table test  ;定期清理频繁更新删除操作产生的碎片

4:innodb特点(有用到时候再细看)

频繁删除、更新时(降低该操作导致的锁) 准确性高 提供提交、回滚、崩溃恢复的事物安全,但写处理差 占内存(数据和索引)

常用于:用于财务、计数系统。

自增长字段不受插入影响,且必须是索引

支持外键:子表和父表要有对应的索引 可以规定子表和父表关于操作数据是否同步操作(149P)

5:memory特点

快!因为在内存中 服务关闭数据丢失 ,常用于:小表、中间数据保存

create table test2 engine=memory select name,sal from test1 group by sal;

show table status like 'test1'  \G;  查询该表详细信息

create index mem_hash USING HASH on test2 (id);    建立hash索引 如果把HSAH换成BTREE就是用BTREE索引

show index from test2 \G  查询索引详细信息

可以在服务启动时加载数据源和free数据表 --init--file (用到时候再细看)

6:MERGE特点

是一组myisam表的组合,这些myisam表结构必须相同,对MERGE可以进行更新、查询、删除等操作。例如查询会把所有myisam成员表数据全部显示,插入删除不确定会具体到某个表。

管理数据仓库,很多表合一起:2006、2007、2008。。。。

字符集:

汉字字符集:

GB2312     GB13000    GBK(常用)      UTF-8 (mysql)   GB18030

对于mysql来说字符集就是uft-8, 如果中文量多会用GBK;因为GBK每个汉字2个字节 uft8每个汉字3个字节(减少磁盘I/O,db-cache,和网络传输时间)。如果是少量汉字用uft-8更好。

mysql字符集:

show character set;      看mysql 支持的字符集

show collation like 'gdb%';  查看gdb校对规则(规则:以字符集名开始‘_语言名’_ci(大小写不敏感)_cs(大小写敏感)_bin(二元,进一步比较(cs)))

vim /etc/my.cnf  设置字符集 :default-character-set = utf8;   这时候如果insert的数据时乱码 就需要转成uft8 

mysqld --default-character-set=gbk              ./configure --with-charset=gbk        启动和编译是设置

show variables like 'character_set_server';  查看server字符集  'collation_server' 查询server规则检验

show variables like 'character_set_database';   查看当前数据库字符集

show create table test \G  ;   查看表字符集

set names

导出导入mysql(修改字符集)

mysqldump -uroot -p  --default-character-set=utf8(新) -d databasename>table.sql   :设置以uft8字符集链接  -d只导出表结构不导数据  (手动修改table.sql的字符集为新字符集)

mysqldump -uroot -p  --quick --no-create-info --extended-insert --default-character-set=gbk(原) databasename>data.sql 

导出所有记录:--quick 用来转储大的表   --extended-insert 优化insert重载时候可以快速插入 --no-create-info 不写重新创建每个转储表的CREATE TABLE语句 指定utf8

手动修改SET NAMES gbk为uft8    使用新字符集创建数据库:create database test2 default charset utf8;

导入表结构:mysql -uroot -p  test2<table.sql

导入数据源:mysql -uroot -p  test2<data.sql

(gbk字库>gb2312  转储时候可能会丢失gb2312不支持的那部分汉字数据)

 

用文件导出sql数据:

>select name, age, time from test_table into outfile '/tmp/lyy.txt';   //数据导出到/tmp/lyy.txt文件中

上面文件导入数据库:

>load data infile '/tmp/lyy.txt' into table test_table;

原创粉丝点击