首页 > 数据库技术 > 详细

数据库表的引擎与数据库的模式

时间:2019-09-23 20:19:30      阅读:89      评论:0      收藏:0      [点我收藏+]

创建表的完整语法

# 长度和约束在某些情况下是可以省略的
mysql>: create table 表名 (
    属性名1 类型(长度) 约束,
    ...
    属性名n 类型(长度) 约束
) engine=引擎 default charset=utf8;

数据库表的引擎:驱动数据的方式 - 数据库优化

# 前提: 引擎是建表是规定, 提供给表使用的, 不是数据库

# 展示所有引擎
mysql> show engines; 

# innodb(默认): 支持事务, 行级锁, 外键
mysql>: create table t11(id int)engine=innodb;

# myisam: 查询效率要优于innodb, 当不需要支持事务, 行级锁, 外键, 可以通过设置myisam来优化数据库
mysql>: create table t12(id int)engine=myisam;

# blackhole:黑洞,存进去的数据都会消失(可以理解不存数据)
mysql>: create table t13(id int)engine=blackhole;

# memory:表结构是存储在硬盘上的,但是表数据全部存储在内存中
mysql>: create table t14(id int)engine=memory;

数据库的模式

# mysql 5.7 以后默认都是安全模式

# mysql 5.6 版本
sql_model=no_engine_substitution  # 非安全性,默认
sql_model=strict_trans_tables  # 安全性

# 查看当前数据库模式:
show variables like "%sql_mode%"; # %匹配0~n个任意字符 => 模糊查询

# 临时设置为安全模式,服务重启后会被重置
mysql>: set global sql_mode="strict_trans_tables";  # 在root用户登录状态下
# 在设置后,quit断开数据库连接后(服务器不重启)就会进入安全模式

# 安全模式下,非安全模式下sql执行的警告语句,都会抛异常
eg>: create table t1(name char(2));
eg>: insert into t1 values ("ab") # 正常
eg>: insert into t1 values ("owen") # 错误 Data too long for column 'name' at row 1

数据库表的引擎与数据库的模式

原文:https://www.cnblogs.com/aden668/p/11574338.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!