Mysql(8)_存储引擎之InnoDB
-- 查看当前数据库支持的存储引擎 SHOW ENGINES; -- VALUE为disable的记录表示支持该引擎,但是数据库启动时被禁用 show VARIABLES LIKE 'have%';
从mysql 5.5版本开始,innodb是mysql默认的存储引擎,下面详细介绍InnoDB存储引擎
1 自动增长序列
InnoDB的自动增长列可以手工插入,但是插入的值如果是空或者是0,则实际插入的将是自动增长后的值。下面定义新表,其中i使用自动增长序列,对表进行插入记录,然后查看自动增长列的处理情况
create table autoincre_demo(i SMALLINT NOT NULL auto_increment,NAME VARCHAR(10),PRIMARY KEY(i) )ENGINE=INNODB; INSERT INTO autoincre_demo VALUES(1,'1'),(0,'2'),(NULL,'3'); SELECT * FROM autoincre_demo;
t
可以使用last_insert_id()来返回当前线程最后插入记录使用的值,如果一次性插入多条数据,则返回插入的第一条记录所使用的字段增长值。可以使用alter table *** auto_increment=n 来强制设置自动增长列的初始值。默认从1开始,但是该强制的默认值是保留在内存中的,如果使用该值在使用之前数据库重新启动,这个强制的默认值就会丢失,需要在数据库启动后重新设置
对于InnoDB表,自动增长序列必须是索引。如果是组合索引,也必须是组合索引的第一列。对于MyISAM表,自动增长序列可以是组合索引的其他列
2 外键约束
Mysql支持外键约束的存储引擎只有InnoDB,在创建外键的时候,要求父表必须有对应的索引,子表在创建外键时也会自动创建对于的索引
use test01; CREATE TABLE country(country_id SMALLINT UNSIGNED NOT NULL auto_increment,country VARCHAR(50) NOT NULL,last_update TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,PRIMARY KEY (country_id) )ENGINE=INNODB DEFAULT charset=utf8;CREATE TABLE `city` ( `city_id` smallint(5) unsigned NOT NULL auto_increment,`city` varchar(50) NOT NULL,`country_id` smallint(5) unsigned NOT NULL, `last_update` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP, PRIMARY KEY (`city_id`), KEY `idx_fk_country_id` (`country_id`),CONSTRAINT `fk_city_country` FOREIGN KEY (`country_id`) REFERENCES `country` (`country_id`) ON DELETE RESTRICT ON UPDATE CASCADE) ENGINE=InnoDB DEFAULT CHARSET=utf8;insert into country(country_id, country) values(1, "china"); insert into city(city_id, city, country_id) values(200, "wenzhou", 1); SELECT * from country WHERE country_id = 1; SELECT * from city WHERE country_id =1; -- 执行删除语句报错。不能删除 DELETE FROM country where country_id=1; -- 可以update,执行这条语句时,字表city的country_id字段也被修改。 -- CASCADE 表示父表在更新或者删除时,子表对应记录也被更新或者删除 -- set null 表示如果父表进行更新或删除操作,子表对应字段被set NULL -- RESTRICT 和no action 相同,限制子表有关联记录情况下父表不能更新 update country set country_id =1 WHERE country_id =1000;
InnoDB 存储引擎具有提交、回滚和奔溃事回复能力的事物安全,但是对比MyISAM的存储引擎,InnoDB写的处理效率差些,并且会占用更多的磁盘空间以保留数据和索引。
InnoDB的存储方式有两种:一是使用共享表空间存储,这种方式创建的表的表结构报存在.frm文件中,数据和索引保存在innodb_data_home_dir和innodb_data_file_path定义的表空间中,可以是多个文件
二是使用多表空间存储,这种方式创建的表的表结构依然保存在.frm中,但每个表的数据和索引都单独保存在.idb中,这里就先介绍这么多。等以后用到再详细介绍!即使在多表空间的存储方式下,共享表空间依然是必须的,InnoDB把内部数据词典和在线重做日志放在这个文件中
转载于:https://www.cnblogs.com/sunnybowen/p/9949570.html
Mysql(8)_存储引擎之InnoDB相关推荐
- MySQL数据库MyISAM存储引擎转为Innodb
之前公司的数据库存储引擎全部为MyISAM,数据量和访问量都不是很大,所以一直都没什么问题.但是最近出现了MySQL数据表经常被锁的情况,直接导致了用户连接网站时超时而返回502,于是决定把存储引擎转 ...
- mysql 修改时间段内_详解mysql数据库MyISAM存储引擎如何转为Innodb及其中的注意点...
概述 mysql数据库存储引擎为MyISAM的时候,在大访问量的情况下数据表有可能会出现被锁的情况,这就会导致用户连接网站时超时而返回502,此时就需要MySQL数据库MyISAM存储引擎转为Inno ...
- MySQL 两种存储引擎:MyISAM与InnoDB对比及理解
MySQL 两种存储引擎:MyISAM与InnoDB对比及理解 目前MySQL默认的存储引擎是InnoDB 现在大多数时候我们使用的都是InnoDB存储引擎,但是在某些情况下使用MyISAM更好,比如 ...
- MySQL常见的三种存储引擎(InnoDB、MyISAM、MEMORY)
MySQL是我们经常使用的数据库处理系统(DBMS),不知小伙伴们有没有注意过其中的"存储引擎"(storage_engine)呢?有时候面试题中也会问道MySQL几种常用的存储引 ...
- mysql 内存引擎_MySQL常见的三种存储引擎(InnoDB、MyISAM、MEMORY)
MySQL是我们经常使用的数据库处理系统(DBMS),不知小伙伴们有没有注意过其中的"存储引擎"(storage_engine)呢?有时候面试题中也会问道MySQL几种常用的存储引 ...
- mysql的常用存储引擎_MySQL常见的三种存储引擎
Ok,我们知道了,引擎就是一个程序的核心组件. 简单来说,存储引擎就是指表的类型以及表在计算机上的存储方式. 存储引擎的概念是MySQL的特点,Oracle中没有专门的存储引擎的概念,Oracle有O ...
- MySQL 架构组成—存储引擎
博主QQ:819594300 博客地址:http://zpf666.blog.51cto.com/ 有什么疑问的朋友可以联系博主,博主会帮你们解答,谢谢支持! MySQL Server 系统架构 上图 ...
- MySQL事务与存储引擎相关设置
MySQL事务与存储引擎 一.事务的ACID特点 1.原子性 2.一致性 3.隔离性 4.持久性 二.事务之间的互相影响 三.事务的四大隔离 四.事务控制语句 示例 1.开启.提交事务 2.事务回滚 ...
- MySQL常见的存储引擎的区别?
在MySQL中的存储引擎有很多种,可以通过"SHOW ENGINES"语句来查看.比较常见的是InnoDB.MyISAM.MEMORY这三种. 1.InnoDB存储引擎 InnoD ...
- Mysql三种存储引擎及区别
存储引擎的概念是MySQL的特点,Oracle中没有专门的存储引擎的概念,Oracle有OLTP和OLAP模式的区分.不同的存储引擎决定了MySQL数据库中的表可以用不同的方式来存储.我们可以根据数据 ...
最新文章
- python使用教程pandas-python之pandas简单介绍及使用(一)
- java cache详解,Java内存缓存详解
- 读锁调度导致高延迟的 case 一例
- 高等数学下-赵立军-北京大学出版社-题解-练习11.3
- 【Java】字符串转换为数字:Integer的parseInt方法
- 百度小程序html转码,百度小程序全局配置
- python的基本功能_二.Python的基本数据类型及常用功能
- Qt编写echart仪表盘JS交互程序支持webkit和webengine(开源)
- narwal无法连接机器人_库卡机器人控制系统主机出现MFC3故障维修
- tcga数据下载_TCGA数据下载-GDC
- [leetcode]746. 使用最小花费爬楼梯
- 基于简单的路径压缩的并查集算法
- android finish 判断当前_Android开发,源码分析finish()和onBackPressed()的区别
- mate 10android o主题,懒萌可爱皮卡丘全局手机主题-适配华为EMUI10.0
- R语言处理时间序列数据
- FAT32/exFAT/NTFS,三种U盘格式的区别
- C#基于FFmpeg实现录屏功能
- Word入门教程之插入文字批注(转)
- 软件测试工程师必备技能
- 基于51单片机的烟雾温度火灾报警器 LCD1602显示proteus仿真
热门文章
- Leetcode199二叉树的右视图(宽搜)
- 简述旋转编码器的工作原理_绝对值编码器工作原理以及故障处理方法有哪些?...
- 十四、final关键字
- springboot2.x 集成百度 uidgenerator
- LayaAir 缓动动画
- TCP 理论概述与 Java 编码入门
- 阶段3 2.Spring_07.银行转账案例_1 今日课程内容介绍
- 阶段1 语言基础+高级_1-3-Java语言高级_06-File类与IO流_04 IO字节流_12_练习_文件复制...
- JS 正则表达式基础
- POJ 1236 Network of Schools (校园网)