【转】 mysql反引号的使用(防冲突)

转载地址:http://blog.itechol.com/space.php?uid=33&do=blog&id=6681

1、mysql语句中 反引号 【`】作用: 避免表明、字段名与mysql已存在的【保留字】冲突,引起不知名错误。

2、所以我们建表和字段时候,特别需要注意,尽量使用全拼/下划线 来设置字段和表名

3、连接不同数据库查询,一定不要加【`】反引号,否则会被解析成 单个表

4、为了区分MYSQL的保留字与普通字符而引入的符号。

举个例子:SELECT `select` FROM `test` WHERE select=‘字段值‘

在test表中,有个select字段,如果不用反引号,MYSQL将把select视为保留字而导致出错,所以,有MYSQL保留字作为字段的,必须加上反引号来区分。

 

引号一般用在字段的值,如果字段值是字符或字符串,则要加引号,如:select=‘字段值‘

 

不加反引号建的表不能包含MYSQL保留字,否则出错

5、mysql常见的保留字

=======================================================

使用mysql时一定要注意,不要使用它的保留字作为表名或者列名,否则会出现莫名其妙的错误。

昨天建了一个表,其中一列名为interval(时间间隔),结果数据死都插不进去,最后才发现原来interval是mysql的保留字。

以后出现类似的错误要先想想是不是因为表名或列名冲突造成的啊。

从网上找了一个mysql的保留字列表,仅供参考。

ADD ALL ALTER
ANALYZE AND AS
ASC ASENSITIVE BEFORE
BETWEEN BIGINT BINARY
BLOB BOTH BY
CALL CASCADE CASE
CHANGE CHAR CHARACTER
CHECK COLLATE COLUMN
CONDITION CONNECTION CONSTRAINT
CONTINUE CONVERT CREATE
CROSS CURRENT_DATE CURRENT_TIME
CURRENT_TIMESTAMP CURRENT_USER CURSOR
DATABASE DATABASES DAY_HOUR
DAY_MICROSECOND DAY_MINUTE DAY_SECOND
DEC DECIMAL DECLARE
DEFAULT DELAYED DELETE
DESC DESCRIBE DETERMINISTIC
DISTINCT DISTINCTROW DIV
DOUBLE DROP DUAL
EACH ELSE ELSEIF
ENCLOSED ESCAPED EXISTS
EXIT EXPLAIN FALSE
FETCH FLOAT FLOAT4
FLOAT8 FOR FORCE
FOREIGN FROM FULLTEXT
GOTO GRANT GROUP
HAVING HIGH_PRIORITY HOUR_MICROSECOND
HOUR_MINUTE HOUR_SECOND IF
IGNORE IN INDEX
INFILE INNER INOUT
INSENSITIVE INSERT INT
INT1 INT2 INT3
INT4 INT8 INTEGER
INTERVAL INTO IS
ITERATE JOIN KEY
KEYS KILL LABEL
LEADING LEAVE LEFT
LIKE LIMIT LINEAR
LINES LOAD LOCALTIME
LOCALTIMESTAMP LOCK LONG
LONGBLOB LONGTEXT LOOP
LOW_PRIORITY MATCH MEDIUMBLOB
MEDIUMINT MEDIUMTEXT MIDDLEINT
MINUTE_MICROSECOND MINUTE_SECOND MOD
MODIFIES NATURAL NOT
NO_WRITE_TO_BINLOG NULL NUMERIC
ON OPTIMIZE OPTION
OPTIONALLY OR ORDER
OUT OUTER OUTFILE
PRECISION PRIMARY PROCEDURE
PURGE RAID0 RANGE
READ READS REAL
REFERENCES REGEXP RELEASE
RENAME REPEAT REPLACE
REQUIRE RESTRICT RETURN
REVOKE RIGHT RLIKE
SCHEMA SCHEMAS SECOND_MICROSECOND
SELECT SENSITIVE SEPARATOR
SET SHOW SMALLINT
SPATIAL SPECIFIC SQL
SQLEXCEPTION SQLSTATE SQLWARNING
SQL_BIG_RESULT SQL_CALC_FOUND_ROWS SQL_SMALL_RESULT
SSL STARTING STRAIGHT_JOIN
TABLE TERMINATED THEN
TINYBLOB TINYINT TINYTEXT
TO TRAILING TRIGGER
TRUE UNDO UNION
UNIQUE UNLOCK UNSIGNED
UPDATE USAGE USE
USING UTC_DATE UTC_TIME
UTC_TIMESTAMP VALUES VARBINARY
VARCHAR VARCHARACTER VARYING
WHEN WHERE WHILE
WITH WRITE X509
XOR YEAR_MONTH ZEROFILL

注:MySQL允许部分关键字用做未引起来的识别符,因为许多人以前曾使用过它们。

如:ACTION、BIT、DATE、ENUM、NO、TEXT、TIME、TIMESTAMP

