1.SQL Mode解决的问题:
    a.通过设置SQL Mode , 可以完成不同严格程度的数据校验,有效地保障数据准确性.
    b.通过设置SQL Mode 为ANSI模式,来保证大多数SQL符合标准的SQL语法,应用在不同数据库之间迁移时,对业务SQL进行的修改较小.
    
 
2.MySQL SQL Mode
    
    MySQL5.0上,默认SQL Mode(参数)为: REAL_AS_FLOAT , PIPES_AS_CONCAT, ANSI_QUOTES , GNORE_SPACE , ANSI .
    这种模式下,允许插入超过字段长度的值,只是在插入后,MySQL会返回一个Warning.
    通过修改SQL Mode 为 STRICT_TRANS_TABLES(严格模式),进行严格的数据校验,使得错误数据不能插入表中,从而保证数据的准确性.
 
    1).查看SQL Mode 命令
        SELECT @@sql_mode ;
 
    2).设置SQL Mode
        SET [SESSION|GLOBAL] sql_mode = 'xx_mode' ;
        
        其中,SESSION :  只在本次连接中生效;
        GLOBAL : 表示本次连接不生效,而对于新的连接则生效.
 
        另外可以在MySQL启动时,通过 --sql-mode="xx_mode" 来设置SQL Mode ;
 
 
3.SQL Mode 常见功能
    
    1).校验日期的合法性
        严格模式下 , 如果不合法,则报错;例如4月没有31日,这样的数据无法插入.
        非严格模式下, 会插入一条 0000-00-00 00:00:00 的数据
 
    2).INSERT/UPDATE过程中
        严格模式下 MOD(x,0) 这种会报错;
        非严格模式下 会插入 null
 
    3).NO_BACKSLASH_ESCAPES 模式
        导入数据时,如果数据中含有反斜线字符,启用NO_BACKSLASH_ESCAPES模式来保证数据的正确性,是个不错的选择.
    
    4).PIPES_AS_CONCAT模式
        其他数据库,如Oracle使用 || 作为字符串连接符,这样的SQL正常情况下在 MySQL中无法执行, 为了解决这个问题 , MySQL 提供了 PIPES_AS_CONCAT 模式.
 
 
 
4.常用的SQL Mode
    1).ANSI
        等同于 REAL_AS_FLOAT , PIPES_AS_CONCAT , ANSI_QUOTES , IGNORE_SPACE 和ANSI组合模式 , 使语法和行为更符合标准SQL.
 
    2).STRICT_TRANS_TABLES
        严格模式
 
    3)TRADITIONAL
        等同于 STRICT_TRANS_TABLES , STRICT_ALL_TABLES , NO_ZERO_IN_DATE , NO_ZERO_DATE , ERROR_FOR_DIVISION_BY_ZERO , TRADITIONAL , NO_AUTO_CREATE_USER 组合模式 , 所以它也是严格模式.
 
 
 
 
4.SQL Mode 在数据迁移中的使用
    1) 各种异构数据库在MySQL中的SQL Mode组合
        
        
 
DB2 PIPES_AS_CONCAT , ANSI_QUOTES , IGNORE_SPACE , NO_KEY_OPTIONS , NO_TABLE_OPTIONS , NO_FIELD_OPTIONS
MAXDB PIPES_AS_CONCAT , ANSI_QUOTES , IGNORE_SPACE , NO_KEY_OPTIONS , NO_TABLE_OPTIONS , NO_FIELD_OPTIONS , NO_AUTO_CREATE_USER
MSSQL PIPES_AS_CONCAT , ANSI_QUOTES , IGNORE_SPACE , NO_KEY_OPTIONS , NO_TABLE_OPTIONS , NO_FIELD_OPTIONS
ORACLE PIPES_AS_CONCAT , ANSI_QUOTES , IGNORE_SPACE , NO_KEY_OPTIONS , NO_TABLE_OPTIONS , NO_FIELD_OPTIONS , NO_AUTO_CREATE_USER
POSTGRESQL PIPES_AS_CONCAT , ANSI_QUOTES , IGNORE_SPACE , NO_KEY_OPTIONS , NO_TABLE_OPTIONS , NO_FIELD_OPTIONS
 
    NO_TABLE_OPTIONS : 可以去掉建表语句中的 table options, 例如engine的设置, 这种模式下 , 可以获得通用的建表脚本.
 
 
 
 
 
 
 

