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

การใช้ Backticks (`) แทน Single Quotes สำหรับคำสำคัญ MySQL ใน Query

การใช้ Backticks (`) สำหรับ Identifier ที่เป็น Reserved Keywords

ใน MySQL หากชื่อตาราง ชื่อคอลัมน์ หรือ Identifier อื่นๆ ชื่อเดียวกับ Reserved Keywords (คำสงวน) ต้องใช้ **Backticks (` `)** ครอบ ไม่ใช่ Single Quotes (' ')

Single Quotes vs Backticks

สัญลักษณ์ชื่อใช้สำหรับ
' 'Single QuotesString Literals (ค่าข้อความ)
` `BackticksIdentifiers (ชื่อตาราง, คอลัมน์, อินเด็กซ์, อัลลิส)
" "Double QuotesIdentifiers (ถ้า ANSI_QUOTES SQL Mode เปิดอยู่) / String Literals (ปกติ)

ตัวอย่าง: ใช้คีย์เวิร์ด 'key' และ 'Limit' เป็นชื่อคอลัมน์

1. สร้างตารางด้วย Backticks

CREATE TABLE DemoTable (
    `key` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    `Limit` INT
);

2. เพิ่มข้อมูล (ต้องใช้ Backticks รอบชื่อคอลัมน์)

INSERT INTO DemoTable (`key`, `Limit`) VALUES (NULL, 80);
INSERT INTO DemoTable (`key`, `Limit`) VALUES (NULL, 90);
INSERT INTO DemoTable (`key`, `Limit`) VALUES (NULL, 100);

3. ดูข้อมูล

SELECT * FROM DemoTable;

ผลลัพธ์:

+-----+-------+
| key | Limit |
+-----+-------+
| 1   | 80    |
| 2   | 90    |
| 3   | 100   |
+-----+-------+

4. SELECT คอลัมน์ที่เป็น Keyword

SELECT `key` FROM DemoTable;

ผลลัพธ์:

+-----+
| key |
+-----+
| 1   |
| 2   |
| 3   |
+-----+

คำสงวน (Reserved Keywords) ที่พบบ่อย

SELECT, INSERT, UPDATE, DELETE, WHERE, FROM, TABLE, INDEX, KEY, LIMIT, ORDER, GROUP, BY, ASC, DESC, JOIN, LEFT, RIGHT, INNER, OUTER, ON, AS, DISTINCT, COUNT, SUM, MAX, MIN, AVG, CASE, WHEN, THEN, ELSE, END, IF, NULL, TRUE, FALSE, AND, OR, NOT, IN, LIKE, BETWEEN, EXISTS, PRIMARY, UNIQUE, FOREIGN, REFERENCES, CONSTRAINT, DEFAULT, AUTO_INCREMENT, CREATE, ALTER, DROP, TRUNCATE, RENAME, VIEW, PROCEDURE, FUNCTION, TRIGGER, DATABASE, SCHEMA, USE, SHOW, DESCRIBE, EXPLAIN, LOCK, UNLOCK, COMMIT, ROLLBACK, START, TRANSACTION, SAVEPOINT, RELEASE, SET, GRANT, REVOKE, USER, PASSWORD, IDENTIFIED, BY, WITH, OPTION, PRIVILEGES, FLUSH, RESET, KILL, PURGE, ANALYZE, CHECK, REPAIR, OPTIMIZE, BACKUP, RESTORE, IMPORT, EXPORT, LOAD, DATA, INFILE, OUTFILE, DUMPFILE, REPLACE, IGNORE, VALUES, ROW, ROWS, STATEMENT, PREPARE, EXECUTE, DEALLOCATE, CALL, DO, HANDLER, CURSOR, FETCH, OPEN, CLOSE, DECLARE, BEGIN, END, WHILE, LOOP, REPEAT, UNTIL, ITERATE, LEAVE, RETURN, SIGNAL, RESIGNAL, GET, DIAGNOSTICS, CONDITION, SQLSTATE, ERROR, WARNING, NOT, FOUND, ROW_COUNT, LAST_INSERT_ID, VERSION, CONNECTION_ID, DATABASE, SCHEMA, USER, CURRENT_USER, SESSION_USER, SYSTEM_USER, CHARSET, COLLATION, CHARACTER_SET, COLLATION_NAME, ENGINE, TABLESPACE, PARTITION, SUBPARTITION, LINEAR, HASH, KEY, RANGE, LIST, COLUMNS, EXCHANGE, TRUNCATE, PARTITIONS, ANALYZE, CHECK, OPTIMIZE, REPAIR, REBUILD, REORGANIZE, COALESCE, REMOVE, ADD, DROP, DISCARD, IMPORT, ALGORITHM, COPY, INPLACE, LOCK, NONE, SHARED, EXCLUSIVE, DEFAULT, DEFINER, INVOKER, SQL, SECURITY, DEFINER, CONTEXT, COMMENT, AUTO_INCREMENT, AVG_ROW_LENGTH, CHECKSUM, COMPRESSION, CONNECTION, DATA, DIRECTORY, INDEX, DELAY_KEY_WRITE, ENCRYPTION, INSERT_METHOD, KEY_BLOCK_SIZE, MAX_ROWS, MIN_ROWS, PACK_KEYS, PASSWORD, ROW_FORMAT, STATS_AUTO_RECALC, STATS_PERSISTENT, STATS_SAMPLE_PAGES, TABLESPACE, UNION, UNIQUE, UNLOCK, UPDATE, USE, USER, USING, UTC_DATE, UTC_TIME, UTC_TIMESTAMP, UUID, UUID_SHORT, VALIDATE, VALUES, VARIABLES, VIEW, WAIT, WARNINGS, WEEK, WEEKDAY, WEEKOFYEAR, WEIGHT_STRING, WHERE, WHILE, XOR, YEAR, YEARWEEK (และอื่นๆ อีกมาก)

Best Practice

  • หลีกเลี่ยง ใช้ Reserved Keywords เป็นชื่อ Identifier
  • หากจำเป็น ต้องใช้ Backticks (` `) ครอบทุกครั้งที่อ้างอิง
  • แนะนำ ใช้ Prefix/Suffix: my_key, limit_val, order_num
  • เครื่องมือ GUI (Workbench, phpMyAdmin) มักสร้าง Backticks ให้อัตโนมัติ

การตั้งค่า SQL Mode: ANSI_QUOTES

หากเปิด SET sql_mode = 'ANSI_QUOTES' แล้ว Double Quotes (" ") จะใช้สำหรับ Identifier แทน String Literal