sql command

Database SQL – VIEW

จาการใช้งาน SQL Select statement จะเห็นว่า ในบางครั้งเรามักจะมี Select statement ที่ต้องใช้งานประจำเพื่อดึงข้อมูลออกมาในรูปแบบที่ต้องการ เราสามารถใช้ SQL View นี้ช่วยได้ โดย SQL View จะทำการเก็บรูปแบบการ query หรือ SQL Select statement ที่เราตั้งไว้ใน SQL View ซึ่งสามารถทำได้ตั้งแต่ query ข้อมูลทั้งหมดของ table รวมถึงการทำ SQL Join, SQL Union, SQL Intersect และ SQL Except ที่ผลลัพธุ์ออกมาในรูปแบบตาราง หรือ table

 

คุณสมบัติของ VIEW

  • สร้างโครงสร้างของข้อมูลในรูปแบบที่ user ใช้งานปกติจาก table
  • ปรับเปลี่ยนข้อมูลภายใน table ให้แสดงออกมาในรูปแบบที่ต้องการ โดยไม่กระทบกับข้อมูลหลัก
  • สรุปข้อมูลจาก table ในรูปแบบของ report ที่ user ต้องการ

 

รูปแบบการสร้าง VIEW (Syntax)

การใช้งาน SQL View สามรถสร้างได้จากรูปแบบของ SQL Select statement ที่ต้องการ โดยสามารถสร้างจาก table เดียว หรือ หลาย table ก็ได้ แต่ต้องมีสิทธิ์ในการเข้าถึงข้อมูลภายใต้ table นั้น (GRANT VIEW)

CREATE VIEW view_name AS
SELECT column1, column2.....
FROM table_name
WHERE [condition];

 

ตัวอย่างคำสั่ง VIEW TABLE

Table – CUSTOMERS

+----+----------+-----+-----------+----------+
| ID | NAME     | AGE | ADDRESS   | SALARY   |
+----+----------+-----+-----------+----------+
|  1 | Ramesh   |  32 | Ahmedabad |  2000.00 |
|  2 | Khilan   |  25 | Delhi     |  1500.00 |
|  3 | kaushik  |  23 | Kota      |  2000.00 |
|  4 | Chaitali |  25 | Mumbai    |  6500.00 |
|  5 | Hardik   |  27 | Bhopal    |  8500.00 |
|  6 | Komal    |  22 | MP        |  4500.00 |
|  7 | Muffy    |  24 | Indore    | 10000.00 |
+----+----------+-----+-----------+----------+

 

ทำการสร้าง VIEW จากการ Select ข้อมูลบน table CUSTOMERS

SQL > CREATE VIEW CUSTOMERS_VIEW AS
SELECT name, age
FROM  CUSTOMERS;

ผลลัพธ์ที่ได้ จากการลอง select ข้อมูลใน VIEW

SQL > SELECT * FROM CUSTOMERS_VIEW;
+----------+-----+
| name     | age |
+----------+-----+
| Ramesh   | 32  |
| Khilan   | 25  |
| kaushik  | 23  |
| Chaitali | 25  |
| Hardik   | 27  |
| Komal    | 22  |
| Muffy    | 24  |
+----------+-----+

 

เงื่อนไข WITH CHECK OPTION

WITH CHECK OPTION กำหนดมาเพื่อใช้งานการ CREATE VIEW statement เป้าหมายของ WITH CHECK OPTION มีเพื่อให้มั่นใจได้ว่าการ INSERT หรือ UPDATE อยู่ในเงื่อนไขของ VIEW ซึ่งถ้าไม่อยู่ในเงื่อนไข การ INSERT หรือ UPDATE นั้นจะได้ผล error

CREATE VIEW CUSTOMERS_VIEW AS
SELECT name, age
FROM  CUSTOMERS
WHERE age IS NOT NULL
WITH CHECK OPTION;

ด้วยเงื่อนไข WITH CHECK OPTION จะเห็นว่าข้อมูล column age ห้ามมีค่าเป็น NULL

 

การ UPDATE VIEW

view จะสามารถ update ภายใต้เงื่อนไข statement ดังนี้

  • SELECT clause ห้ามใช้ DISTINCT
  • SELECT clause ห้ามใช้ summary function
  • SELECT clause ห้ามใช้ set function
  • SELECT clause ห้ามใช้ set operator
  • SELECT clause ห้ามใช้ ORDER BY
  • FROM clause ห้าม JOIN table
  • WHERE clause ห้ามทำ subquery
  • ห้ามใช้งาน GROUP BY และ HAVING
  • NOT NULL column ทั้งหมดจะต้องอยู่ใน VIEW ด้วยเพื่อให้ INSERT function ทำงานถูกต้อง

ถ้าเงื่อนไขทั้งหมดถูกต้อง เราจึงสามารถใช้งาน SQL VIEW updatte ได้

SQL > UPDATE CUSTOMERS_VIEW
   SET AGE = 35
   WHERE name = 'Ramesh';

ผลลัพธ์ที่ได้

+----+----------+-----+-----------+----------+
| ID | NAME     | AGE | ADDRESS   | SALARY   |
+----+----------+-----+-----------+----------+
|  1 | Ramesh   |  35 | Ahmedabad |  2000.00 |
|  2 | Khilan   |  25 | Delhi     |  1500.00 |
|  3 | kaushik  |  23 | Kota      |  2000.00 |
|  4 | Chaitali |  25 | Mumbai    |  6500.00 |
|  5 | Hardik   |  27 | Bhopal    |  8500.00 |
|  6 | Komal    |  22 | MP        |  4500.00 |
|  7 | Muffy    |  24 | Indore    | 10000.00 |
+----+----------+-----+-----------+----------+

 

การ INSERT VIEW

ใช้เงื่อนไขเดียวกับ UPDATE VIEW ซึ่งจากตัวอย่าง เราไม่สามารถทำการ INSERT VIEW บน CUSTOMERS_VIEW นี้ได้เพราะ column ทั้งหมดของ VIEW ไม่ได้มีเงื่อนไข NOT NULL ทั้งหมด

 

การ DELETE VIEW

ใช้เงื่อนไขเดียวกับ UPDATE VIEW และ INSERT VIEW

SQL > DELETE FROM CUSTOMERS_VIEW
   WHERE age = 22;

ผลลัพธ์ที่ได้

+----+----------+-----+-----------+----------+
| ID | NAME     | AGE | ADDRESS   | SALARY   |
+----+----------+-----+-----------+----------+
|  1 | Ramesh   |  35 | Ahmedabad |  2000.00 |
|  2 | Khilan   |  25 | Delhi     |  1500.00 |
|  3 | kaushik  |  23 | Kota      |  2000.00 |
|  4 | Chaitali |  25 | Mumbai    |  6500.00 |
|  5 | Hardik   |  27 | Bhopal    |  8500.00 |
|  7 | Muffy    |  24 | Indore    | 10000.00 |
+----+----------+-----+-----------+----------+

 

รูปแบบการลบ VIEW (Syntax)

DROP VIEW view_name;

 

ตัวอย่างการ DROP VIEW

DROP VIEW CUSTOMERS_VIEW;

 

 

 

Reference:

รวมคำสั่ง SQL Command พื้นฐานเบื้องต้น

Database, Oracle, MySQL

 

 

Author: Suphakit Annoppornchai

Credit: https://saixiii.com, https://www.tutorialspoint.com

Leave a Reply