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

UPDATE คอลัมน์ที่มีจุด (.) ในชื่อคอลัมน์ MySQL ใช้ Backticks

ถ้าชื่อคอลัมน์มีอักขระพิเศษ เช่น จุด (.) ต้องใช้ backticks (`) ครอบชื่อคอลัมน์

สร้างตารางที่มีคอลัมน์ชื่อ `User.FirstName.LastName`

mysql> CREATE TABLE UpdateDemo (
    -> UserId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> `User.FirstName.LastName` VARCHAR(60)
    -> );

เพิ่มข้อมูลตัวอย่าง

mysql> INSERT INTO UpdateDemo(`User.FirstName.LastName`) VALUES
('John Smith'), ('Adam Smith'), ('Carol Taylor'), ('Mitchell Johnson'), ('David Brown'), ('Larry Miller');

แสดงข้อมูลก่อน

mysql> SELECT * FROM UpdateDemo;

ผลลัพธ์:

+--------+-------------------------+
| UserId | User.FirstName.LastName |
+--------+-------------------------+
| 1      | John Smith              |
| 2      | Adam Smith              |
| 3      | Carol Taylor            |
| 4      | Mitchell Johnson        |
| 5      | David Brown             |
| 6      | Larry Miller            |
+--------+-------------------------+

UPDATE ใช้ backticks ครอบชื่อคอลัมน์

mysql> UPDATE UpdateDemo
    -> SET `User.FirstName.LastName` = 'David Miller'
    -> WHERE UserId = 5;
Query OK, 1 row affected (0.19 sec)

ตรวจสอบหลังอัปเดต (แถวที่ 5 เปลี่ยนเป็น David Miller)

mysql> SELECT * FROM UpdateDemo;

ผลลัพธ์:

+--------+-------------------------+
| UserId | User.FirstName.LastName |
+--------+-------------------------+
| 1      | John Smith              |
| 2      | Adam Smith              |
| 3      | Carol Taylor            |
| 4      | Mitchell Johnson        |
| 5      | David Miller            |
| 6      | Larry Miller            |
+--------+-------------------------+

เมื่อไหร่ต้องใช้ Backticks?

  • ชื่อคอลัมน์/ตารางมีช่องว่าง: `first name`
  • ชื่อคอลัมน์/ตารางมีจุด: `user.name`
  • ชื่อคอลัมน์/ตารางเป็น Reserved Word: `select`, `order`, `group`
  • ชื่อคอลัมน์/ตารางขึ้นต้นด้วยตัวเลข: `123column`
  • มีอักขระพิเศษอื่นๆ: -, #, @, $ เป็นต้น

แนวทางปฏิบัติที่ดี (Best Practice)

  • หลีกเลี่ยง การตั้งชื่อที่ต้องใช้ backticks
  • ใช้ snake_case: user_first_name_last_name
  • ใช้ camelCase: userFirstNameLastName
  • ตั้งชื่อสื่อความหมาย ไม่ใช่ชื่อยาวผสมจุด

ในโปรแกรม (Java, Python, etc.)

Backticks เป็นส่วนของ SQL string ต้อง escape ตามภาษา:

  • Java: \"`User.FirstName.LastName`\"
  • Python: \"`User.FirstName.LastName`\" หรือ ''`User.FirstName.LastName`''