mysql ANSI_QUOTES 这个sql_mode的作用

首先sql_mode用于mysql的行为,sql_mode的多个值之间用‘,‘分隔;

1、平时sql_mode的值是多少?

select @@session.sql_mode;
+---------------------------------------------------------+
| @@session.sql_mode                                      |
+---------------------------------------------------------+
| STRICT_TRANS_TABLES,NO_ZERO_DATE,NO_ENGINE_SUBSTITUTION |
+---------------------------------------------------------+

2、如果我放荡不羁想建一张表、它的表名就叫table 那我要怎么做才好?

create table `table`(x int);
Query OK, 0 rows affected (0.01 sec)

  看到了没有这个时候我要用‘反引号‘ 把table 这个表名给引起来;哥哥我大一的时候真的是找到不这个’反引号‘怎么打出来呀!

  为了初学者不至于因为打不出‘反引号’而不能放荡不羁,于是ANSI_QUOTES出来了;有了它我们只有把关键字用‘双引号’引起来

  就对了。

3、给sql_mode加上ANSI_QUOTES

set @@session.sql_mode=concat(‘STRICT_TRANS_TABLES,NO_ZERO_DATE,NO_ENGINE_SUBSTITUTION‘,‘,ANSI_QUOTES‘);
Query OK, 0 rows affected, 1 warning (0.00 sec)

  #注意mysql中两个字符串是不能直接用+号连接起来的,要用concat函数。

4、查看mysql有ANSI_QUOTES后有多牛逼

mysql> show tables;
+-------------------+
| Tables_in_tempdb  |
+-------------------+
| django_migrations |
| polls_user        |
| t2                |
| table             |
+-------------------+
4 rows in set (0.00 sec)

mysql>
mysql>
mysql>
mysql> drop table "table";
Query OK, 0 rows affected (0.00 sec)

  看到了吧、在drop table 语句中的表名直接用"号引起来就行了。

---

时间: 2024-07-29 07:14:26

mysql ANSI_QUOTES 这个sql_mode的作用的相关文章

MySQL数据类型:SQL_MODE设置不容忽视

[IT168 技术]SQL_MODE可能是比较容易让开发人员和DBA忽略的一个变量,默认为空.SQL_MODE的设置其实是比较冒险的一种设置,因为在这种设置下可以允许一些非法操作,比如可以将NULL插入NOT NULL的字段中,也可以插入一些非法日期,如“2012-12-32”.因此在生产环境中强烈建议开发人员将这个值设为严格模式,这样有些问题可以在数据库的设计和开发阶段就能发现,而如果在生产环境下运行数据库后发现这类问题,那么修改的代价将变得十分巨大.此外,正确地设置SQL_MODE还可以做一

mac os x mysql 出现./mysql: unknown variable 'sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABL 问题

装完数据库之后,最开始都还好好的,隔了几天发现打不开了 点击start 没有反应,然后通过终端在mysql 安目录下 运行./mysql 出现: unknown variable 'sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABL,最后在/etc/my.cnf 中,把 sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABL 删掉或者注释掉,发现问题解决了. mac os x mysql 出现./mysq

MySQL数据库中delimiter的作用概述

以下的文章主要是向大家描述的是MySQL数据库中delimiter的作用是什么?我们一般都认为这个命令和存储过程关系不大,到底是不是这样的呢?以下的文章将会给你相关的知识,望你会有所收获. 其实就是告诉MySQL解释器,该段命令是否已经结束了,MySQL数据库是否可以执行了.默认情况下,delimiter是分号;.在命令行客户端中,如果有一行命令以分号结束,那么回车后,MySQL将会执行该命令.如输入下面的语句 MySQL> select * from test_table; 然后回车,那么My

mysql的日志类型及作用

mysql的日志类型及作用 当服务起不来或者报错的时候,我们第一时间想到的就是日志,日志这个东西记载了许多重要的信息,有利于我们排除故障.当然,mysql也有日志. 先来说说,mysql日志的作用,当数据库遭到意外损坏,服务起不来等等,可以通过日志文件来拍错. 还可以利用日志文件来进行数据恢复. 一.日志的分类 1.错误日志:记录了mysql服务的启动,关闭和运行时发生的错误: 2.通用查询日志:记录用户的所有操作,包括启动.关闭服务,插入.查询等语句: 3.二进制日志:以二进制的形式记录了数据

mysql中OPTIMIZE TABLE的作用及使用

来看看手册中关于 OPTIMIZE 的描述: OPTIMIZE [LOCAL | NO_WRITE_TO_BINLOG] TABLE tbl_name [, tbl_name] ... 如果您已经删除了表的一大部分,或者如果您已经对含有可变长度行的表(含有VARCHAR, BLOB或TEXT列的表)进行了很多更改,则应使用OPTIMIZE TABLE.被删除的记录被保持在链接清单中,后续的INSERT操作会重新使用旧的记录位置.您可以使用OPTIMIZE TABLE来重新利用未使用的空间,并整理

mysql中OPTIMIZE TABLE的作用

在使用mysql的时候有时候,可能会发现尽管一张表删除了许多数据,但是这张表表的数据文件和索引文件却奇怪的没有变小.这是因为mysql在删除数据(特别是有Text和BLOB)的时候,会留下许多的数据空洞,这些空洞会占据原来数据的空间,所以文件的大小没有改变.这些空洞在以后插入数据的时候可能会被再度利用起来,当然也有可能一直存在.这种空洞不仅额外增加了存储代价,同时也因为数据碎片化降低了表的扫描效率. 1.先来看看多次删除插入操作后的表索引情况 mysql> SHOW INDEX FROM `tb

mysql数据类型 和 sql_mode

##################################################################### 开发DBA:数据库设计(E-R关系图).SQL开发.内置函数.存储例程(存储过程和存储函数).触发器.事件调度器(event scheduler) 管理DBA:安装.升级,备份.恢复,用户管理.权限管理,监控.分析.基准测试,语句优化(SQL语句),数据字典,按需要配置服务器(服务器变量:MyISAM, InnoDB, 缓存, 日志) SQL语言组成部分:

MySQL数据库排序选择的作用和该如何选择编码格式

前言:在创建数据库的时候,会有这样一个选项->排序规则,平时在创建数据库的时候并没有注意,只是选择了默认,也没感觉有什么问题,今天看到这个突然好奇起来,所以看了一些资料做了以下的一些总结,若有错误之处请斧正. 这个排序规则的作用是什么?可以避免一些在数据库导入时出现的一些错误.很多时候在导入数据库的时候会出现字符乱码的问题,但是如果定制编码的话,就会更容易的发现问题.在mysql中我们经常使用的是utf8_unicode_ci和utf8_general_ci,两者还是有一些区别的,当前,utf8

docker 修改 mysql 5.7 sql_mode

docker exec -ti {容器ID} /bin/bash   进入容器 apt-get install vim 安装vim 找到 vim /etc/mysql/my.cnf 在 [mysqld] 下添加 sql_mode={你想要的sql_mode,可以先用 select @@sql_mode 查询出现有的sql_mode 去掉你不想要的,然后复制进来即可} 原文地址:https://www.cnblogs.com/huhuixin/p/9166255.html