ป้ายกำกับ: Column

SQL: AS Alias ( นามแฝง )SQL: AS Alias ( นามแฝง )

เวลาเขียน 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


อ่านเพิ่มเติม