《MySQL》第十一篇 SQL_MODEL模式简述

news2024/12/23 18:06:22

目录

    • 一. 介绍与使用
    • 二. 模式类型
    • 三. 常用模式演示
      • ANSI 模式
      • TRADITIONAL 模式
      • STRICT_TRANS_TABLES 模式

一. 介绍与使用

SQL Mode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL
常用来解决下面几类问题:

  1. 通过设置SQL Mode,可以完成不同严格程度的数据校验,有效地保障数据准确性。
  2. 通过设置SQL Mode为ANSI模式,来保证大多数SQL符合标准的SQL语法,这样应用在不同数据库之间进行迁移时,就不需要对业务SQL进行较大的修改。
  3. 在不同数据库之间进行迁移之前,通过设置SQL Mode可以使MySQL上的数据更方便地迁移到目标数据库中。

二. 模式类型

可用下面的语句查询当前MySQL的SQL_MODEL设置的信息

## 查询Mysql定义的sql_model类型
select @@sql_model;

在这里插入图片描述

模式说明
ONLY_FULL_GROUP_BY对于GROUP BY聚合操作,如果在SELECT中的列,没有在GROUP BY中出现,那么将认为这个SQL是不合法的,因为列不在GROUP BY从句中
NO_ZERO_IN_DATE在严格模式下,不接受月或日部分为0的日期。如果使用IGNORE选项,我们为类似的日期插入’0000-00-00’。在非严格模式,可以接受该日期,但会生成警告
NO_ZERO_DATE在严格模式下,不要将 '0000-00-00’做为合法日期。你仍然可以用IGNORE选项插入零日期。在非严格模式,可以接受该日期,但会生成警告
ERROR_FOR_DIVISION_BY_ZERO在严格模式下,在INSERT或UPDATE过程中,如果被零除(或MOD(X,0)),则产生错误(否则为警告)。如果未给出该模式,被零除时MySQL返回NULL。如果用到INSERT IGNORE或UPDATE IGNORE中,MySQL生成被零除警告,但操作结果为NULL
NO_AUTO_CREATE_USER防止GRANT自动创建新用户,除非还指定了密码
NO_ENGINE_SUBSTITUTION如果需要的存储引擎被禁用或未编译,那么抛出错误。不设置此值时,用默认的存储引擎替代,并抛出一个异常
ANSI宽松模式,对插入数据进行校验,如果不符合定义类型或长度,对数据类型调整或截断保存,报warning警告
TRADITIONAL严格模式,当向mysql数据库插入数据时,进行数据的严格校验,保证错误数据不能插入,报error错误。用于事物时,会进行事物的回滚
STRICT_TRANS_TABLES严格模式,如果一个值不能插入到一个事务表中,则中断当前的操作,对非事务表不做任何限制;在该模式下会进行数据的严格校验,错误数据不能插入,报error错误

三. 常用模式演示

## 创建表
CREATE TABLE `study`.`test`  (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(7) NULL,
  PRIMARY KEY (`id`)
) ENGINE = InnoDB;

ANSI 模式

宽松模式,对插入数据进行校验,如果不符合定义类型或长度,对数据类型调整或截断保存,报warning警告

##设置sql_model为ANSI模式
SET sql_mode='ANSI';
insert into test(name) VALUES('利昂内尔·安德烈斯·梅西·库奇蒂尼'); 
show warnings;
select * from test;

执行上诉SQL语句,提示”Data truncated for column ‘name’ at row 1“错误信息
在这里插入图片描述
查询结果发现,虽然有错误信息提示,但是数据插入成功了,并且插入的数据与原本需要插入的数据不一致,
MySQL根据字段name设置的长度,按照max length 截取数据存储
在这里插入图片描述

TRADITIONAL 模式

严格模式,当向MySQL数据库插入数据时,进行数据的严格校验,保证错误数据不能插入,报error错误。用于事物时,会进行事物的回滚

