Views in the Data Dictionary
Once your view has been created, you can query the data dictionary view called USER_VIEWS to see
the name of the view and the view definition. The text of the SELECT statement that constitutes your
view is stored in a LONG column.
Data Access Using Views
When you access data using a view, the Oracle server performs the following operations:
1. It retrieves the view definition from the data dictionary table USER_VIEWS.
2. It checks access privileges for the view base table.
3. It converts the view query into an equivalent operation on the underlying base table or tables. In
other words, data is retrieved from, or an update is made to, the base tables
27 trang |
Chia sẻ: Thục Anh | Ngày: 11/05/2022 | Lượt xem: 459 | Lượt tải: 0
Bạn đang xem trước 20 trang nội dung tài liệu Bài giảng Microsoft SQL Server - Bài 10: Làm việc với bảng ảo và chỉ mục - Lê Thị Tú Kiên, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
1
Bài 11: Làm việc với bảng ảo và chỉ mục
2
Views in the Data Dictionary
Once your view has been created, you can query the data dictionary view called USER_VIEWS to see
the name of the view and the view definition. The text of the SELECT statement that constitutes your
view is stored in a LONG column.
Data Access Using Views
When you access data using a view, the Oracle server performs the following operations:
1. It retrieves the view definition from the data dictionary table USER_VIEWS.
2. It checks access privileges for the view base table.
3. It converts the view query into an equivalent operation on the underlying base table or tables. In
other words, data is retrieved from, or an update is made to, the base tables.
Instructor Note
The view text is stored in a column of LONG data type. You may need to set ARRAYSIZE to a smaller
value or increase the value of LONG to view the text.
í dụ phân biệt truy vấn trực tiếp và truy vấn thông qua view.
Cú pháp câu lệnh tạo Bảng ảo (View)
- Sau từ khóa CREATE VIEW là tên View cần tạo và tên các cột trong view
(tùy chọn).
- Hai tùy chọn:
WITH ENCRYPTION: Ngăn không cho NSD xem câu lệnh định nghĩa
view.
WITH SCHEMABINDING: ràng buộc một view với lược đồ CSDL. Khi
đó, không thể xóa hoặc cập nhật các bảng có liên quan đến view.
- Sau từ khóa AS là một câu lệnh SELECT, câu lệnh này là định nghĩa chính
của view.
- Tùy chọn WITH CHECK OPTION: Kiểm tra nếu một dòng dữ liệu không
thuộc vào view nữa thì sẽ không được cập nhật dữ liệu thông qua view.
- Một view được tạo ra sẽ lưu trú trên server và NSD (hoặc chương trình ứng
dụng) có thể truy vẫn bằng câu lệnh SELECT trên view này.
3
Ví dụ tạo View DeptInfo.
- Bên trên là cấu trúc câu lệnh tạo view DeptInfo. Sau khi view DeptInfo
được tạo ra và lưu trú trên sever, NSD có thể truy vấn trên view này giống
như một bảng dữ liệu cơ sở. Tuy nhiên, DeptInfo khác bảng dữ liệu cơ sở là
không chứa dữ liệu.
- Bên dưới là kết quả câu truy vấn “Select * from DeptInfo” trên view
DeptInfo. Khi câu lệnh này được gửi tới sever chính là kích hoạt câu lệnh
SELECT trong định nghĩa view thực hiện và trả kết quả về cho NSD.
4
Các ví dụ về cách sử dụng View DeptInfo.
- Bên trên là 3 ví dụ truy vấn trên view DeptInfo.
- Bên dưới là kết quả khi chạy 3 câu lệnh trên cùng một lúc.
5
Một số lợi ích của view:
- Thiết kế độc lập
- Bảo mật dữ iệu
- Mềm dẻo
- Đơn giản hóa truy vấn
- Có thể cập nhật dữ liệu
6
Ví dụ về view chỉ cho truy cập một số cột trên bảng investors (Nhà đầu tư).
- Bên trên là dữ liệu của bảng inventors bao gồm các thông tin mã nhà đầu tư
(khóa chính), họ, tên, địa chỉ, bang, mã bưu điện, số điện thoại, tiền đầu tư
và lợi nhuận.
- Bên dưới là định nghĩa của view InvestorsGeneral. View này chỉ bao gồm
một số cột thông tin chung về nhà đầu tư, một số cột thông tin cần được bảo
mật (tiền đầu tư) sẽ không được truy cập thông qua view này.
7
8
Những yêu cầu về định nghĩa câu lệnh SELECT trong view để view đó có thể
nhập được dữ liệu cho bảng cơ sở:
- Mệnh đề SELECT không có DISTINCT hoặc TOP.
- Mệnh đề SELECT không có các hàm gộp nhóm.
- Mệnh đề SELECT không các cột dẫn xuất (là các cột biểu thức, ví dụ cột
tuổi).
- Câu lệnh SELECT không có mệnh đề GROUP BY, HAVING.
- Định nghĩa view không chứa các phép toán tập hơp ( UNION, EXCEPT,
INTERSECTION).
9
Ví dụ về view có thể cập nhật dữ liệu
- Bên trên là định nghĩa view LowSalary về danh danh sách các nhân có
lương nhỏ hơn 30000
- Bên dưới là ví dụ cập nhật lương cho các nhân viên (trong bảng Employee)
có lương nhỏ hơn 25000 thông qua view LowSalary. Khi câu lệnh update
này được thực hiện thì các nhân viên trong bảng Employee có ;lương nhỏ
hơn 25000 sẽ được tăng thêm 1000.
10
Ví dụ về view chỉ để đọc: trong định nghĩa view có chứa hàm gộp nhóm
COUNT(), AVG() và mệnh để GROUP BY
11
Các câu lệnh xóa và sửa định nghĩa View:
- Đế xóa view thì dùng câu lệnh DROP VIEW
- Đế thay đổi định nghĩa view thì dùng câu lệnh ALTER VIEW. View có tùy
chọn WITH ENCRYPTION thì không thể sửa.
12
Đôi khi một view cho phép cập nhật dữ liệu cho bảng cơ sở thông qua nó
nhưng khi thực hiện cập nhật lại bị lỗi.
Ví dụ trên slide là định nghĩa của view ResearchEmp (đưa ra thông tin các
nhân viên phòng Research). Thông qua view này có thể cập nhật dữ liệu cho
bảng Employee. Tuy nhiên ở hai slide tiếp sau đây là hai ví dụ thực hiện phép
Insert và Delete trên view Research đều bị lỗi
13
Câu lệnh Insert trong trường hợp này bị lỗi vì chèn thêm một dòng mới có cột
mã phòng Dno= null trong khi cột này có ràng buộc là NOT NULL (nhân viên
nào cũng phải có mã phòng).
14
Câu lệnh Delete này bị lỗi vì khi xóa nhân viên có mã 123456789 sẽ vị phạm
ràng buộc tham chiếu giữa bảng Employee và bảng workon.
15
Một số view có sẵn trong hệ thống SQL server.
16
Ví dụ truy vấn dữ liệu trên một số view của hệ thống.
17
18
19
20
21
22
23
24
25
26
27
Các file đính kèm theo tài liệu này:
- bai_giang_microsoft_sql_server_bai_10_lam_viec_voi_bang_ao_v.pdf