16 SQL Mode的更多相关文章

  1. SQL点滴16—SQL分页语句总结

    原文:SQL点滴16-SQL分页语句总结 今天对分页语句做一个简单的总结,他们大同小异的,只要理解其中一个其他的就很好理解了. 使用top选项 *from Orders orderid from Or ...

  2. 16 SQL Tuning Overview

    16.1 Introduction to SQL Tuning Identifying high load or top SQL statements that are responsible for ...

  3. 16.Mysql SQL Mode

    16.SQL Mode及相关问题SQL Mode定义了Mysql支持的SQL语法和数据校验级别,Mysql支持多种SQL Mode.用途: 设置不同的SQL Mode可以对数据进行不同严格程度的校验, ...

  4. SQL必知必会1-13 读书笔记

    博主不想写字并向你仍来了一堆代码 1-6 SQL——结构化查询语言,Structured Query Language: 基本按列查询: mysql> SELECT prod_id,prod_n ...

  5. 浅谈数据库优化方案--表和SQL

    1.数据类型的选择 1.字段最好设置为非空.若字段为char(8),即便是NULL也会现有8个字符的空间. 2.尽量使用数字型字段,若只含数值信息的字段尽量不要设计为字符型,这会降低查询和连接的性能, ...

  6. 当您尝试从 64 位 SQL Server 客户端上运行分布式的查询到链接的 32 位 SQL Server 时,您可能会收到一条错误消息

    如何处理64位SQL访问32位SQL执行脚本语句问题 链接服务器"SERVER_YBJK"的 OLE DB 访问接口 "SQLNCLI10" 返回了消息 &qu ...

  7. SQL修炼道路上必看的书籍

    1 SQL应用重构 9787111263586 2 SQL 必知必会(第3版) 9787115162601 3 SQL Server 2005高级程序设计 9787115170798 4 SQL 解惑 ...

  8. 基于Sql Server 2008的分布式数据库的实践(五)

    原文 基于Sql Server 2008的分布式数据库的实践(五) 程序设计 ------------------------------------------------------------- ...

  9. SUP (SAP Mobile SDK 2.2) 连接 Sybase SQL Anywhere sample 数据库

    安装了   SAP Mobile SDK 2.2   后发现,这个版本没有自带Sybase SQL Anywhere  数据库. 解决办法: 1. 免费下载 SQL Anywhere Develope ...

随机推荐

  1. vue 和 jquery混合使用

    有时候只要想到要用的 vue.js 的时候就会惯性的想起用vue-cli手脚架搭建一个项目,但是有时候的业务场景并不适合用vue-cli手脚架,这个时候使用vue+jquery混合使用,把他们的优点结 ...

  2. redhat7.6 DNS配置正向解析

    1.安装DNS服务 yum install bind yum install bind-chroot 安装完的配置文件/etc/named.conf 启动systemctl start named.s ...

  3. uniGUI之通过URL控制参数(25)

    通过URL代入参数,在代码中读取,如: http://localhost:8077/?ServerPort=212&&ServerIP=192.168.31.12 procedure ...

  4. MinGW x64 for Windows安装

    1. 百度搜索MinGW gcc 或直接登录 MinGW gcc官网 http://www.mingw.org/ 2.选择左侧download链接,进入下载页面 3.下载安装包mingw-get-se ...

  5. RuntimeError: cuda runtime error (10) : invalid device ordinal

    This is caused by the unmatching of gpu device number when loading a saved model. torch.load('my_fil ...

  6. ios APP进程杀死之后和APP在后台接收到推送点击跳转到任意界面处理

    https://www.jianshu.com/p/ce0dc53eb627 https://www.cnblogs.com/er-dai-ma-nong/p/5584724.html github: ...

  7. Python压缩文件/文件夹

    [Python压缩文件夹]导入“zipfile”模块 def zip_ya(startdir,file_news): startdir = ".\\123" #要压缩的文件夹路径 ...

  8. PAT A1034 Head Of Gang

    用并查集分割团伙,判断输出~ #include<bits/stdc++.h> using namespace std; ; },weight[maxn]; unordered_map< ...

  9. Unity初步 基本拼图实现

    using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; ...

  10. 1.WEB安全概述

    一.WEB常见的安全性问题简介 XSS(Cross-Site Scripting):跨站脚本攻击漏洞 CSRF(Cross-site request forgery):跨站请求伪造 文件上传漏洞 SQ ...