MSSql with CRUD (Create, Read, Update, Delete)
ตัวอย่างการเขียน MSSql Views, Functions, และ Stored procedures ผ่านมุมมองของ CRUD (Create, Read, Update, Delete)
MSSql with CRUD (Create, Read, Update, Delete)
ตัวอย่างการเขียน MSSql Views, Functions, และ Stored procedures ผ่านมุมมองของ CRUD (Create, Read, Update, Delete) ของข้อมูล
สร้างตาราง departments เป็นตารางที่เก็บข้อมูลเกี่ยวกับแผนก
CREATE TABLE departments (
department_id INT PRIMARY KEY,
department_name NVARCHAR(50)
);
สร้างตาราง employees เป็นตารางที่เก็บข้อมูลเกี่ยวกับพนักงาน โดยมี Foreign Key เชื่อมต่อกับ departments
CREATE TABLE employees (
employee_id INT PRIMARY KEY,
employee_name NVARCHAR(50),
employee_salary DECIMAL,
department_id INT,
CONSTRAINT FK_Department FOREIGN KEY (department_id) REFERENCES departments(department_id)
);
ตัวอย่างของ SQL Query ต่าง ๆ ตามแบบ CRUD สำหรับตาราง employees
1. CREATE (Insert) การเพิ่มข้อมูลพนักงานใหม่
INSERT INTO employees (employee_id, employee_name, employee_salary, department_id)
VALUES (1, 'Ake Suwaphan', 100000, 1);
2. READ (Select) การดึงข้อมูลของพนักงานทั้งหมด
SELECT * FROM employees;
3. READ (Select with Condition) การดึงข้อมูลของพนักงานแบบมีเงื่อนไขที่มีรหัสเท่ากับ 1
SELECT * FROM employees WHERE employee_id = 1;
4. UPDATE การอัปเดตข้อมูลของพนักงานที่มีรหัสที่มีรหัสเท่ากับ 1
UPDATE employees
SET employee_salary = 200000
WHERE employee_id = 1;
5. DELETE การลบข้อมูลของพนักงานที่มีรหัสเท่ากับ 1
DELETE FROM employees
WHERE employee_id = 1;
SQL View (Read-Only) ชื่อ "EmployeeView" ที่แสดงข้อมูลพนักงานและแผนกที่เกี่ยวข้อง
CREATE VIEW EmployeeView AS
SELECT
e.employee_id,
e.employee_name,
e.employee_salary,
d.department_name
FROM
employees e
JOIN
departments d ON e.department_id = d.department_id;
SQL Function (Read) ชื่อ "GetEmployeeSalary" ที่รับ employee_id เป็น input และคืนค่าเงินเดือนของพนักงานนั้น
CREATE FUNCTION GetEmployeeSalary(@emp_id INT)
RETURNS DECIMAL
AS
BEGIN
DECLARE @salary DECIMAL;
SELECT @salary = employee_salary
FROM employees
WHERE employee_id = @emp_id;
RETURN @salary;
END;
SQL Stored Procedure (Create/Update/Delete) ชื่อ "ManageEmployee" ที่รับ Parameter สำหรับการเพิ่ม (Create), อัปเดต (Update), และลบ (Delete) ข้อมูลพนักงาน
CREATE PROCEDURE ManageEmployee
@emp_id INT,
@emp_name NVARCHAR(50),
@emp_salary DECIMAL,
@dept_id INT,
@action VARCHAR(10)
AS
BEGIN
IF @action = 'CREATE'
BEGIN
INSERT INTO employees (employee_id, employee_name, employee_salary, department_id)
VALUES (@emp_id, @emp_name, @emp_salary, @dept_id);
END
ELSE IF @action = 'UPDATE'
BEGIN
UPDATE employees
SET
employee_name = @emp_name,
employee_salary = @emp_salary,
department_id = @dept_id
WHERE employee_id = @emp_id;
END
ELSE IF @action = 'DELETE'
BEGIN
DELETE FROM employees
WHERE employee_id = @emp_id;
END
END;
สรุปและการเปรียบเทียบ CRUD
- Views เหมาะสำหรับการดึงข้อมูลเฉพาะบางคอลัมน์หรือกรองข้อมูล
- Functions เหมาะสำหรับการคำนวณหรือดึงข้อมูลแบบเฉพาะเจาะจง
- Stored Procedures เหมาะสำหรับการรวม logic ที่ซับซ้อนและทำงานกับข้อมูลหลายตาราง
Feature | Views | Functions | Stored Procedures |
---|---|---|---|
Create | ✕ | ✕ | ✔ |
Read | ✔ | ✔ | ✔ |
Update | ✕ | ✕ | ✔ |
Delete | ✕ | ✕ | ✔ |