เวลาเขียน 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
อ่านเพิ่มเติม