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

SQL Aliases: คู่มือการใช้ชื่อเรียกแทน

SQL alias คือชื่อเรียกแทน (reference name) สำหรับตารางหรือคอลัมน์ ใช้ทำให้คิวรี่สั้นลงหากมีชื่อตารางยาว ทั้ง table alias และ column alias กำหนดด้วยคีย์เวิร์ด AS Alias ทำงานจนคิวรี่รันเสร็จ ไม่ถาวร

เคยรู้สึกเบื่อกับการพิมพ์ชื่อคอลัมน์หรือตารางยาวๆ ในคิวรี่ซับซ้อน? มักเกิดขึ้นเมื่อเรียน SQL มากขึ้น นี่คือที่มาของ aliases ช่วยทำให้คิวรี่สั้นและอ่านง่าย

ในคู่มือนี้ เราพูดถึงว่ SQL aliases คืออะไร ทำไมจึงใช้ และเดินทางผ่าน 2 สถานการณ์ตัวอย่าง

หมายเหตุ: บทช่วยสอนนี้เขียนโดยใช้ PostgreSQL

SQL Alias คืออะไร?

SQL alias คล้าย alias ของมนุษย์ กำหนดชื่อ placeholder ให้ตารางหรือคอลัมน์ในตาราง Aliases มีประโยชน์เพราะทำให้คิวรี่และผลลัพธ์อ่านง่าย เข้าใจง่ายขึ้น

Alias ที่ดีคือ alias ที่เข้าใจได้เร็วที่สุด

Alias n อาจสับสนสำหรับคอลัมน์ name หากมีคอลัมน์ number_of_products ด้วย เพราะทั้งคู่ขึ้นต้นด้วย n

fn อาจเหมาะสมกว่า เพราะ取首字母ของ full name Alias นี้น่าจะสร้างความสับสนน้อยกว่า

จำไว้ว่า SQL queries ของคุณอาจถูกใช้โดยคนอื่น ไม่ใช่แค่คุณเอง ควรพยายามทำให้คิวรี่เข้าใจง่ายที่สุดสำหรับทุกคน

SQL Aliases: คอลัมน์ (Columns)

ใช้ aliases บนชื่อคอลัมน์ Column alias ให้เปลี่ยนชื่อคอลัมน์ในผลลัพธ์ของคิวรี่

มาดู 2 ตารางในฐานข้อมูลตัวอย่าง: employees และ branches

Employees
Branches
nametitlebranch_idsalary
branch_idbranch_name
GeoffSenior Sales Associate138000
1San Francisco
AdamSenior Sales Associate238000
2Cambridge
EmmaMarketing Executive250000
3Los Angeles
LukeMarketing Assistant332000


ตาราง employees มี 4 คอลัมน์ 4 แถว ตาราง branches มี 2 คอลัมน์ 3 แถว

เขียนคิวรี่ SELECT หาเงินเดือนสูงสุดแต่ละสาขา:

SELECT branches.branch_name, MAX(employees.salary) FROM employees LEFT JOIN branches ON employees.branch_id = branches.branch_id GROUP BY branches.branch_name;

ใช้ฟังก์ชันรวม MAX() หาค่าสูงสุดในคอลัมน์ "salary" ของตาราง "employees" ใช้ LEFT JOIN เชื่อมตาราง "branches" และ "employees" เพื่อดูผลลัพธ์แต่ละสาขา

ผลลัพธ์:

branch_namemax
San Francisco38000
Los Angeles32000
Cambridge50000

คิวรี่ทำงาน แต่ชื่อคอลัมน์ผลลัพธ์ไม่ค่อยเข้าใจง่าย "max" อาจสับสนคนที่ไม่ได้เขียนคิวรี่นี้

แก้ไขด้วยการระบุ column alias:

SELECT branches.branch_name AS "Branch Name", MAX(employees.salary) as "Highest Salary" FROM employees LEFT JOIN branches ON employees.branch_id = branches.branch_id GROUP BY branches.branch_name;

ระบุ 2 aliases: "branch_name" → "Branch Name", MAX() → "Highest Salary" รันคิวรี่ใหม่:

Branch NameHighest Salary
San Francisco38000
Los Angeles32000
Cambridge50000

แถวที่คืนเหมือนเดิม แต่หัวตารางเปลี่ยน: "branch_name" → "Branch Name", "max" → "Highest Salary"

SQL Aliases: ตาราง (Tables)

สามารถกำหนด SQL alias บนตารางได้ มีประโยชน์หากอ้างอิงตารางเดิมหลายครั้งในคิวรี่ เกิดขึ้นบ่อยในคิวรี่ซับซ้อน

เมื่อสืบค้นหลายตาราง ต้องระบุชื่อตารางก่อนชื่อคอลัมน์ คั่นด้วยจุด (.) เพื่อให้ SQL รู้ว่าคำสั่งอ้างอิงตารางไหน

แม้ฟีเจอร์นี้ป้องกันความกำกวม แต่ทำให้คิวรี่อ่านยากขึ้น ดังนั้นควรตั้ง aliases ให้เข้าใจง่าย

เขียนคิวรี่ดึงชื่อพนักงานทุกคนพร้อมชื่อสาขาที่ทำงาน:

SELECT employees.name, branches.branch_name FROM employees LEFT JOIN branches ON employees.branch_id = branches.branch_id;

ผลลัพธ์:

namebranch_name
GeoffSan Francisco
AdamCambridge
EmmaCambridge
LukeLos Angeles

คิวรี่ค่อนข้างยาว ใช้คำว่า "employees" และ "branches" ซ้ำ 2 ครั้ง ในคิวรี่ยาวกว่านี้จะซ้ำมากขึ้น

ใช้ aliases ทำให้สั้นลง ต้องใช้คีย์เวิร์ด AS สร้าง table alias:

SELECT e.name, b.branch_name FROM employees AS e LEFT JOIN branches AS b ON e.branch_id = b.branch_id;

คิวรี่นี้คืนผลลัพธ์เหมือนคิวรี่แรก

กำหนด 2 aliases:

  • "employees" → "e"
  • "branches" → "b"

ทุกครั้งที่อ้างอิง e หรือ b ในคิวรี่ SQL จะถือว่าเป็น "employees" และ "branches" ตามลำดับ Table aliases ช่วยลดการซ้ำในคำสั่ง SQL

สรุป

SQL alias คือชื่อแทนสำหรับคอลัมน์หรือตาราง Aliases เฉพาะคิวรี่ (query-specific) หมายความว่า alias ในคิวรี่หนึ่งไม่สามารถใช้ในอีกคิวรี่ได้โดยไม่กำหนดใหม่ Alias ตั้งด้วยคีย์เวิร์ด AS

สนใจเรียน SQL เพิ่มเติม? ดูคู่มือ How to Learn SQL ของเรา คู่มือครอบคลุมทุกอย่างจากหลักสูตรที่ควรพิจารณาไปจนถึงแหล่งข้อมูล SQL ออนไลน์ที่มีประโยชน์