Khái niệm SQL VIEW giúp che giấu khó khăn của các bản ghi và cung cấp các hạn chế để truy cập vào cơ sở dữ liệu.
Dạng xem SQL tương tự như các bảng SQL. Trong Bảng SQL, chúng tôi lưu trữ toàn bộ dữ liệu trong các hàng và cột. Theo cách tương tự, SQL View cũng được sử dụng để lưu trữ các bản ghi trong các hàng và cột, nhưng chỉ những dữ liệu mà người dùng muốn, không phải dữ liệu không cần thiết.
SQL VIEW là một bảng ảo. SQL View chỉ cho phép truy cập các bản ghi cột cụ thể thay vì toàn bộ dữ liệu bảng.
Chúng ta có thể dễ dàng tạo khung nhìn bằng cách chọn một hoặc nhiều bảng bằng từ khóa CREATE VIEW. Chúng tôi cũng có thể cập nhật và xóa chế độ xem.
Trong toàn bộ bài viết này, chúng ta sẽ hiểu khái niệm chế độ xem về cách tạo chế độ xem, xóa chế độ xem và cập nhật chế độ xem.
1 TẠO CHẾ ĐỘ XEM SQL:-
Trong SQL, chúng ta có thể dễ dàng tạo một khung nhìn bằng cách sử dụng từ khóa CREATE VIEW. Chúng tôi có thể tạo Chế độ xem cho bảng đơn và bảng bội số.
Cú pháp TẠO CHẾ ĐỘ XEM (Bảng đơn)
CREATE VIEW VIEW_NAME AS SELECT COLUMN_NAME1, COLUMN_NAME2 FROM TABLE_NAME WHERE CONDITION;
Cú pháp trên là để tạo một dạng xem từ một bảng. Trong cú pháp trên, VIEW_NAME là tên của dạng xem để tạo dạng xem trong SQL. Table_name là tên của bảng mà từ đó chúng ta sẽ chọn các bản ghi cụ thể, mệnh đề WHERE là tùy chọn trong truy vấn SQL.
Cú pháp TẠO CHẾ ĐỘ XEM (Nhiều Bảng)
CREATE VIEW VIEW_NAME AS SELECT T1.COLUMN_NAME, T1.COLUMN_NAME2, T2.COLUMN_NAME1, T2.COLUMN_NAME2 FROM T1, T2 WHERE CONDITION;
Cú pháp trên là để tạo một dạng xem từ nhiều bảng. Trong cú pháp trên, VIEW_NAME là tên của dạng xem để tạo dạng xem trong SQL. T1, T2 là tên của các bảng mà từ đó chúng ta sẽ chọn các bản ghi cụ thể, mệnh đề WHERE là tùy chọn trong truy vấn SQL.
Hãy xem xét các bảng sau cùng với các bản ghi đã cho.
Bảng 1:Emp
EMPLOYEEID | FIRST_NAME | LAST_NAME | TIỀN LƯƠNG | THÀNH PHỐ | KHOA | MANAGERID |
1001 | VAIBHAVI | MISHRA | 65000 | PUNE | ORACLE | 1 |
1002 | VAIBHAV | SHARMA | 60000 | NOIDA | ORACLE | 1 |
1003 | NIKHIL | VANI | 50000 | JAIPUR | FMW | 2 |
2001 | PRACHI | SHARMA | 55500 | ĐIỀU CHỈNH | ORACLE | 1 |
2002 | BHAVESH | JAIN | 65500 | PUNE | FMW | 2 |
2003 | RUCHIKA | JAIN | 50000 | MUMBAI | KIỂM TRA | 4 |
3001 | PRANOTI | CHIA SẺ | 55500 | PUNE | JAVA | 3 |
3002 | ANUJA | Ở ĐÂU | 50500 | JAIPUR | FMW | 2 |
3003 | DEEPAM | JAUHARI | 58500 | MUMBAI | JAVA | 3 |
4001 | RAJESH | MỤC TIÊU | 60500 | MUMBAI | KIỂM TRA | 4 |
Bảng 2:Người quản lý.
Managerid | manager_name | manager_department |
1 | Snehdeep Kaur | ORACLE |
2 | Kirti Kirtane | FMW |
3 | Abhishek Manish | JAVA |
4 | Anupam Mishra | KIỂM TRA |
Các ví dụ để TẠO CHẾ ĐỘ XEM từ một bảng.
Ví dụ 1:Viết truy vấn để tạo dạng xem có Id nhân viên, Họ, Tên, Mức lương từ bảng Emp.
CREATE VIEW EMPLOYEE_VIEW AS SELECT EMPLOYEEID, CONCAT (FIRST_NAME, CONCAT (“ ”, LAST_NAME)) AS NAME, SALARY FROM EMP;
Trong truy vấn trên, chúng tôi đã tạo tên chế độ xem EMPLOYEE_VIEW với Id Nhân viên, ghép họ và tên thành Tên, Mức lương từ Bảng trống.
Bất cứ khi nào chúng ta muốn xem các bản ghi trong bảng, chúng ta sử dụng truy vấn SELECT * FROM; theo cách tương tự chúng ta sẽ làm đối với chế độ xem, thay vì tên bảng, chúng ta sẽ sử dụng tên chế độ xem.
SELECT * FROM EMPLOYEE_VIEW;
Ví dụ 2:Viết truy vấn để tạo chế độ xem có Id người quản lý, Tên người quản lý và Phòng ban từ Bảng người quản lý.
CREATE VIEW MANAGER_VIEW AS SELECT MANAGERID, MANAGER_NAME, MANAGER_DEPARTMENT FROM MANAGER;
Trong truy vấn ở trên, chúng tôi đã tạo tên chế độ xem MANAGER_VIEW với Id người quản lý, Tên người quản lý và Phòng ban từ Bảng người quản lý.
Bất cứ khi nào chúng ta muốn xem các bản ghi trong bảng, chúng ta sử dụng truy vấn SELECT * FROM. Chúng tôi sẽ sử dụng tên chế độ xem. Tương tự, chúng tôi sẽ làm cho chế độ xem thay vì tên bảng.
SELECT * FROM MANAGER_VIEW;
Ví dụ 3:Viết truy vấn để tạo dạng xem với Id nhân viên, Họ, Tên, Mức lương, Thành phố của những nhân viên có mức lương lớn hơn 54000 và Thành phố bao gồm Pune và Mumbai từ bảng Emp.
CREATE VIEW EMPLOYEE_VIEW1 AS SELECT EMPLOYEEID, CONCAT (FIRST_NAME, CONCAT (“ ”, LAST_NAME)) AS NAME, SALARY, CITY FROM EMP WHERE SALARY > 54000 AND CITY IN (‘PUNE’, ‘MUMBAI’);
Trong truy vấn trên, chúng tôi đã tạo tên chế độ xem EMPLOYEE_VIEW1 với Id nhân viên, ghép họ và tên thành Tên, Mức lương, Thành phố của những nhân viên có mức lương lớn hơn 54000 và chúng tôi sử dụng toán tử AND với Thành phố bao gồm Pune và Mumbai từ Bảng trống .
Bất cứ khi nào chúng ta muốn xem các bản ghi trong bảng, chúng ta sử dụng truy vấn SELECT * FROM. Chúng tôi sẽ sử dụng tên chế độ xem. Tương tự, chúng tôi sẽ làm cho chế độ xem thay vì tên bảng.
SELECT * FROM EMPLOYEE_VIEW1;
Ví dụ 4:Viết truy vấn để tạo dạng xem với Id người quản lý, Tên người quản lý và Phòng ban của những người quản lý có phòng ban là 'Oracle' và 'Java' từ Bảng người quản lý.
CREATE VIEW MANAGER_VIEW1 AS SELECT MANAGERID, MANAGER_NAME, MANAGER_DEPARTMENT FROM MANAGER; WHERE MANAGER_DEPARTMENT IN (‘ORACLE’, ‘JAVA’);
Trong truy vấn ở trên, chúng tôi đã tạo tên dạng xem MANAGER_VIEW với Id người quản lý, Tên người quản lý và Phòng ban của những người quản lý có phòng ban là ‘Oracle’ và ‘Java’ từ Bảng người quản lý.
Bất cứ khi nào chúng ta muốn xem các bản ghi trong bảng, chúng ta sử dụng truy vấn SELECT * FROM. Chúng tôi sẽ sử dụng tên chế độ xem. Tương tự, chúng tôi sẽ làm cho chế độ xem thay vì tên bảng.
SELECT * FROM MANAGER_VIEW1;
Tất cả các ví dụ ở trên về CHẾ ĐỘ XEM TẠO đều từ các bảng đơn lẻ. Ví dụ tiếp theo về TẠO CHẾ ĐỘ XEM là từ nhiều bảng.
Hãy xem xét các bảng sau cùng với các bản ghi đã cho.
Bảng 1:Emp
EMPLOYEEID | FIRST_NAME | LAST_NAME | TIỀN LƯƠNG | THÀNH PHỐ | KHOA | MANAGERID |
1001 | VAIBHAVI | MISHRA | 65000 | PUNE | ORACLE | 1 |
1002 | VAIBHAV | SHARMA | 60000 | NOIDA | ORACLE | 1 |
1003 | NIKHIL | VANI | 50000 | JAIPUR | FMW | 2 |
2001 | PRACHI | SHARMA | 55500 | ĐIỀU CHỈNH | ORACLE | 1 |
2002 | BHAVESH | JAIN | 65500 | PUNE | FMW | 2 |
2003 | RUCHIKA | JAIN | 50000 | MUMBAI | KIỂM TRA | 4 |
3001 | PRANOTI | CHIA SẺ | 55500 | PUNE | JAVA | 3 |
3002 | ANUJA | Ở ĐÂU | 50500 | JAIPUR | FMW | 2 |
3003 | DEEPAM | JAUHARI | 58500 | MUMBAI | JAVA | 3 |
4001 | RAJESH | MỤC TIÊU | 60500 | MUMBAI | KIỂM TRA | 4 |
Bảng 2:Người quản lý.
Managerid | manager_name | manager_department |
1 | Snehdeep Kaur | ORACLE |
2 | Kirti Kirtane | FMW |
3 | Abhishek Manish | JAVA |
4 | Anupam Mishra | KIỂM TRA |
Ví dụ 1:Viết truy vấn để tạo Chế độ xem với id Nhân viên, Tên, Thành phố, Id Người quản lý và Tên Người quản lý từ Bảng Emp và Bảng Người quản lý.
CREATE VIEW EMP_MAN_VIEW AS SELECT EMP.EMPLOYEEID, CONCAT(EMP.FIRST_NAME, CONCAT(“ ”, EMP.LAST_NAME)) AS NAME, CITY, MANAGER.MANAGERID, MANAGER.MANAGER_NAME FROM EMP, MANAGER WHERE EMP.MANAGERID = MANAGER.MANAGERID;
Trong truy vấn trên, chúng tôi đã tạo một chế độ xem với Id nhân viên, Tên, Thành phố, Id người quản lý và Tên người quản lý từ Bảng trống và Bảng người quản lý.
Bất cứ khi nào chúng ta muốn xem các bản ghi trong bảng, chúng ta sử dụng truy vấn SELECT * FROM. Chúng tôi sẽ sử dụng tên chế độ xem. Tương tự, chúng tôi sẽ làm cho chế độ xem thay vì tên bảng.
SELECT * FROM EMP_MAN_VIEW;
2 CẬP NHẬT CHẾ ĐỘ XEM SQL:-
Câu lệnh cập nhật sửa đổi bảng hiện có và dạng xem hiện có trong SQL. Chúng ta cũng có thể chèn dữ liệu mới vào dạng xem hiện có trong SQL. Trong SQL, một dạng xem chỉ được sửa đổi khi đáp ứng các điều kiện cho trước. Nếu một trong các điều kiện nhất định không được đáp ứng, chúng tôi sẽ không thể sửa đổi chế độ xem.
- Từ khoá DISTINCT không được sử dụng trong câu lệnh SELECT.
- Chế độ xem không được có tất cả các giá trị NOT NULL.
- Không nên sử dụng mệnh đề ORDER BY và mệnh đề GROUP BY khi tạo chế độ xem trong câu lệnh SELECT.
- Nếu dạng xem đã tạo chứa các cột từ một bảng, thì chúng tôi được phép sửa đổi dạng xem. tức là không được phép sử dụng nhiều bảng trong chế độ xem.
- Chế độ xem không nên được tạo bằng truy vấn con hoặc bao gồm các truy vấn phức tạp
- Dạng xem chứa bất kỳ hàm tổng hợp SQL nào; chúng tôi không được phép sửa đổi chế độ xem hiện có.
Câu lệnh TẠO HOẶC THAY THẾ CHẾ ĐỘ XEM được sử dụng để thêm trường mới hoặc loại bỏ trường khỏi chế độ xem.
Cú pháp:
CREATE OR REPLACE VIEW VIEW_NAME AS SELECT COLUMN_NAME1, COLUMN_NAME2 FROM TABLE_NAME WHERE CONDITION;
Ví dụ 1:Viết truy vấn để cập nhật Employee_View và thêm cột Id người quản lý từ bảng Emp trong chế độ xem.
CREATE OR REPLACE VIEW EMPLOYEE_VIEW AS SELECT EMPLOYEEID, CONCAT(FIRST_NAME,CONCAT(" ", LAST_NAME)) AS NAME, SALARY, MANAGERID FROM EMP WHERE DEPARTMENT IN ('ORACLE', 'FMW');
Truy vấn trên sửa đổi Employee_view hiện có và sửa đổi các bản ghi dựa trên truy vấn SELECT đã cho.
Bất cứ khi nào chúng ta muốn xem các bản ghi trong bảng, chúng ta sử dụng truy vấn SELECT * FROM. Chúng tôi sẽ sử dụng tên chế độ xem. Tương tự, chúng tôi sẽ làm cho chế độ xem thay vì tên bảng.
SELECT * FROM EMPLOYEE_VIEW;
Ví dụ 2:Viết truy vấn để cập nhật Manager_View.
CREATE OR REPLACE VIEW MANAGER_VIEW AS SELECT MANAGERID, MANAGER_NAME FROM MANAGER WHERE MANAGER_NAME LIKE ‘A%’;
Truy vấn trên sửa đổi Employee_view hiện có và sửa đổi các bản ghi dựa trên truy vấn SELECT đã cho.
Bất cứ khi nào chúng ta muốn xem các bản ghi trong bảng, chúng ta sử dụng truy vấn SELECT * FROM. Chúng tôi sẽ sử dụng tên chế độ xem. Tương tự, chúng tôi sẽ làm cho chế độ xem thay vì tên bảng.
SELECT * FROM MANAGER_VIEW;
Chèn bản ghi mới vào dạng xem hiện có
Chúng tôi chèn các bản ghi mới vào bảng. Theo cách tương tự, chúng tôi cũng có thể chèn nó vào chế độ xem.
Cú pháp
INSERT INTO VIEW_NAME VALUES(VALUE1, VALUE2);
Ví dụ:viết một truy vấn để chèn một bản ghi mới vào Manager_view.
INSERT INTO MANAGER_VIEW VALUES (5, ‘Akash Kadam’);
Khi chúng tôi chèn các bản ghi mới vào Manager_View. Để kiểm tra xem dữ liệu mới có được chèn vào hay không, chúng tôi sẽ sử dụng truy vấn SELECT:
SELECT * FROM MANAGER_VIEW;
3 LƯỢT XEM:-
Chúng tôi bỏ bàn. Theo cách tương tự, chúng ta cũng có thể giảm lượt xem.
Cú pháp:
DROP VIEW VIEW_NAME;
Ví dụ:Viết truy vấn để thả EMP_MAN_VIEW.
DROP VIEW EMP_MAN_VIEW;
Nếu chúng tôi muốn kiểm tra xem một chế độ xem có bị xóa hay không, chúng tôi sẽ sử dụng truy vấn SHOW TABLES.
SHOW TABLES;
Tên chế độ xem EMP_MAN_VIEW không có trong cơ sở dữ liệu, có nghĩa là chúng tôi đã bỏ chế độ xem thành công.