表 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 (變量名) |
String sql = "DELETE FROM t WHERE name = ?"; pst.setString(1, "aaa");order, group)。WHERE name=aaa 錯在把值當列名。**字符串值必須加單引號**:WHERE name='aaa'。這是 SQL 基礎語法,同理適用於 INSERT、UPDATE、SELECT 的所有字符串/日期條件。