VIEW คืออะไร?
VIEW เป็นตารางเสมือน (Virtual Table) ไม่เก็บข้อมูลจริง สร้างจากคำสั่ง SELECT ที่รวม 1 หรือหลายตาราง ใช้งานเหมือนตารางทั่วไป
1. สร้าง VIEW (CREATE VIEW)
CREATE VIEW [schema_name.]view_name
[WITH { ENCRYPTION | SCHEMABINDING | VIEW_METADATA }]
AS
SELECT column_list
FROM table_name
[WHERE condition];
ตัวเลือก WITH
- ENCRYPTION: เข้ารหัสข้อความคำสั่งใน sys.syscomments
- SCHEMABINDING: ผูกโครงสร้างตารางต้นทาง ห้าม ALTER/DROP ตารางที่ VIEW อ้างอิง
- VIEW_METADATA: ทำให้ SQL Server ส่งเมตาดาต้าของ VIEW ให้ client (สำหรับ updatable view)
ตัวอย่าง
CREATE VIEW sp_htk AS
SELECT sanpham.id_sanpham, sanpham.ten_sanpham, hangtonkho.chatluong
FROM sanpham
INNER JOIN hangtonkho ON sanpham.id_sanpham = hangtonkho.id_sanpham
WHERE sanpham.id_sanpham >= 1000;
ใช้งาน VIEW:
SELECT * FROM sp_htk;
2. แก้ไข VIEW (ALTER VIEW)
แก้ไขโดยไม่ต้อง drop/create ใหม่
ALTER VIEW [schema_name.]view_name
[WITH { ENCRYPTION | SCHEMABINDING | VIEW_METADATA }]
AS
SELECT column_list
FROM table_name
[WHERE condition];
ตัวอย่าง
ALTER VIEW sp_htk AS
SELECT sanpham.ten_sanpham, hangtonkho.soluong
FROM sanpham
INNER JOIN hangtonkho ON sanpham.id_sanpham = hangtonkho.id_sanpham
WHERE sanpham.id_sanpham BETWEEN 500 AND 1000;
3. ลบ VIEW (DROP VIEW)
DROP VIEW view_name;
DROP VIEW sp_htk;
ประโยชน์ของ VIEW: ลดความซับซ้อนของ query ซ้ำ, ควบคุมสิทธิ์เข้าถึงคอลัมน์/แถวเฉพาะ, ซ่อนโครงสร้างตารางจริง