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. C++11特性中的stoi、stod

    本文摘录柳神笔记:   使⽤ stoi . stod 可以将字符串 string 转化为对应的 int 型. double 型变量,这在字符串处理的很 多问题中很有帮助-以下是示例代码和⾮法输⼊的处理 ...

  2. 洗牌利器——random.shuffle()函数

    random.shuffle()是一个非常实用但是又非常容易被忽略的函数,shuffle在英语里是"洗牌"的意思,该函数非常形象地模拟了洗牌的过程,即: random.shuffl ...

  3. 运营商如何关闭2G、3G网络?这事儿得从小灵通说起

    5G时代即将全面开启,主流声音是对未来的无限畅想--5G将带来翻天覆地的变化.不过凡事都有利弊两面性,5G作为新生事物固然大有可为,但不可避免地会对旧事物造成巨大冲击.除了会影响很多跟不上潮流发展的行 ...

  4. 在iOS项目中,这样才能完美的修改项目名称

    https://www.cnblogs.com/liangyi-cn/p/8657474.html 前言: 在iOS开发中,有时候想改一下项目的名字,这会遇到很多麻烦. 直接改项目名的话,Xcode不 ...

  5. 【转】Node.js到底是用来做什么的

    Node.js的到底是用来做什么的 在阐述之前我想放一个链接,这是国外的一个大神,对于node.js非常好的一篇介绍的文章,英文比较好的朋友可以直接去阅读,本文也很大程度上参考了这篇文章,也同时感谢知 ...

  6. Myeclipse创建HTML文件中文显示乱码问题

    例如 运行结果 错误原因 不同浏览器的,编码格式不同 解决方法 运行结果 通常charset的设值我们常用的有gb2312,gbk,utf-8三种,即有三种编码规定: <meta http-eq ...

  7. SQL模糊匹配之正则表达式

    −      方括号[ ]:指定一个字符.字符串.匹配他们中的任意一个. −      示例1:查询用户名以J或者以M开头的用户信息 −      SELECT user_name FROM ecs_ ...

  8. python爬虫(五) ProxyHandler处理器

    ProxyHandler处理器 一.如果我们在一段时间内用某个ip地址访问了一个网站次数过多,网站就检测到不正常,就会禁止这个ip地址的访问.所以我们可以设置一些代理服务器,每段时间换个代理,就算ip ...

  9. Linux命令:ping命令

    ping命令:类似于windows的ping命令,用于测试网络主机ICMP请求回应的 ping选项 ping -c  #             # 执行次数 -w #             #测试 ...

  10. Linux centosVMware 配置Tomcat监听80端口、配置Tomcat虚拟主机、Tomcat日志

    一.配置Tomcat监听80端口 关闭tomcat报错 [root@davery src]# /usr/local/tomcat/bin/shutdown.sh 重装tomcat即可 vim /usr ...