##设置sql_model为TRADITIONAL模式
SET sql_mode='TRADITIONAL';
insert into test(name) VALUES('克里斯蒂亚诺·罗纳尔多'); 
show warnings;
select * from test;

执行上述SQL语句,提示”Data too long for column ‘name’ at row 1“错误信息,明确表示插入的信息超过name设置最长长度7,数据不会插入成功
在这里插入图片描述

STRICT_TRANS_TABLES 模式

严格模式,如果一个值不能插入到一个事务表中,则中断当前的操作,对非事务表不做任何限制;在该模式下会进行数据的严格校验,错误数据不能插入,报error错误

##设置sql_model为STRICT_TRANS_TABLES 模式
SET sql_mode='STRICT_TRANS_TABLES ';
insert into test(name) VALUES('内马尔·达·席尔瓦·儒尼奥尔'); 
show warnings;

与TRADITIONAL 模式类似,执行上述SQL,直接提示”Data too long for column ‘name’ at row 1“错误信息,明确表示插入的信息超过name设置最长长度7,数据不会插入成功
在这里插入图片描述

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

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

相关文章

ad+硬件每日学习十个知识点(14)23.7.25(以太网IC)

文章目录 1.什么是隔离电路,什么是隔离芯片?2.网线接口RJ45和RJ11的区别?(我们用的电脑都是RJ45)3.什么是rgmii协议?4.什么是以太网协议?5.以太网IC的连接方式6.以太网协议都包含哪些协议&#…

RocketMQ, Dashboard, 控制台安装

文章说明 本文主要说明RocketMQ的控制台(Dashboard)的安装过程。工作中一直用的是别人装好的,这次终于自己亲手装了一遍。 由于每次都要启动三个应用,比较烦,于是我写了一键启动脚本,分享给大家。这个脚本…

AC695-按键处理-带UI

AC695-按键修改 消息发出 对应界面处理

0725 区块链1.0 2.0 3.0 智能合约 比特币 以太坊 DAG 有向无环图

文献阅读:[1]华亚洲. 基于改进Block-DAG区块链的时空数据存储及查询方法研究[D].辽宁大学,2022.DOI:10.27209/d.cnki.glniu.2022.001364.[1]华亚洲,丁琳琳,陈泽等.面向时空数据的区块链构建及查询方法[J].计算机应用,2022,42(11):3429-3437. 文献总结: …

基于MQTT阿里云服务器的物联网关灯项目--舵机

一、关灯神器 本文章由作者李建华所编写,用到的服务器是阿里云部署好的mqtt,链接如有失效,请联系作者微信:Likz777777 要求:不破坏原有功能、可以接入苹果、网页小程序均可控制 设备:香橙派、舵机 具体实现方法: 1.局域网控制&#xff1a…

PHP在线相册--【白嫖项目】

强撸项目系列总目录在000集 PHP要怎么学–【思维导图知识范围】 文章目录 本系列校训本项目使用技术 上效果图phpStudy 设置导数据库项目目录如图:代码部分:主页 配套资源作业: 本系列校训 用免费公开视频,卷飞培训班哈人&…

LeetCode算法心得——合并后数组中的最大元素

大家好,我是晴天学长,这是一道动态规划的逆向思维题,此题甚是神奇!💪💪💪 1 )合并后数组中的最大元素 2) .算法思路 只能选择旁边的,而且还是比自己等大或者比自己小的…

码银送书第四期《Python之光》

作为一种极其流行的编程语言,Python已经成为了当今最为重要的生产力工具之一。无论小学生还是各行各业的从业人员,都开始学习Python编程。这种编程语言在许多领域中都有广泛的应用,因此Python编程已经成为了许多职业的必备能力或者加分项。 …

【云边有个小卖部】上新《探秘Linux》第二章 Linux权限管理

