首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

MySQL 刪除報錯「Unknown column 'aaa'」?字符串值必須加引號!

     編輯:程式設計疑難解答

錯誤現場

表 sicence_fiction_film,欲刪除 name 列值為 aaa 的行:

DELETE FROM sicence_fiction_film WHERE name=aaa;

報錯:Unknown column 'aaa' in 'where clause'。

原因分析

MySQL 解析器將無引號的 aaa 視為**列名/標識符**,而非字符串字面值。因表中無 aaa 列,故報「未知列」。

正確寫法

DELETE FROM sicence_fiction_film WHERE `name` = 'aaa';
-- 或
DELETE FROM sicence_fiction_film WHERE name = 'aaa';
  • 單引號 'aaa':標識字符串字面值(標準 SQL)。
  • 反引號 `name`:標識列名(MySQL 特有,防關鍵字衝突)。

類比理解

語言字符串字面值標識符
SQL'abc'abc 或 `abc`
Java"abc"abc (變量名)
C/C++"abc"abc (變量名)
Python'abc' 或 "abc"abc (變量名)

最佳實踐建議

  1. 養成習慣:所有字符串、日期字面值**永遠用單引號包裹**。
  2. 使用參數化查詢(PreparedStatement):
    String sql = "DELETE FROM t WHERE name = ?"; pst.setString(1, "aaa");
    徹底避免注入與引號錯誤。
  3. 列名加反引號`:防止與保留字衝突(如 order, group)。

總結

WHERE name=aaa 錯在把值當列名。**字符串值必須加單引號**:WHERE name='aaa'。這是 SQL 基礎語法,同理適用於 INSERT、UPDATE、SELECT 的所有字符串/日期條件。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved