深入理解mysql字段名和保留字冲突的问题
这篇文章主要介绍了mysql字段名和保留字冲突的问题,有一定的参考价值,感兴趣的朋友可以参考一下,希望对你有所帮助!
建了个表,有个字段起名为key,结果insert语句报错了,说是sql不对。
建表语句如下:
CREATE TABLE `base_error_message_test` (
`message_id` varchar(50) NOT NULL,
`message` text ,
`send_count` int(2) DEFAULT '0' ,
`status` int(2) DEFAULT '0' ,
`last_modified_date` datetime DEFAULT NULL ,
`creation_date` datetime DEFAULT NULL ,
`topic` varchar(50) DEFAULT NULL,
`key` varchar(50) DEFAULT NULL,
PRIMARY KEY (`message_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='推送失败消息记录表';
以下语句是不对的:
select key from base_error_message_test;
INSERT INTO base_error_message_test (message_id, message, send_count, status, last_modified_date, creation_date, topic, key) VALUES (.......);
原因:字段key和mysql的保留字冲突了,当mysql的字段名和保留字冲突的时候,sql语句中的字段名需要加上反引号``来加以区别,反引号可以用Esc键下面那个按键在英文模式不按shift键打出来,注意,是反引号不是单引号,回车键左边那个是单引号。
所以上面两个语句可以这样写:
select `key` from base_error_message_test;
INSERT INTO base_error_message_test (message_id, message, send_count, status, last_modified_date, creation_date, topic, `key`) VALUES (.......);
另外附上mysql保留字列表:
Reserved Words in MySQL 5.6.23 |
|
|
ACCESSIBLE |
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 |
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 |
p |
DOUBLE |
DROP |
DUAL |
EACH |
ELSE |
ELSEIF |
ENCLOSED |
ESCAPED |
EXISTS |
EXIT |
EXPLAIN |
FALSE |
FETCH |
FLOAT |
FLOAT4 |
FLOAT8 |
FOR |
FORCE |
FOREIGN |
FROM |
FULLTEXT |
GET |
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 |
IO_AFTER_GTIDS |
IO_BEFORE_GTIDS |
IS |
ITERATE |
JOIN |
KEY |
KEYS |
KILL |
LEADING |
LEAVE |
LEFT |
LIKE |
LIMIT |
LINEAR |
LINES |
LOAD |
LOCALTIME |
LOCALTIMESTAMP |
LOCK |
LONG |
LONGBLOB |
LONGTEXT |
LOOP |
LOW_PRIORITY |
MASTER_BIND |
MASTER_SSL_VERIFY_SERVER_CERT |
MATCH |
MAXVALUE |
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 |
PARTITION |
PRECISION |
PRIMARY |
PROCEDURE |
PURGE |
RANGE |
READ |
READS |
READ_WRITE |
REAL |
REFERENCES |
REGEXP |
RELEASE |
RENAME |
REPEAT |
REPLACE |
REQUIRE |
RESIGNAL |
RESTRICT |
RETURN |
REVOKE |
RIGHT |
RLIKE |
SCHEMA |
SCHEMAS |
SECOND_MICROSECOND |
SELECT |
SENSITIVE |
SEPARATOR |
SET |
SHOW |
SIGNAL |
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 |
XOR |
YEAR_MONTH |
ZEROFILL |
NewReserved Words in MySQL 5.6 |
|
|
GET |
IO_AFTER_GTIDS |
IO_BEFORE_GTIDS |
MASTER_BIND |
ONE_SHOT |
PARTITION |
SQL_AFTER_GTIDS |
SQL_BEFORE_GTIDS |
|
【相关教程推荐】
1. mysql数据库图文教程
3. bootstrap教程

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

MySQL 8.4(截至 2024 年的最新 LTS 版本)中引入的主要变化之一是默认情况下不再启用“MySQL 本机密码”插件。此外,MySQL 9.0完全删除了这个插件。 此更改会影响 PHP 和其他应用程序

使用PHP设置MySQL连接池,可以提高性能和可伸缩性。步骤包括:1.安装MySQLi扩展;2.创建连接池类;3.设置连接池配置;4.创建连接池实例;5.获取和释放连接。通过连接池,应用程序可以避免为每个请求创建新的数据库连接,从而提升性能。

PHP提供以下方法来删除MySQL表中的数据:DELETE语句:用于从表中删除匹配条件的行。TRUNCATETABLE语句:用于清空表中的所有数据,包括自增ID。实战案例:可以使用HTML表单和PHP代码从数据库中删除用户。表单提交用户ID,PHP代码使用DELETE语句从users表中删除匹配ID的记录。

PHP连接MySQL后页面空白,die()函数失效的原因分析在学习PHP和MySQL数据库连接的过程中,常常会遇到一些让人困惑...

在LAMP架构下整合Node.js或Python服务许多网站开发者都面临这样的问题:已有的LAMP(Linux Apache MySQL PHP)架构网站需要...

如何在PC端和移动端共享同一个页面并处理缓存问题?在使用宝塔后台搭建的nginx php mysql环境下,如何让PC端和�...

PHP乐观锁与事务结合扣除余额问题详解本文将详细分析一个使用PHP、乐观锁和数据库事务进行余额扣除时,只成...
