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

สร้าง VIEW ว่างเปล่า (Empty View) ใน MySQL ด้วย WHERE FALSE

การสร้าง View ที่ไม่มีข้อมูล (Empty View) ใน MySQL

ใช้ CREATE OR REPLACE VIEW ร่วมกับ SELECT ... FROM DUAL WHERE FALSE เพื่อสร้าง View ที่มีโครงสร้าง (Columns) แต่ไม่มีแถวข้อมูล

Syntax

CREATE OR REPLACE VIEW view_name AS 
SELECT value1 AS col1, value2 AS col2, ...
FROM DUAL 
WHERE FALSE;

ตัวอย่าง: สร้าง Empty View สำหรับ Client

mysql> CREATE OR REPLACE VIEW empty_view AS 
    SELECT 'John Smith' AS ClientName, 
           'US' AS ClientCountryName, 
           FALSE AS isMarried 
    FROM DUAL 
    WHERE FALSE;
Query OK, 0 rows affected (0.20 sec)

ตรวจสอบโครงสร้าง View (DESC):

mysql> DESC empty_view;
+-------------------+-------------+------+-----+---------+-------+
| Field             | Type        | Null | Key | Default | Extra |
+-------------------+-------------+------+-----+---------+-------+
| ClientName        | varchar(10) | NO   |     |         |       |
| ClientCountryName | varchar(2)  | NO   |     |         |       |
| isMarried         | int(1)      | NO   |     | 0       |       |
+-------------------+-------------+------+-----+---------+-------+
3 rows in set (0.00 sec)

ตรวจสอบข้อมูล (Empty Set):

mysql> SELECT * FROM empty_view;
Empty set (0.00 sec)

คำอธิบาย

  • DUAL - Dummy Table ใน MySQL ใช้สำหรับ SELECT ที่ไม่ต้อง FROM Table จริง
  • WHERE FALSE - เงื่อนไขที่เป็นเท็จเสมอ ทำให้ไม่มีแถวใดถูก Select
  • CREATE OR REPLACE VIEW - สร้างใหม่หรือแทนที่ View เดิม (ไม่ Error หากมีอยู่แล้ว)
  • Columns และ Types ถูกสร้างจากค่า Literal ใน SELECT

กรณีใช้งานจริง

  • Template View สำหรับ Application ที่คาดหวัง Schema เฉพาะ
  • Placeholder ระหว่าง Development / Migration
  • Union กับ View อื่นเพื่อให้ Schema ตรงกัน
  • Testing Framework ที่ต้องการ Empty Result Set

คำสั่งเกี่ยวข้อง

  • ดู View: SHOW CREATE VIEW view_name;
  • ลบ View: DROP VIEW [IF EXISTS] view_name;
  • Updatable View: ต้องไม่มี Aggregate, DISTINCT, GROUP BY, UNION, Subquery ใน FROM