Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

MySQL: ใช้ Backtick ครอบชื่อฐานข้อมูลและตาราง แทน Single Quote

ใน 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 quoteBacktick ` `Database, Table, Column, Alias, Index`db`.`tbl`.`col`
String literalSingle 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 ให้อัตโนมัติ