MySQL的SQL Mode

MySQL服务器能够工作在不同的SQL模式下,并能针对不同的客户端以不同的方式应用这些模式。这样,应用程序就能对服务器操作进行量身定制以满足自己的需求。这类模式定义了MySQL应支持的SQL语法,以及应该在数据上执行何种确认检查。可以使用“--sql-mode="modes"”选项,通过启动mysqld来设置默认的SQL模式。也能在启动之后,使用SET [SESSION|GLOBAL] sql_mode=‘modes‘语句,通过设置sql_mode变量更改模式。

sql_mode常用值如下:

ONLY_FULL_GROUP_BY:对于GROUP BY聚合操作,如果在SELECT中的列,没有在GROUP BY中出现,那么这个SQL是不合法的,因为列不在GROUP BY从句中

NO_AUTO_VALUE_ON_ZERO:该值影响自增长列的插入。默认设置下,插入0或NULL代表生成下一个自增长值。如果用户希望插入的值为0,而该列又是自增长的,那么这个选项就有用了。

STRICT_TRANS_TABLES:在该模式下,如果一个值不能插入到一个事务表中,则中断当前的操作,对非事务表不做限制

NO_ZERO_IN_DATE:在严格模式下,不允许日期和月份为零

NO_ZERO_DATE:设置该值,mysql数据库不允许插入零日期,插入零日期会抛出错误而不是警告。

ERROR_FOR_DIVISION_BY_ZERO:在INSERT或UPDATE过程中,如果数据被零除,则产生错误而非警告。如果未给出该模式,那么数据被零除时MySQL返回NULL

NO_AUTO_CREATE_USER:禁止GRANT创建密码为空的用户

NO_ENGINE_SUBSTITUTION:如果需要的存储引擎被禁用或未编译,那么抛出错误。不设置此值时,用默认的存储引擎替代,并抛出一个异常

PIPES_AS_CONCAT:将"||"视为字符串的连接操作符而非或运算符,这和Oracle数据库是一样的,也和字符串的拼接函数Concat相类似

ANSI_QUOTES:启用ANSI_QUOTES后,不能用双引号来引用字符串,因为它被解释为识别符

说明:SQL Mode可以设置为多个模式中间用逗号隔开就行。

时间: 2024-10-21 05:08:21

MySQL的SQL Mode的相关文章

退役笔记一#MySQL = lambda sql : sql + ' Source Code 4 Explain Plan '

Mysql 查询执行过程 大致分为4个阶段吧: 语法分析(sql_parse.cc<词法分析, 语法分析, 语义检查 >) >>sql_resolver.cc # JOIN.prepare 生成逻辑查询plan(sql_optimizer.cc) >># JOIN.optimize 生成物理查询plan(sql_planner.cc) run the explain plan(sql_executor.cc) 退役笔记一#MySQL = lambda sql : sql

Oracle、MySql、Sql Server比对

1.    价格 MySql:廉价(部分免费):当前,MySQL採用双重授权(DualLicensed),他们是GPL和MySQLAB制定的商业许可协议.假设你在一个遵循GPL的自由(开源)项目中使用MySQL,那么你能够遵循GPL协议免费使用MySQL.否则,你须要购买MySQLAB制定的那个商业许可协议.Windows $200,Unix或Linux自行安装免费,.Unix或Linux第三方安装$200. Sql Server:适中. SQL 2008 标准版:[1CPU 无限用户 R2 版

mysql执行sql文件

mysql -uspider_55haitao -pspider_55haitao -Dspider_55haitao</home/gphonebbs/Dump20161109.sql 方法一 使用cmd命令执行(windows下,unix或Linux在的其控制台下)[MySQL的bin目录]\mysql –u用户名 –p密码 –D数据库<[sql脚本文件路径全名],示例:D:\mysql\bin\mysql –uroot –p123456 -Dtest<d:\test\ss.sql注意

如何在dos命令中启动mysql或sql server 服务器的一些操作

========================dos命令启动mysql或者sql srever 的步骤================= 一.dos命令启动mysql 1.进入dos命令窗口 2.启动mysql服务器,net start mysql 3.登录到mysql服务器中,mysql -hlocalhost -uroot -p123456() 4.首先可以先显示所有的数据库,show databases; 5.看到有哪些数据库可以使用数据库,use 数据库名; 6.进入到数据库中后,先看

ubuntu操作mysql新手sql教程

ubuntu操作mysql新手sql教程 1.启动mysql数据库: 效果: 2.进入mysql: 效果: 3.查看所有数据库: 效果: 4.创建数据库: 效果: 5.进入数据库: 效果: 6.创建表: 效果: 7.往表里插入数据: 效果: 8.显示字段及一些非空信息: 效果: 9.查看表内容: 效果: 10.退出mysql数据库: 效果: 11.关闭mysql数据库: 效果:

MySQL audit—SQL审计插件

自从MySQL5.6出现以来开始对json的支持后,使得在MySQL上增加了一些新特性,为此这一点让MySQL增加了一些新的插件支持,在这里就说一说MySQL的SQL审计插件,SQL审计插件并不是MySQL官方的,它是由macfee公司基于percona开发的,所以,在添加SQL审计的插件功能时需要去下载对应版本的MySQL audit插件(支持MariaDB),至于MySQL的插件安装比较简单,记得以前有说过MySQL的半同步复制功能时,其中的半同步复制也是插件,需要的可以参看:http://

Orecle Mysql 基本sql语句DDL & DML 介绍与总结 by 冰琉璃

先给大家普及一下安装mysql的简易方法:yum yum search mysql (查找关于mysql的内容) 找到后需要安装3个内容 mysql.i386 mysql-server.i386 mysql-devel.i386 安装过后 service mysqld start (启动mysql服务) 进入mysql mysql -h -u root -p 密码直接回车 开始密码为默然:以后可以在mysql里面改密码或者创建账号等操作 Mysql的sql语句大致分为4种  DDL (定义语句)

mysql 更新sql报错:You can&#39;t specify target table &#39;wms_cabinet_form&#39; for update in FROM clause

数据库里面有两个字段的位置不对,要把他们对调换下.因为没有数据库写的权限,需要用sql语句来实现.原来以为简单的 update table a set a.字段a=(select b字段 from table  where id=?) ,set a.字段b=(select a字段 from table where id=?) where id=? ,结果报了 这个问题 You can't specify target table 'wms_cabinet_form' for update in

怎么将oracle的sql文件转换成mysql的sql文件

将sql文件导入PowerDesigner中的方法(将oracle sql文件转换成mysql) 将xxxxxx.sql文件的数据库结构导入powerdesigner 的方法 步骤如下: 第一步:将要导入的库的所有表的表结构(不要表数据,只要表结构)导出成一个.sql文件. 第二步:在powerdesinger里找到 File >> Reverse Engineer >> Database ,如下图 图一,选择“share the DBMS definition”然后点击确定.注意

mysql执行sql及慢查询监控

[前言] mysql可以记录用户执行的sql:记录到文件.表格 mysql可以定义执行多少时间以上得sql属于慢查询,也会根据配置,记录相关信息到文件.表格 [背景说明] 公司想监控记录每天执行了哪些sql,哪些sql是慢查询,然后去优化sql [技术说明] 其实只要搞清楚了mysql怎样记录执行sql的 怎样记录慢查询的即可 接下来就是写代码去梳理成报告,我这里使用的是python [最终效果如下] [技术细节] 1.修改my.cnf #整体的效果,全局开启表和日志文件都写,但是对于gener