View คือ ตารางเสมือน (Virtual Table) ที่สร้างขึ้นจากคำสั่ง SELECT โดยไม่มีการเก็บข้อมูลจริงใน View นั้น แต่จะอ้างอิงข้อมูลจากตารางจริงแบบ “เรียลไทม์” ทุกครั้งที่มีการเรียกใช้งาน View ทำให้เราสามารถจัดรูปแบบการแสดงข้อมูลให้เรียบร้อย ชัดเจน และปลอดภัย โดยไม่ต้องแก้ไขตารางจริง เหมาะสำหรับใช้สร้างรายงาน, ซ่อนคอลัมน์ที่ไม่จำเป็น หรือจัดกลุ่มข้อมูลให้เหมาะสมกับผู้ใช้งานแต่ละประเภท
รูปแบบการสร้าง View
CREATE VIEW view_name AS
SELECT column1, column2, ...
FROM table_name
WHERE condition;
view_nameคือ ชื่อของ View ที่เราตั้งขึ้นมาเอง- ดึงข้อมูลจากตารางจริงที่มีอยู่ โดยสามารถใส่
WHERE,JOIN,GROUP BYได้ตามปกติ
ตัวอย่างการใช้งาน
สร้าง View แสดงเฉพาะลูกค้าที่อยู่ในประเทศไทย
SQL
CREATE VIEW th_customers AS
SELECT customer_id, first_name, last_name, country
FROM customers
WHERE country = 'Thailand';- View นี้จะแสดงเฉพาะลูกค้าที่อยู่ในประเทศไทย
- ช่วยให้ผู้ใช้สามารถดูข้อมูลเฉพาะส่วนที่จำเป็น
เรียกใช้งาน View
SQL
SELECT * FROM th_customers;- เหมือนกับใช้คำสั่ง
SELECTจากตารางปกติ แต่ข้อมูลมาจาก View
ลบ View
SQL
DROP VIEW th_customers;- ลบ View ออกจากระบบ (ไม่กระทบข้อมูลจริง)
สร้าง View ที่รวมข้อมูลจากหลายตาราง
SQL
CREATE VIEW order_summary AS
SELECT o.order_id, c.customer_name, o.total_amount
FROM orders o
JOIN customers c ON o.customer_id = c.customer_id;- View นี้รวมข้อมูลการสั่งซื้อกับชื่อลูกค้าให้อยู่ในตารางเดียว
การอัปเดต View
แม้ว่า View จะเป็นเพียง “ตารางเสมือน” ที่อิงข้อมูลจากตารางจริง แต่เราสามารถอัปเดต View ได้ 2 แบบ คือ
- อัปเดตโครงสร้างของ View ด้วยคำสั่ง
CREATE OR REPLACE VIEW - อัปเดตข้อมูลผ่าน View (เฉพาะในบางกรณีที่ View ไม่ซับซ้อน) อย่างไรก็ตาม MySQL จะมีข้อจำกัดเมื่อ View ซับซ้อน เช่น มี
JOIN,GROUP BYหรือDISTINCT
รูปแบบการอัปเดตโครงสร้าง View
CREATE OR REPLACE VIEW view_name AS
SELECT ...
- ใช้เพื่อแทนที่ View เดิมด้วยโครงสร้างใหม่ โดย ไม่ต้องลบ View เดิมก่อน
ตัวอย่างการอัปเดต View
เปลี่ยน View th_customers ให้รวมอีเมลลูกค้า
SQL
CREATE OR REPLACE VIEW th_customers AS
SELECT customer_id, first_name, last_name, email, country
FROM customers
WHERE country = 'Thailand';- View เดิมจะถูกแทนที่ด้วยเวอร์ชันใหม่นี้
- ข้อมูลจะอัปเดตอัตโนมัติเมื่อมีการเปลี่ยนแปลงในตาราง
customers
การอัปเดตข้อมูลผ่าน View (ทำได้ในบางกรณี)
เราสามารถอัปเดตข้อมูลผ่าน View ได้เมื่อ
- View ต้องอิงจากตารางเดียว
- ไม่มี
DISTINCT,GROUP BY,JOIN,LIMIT - ไม่มีการคำนวณ (เช่น
SUM(),COUNT())
ตัวอย่าง
สร้าง View
SQL
CREATE VIEW simple_view AS
SELECT id, name, email FROM users;อัปเดต View
SQL
UPDATE simple_view
SET email = '[email protected]'
WHERE id = 1;- คำสั่งนี้สามารถทำงานได้ เพราะ View อิงจากตารางเดียวและไม่มีความซับซ้อน