เวลาเขียน SQL จะเห็น select มันจะเขียน SELECT post_id AS id, GETDATE create_date จะเห็นว่าบางคน บางที่ก็ใส่ AS บางคนก็ไม่ได้ใช้ AS แล้วมีกับไม่มี มันต่างกันยังไง จริง ๆ หลัง function หรือ column ส่วนนี้เรียกว่า Alias (นามแฝง) มีไว้เพื่อให้แทน column หรือ function ให้จำง่าย ใช้ง่าย สื่อความหมายมากขึ้น โดยจะมี AS หรือ ไม่มีคั่นกลางกลางก็ได้ แต่ AS จะช่วยให้อ่าน code ได้ง่ายกว่าไม่มี (Readability)
Column Alias
ตามมาตรฐาน ANSI SQL-86 (SQL2), ISO/IEC 9075 การใช้คีย์เวิร์ด AS เพื่อกำหนด Alias (นามแฝง) นั้นถูกกำหนดไว้ในข้อกำหนดพื้นฐานเพื่อให้โค้ดอ่านง่ายขึ้น (Readability)
การใช้กับคอลัมน์ (Column Alias)
การใช้ AS กับคอลัมน์ถือเป็น Best Practice และเป็นมาตรฐานที่ทุก Database Engine (MySQL, PostgreSQL, SQL Server, Oracle, SQLite) ยอมรับ ถึงแม้ว่าในหลายๆ ระบบจะอนุญาตให้ละ AS ไว้ได้ (เช่น SELECT name n FROM users u) แต่การใส่ AS มีข้อดีกว่าดังนี้:
- อ่านง่ายขึ้น: แยกแยะระหว่างชื่อคอลัมน์จริงกับชื่อ Alias ได้ชัดเจน โดยเฉพาะเมื่อมีการคำนวณซับซ้อน
- ป้องกันความผิดพลาด: ในกรณีที่คุณลืมใส่เครื่องหมายคอมม่า (
,) ระหว่างสองคอลัมน์ หากไม่มี AS ตัว SQL อาจเข้าใจผิดว่าคอลัมน์ที่สองคือ Alias ของคอลัมน์แรก ทำให้หา Bug ได้ยาก
ข้อควรระวัง: หาก Alias ของคุณมี ช่องว่าง หรือเป็น คำสงวน (Reserved Words) อย่าลืมครอบด้วยเครื่องหมาย Quote เช่น "My Name" (Postgres/Oracle) หรือ [My Name] (SQL Server) หรือ `My Name` (MySQL)
การใช้กับตาราง (Table Alias)
ในมาตรฐาน SQL การตั้งชื่อเล่นให้ตารางสามารถทำได้ทั้งแบบใส่ AS และไม่ใส่ แต่มีข้อควรระวังคือ Oracle Database ไม่รองรับการใช้ AS หน้าชื่อตาราง (จะเกิด Error ทันที) ขณะที่ระบบอื่นๆ ส่วนใหญ่ยอมรับทั้งสองแบบ
| ระบบฐานข้อมูล | Column Alias (มี AS) | Table Alias (มี AS) |
|---|
| MySQL / MariaDB | ✅ รองรับ (แนะนำ) | ✅ รองรับ |
| PostgreSQL | ✅ รองรับ (แนะนำ) | ✅ รองรับ |
| SQL Server (T-SQL) | ✅ รองรับ (แนะนำ) | ✅ รองรับ |
| Oracle | ✅ รองรับ (แนะนำ) | ❌ ไม่รองรับ (ต้องเขียน FROM table t เท่านั้น) |
| SQLite | ✅ รองรับ (แนะนำ) | ✅ รองรับ |
ถ้าต้องการเขียน SQL ให้ run ได้ใน database หลัก ๆ ควรใช้ AS กับ function หรือ column แต่ถ้าใช้ Oracle ด้วยการไม่ใช้ AS เป็นประจำก็เป็นทางเลือกที่ดีจะได้ Portability