MySQL存储引擎--InnoDB
2016-03-26 20:38
337 查看
InnoDB是MySQL数据库的一种存储引擎。InnoDB给MySQL的表提供了事务,回滚,奔溃修复能力和多版本并发控制的事务安全。
当然,MySQL刚开始出来的时候是没有这个引擎的,从3.23.34开始包含InnoDB的存储引擎。
InnoDB是MySQL上第一个提供外键约束的表引擎。而且InnoDB对事务的处理的能力,也是MySQL其他引擎所无法与之比拟的。
一般情况下,我们自己安装的MySQL的默认存储引擎就是InnoDB。
InnoDB存储引擎中支持自动增长列AUTO_INCREMENT。自动增长列的值不能为空,且值必须唯一。MySQL中规定自增列必须为主键。
在插入值时,如果自动增长列不输入值,则插入的值为自动增长后的值;
如果输入的值为0或空(NULL),则插入的值也为自动增长后的值;
如果插入某个确定的值,且该值在前面没有出现过,则可以直接插入。
InnoDB存储引擎支持外键,foreign key。外键所在表的为子表,外键所依赖的表为父表。父表中被子表外键关联的字段必须是主键。[b]当删除,更新父表的某条信息时,子表也必须要有相应的改变。[/b]
OK,关于上面这一点,我自己还真的没注意过,这里我们来实践一下,我们先来创建一个简单的test作为主表,然后再次创建一个test1从表,我们现在来试一下这个test1的从表能不能建立一个没有指向test主键的外键:
这里我们看一下相关sql语句如下:
OK,现在看一下整个test1表的建表语句:
InnoDB存储引擎的优势在于提供了良好的事务管理,奔溃修复能力和并发控制。缺点就是其读写效率稍差,占用的数据空间相对比较大。
TODO,关于InnoDB的优势不应该就这么点总结,后续我会参照下其他的资料,再来补充完整。
当然,MySQL刚开始出来的时候是没有这个引擎的,从3.23.34开始包含InnoDB的存储引擎。
InnoDB是MySQL上第一个提供外键约束的表引擎。而且InnoDB对事务的处理的能力,也是MySQL其他引擎所无法与之比拟的。
一般情况下,我们自己安装的MySQL的默认存储引擎就是InnoDB。
InnoDB存储引擎中支持自动增长列AUTO_INCREMENT。自动增长列的值不能为空,且值必须唯一。MySQL中规定自增列必须为主键。
在插入值时,如果自动增长列不输入值,则插入的值为自动增长后的值;
如果输入的值为0或空(NULL),则插入的值也为自动增长后的值;
如果插入某个确定的值,且该值在前面没有出现过,则可以直接插入。
InnoDB存储引擎支持外键,foreign key。外键所在表的为子表,外键所依赖的表为父表。父表中被子表外键关联的字段必须是主键。[b]当删除,更新父表的某条信息时,子表也必须要有相应的改变。[/b]
OK,关于上面这一点,我自己还真的没注意过,这里我们来实践一下,我们先来创建一个简单的test作为主表,然后再次创建一个test1从表,我们现在来试一下这个test1的从表能不能建立一个没有指向test主键的外键:
这里我们看一下相关sql语句如下:
ALTER TABLE `linkinframe`.`test1` ADD INDEX `idx_idx` (`test_id` ASC), DROP INDEX `id_idx` ; ALTER TABLE `linkinframe`.`test1` ADD CONSTRAINT `idx` FOREIGN KEY (`test_id`) REFERENCES `linkinframe`.`test` (`id`) ON DELETE CASCADE ON UPDATE CASCADE;
OK,现在看一下整个test1表的建表语句:
CREATE TABLE `test1` ( `id` int(11) NOT NULL, `test_id` int(11) DEFAULT NULL, PRIMARY KEY (`id`), KEY `idx_idx` (`test_id`), CONSTRAINT `idx` FOREIGN KEY (`test_id`) REFERENCES `test` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;莫名其妙的这里还给我多建了一个‘idx_idx’的key,这是索引么还是啥东西呀,还删不掉,我晕。完事等我整理到索引相关应该就清楚啦,实际编码中直接在数据库中建立外键的情况比较少,我好像基本是没有建过,可能是考虑到维护数据方面不方便我们删除数据这样子,实际中很少建外键,不知道这是好的习惯还是坏的习惯。。。
InnoDB存储引擎的优势在于提供了良好的事务管理,奔溃修复能力和并发控制。缺点就是其读写效率稍差,占用的数据空间相对比较大。
TODO,关于InnoDB的优势不应该就这么点总结,后续我会参照下其他的资料,再来补充完整。
相关文章推荐
- windows下为mysql设置密码
- mysql-5.6.29-winx64 安装配置过程
- mysqlbinlog 查看具体的sql语句 (binlog_format=row模式)
- 就mysql command line client刚输入密码立马闪一下退出问题的解决方案
- MySql中String转int
- 解决MySQL Slave 触发 oom-killer
- mysql5.7安装Table 'mysql.user' doesn't exist
- mysql函数
- mysql 源码安装
- mysql主从复制
- Mysql 常用函数
- MySQL存储过程详解及mysql基本函数
- Hive使用MySQL保存Metastore
- 《MySQL必知必会学习笔记》:正则表达式
- 下载配置MySql,高速启动MySql批处理,MySQLclient软件SQL-Front的配置---ShinePans
- 无法启动 Windows Event Log vpdn 无法启动 附带无法启动MYSQL服务”1067 进程意外终止”
- mysql 过程 动态执行sql
- mysql 相关问题解决
- MySQL数据记录基本操作——添加数据、更新数据和删除数据
- 《MySQL必知必会学习笔记》:通配符的使用