公司做网站app入什么科目,有奖竞猜网站建设,网站自己制作,网站版权模板一.概述 与其它数据库不同#xff0c;mysql 可以运行不同的sql model 下#xff0c; sql model 定义了mysql应用支持的sql语法#xff0c;数据校验等#xff0c;这样更容易在不同的环境中使用mysql。 sql model 常用来解决下面几类问题#xff1a; (1) 通过设置sql mode, …一.概述 与其它数据库不同mysql 可以运行不同的sql model 下 sql model 定义了mysql应用支持的sql语法数据校验等这样更容易在不同的环境中使用mysql。 sql model 常用来解决下面几类问题 (1) 通过设置sql mode, 可以完成不同严格程度的数据校验有效地保障数据准备性。 (2) 通过设置sql model 为ansi 模式来保证大多数sql符合标准的sql语法这样应用在不同数据库之间进行迁移时则不需要对业务sql 进行较大的修改。 (3) 在不同数据库之间进行数据迁移之前通过设置SQL Mode 可以使MySQL 上的数据更方便地迁移到目标数据库中。 1. 演示sql model 严格模式 从mysql 5.7 开始, 默认是严格模式, mysql 开始严格遵从SQL 92规范。通过strict_trans_tables严格模式实现了数据的严格校验。 使错误数据不能插入表中 从而保证了数据的准确性。 -- 查看sql model 模式SELECT sql_mode; -- 下面可将sql model设置为严格模式
set session sql_modeSTRICT_TRANS_TABLES; -- 新建表设置address为10个长度
CREATE TABLE test_sqlmode
(address VARCHAR(10)
)
-- 插入超过长度
INSERT INTO test_sqlmode VALUES(123456789123); 通过下图可以看出 严格模式下超出数据 插入将报错。 如果不是严格模式则会报warning 警告 并截取字符。 2. sql mode 组合模式 组合模式类似于角色和权限的关系。这样当实际应用时只需要设置一个模式组合就可以设置很多的原子模式大大方便了用户的工作。 ANSI模式 宽松模式对插入数据进行校验如果不符合定义类型或长度对数据类型调整或截断保存报warning警告。 等同于REAL_AS_FLOAT、PIPES_AS_CONCAT、ANSI_QUOTES、IGNORE_SPACE 和ANSI 组合模式 traditional 模式 严格模式当向mysql数据库插入数据时进行数据的严格校验保证错误数据不能插入报error错误。用于事务时会进行事务的回滚。 TRADITIONAL 模式等同于STRICT_TRANS_TABLES、STRICT_ALL_TABLES、 NO_ZERO_IN_DATE、NO_ZERO_DATE、ERROR_FOR_DIVISION_BY_ZERO、TRADITIONAL 和NO_AUTO_CREATE_USER 组合模式 STRICT_TRANS_TABLES模式 严格模式进行数据的严格校验错误数据不能插入报error错误。 例如:不允许非法日期也不允许超过字段长度的值插入字段中对于插入不正确的值给出错误而不是警告 二. sql model 迁移如何使用 如果mysql 与其它异构数据库之间有数据迁移的需求时那么mysql中提供的数据库组合模式则会对数据迁移过程会有所帮助。对导出数据更容易导入目标。 在数据迁移过程中可以设置SQL Mode 为NO_TABLE_OPTIONS 模式这样将去掉show create table 中的“engine”关键字获得通用的建表脚本。 -- 查看表有 engine 引擎
SHOW CREATE TABLE test_sqlmode; -- 将所有表去掉engine 引擎。变为通用表
-- 修改 当前会话下的sql model
SET SESSION sql_modeNO_TABLE_OPTIONS 转载于:https://www.cnblogs.com/MrHSR/p/9317979.html