表在数据库中的存储方式。
存储引擎只存在mysql中,(Oracle中有对应机制,但是不叫存储引擎)。
完整的建表语句:
CREATE TABLE mytable( id INT(10) PRIMARY KEY, username VARCHAR(30) NOT NULL, PASSWORD VARCHAR(30) )ENGINE = InnoDB Default CAHRSET=UTF8;
注意:在MYSQL当中,凡是标识符可以使用飘号括起来,最好别用,不通用!
建表的时候可以指定存储引擎,也可以指定字符集。
mysql默认的存储引擎是InnoDB的方式!默认采用的字符集是UFT-8
mysql> show engines \G #查看当前,mysql版本支持的存储引擎命令! 当前MYSQL版本是5.7.33,支持9种存储引擎!
1.常见的存储引擎:
- MyISAM 存储索引
- InnoDB 存储索引
- MEMORY 存储索引
2.MyISAM 存储引擎:
MyISAM:这种存储引擎不支持事务。是最常用的但不是默认的
Engine: MyISAM Support: YES Comment: MyISAM storage engine Transactions: NO #不支持事务! XA: NO Savepoints: NO
它管理的表具有以下特征:
使用三个文件表示每个表 :
- 格式文件 — 存储表的结构(mytable.frm)
- 数据文件 — 存储表的数据(mytable.MYD)
- 索引文件 — 存储表中索引的文件(mytable.MYI)
优点:可被转换为压缩,来节省空间,并且可以转换为只读表,提高检索效率!
缺点:不支持事务!
3.InnoDB 存储引擎:
支持事务,行级锁,外键等 ;这种存储引擎安全。
Engine: InnoDB Support: DEFAULT Comment: Supports transactions, row-level locking, and foreign keys Transactions: YES XA: YES Savepoints: YES
- 表的结构存储在xxx.frm文件当中
- 数据存储在tablespace这样的表空间当中(逻辑概念),无法被压缩,无法被转换为只读!
- 这种InnoDB存储引擎在MYSQL数据库崩溃之后提供自动恢复机制!【事务、安全、重量级】
- 支持级联删除和级联更新。
4.MEMORY 存储引擎:
所有数据保存在内存中,断电即失,但是查询速度超级快!
Engine: MEMORY Support: YES Comment: Hash based, stored in memory, useful for temporary tables Transactions: NO XA: NO Savepoints: NO
- 在数据库目录当中,每个表均已.frm格式的文件表示
- 表数据以及索引被存储在内存当中
- 表级锁机制
- 不能包含TEXT(CLOB)或BLOB字段
- 查询速度快