文章目录
create table `payment`(
`id` bigint(20) not null auto_increment COMMENT 'ID',
`serial` varchar(200) default '',
primary key (`id`)
)engine=InnoDB AUTO_INCREMENT=1 default charset=utf8
Engine
engine=InnoDB指定引擎为InnoDB,默认也为InnoDB。
MyIsam:适合只读的数据库
- 不支持事务,外键,行级锁(只能锁全表) 查询速度很快,
- 增加和修改的速度很慢,因为需要锁全表
- 存储了表的行数
- AUTO_INCREMENT类型的字段,可以和其他字段一起建立联合索引
- ISAM索引方法,按顺序的静态索结构,但不支持事务和容错,可以采用实时备份来容错。
InnoDB: 数据库默认的存储引擎,设计为处理大容量数据 。
- 提供事务,实现sql标准四种隔离级别
- 有行级锁,锁的颗粒度更小,并发情况下效率更高,但是当不能确定扫描范围的时候,依旧会锁全表
- 支持外键
- AUTO_INCREMENT类型的字段,InnoDB中必须包含只有该字段的索引
- DELETE FROM table时,InnoDB不会重新建立表,而是一行一行的删除 会在内存中缓冲数据和索引,但是不支持fulltext的索引
- 没有保存表的行数,获取全表行数的时候需要扫描全表
- 单表最大存储取决于操作系统的单文件大小和表结构的复杂程度
MEMORY存储引擎:试用于不断变化的临时表
- 使用内存在存表,每个表对应一个磁盘文件,内存访问,速度极快
- 服务关闭,没有及时保存的数据会丢失
- 支持hash和B树索引,默认hash索引
- 数据太多可能会造成内存溢出,可调节max_heap_table_size来控制表的大小。
- 要及时删除表,否则内存中一直有表暂居空间
- 只能存储数据长度固定的数据(blob,text类型数据不支持)
Blackhole:所有写入的数据都会被丢弃,但是会保留操作日志
- 只记录下表的操作日志,不会存储任何表数据
- 用来验证binlog功能的所需要的额外负载 (需要继续探究)
- 充当日志服务器
- 验证dump file语法的正确性
Mrg_Myisam:水平分表的一种方式
- 内部没有真正的数据,是多个引擎中的多个表的聚合,可以直接查询,删除,更新操作。
Fenerated:是其中一个专门针对远程数据库的实现。
- 在保证两边数据库表结构一致的情况下,用于简单的数据同步。
- 两边可以是不同的表名
- 仅支持mysql
- 不支持事务
- 不支持表结构的修改
- CREATE TABLE (…) ENGINE =FEDERATED
CONNECTION=‘mysql://[name]:[pass]@[location]:[port]/[db-name]/[table-name]’
auto_increment = 1; 表示主键从1开始自增长
DEFAULT CHARSET=utf8 数据库默认编码为utf-8
这个虽然在my.ini设置过了,但设置的是mysql的的语言编码,而这里创建的时候不设置,就会出现乱码问题,二者的作用域是不一样的,在创建表单的时候,这个charset会作用到这个表上,他代表mysql简历数据库数据表时设定字符集为utf-8