原文地址:https://www.cnblogs.com/xuzhengzong/p/9049246.html

时间: 2024-10-07 22:57:12

【转】 mysql反引号的使用(防冲突)的相关文章

mysql反引号和引号的用法

反引号,一般在ESC键的下方. 它是为了区分MYSQL的保留字与普通字符而引入的符号.举个例子:SELECT `select` FROM `test` WHERE select='字段值'在test表中,有个select字段,如果不用反引号,MYSQL将把select视为保留字而导致出错,所以,有MYSQL保留字作为字段的,必须加上反引号来区分. 引号一般用在字段的值,如果字段值是字符或字符串,则要加引号,如:select='字段值'不加反引号建的表不能包含MYSQL保留字,否则出错用普通引号,

(转)mysql创建表时反引号的作用

(转)mysql创建表时反引号的作用 试用navicat工具查看现网mysql建表语句时,发现表名和字段名都是反引号引起来的 1 2 3 4 5 6 7 8 9 10 11 CREATE TABLE `tab_notice_title_tv` (   `i_id` int(11) NOT NULL AUTO_INCREMENT,   `c_opcom_key` varchar(32) DEFAULT NULL,   `c_view_type` int(11) DEFAULT '1' COMMEN

mysql的反引号backtick

在mysql 的查询语句中,当标识符包含特殊字符或保留字时,这些标识符需要使用(`)括起来,比如,查询一个名字叫FOO#BAR的数据表,或一个名叫 SELECT的字段的时候,你应该把这两个标识符写成`FOO#BAR` and `SELECT`,因为反引号提供一个额外的安全保护,它在程序生成的sql语句中被广泛运用. 许多其他数据库系统使用双引号(")把特殊符号括起来,为了提高移植性,你可以将sql_mode的值加上ANSI_QUOTES ,这样就可以使用双引号把特殊符号括起来了.

mysql数据库字段命名与关键字冲突之坑

mysql> SELECT desc,status,play_time,push_type, 'interval' FROM cms_push; ERROR 2006 (HY000): MySQL server has gone away No connection. Trying to reconnect... Connection id: 700 Current database: xxx_cms ERROR 1064 (42000): You have an error in your S

Perl和操作系统交互(一):system、exec和反引号

调用操作系统命令:system函数 system函数可以直接让perl调用操作系统中的命令并执行. system入门示例 例如: #!/usr/bin/perl system 'date +"%F %T"'; system 'echo hello world'; system 'echo',"hello","world"; 执行结果: 2018-06-21 18:32:50 hello world hello world 注意system的参数可

多命令顺序执行,单引号,双引号,反引号,转义符

多命令顺序执行 ; 多命令顺序执行 && 逻辑与 前命令执行ok,后面进行 || 逻辑或 前命令执行失败 后面执行 | 命令1|命令2 命令1结果,让命令来处理通配符 ?匹配任意一个字符 * 匹配0个或者多个任意字符 [] 匹配中括号中的任意一个字符 [-] 匹配括号中的任意一个字符 [^] 逻辑非 匹配不是中括号中的任意一个字符 [[email protected] biji]# aa=666 [[email protected] biji]# echo $aa #打印变量aa666[[

mysql不能写入数据之关键字冲突

问题描述:今天使用mysql新建了一个表.在插入数据时,报了语法错误.由于使用的是 mabits 代码自动生成工具,并且自己没有改写其中的sql语句.所以确信,sql语句部分应该没有可能写错.因此马上意识到可能表里面的字段出了问题.于是查看表里面的字段,发现有一个desc 字段和mysql中降序的关键字冲突了.然后顺手把这个字段改写成了describe.到这里,以为问题就应该解决了.谁料想,又冲突了.describe也是mysql的关键字.于是上网搜了一下mysql 关键字表. 如下是mysql

linux-单引号、双引号、反引号的区别。

一.单引号和双引号 单引号和双引号,都是为了解决中间有空格的问题. 因为空格在Linux中时作为一个很典型的分隔符,比如string1=this is astring,这样执行就会报错.为了避免这个问题,因此就产生了单引号和双引号.他们的区别在于,单 引号将剥夺其中的所有字符的特殊含义,而双引号中的'$'(参数替换)和'`'(命令替换)是例外.所以,两者基本上没有什么区别,除非在内容中遇到了参数替换符$和命令替换符 `. 所以下面的结果:num=3echo '$num'$numecho "$nu

Linux Shell 中的反引号,单引号,双引号

反引号 反引号位 (`) 位于键盘的Tab键的上方.1键的左方.注意与单引号(')位于Enter键的左方的区别. 在Linux中起着命令替换的作用.命令替换是指shell能够将一个命令的标准输出插在一个命令行中任何位置. 如下,shell会执行反引号中的date命令,把结果插入到echo命令显示的内容中. [[email protected] sh]# echo The date is `date` The date is 2016年 08月 7日 星期日  19:25:43 CST 单引号,双