ใช้ CREATE VIEW view_name AS SELECT ... เพื่อสร้าง Virtual Table (View) ที่เก็บ Query ไว้ ใช้งานเหมือนตารางทั่วไป แต่ไม่เก็บข้อมูลจริง
ตัวอย่างการสร้างและใช้ View
1. สร้างตารางต้นฉบับ
mysql> CREATE TABLE DemoTable1802 (
StudentId INT,
StudentName VARCHAR(20)
);
Query OK, 0 rows affected (0.00 sec)
2. เพิ่มข้อมูล
mysql> INSERT INTO DemoTable1802 VALUES(101, 'John'); mysql> INSERT INTO DemoTable1802 VALUES(102, 'Carol'); mysql> INSERT INTO DemoTable1802 VALUES(103, 'Sam');
3. แสดงข้อมูลตารางจริง
mysql> SELECT * FROM DemoTable1802; +-----------+-------------+ | StudentId | StudentName | +-----------+-------------+ | 101 | John | | 102 | Carol | | 103 | Sam | +-----------+-------------+
4. สร้าง View
mysql> CREATE VIEW view_DemoTable1802 AS SELECT * FROM DemoTable1802; Query OK, 0 rows affected (0.00 sec)
5. Query จาก View (เหมือน Query ตารางจริง)
mysql> SELECT * FROM view_DemoTable1802; +-----------+-------------+ | StudentId | StudentName | +-----------+-------------+ | 101 | John | | 102 | Carol | | 103 | Sam | +-----------+-------------+
ประโยชน์ของ View
- 🔒 Security: ให้สิทธิ์เข้าถึง View แทน Table จริง (ซ่อนคอลัมน์ nhạy cảm)
- 🧩 Simplicity: ซ่อน Complex Query (JOIN, Subquery, Calculation) ให้ User ใช้ SELECT * FROM view ง่ายๆ
- 🔄 Consistency: ใช้ Logic เดียวกันหลายที่ แก้ที่ View แก้ครั้งเดียว
- 📊 Abstraction: แยก Logical Schema จาก Physical Schema
ประเภท View
| ประเภท | คำอธิบาย | Updatable |
|---|---|---|
| Simple View | SELECT จาก 1 ตาราง ไม่มี Aggregate, GROUP BY, DISTINCT | ✅ ได้ (INSERT/UPDATE/DELETE) |
| Complex View | มี JOIN, GROUP BY, Aggregate, Subquery, UNION | ❌ ไม่ได้ (Read-only) |