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

MySQL สร้าง View ด้วย CREATE VIEW AS SELECT

ใช้ 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

คำสั่งจัดการ View

-- ดู View ที่มี
SHOW FULL TABLES WHERE Table_type = 'VIEW';

-- ดู Definition
SHOW CREATE VIEW view_DemoTable1802;

-- ลบ View
DROP VIEW view_DemoTable1802;

-- แก้ไข View (MySQL 8.0+)
CREATE OR REPLACE VIEW view_DemoTable1802 AS SELECT StudentId, UPPER(StudentName) AS Name FROM DemoTable1802;

สรุป

CREATE VIEW view_name AS SELECT ... สร้าง Virtual Table จาก Query ใช้งานง่าย ปลอดภัย ช่วยลดความซับซ้อน View แบบ Simple สามารถ Update ได้ View แบบ Complex เป็น Read-only

ประเภทคำอธิบายUpdatable
Simple ViewSELECT จาก 1 ตาราง ไม่มี Aggregate, GROUP BY, DISTINCT✅ ได้ (INSERT/UPDATE/DELETE)
Complex Viewมี JOIN, GROUP BY, Aggregate, Subquery, UNION❌ ไม่ได้ (Read-only)