mysql 开发基础系列22 SQL Model(带迁移事项)

一.概述

  与其它数据库不同,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_mode='STRICT_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_mode='NO_TABLE_OPTIONS'

转载于:https://www.cnblogs.com/MrHSR/p/9317979.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/277634.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

五月28学习笔记

<!DOCTYPE html><html> <head> <meta charset"UTF-8"> <title></title> </head> <body> <!--链接标签--> <!--核心属性就是href 属性值可以是一个跳转的地址--&…

Kinect开发笔记之五使用PowerShell控制Kinect

这是第一次用MarkDown编辑器来写博客&#xff0c;挺喜欢这种没有任何格式舒服的编辑器&#xff0c;自由洒脱更加易读&#xff0c;留一个不自然的自然段纪念下找到舒服的编辑器。 这次要记录使用win7/win8内建的PowerShell来控制Kinect&#xff0c;改变Kinect的俯仰角度。 在我…

可转债数据一览表集思录_可转债股票数据一览表

128107交科转债720612061浙江交科-11.90%25113578全筑转债754030603030全筑股份-1.26%3.84113573纵横转债754602603602纵横通信5.79%2.7113577春秋转债754890603890春秋电子-9.46%2.4123050聚飞转债370303300303聚飞光电2.52%7.05110070凌钢转债733231600231凌钢股份24.44%4.41…

国标流媒体H5实现无插件视频监控按需直播

介绍 按需直播肯定是为了减少带宽流量和服务器性能占用。安防行业GB28181协议天生就是按需播放的&#xff0c;有人请求播放时服务端才从设备端获取设备的直播流或录像视频&#xff0c;停止播放时就会停止获取视频流。同时GB28181协议又是目前安防设备厂商都支持的统一的协议&am…

ipa 安装包不用市场如果扫码下载安装 免费IOS安装API

在做开发过程中可能会用于生成测试包的情况,不过测试包不能直接安装,非常不方便,所以我提供给大家一下可通过链接下载安装的方法也可以把链接生成二维码扫码下载 api地址: https://tool.bitefu.net/ipa/ 文件地址:http://tool.bitefu.net/showdoc/web/#/3 源码下载:http://tado…

Kinect开发笔记之六Kinect Studio的应用

这一次我们来操作一下Kinect Studio&#xff0c;体验一下它给我们带来的功能。 首先我们需要打开Developer Toolkit Browser 1.8&#xff0c;打开后在默认情况下&#xff0c;光标是选择在All选项卡上的&#xff0c;即我们现在所有Developer Toolkit Browser中的部件都可以看得…

antd picker 使用 如何_如何打造 Serverless JavaScript 全栈商业级应用?

2019 年底我们发布过一篇《O’Reilly 1500 份问卷调研&#xff1a;2019 年 Serverless 落地到底香不香&#xff1f;》&#xff0c;揭示了海外 Serverless 的落地情况&#xff0c;但中国 Serverless 的落地实践分享相对较少&#xff0c;似乎谁都在喊 Serverless&#xff0c;谁都…

【Android Studio安装部署系列】十三、Android studio添加和删除Module 2

版权声明&#xff1a;本文为HaiyuKing原创文章&#xff0c;转载请注明出处&#xff01; 概述 新建、导入、删除Module是常见的操作&#xff0c;这里简单介绍下。 新建Module File——New——New Module... 选中Android Library 修改Library名称 在项目工程中修改依赖 和添加下面…

Kinect开发笔记之七Visual Studio结合C#调控Kinect俯仰角度

总感觉自己前面啰啰嗦嗦写了好多&#xff0c;却一直都没有使用用开发kinect的重型武器——Visual Studio。 那么本次我们就借助于Visual Studio&#xff0c;写一个C#程序&#xff0c;连接Kinect并调用Kinect SDK标准函数库来改变Kinect的俯仰角。 首先我们打开VS创建一个项目…

hadoop HDFS常用文件操作命令

命令基本格式: hadoop fs -cmd < args >1.ls hadoop fs -ls /列出hdfs文件系统根目录下的目录和文件 hadoop fs -ls -R /列出hdfs文件系统所有的目录和文件 2.put hadoop fs -put < local file > < hdfs file >hdfs file的父目录一定要存在&#xff0c;否则…

