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

วิธีสร้าง View ใน MySQL

การสร้าง View ด้วย CREATE VIEW

View คือ virtual table ที่เก็บ query ไว้ ใช้สำหรับลดความซับซ้อน ความปลอดภัย หรือ abstraction

รูปแบบคำสั่ง

CREATE VIEW yourViewName AS
SELECT yourColumnName1, yourColumnName2, ..., yourColumnNameN
FROM yourTableName;

ตัวอย่างสร้างตารางและ View

mysql> CREATE TABLE ViewDemo (
    -> Id INT,
    -> Name VARCHAR(200),
    -> Age INT
    -> );
Query OK, 0 rows affected (0.58 sec)

mysql> CREATE VIEW LookUpTable AS SELECT Id, Name FROM ViewDemo;
Query OK, 0 rows affected (0.15 sec)

ตรวจสอบ View ที่สร้าง

mysql> SHOW CREATE TABLE LookUpTable;
+-------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------+----------------------+
| View        | Create View                                                                                                                                                         | character_set_client | collation_connection |
+-------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------+----------------------+
| lookuptable | CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`%` SQL SECURITY DEFINER VIEW `lookuptable` AS select `viewdemo`.`Id` AS `Id`,`viewdemo`.`Name` AS `Name` from `viewdemo` | utf8                 | utf8_general_ci      |
+-------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------+----------------------+
1 row in set (0.00 sec)

การใช้งาน View:

-- Query view เหมือนตารางทั่วไป
SELECT * FROM LookUpTable;

-- Join กับตารางอื่น
SELECT l.*, v.Age FROM LookUpTable l JOIN ViewDemo v ON l.Id = v.Id;

-- สร้าง View จาก View ได้ (Nested views)

ตัวเลือกเพิ่มเติม:

  • ALGORITHM = {MERGE | TEMPTABLE | UNDEFINED} - วิธีการประมวลผล
  • DEFINER = user - ผู้เป็นเจ้าของ (security context)
  • SQL SECURITY {DEFINER | INVOKER} - ตรวจสอบสิทธิ์แบบไหน
  • WITH CHECK OPTION - บังคับให้ INSERT/UPDATE ผ่าน view ต้องผ่าน WHERE clause

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

-- ลบ view
DROP VIEW IF EXISTS view_name;

-- แก้ไข view (MySQL ไม่มี ALTER VIEW ต้อง DROP แล้ว CREATE ใหม่)
-- หรือใช้ CREATE OR REPLACE VIEW
CREATE OR REPLACE VIEW view_name AS SELECT ...;