【MySQL】字段名與關鍵字沖突解決辦法

??首先,不推薦使用MySQL的關鍵詞來作為字段名,但是有時候的確沒有注意,或者因為之前就這么寫了,沒辦法,那怎么辦呢?

  • 方法1,改字段名,改了肯定就沒問題了。這個就不細說了。
  • 方法2,使用引號`來處理。

??下面就詳細的說明一下怎樣使用方法2來處理。

1. 創(chuàng)建測試表

CREATE TABLE `test` (
  `maxvalue` int(10) DEFAULT NULL,
  `id` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

??上面的測試表是MySQL自動生成的DDL,其實從上面就可以看出,MySQL的引號內(nèi)是說明絕對的保證大小寫和當做普通字符串處理。
??這里使用了maxvalue這個不常用的關鍵詞作為字段名,一樣違反了通常常規(guī)的命名規(guī)則,MySQL無法很好的識別。


Test表結(jié)構

2. 錯誤問題現(xiàn)象重現(xiàn)

??查詢SQL:

SELECT t.id, t.maxvalue FROM test t
SELECT查詢結(jié)果

??在navicat中可以正常執(zhí)行,沒有任何問題。
??然后再運行insert語句:

INSERT INTO test(maxvalue, id) VALUES (10, 1);

??提示下面的錯誤:

INSERT INTO test(maxvalue, id) VALUES (10, 1)
> 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'maxvalue, id) VALUES (10, 1)' at line 1
> 時間: 0.02s

??提示錯誤,但是沒有明顯的說明是關鍵詞不能識別。


使用非法關鍵詞的錯誤

3. SQL語句中的解決辦法

??增加引號,使用MySQL的引號“`”,記住不是普通的英文單引號“'”,是傾斜的上撇,不是豎直的上撇。
??鍵盤輸入方式為鍵盤英文字母鍵上面的數(shù)字鍵1最前面的那個波浪線和頓號組成的鍵。也就是ESC下面,TAB鍵上面的按鍵。

INSERT INTO test(`maxvalue`, id) VALUES (10, 1);
修改后可以正常執(zhí)行的測試結(jié)果

??這樣就可以正常運行了。

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內(nèi)容