🕺作者: 主页 我的专栏C语言从0到1C初阶C进阶数据结构从0到1探秘Linux菜鸟刷题集 😘欢迎关注:👍点赞🙌收藏✍️留言 🏇码字不易,你的👍点赞🙌收藏❤️关注对我…

mac下安装vue cli脚手架并搭建一个简易项目

目录 1、确定本电脑下node和npm版本是否为项目所需版本。 2、下载vue脚手架 3、创建项目 1、下载node。 如果有node,打开终端,输入node -v和npm -v , 确保node和npm的版本,(这里可以根据自己的需求去选择,如果对最新版本的内容有…

JVM | 类加载是怎么工作的

类加载是怎么工作的 引言类加载器工作原理 | 城市建设过程1. 类加载器加载类前过程JVM进程启动 | 建筑工程立项Bootstrap类加载器创建扩展和应用类加载器 | 高级工程师的两位得力助手 2. 类加载器加载类后过程应用类加载器加载Building链接过程(验证,准备…

Huge and Efficient! 一文了解大规模预训练模型高效训练技术

本文分为三部分介绍了大模型高效训练所需要的主要技术,并展示当前较为流行的训练加速库的统计。文章也同步发布在AI Box知乎专栏(知乎搜索 AI Box专栏),欢迎大家在知乎专栏的文章下方评论留言,交流探讨! 引…

计算机图形学十四路径追踪与渲染方程

路径追踪(Path Tracing)与渲染方程(Render Equation) 简介 利用路径追踪我们可以实现比whitted-style ray tracing更好的全局光照(GI)效果。它的理论基础是渲染方程,最开始由吉姆卡吉亚&#…

066、故障处理之热点问题

为什么要解决热点 分布式架构中各个组件的理想状态:资源利用率相对均衡 形成写热点的原因 高频访问的小表SQL执行计划不合理具有顺序增长属性的索引扫描 数据组织模型 例如数据是序列递增,则有可能数据全部都集中一个region上 ,或者集中…

什么是等保定级?

TOC 一、等保评测介绍 1.1 等保定级目的 网络安全等级保护介绍:目的就是涉及民生问题的信息系统,要按照影响,提前划定等级 实施网络安全保护 信息系统:就是保护的系统,比如 魔幻的 健康码系统安全产品:健…

【lesson5】linux常见权限问题

文章目录 目录权限umask粘滞位 目录权限 先来思考一个问题: 进入一个目录需要什么权限呢? 由上图我们可以得知,进入目录需要x权限,那么没有r和w权限是什么情况呢? 从图中我们可以得知没有r权限不能查看目录里面的内容&#xff…

基于STM32设计的智能教室管理系统

前言 本文介绍了一个智慧教室的设计,该设计由电器设备控制系统、环境检测系统和考勤系统三大模块构成。通过使用STM32微处理器和物联网电器设备控制中心,实现对教室内风扇、照明灯和窗帘等电器设备的智能化统一控制与运行。同时,环境检测系统可以实时监测环境光强、温度、湿…

模型调参及优化

调参 调权重参数,偏置参数 训练数据集用来训练参数w,b 调超参数 验证数据集用来选择超参数学习率lr,隐藏层大小等 如何调参 当泛化误差和训练误差都没有降下去说明欠拟合;当训练误差降下去,但泛化误差出现上升形式&…

33. 本地记事本

本地记事本 html部分 <button class"add"><i class"iconfont icon-jiahao"></i> </button>css部分 *{margin: 0;padding: 0; } body{background-color: #7bdaf3;display: flex;padding-top: 3rem;flex-wrap: wrap; } .add{pos…

Vue2基础一、快速入门

零、文章目录 Vue2基础一、快速入门 1、Vue 概念 &#xff08;1&#xff09;为什么学 前端必备技能 岗位多&#xff0c;绝大互联网公司都在使用Vue 提高开发效率 高薪必备技能&#xff08;Vue2Vue3&#xff09; &#xff08;2&#xff09;Vue是什么 **概念&#xff1a;…