存储引擎:
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;