คำสั่ง 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 และแทรกข้อมูล
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
CREATE VIEW IT_Employees AS
SELECT emp_name, emp_salary
FROM Employees
WHERE emp_department = 'IT';ในตัวอย่างนี้ เราสร้าง View ชื่อ IT_Employees เพื่อแสดงข้อมูลเฉพาะชื่อและเงินเดือนของพนักงานในแผนก IT
ลองเรียกดูข้อมูลที่อยู่ใน view ด้วยคำสั่งดังนี้
SELECT * FROM IT_Employees;ผลลัพธ์

การสร้าง View จากหลายตาราง
สมมติว่ามีตาราง Departments เพิ่มขึ้นมาเพื่อเก็บข้อมูลแผนกในบริษัท
สร้างตาราง Departments และแทรกข้อมูล
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 เพื่อแสดงข้อมูลพนักงานพร้อมชื่อแผนก
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 ที่เพิ่งสร้าง ด้วยคำสั่งดังนี้
SELECT * FROM Employee_Department;ผลลัพธ์

การสร้าง View ที่มีการกรองข้อมูลเพิ่มเติม
เราสามารถสร้าง View ที่มีการกรองข้อมูลมากกว่าหนึ่งเงื่อนไข เช่น การแสดงพนักงานที่มีเงินเดือนเกิน 55000
สร้าง View เพื่อแสดงพนักงานที่มีเงินเดือนมากกว่า 55000
CREATE VIEW High_Salary_Employees AS
SELECT emp_name, emp_salary
FROM Employees
WHERE emp_salary > 55000;ลองเรียกดูข้อมูลใน view ที่เพิ่งสร้าง ด้วยคำสั่งดังนี้
SELECT * FROM High_Salary_Employees;ผลลัพธ์

การสร้าง View ที่ใช้ฟังก์ชันแบบรวมกลุ่ม (Aggregate Functions)
สามารถสร้าง View เพื่อคำนวณค่ารวม เช่น ค่ามากที่สุด น้อยที่สุด หรือค่าเฉลี่ยได้
สร้าง View เพื่อคำนวณเงินเดือนเฉลี่ยของพนักงานแต่ละแผนก
CREATE VIEW Average_Salary_By_Department AS
SELECT emp_department, AVG(emp_salary) AS avg_salary
FROM Employees
GROUP BY emp_department;เรียกดูข้อมูลใน view ด้วยคำสั่งดังนี้
SELECT * FROM Average_Salary_By_Department;ผลลัพธ์

