การสร้าง VIEW พร้อม Alias ใน MySQL
ใน MySQL สามารถกำหนดชื่อเสมือน (Alias) ให้กับ VIEW ได้โดยตรงในคำสั่ง CREATE VIEW โดยใช้คำสำคัญ AS
รูปแบบคำสั่ง
CREATE VIEW view_name AS
SELECT column1, column2, ...
FROM table_name
WHERE condition;
ตัวอย่าง: สร้าง VIEW ชื่อ load_data จากตาราง DemoTable
1. สร้างตารางและเพิ่มข้อมูล
CREATE TABLE DemoTable (
FirstName VARCHAR(100)
);
INSERT INTO DemoTable VALUES ('Chris');
INSERT INTO DemoTable VALUES ('Robert');
INSERT INTO DemoTable VALUES ('Sam');
2. ดูข้อมูลต้นทาง
SELECT * FROM DemoTable;
ผลลัพธ์:
+-----------+
| FirstName |
+-----------+
| Chris |
| Robert |
| Sam |
+-----------+
3. สร้าง VIEW พร้อม Alias
CREATE VIEW load_data AS SELECT * FROM DemoTable;
4. ใช้งาน VIEW
SELECT * FROM load_data;
ผลลัพธ์:
+-----------+
| FirstName |
+-----------+
| Chris |
| Robert |
| Sam |
+-----------+
การใช้ Alias กับคอลัมน์ใน VIEW
สามารถตั้งชื่อคอลัมน์ใหม่ใน VIEW ได้:
CREATE VIEW employee_summary AS
SELECT
EmployeeId AS id,
CONCAT(FirstName, ' ', LastName) AS full_name,
Salary * 12 AS annual_salary
FROM Employees;
ประโยชน์ของ VIEW
- ลดความซับซ้อนของคำสั่ง SQL ซ้ำๆ
- ความปลอดภัย: ควบคุมสิทธิ์เข้าถึงคอลัมน์เฉพาะเจาะจง
- นามมูล (Abstraction): ซ่อนโครงสร้างตารางจริง
- ความสม่ำเสมอ: ให้ Interface คงที่แม้ตารางเปลี่ยน
ข้อจำกัดของ VIEW ใน MySQL
- ไม่สามารถสร้าง INDEX บน VIEW ได้โดยตรง (MySQL 8.0+ รองรับ Invisible Index แต่ไม่ใช่บน VIEW)
- VIEW บางประเภทไม่สามารถ UPDATE ได้ (เช่น มี GROUP BY, DISTINCT, JOIN หลายตาราง)
ORDER BYใน VIEW ไม่มีผลหาก Query ภายนอกมี ORDER ของตัวเอง
การจัดการ VIEW
-- ดูรายการ VIEW
SHOW FULL TABLES WHERE Table_type = 'VIEW';
-- ดูคำสั่งสร้าง VIEW
SHOW CREATE VIEW load_data;
-- ลบ VIEW
DROP VIEW load_data;
-- แก้ไข VIEW (ต้อง DROP แล้ว CREATE ใหม่ หรือใช้ CREATE OR REPLACE VIEW)
CREATE OR REPLACE VIEW load_data AS SELECT * FROM DemoTable WHERE FirstName != 'Sam';