ใน MySQL ไม่ควรใช้ single quote (' ') ครอบชื่อฐานข้อมูลหรือตาราง เพราะ single quote ใช้สำหรับ ค่าสตริง (string literals) เท่านั้น ควรใช้ backtick (` `) สำหรับ identifier (ชื่อฐานข้อมูล, ตาราง, คอลัมน์)
รูปแบบคำสั่งที่ถูกต้อง
UPDATE `database_name`.`table_name`
SET column_name = column_name + 1
WHERE column_name = 'string_value';
`database_name`.`table_name`- ใช้ backtick'string_value'- ใช้ single quote (ค่าสตริง)
ตัวอย่างการใช้งาน
1. สร้างตารางและเพิ่มข้อมูล
USE test;
CREATE TABLE Add1Demo (
Id VARCHAR(10),
Value INT
);
INSERT INTO Add1Demo VALUES
('1', 780), ('2', 1001), ('3', 1654),
('4', 3999), ('5', 5999), ('6', 799), ('8', 899);
ข้อมูลก่อนอัปเดต:
+------+-------+
| Id | Value |
+------+-------+
| 1 | 780 |
| 2 | 1001 |
| 3 | 1654 |
| 4 | 3999 |
| 5 | 5999 |
| 6 | 799 |
| 8 | 899 |
+------+-------+
2. อัปเดตด้วย backtick ครอบ database.table
UPDATE `test`.`Add1Demo`
SET Value = Value + 1
WHERE Id = '6';
ผลลัพธ์: Query OK, 1 row affected
3. ตรวจสอบข้อมูล Id = 6
SELECT * FROM Add1Demo WHERE Id = '6';
+------+-------+
| Id | Value |
+------+-------+
| 6 | 800 |
+------+-------+
ค่า Value เพิ่มจาก 799 เป็น 800
สรุปกฎการใช้เครื่องหมายคำพูดใน MySQL
| ประเภท | เครื่องหมาย | ใช้กับ | ตัวอย่าง |
|---|---|---|---|
| Identifier quote | Backtick ` ` | Database, Table, Column, Alias, Index | `db`.`tbl`.`col` |
| String literal | Single quote ' ' | ค่าข้อความ, วันที่, ตัวเลขในรูปสตริง | 'John', '2023-01-01' |
| String literal (ANSI) | Double quote " " | ค่าข้อความ (ต้องตั้งค่า ANSI_QUOTES) | "John" |
ข้อผิดพลาดทั่วไป
-- ผิด: ใช้ single quote ครอบ table name
UPDATE 'test'.'Add1Demo' SET Value = Value + 1 WHERE Id = '6';
-- ERROR 1064: syntax error near ''test'.'Add1Demo''
-- ถูก: ใช้ backtick
UPDATE `test`.`Add1Demo` SET Value = Value + 1 WHERE Id = '6';
เคล็ดลับ
- หากชื่อไม่มีคำสงวน/ช่องว่าง/อักขระพิเศษ สามารถไม่ใส่ backtick ได้:
UPDATE test.Add1Demo ... - แต่ แนะนำให้ใส่ backtick เสมอ เพื่อความปลอดภัยและความสม่ำเสมอ
- เครื่องมือ ORM และ query builder ส่วนใหญ่จะใส่ backtick ให้อัตโนมัติ