定量库存控制模型_探索全面流动管理TFM 库存控制与低减的理性策略

库存乃万恶之源库存不仅占用了资金&#xff0c;还占用了各种管理性资源&#xff0c;形成了“财务性显性成本“而且过多的库存导致“缓冲区”的存在&#xff0c;还使得各类问题变得不那么紧迫&#xff0c;从而掩盖了各类隐藏的问题&#xff0c;这被称为“隐形成本”零库存不仅做…

android studio更新之后打包遇到V1(Jar Signature)、 V2(Full APK Signature)问题

昨天更新了android studio 打包时遇到两个勾选框&#xff0c;于是开始了解… 问题 刚开始默认是勾选 V2&#xff08;Full APK Signature&#xff09;&#xff0c;然后我就打包去测试先了&#xff0c;发现安装失败。之后发现与签名有关系。 发现 android 7.0中引入了APK Signatu…

C#——一个简单的文件管理器

最近在紧张的学习C#&#xff0c;说实话对C#之前没有太多的接触过&#xff0c;只知道C#的特性与java很相似&#xff0c;接触了之后才发现C#跟java相比区别不是很多&#xff0c;但它是一门实现程序能力比Java还要好的语言&#xff08;仅代表个人观点&#xff09;。 有许多新手在…

关于epoll,select,poll的理解

select: 轮询fd_set 1.采用fd_set存储fd&#xff08;fd_set通过数组位图实现&#xff09; 2.每次调用select&#xff0c;都需要把fd集合从用户态拷贝到内核态&#xff0c;fd越多开销越大 3.每次调用select&#xff0c;都需要在内核遍历传递进来的fd&#xff0c;开销大(轮询&…

kali linux超级用户_如何优雅的在Linux上使用Powershell]

点击上方“蓝字”关注我们吧&#xff01;译文声明本文是翻译文章&#xff0c;文章原作者 TJ Null文章来源&#xff1a;https://www.offensive-security.com原文地址&#xff1a;https://www.offensive-security.com/offsec/kali-linux-powershell-pentesting/译文仅供参考&…

Laravel5.5 MySQL配置、读写分离及操作

2019独角兽企业重金招聘Python工程师标准>>> Laravel 让连接不同数据库以及对数据库进行增删改查操作: 参考&#xff1a;http://laravelacademy.org/post/854.html 配置读写分离 应用的数据库配置位于 config/database.php&#xff08;但是数据库用户及密码等敏感信…

Kinect开发笔记之八C#实现Kinect声音的追踪

声明&#xff1a;本文中特征多针对Kinect for windows 1.0&#xff0c;新版的Kinect Sensor可能有部分数值或方法有一定变化&#xff0c;请知晓。Kinect的声音来自下方的4个麦克风组成的麦克风阵列。传感器内含数字信号处理器&#xff0c;可以用来强化接受声音的清晰度同时处理…

Nginx常见配置:负载均衡、限流、缓存、黑名单和灰度发布

一、Nginx安装&#xff08;基于CentOS 6.5&#xff09; 1.yum命令安装 yum install nginx –y(若不能安装&#xff0c;执行命令yum install epel-release) 2. 启动、停止和重启 service nginx startservice nginx stopservice nginx restart浏览器中 输入服务器的 ip 地址&…

国服服务器_《Minecraft我的世界》第三方服务器的基本储备

今天我想单独来聊一聊Minecraft我的世界第三方服务器的发展。世外荒原玩家作品我来到头条的第一篇文章就发表了一篇我对Minecraft现状的看法&#xff0c;现在国服的状态对老玩家不是很友好。(这不说明国服的运营战略路线是有问题的)因此诞生了一大堆第三方服务器。世外荒原玩家…

Unity中Time.deltaTime的含义及其应用

相信Unity的开发者或者初学者都对Time.deltaTime并不陌生&#xff0c;我们经常会在代码中用到或者看到它&#xff0c;今天去官方的API文档查了一下&#xff0c;感觉它非常有用&#xff0c;所以翻译一下以引导初学者。 原文网址&#xff1a; file:///Applications/Unity/Unity…