SQL การใช้งาน CREATE VIEW Statement

คำสั่ง CREATE VIEW ใน SQL ใช้เพื่อสร้าง “มุมมอง” (View) ซึ่งเป็นการสร้างตารางเสมือน (Virtual Table) จากการคิวรีข้อมูลในตารางจริง (หรือหลายตาราง) โดย View จะไม่เก็บข้อมูลไว้ในฐานข้อมูลจริงๆ แต่เป็นการเก็บคำสั่ง SQL ที่ใช้ในการดึงข้อมูลออกมาจากตาราง ซึ่งการใช้ View มีประโยชน์ในการสร้างคิวรีที่ซับซ้อนเพื่อให้เรียกใช้งานง่ายขึ้น และยังช่วยเพิ่มความปลอดภัยในการซ่อนข้อมูลบางส่วนจากผู้ใช้งาน

โครงสร้างของคำสั่ง CREATE VIEW

CREATE VIEW view_name AS
SELECT column1, column2, ...
FROM table_name
WHERE condition;
  • view_name คือชื่อของ View ที่เราต้องการสร้าง
  • คำสั่ง SELECT จะเป็นการระบุข้อมูลที่ต้องการแสดงใน View นั้น ๆ

ตัวอย่างการสร้างและใช้งาน View ในรูปแบบต่างๆ

การสร้าง View พื้นฐานจากตารางเดียว

สมมติว่ามีตารางพนักงาน (Employees) ที่เก็บข้อมูลของพนักงานในบริษัท

สร้างตาราง Employees และแทรกข้อมูล
SQL
CREATE TABLE Employees (
    emp_id INT PRIMARY KEY,
    emp_name VARCHAR(100),
    emp_department VARCHAR(100),
    emp_salary DECIMAL(10, 2)
);

INSERT INTO Employees (emp_id, emp_name, emp_department, emp_salary) VALUES
(1, 'Alice', 'HR', 50000.00),
(2, 'Bob', 'IT', 60000.00),
(3, 'Charlie', 'Finance', 70000.00),
(4, 'David', 'IT', 65000.00),
(5, 'Eve', 'HR', 52000.00);

ข้อมูลในตาราง employees

สร้าง View เพื่อแสดงข้อมูลพนักงานแผนก IT

SQL
CREATE VIEW IT_Employees AS
SELECT emp_name, emp_salary
FROM Employees
WHERE emp_department = 'IT';

ในตัวอย่างนี้ เราสร้าง View ชื่อ IT_Employees เพื่อแสดงข้อมูลเฉพาะชื่อและเงินเดือนของพนักงานในแผนก IT

ลองเรียกดูข้อมูลที่อยู่ใน view ด้วยคำสั่งดังนี้

SQL
SELECT * FROM IT_Employees;

ผลลัพธ์

การสร้าง View จากหลายตาราง

สมมติว่ามีตาราง Departments เพิ่มขึ้นมาเพื่อเก็บข้อมูลแผนกในบริษัท

สร้างตาราง Departments และแทรกข้อมูล
SQL
CREATE TABLE Departments (
    department_id INT PRIMARY KEY,
    department_name VARCHAR(100),
    manager_id INT
);

INSERT INTO Departments (department_id, department_name, manager_id) VALUES
(1, 'HR', 1),
(2, 'IT', 2),
(3, 'Finance', 3);

ข้อมูลในตาราง Departments จะเป็นดังนี้

สร้าง View เพื่อแสดงข้อมูลพนักงานพร้อมชื่อแผนก

SQL
CREATE VIEW Employee_Department AS
SELECT e.emp_name, e.emp_salary, d.department_name
FROM Employees e
JOIN Departments d ON e.emp_department = d.department_name;

ในตัวอย่างนี้ เราสร้าง View ชื่อ Employee_Department เพื่อแสดงข้อมูลพนักงานรวมกับชื่อแผนก โดยใช้การ JOIN ตาราง Employees และ Departments

ลองเรียกดูข้อมูลใน view ที่เพิ่งสร้าง ด้วยคำสั่งดังนี้

SQL
SELECT * FROM Employee_Department;

ผลลัพธ์

การสร้าง View ที่มีการกรองข้อมูลเพิ่มเติม

เราสามารถสร้าง View ที่มีการกรองข้อมูลมากกว่าหนึ่งเงื่อนไข เช่น การแสดงพนักงานที่มีเงินเดือนเกิน 55000

สร้าง View เพื่อแสดงพนักงานที่มีเงินเดือนมากกว่า 55000
SQL
CREATE VIEW High_Salary_Employees AS
SELECT emp_name, emp_salary
FROM Employees
WHERE emp_salary > 55000;

ลองเรียกดูข้อมูลใน view ที่เพิ่งสร้าง ด้วยคำสั่งดังนี้

SQL
SELECT * FROM High_Salary_Employees;

ผลลัพธ์

การสร้าง View ที่ใช้ฟังก์ชันแบบรวมกลุ่ม (Aggregate Functions)

สามารถสร้าง View เพื่อคำนวณค่ารวม เช่น ค่ามากที่สุด น้อยที่สุด หรือค่าเฉลี่ยได้

สร้าง View เพื่อคำนวณเงินเดือนเฉลี่ยของพนักงานแต่ละแผนก
SQL
CREATE VIEW Average_Salary_By_Department AS
SELECT emp_department, AVG(emp_salary) AS avg_salary
FROM Employees
GROUP BY emp_department;

เรียกดูข้อมูลใน view ด้วยคำสั่งดังนี้

SQL
SELECT * FROM Average_Salary_By_Department;

ผลลัพธ์

แชร์เรื่องนี้