数据库的操作
使用数据库
USE db_name; //指定某数据库为默认数据库
新建数据库
CREATE DATABASE [IF NOT EXIST/*不存在时创建*/] db_name
[CHARACTER SET charset/*指定字符集*/]
[CHOLLATE chollation/*指定排序规则*/];
新建数据库后,会在mysql的数据目录新建对应的子目录,并在子目录中新建db.opt文件来存储数据库信息。可以通过以下语句查看数据库的定义:
SHOW CREATE DATABASE db_name;
效果如下:
数据库删除
DROP DATABASE db_name;
数据库变更
ALTER DATABASE db_name
[CHARACTER SET charset/*指定字符集*/]
[CHOLLATE chollation/*指定排序规则*/]
存储引擎
查询可用的引擎
show engines;
或
select * from information_schema.engines;
结果如下:
其中,Support表示是否支持,Transaction表示是否支持事务,XA表示支持是否分布式事务处理,Savepoints表示是否支持部分事务回滚。不管使用那种引擎,在新建表时,均会在对应数据库的子目录中穿件table_name.frm文件。另外,有的存储引擎都有自己特定的文件扩展名:
存储引擎 | 文件 |
---|---|
MyISAM | .MYD(数据),.MYI(索引) |
MERGE | .MRG(各成员MyISAM数据表的名字构成的清单) |
InnoDB | .ibd(数据和索引) |
ARCHIVE | .ARZ(数据),.ARM(元数据) |
CSV | .CSV(数据),.CSM(元数据) |
不同的存储引擎对格式文件和数据表的处理方式如下:
- MEMORY数据表放在内存中,不占用任何硬盘空间;
- 默认情况,InnoDB把表数据和索引存储到共享表空间中,共享一个存储空间,除非,显示的为数据表声明自己的表空间;
- Falcon把表数据和索引放到默认表空间中,除非根据自己需要新建表空间
- BLACKHOLE和EXAMPLE引擎不存储任何数据,无需任何文件
- FEDERATED引擎用于访问远程mysql的数据表,引擎本身不创建任何文件
存储引擎简介
MyISAM引擎
MyISAM是MySql的默认存储引擎,它提供了键压缩功能,与其他引擎相比,它为AUTO_INCREATEMENT数据列提供了更多的功能。MyISAM通过FULLTEXT索引可以支持全文检索,支持空间数据类型和SPECIAL索引。
MERGE引擎
MERGE引擎可以同时查询多个MyISAM数据表,相当于合并了多个成员数据库,但是它要求数据表必须具备一样的结构。
MEMORY引擎
数据完全存储在内存中,检索数据的速度快。但是,数据不具备持久性,内存掉电就会丢失。同时,MEMORY存储引擎默认使用散列索引,对相等比较效率较高,但是范围查找速度慢。它要求数据表中的字段必须为固定长度的字段。
InnoDB引擎
支持事务的提交和回滚;
系统崩溃后可自动恢复;
外键及引用完整性支持,支持递归删除更新;
支持行级别锁和多版本机制,并发性能好;
FALCON引擎
存储时对数据压缩,检索时再解压缩,以节约存储空间;
其余同InnoDB
FEDREATED引擎
用于访问其他MySql服务器管理的数据。
NDB引擎
MySql集群存储引擎,
存储引擎的二进制可移植性
二进制可移植性:直接通过拷贝硬盘文件到其他机器就能正常使用。
- MyISAM和InnoDB数据表的存储格式与机器无关,具备二进制可移植性;前提条件是:机器使用的是二进制补码整数算法和IEEE浮点格式(一般机器均支持)
- MERGE的可移植性取决于它包含的MyISAM;
- MEMORY不具备,其数据均在内存中;
- FALCON日志和表空间文件的存储与机器相关,移植性取决于机器硬件特性是否相同;