1.7 KHUNG NHèN (VIEW)
1.7.4 Sửa đổi cỏc khung nhỡn
Trong nhiều trường hợp chỳng ta khụng thể thực hiện một lệnh chốn, xoỏ hoặc cập nhật đối với một khung nhỡn bởi vỡ khung nhỡn khụng giống như một bảng cơ sở. Tuy nhiờn, đối với cỏc khung nhỡn tương đối đơn giản, gọi là cỏc khung nhỡn cập nhật được, cú khả năng chuyển đổi cập nhật của khung nhỡn thành một cập nhật tương đương trờn một bảng cơ sở và phộp cập nhật cú thể được thực hiện đối với bảng cơ sở. Điều kiện để khung nhỡn cập nhật được là cỏc khung nhỡn được định nghĩa bằng phộp chọn một số thuộc tớnh từ một quan hệ R (quan hệ này cũng cú thể là một khung nhỡn cập nhật được). Hai điểm kỹ thuật quan trọng:
Mệnh đề WHERE khụng được bao hàm R trong một truy vấn con Danh sỏch trong mệnh đề SELECT phải chứa đủ cỏc thuộc tớnh sao
cho với mỗi bộ được chốn vào khung nhỡn, chỳng ta cú thể điền cỏc thuộc tớnh khỏc vào với cỏc giỏ trị null hoặc ngầm định thớch hợp và cú một bộ của quan hệ cơ sở sẽ được tạo nờn từ bộ được chốn vào của khung nhỡn.
INSERT INTO NVHÀNỘI
VALUES (‘NV065’, ‘Nguyễn Đỡnh’, ‘Thi’, 4500, 4);
Khung nhỡn NVHÀNỘI hầu như thoả món cỏc điều kiện cập nhật được của SQL bởi vỡ khung nhỡn chỉ yờu cầu một số thành phần của cỏc bộ của bảng cơ sở NHÂNVIấN. Chỉ cú một vấn đề là vỡ thuộc tớnh Địachỉ của bảng NHÂNVIấN khụng phải là một thuộc tớnh của khung nhỡn, bộ giỏ trị mà chỳng ta chốn vào NHÂNVIấN sẽ cú giỏ trị NULL chứ khụng phải là ‘Hà nội’ như là giỏ trị của nú cho Địachỉ. Bộ giỏ trị này khụng thoả món điều kiện là địa chỉ của nhõn viờn là Hà nội.
Như vậy, để làm cho khung nhỡn NVHÀNỘI cập nhật được, chỳng ta sẽ thờm thuộc tớnh Địachỉ cho mệnh đề SELECT của nú, mặc dự rừ ràng là địa chỉ nhõn viờn là Hà nội. Định nghĩa lại của khung nhỡn NVHÀNỘI là:
1) CREATE VIEW NVHÀNỘI AS
2) SELECT MósốNV, Họđệm,Tờn, Lương, Địachỉ,MósốĐV 3) FROM NHÂNVIấN
4) WHERE Địachỉ = ‘Hà nội’ ;
Sau đú, chỳng ta viết lệnh chốn vào khung nhỡn cập nhật đượcNVHÀNỘI như sau:
INSERT INTO NVHÀNỘI
VALUES (‘NV065’, ‘Nguyễn Đỡnh’, ‘Thi’, 4500, 4);
Thực hiện lệnh chốn, chỳng ta tạo ra một bộ của NHÂNVIấN sinh từ một bộ của khung nhỡn được chốn vào khi định nghĩa khung nhỡn được ỏp dụng cho NHÂNVIấN. Cỏc thuộc tớnh khỏc khụng xuất hiện trong khung nhỡn chắc chắn tồn tại trong bộ NHÂNVIấN được chốn vào. Tuy nhiờn chỳng ta khụng thể suy ra giỏ trị của chỳng. Trong kết quả bộ mới của NHÂNVIấN phải cú trong cỏc thành phần đối với mỗi thuộc tớnh này cỏc giỏ trị mặc định thớch hợp hoặc NULL hoặc một ngầm định nào đú đó được khai bỏo cho thuộc tớnh.
Chỳng ta cũng cú thể loại bỏ ra khỏi một khung nhỡn cập nhật được. Lệnh xoỏ, cũng như lệnh chốn, được thực hiện thụng qua một quan hệ nền R và gõy ra việc loại bỏ một bộ của R gõy ra bộ được xoỏ của khung nhỡn.
Vớdụ 45: Giả sử chỳng ta muốn xoỏ khỏi khung nhỡn cập nhật được NVHÀNỘI tất cả cỏc bộ cú tờn chứa từ ‘an’. Ta cú thể viết lệnh xoỏ như sau:
DELETE FROM NVHÀNỘI WHERE Tờn LIKE “%an%” ;
Lệnh xoỏ này được chuyển thành một lệnh xoỏ tương đương trờn bảng cơ sở NHÂNVIấN; chỉ khỏc ở chỗ là điều kiện định nghĩa khung nhỡn NVHÀNỘI được thờm vào cỏc điều kiện của mệnh đề WHERE. Kết quả là lệnh xoỏ như sau:
DELETE FROM NHÂNVIấN
WHERE Tờn LIKE “%an%” AND Địachỉ = ‘Hà nội’;
Tương tự, một lệnh cập nhật trờn một khung nhỡn cập nhật được được thực hiện thụng qua quan hệ nền. Như vậy lệnh cập nhật khung nhỡn cú tỏc dụng cập nhật tất cả cỏc bộ của quan hệ nền sinh ra cỏc bộ được cập nhật trong khung nhỡn.
Vớ dụ 46: Lệnh cập nhật khung nhỡn UPDATE NVHÀNỘI
SET Lương = 4500
WHERE MósốNV = ‘NV002’;
được chuyển thành lệnh cập nhật bảng cơ sở: UPDATE NHÂNVIấN
SET Lương = 4500
Loại cập nhật một khung nhỡn cuối cựng là loại bỏ nú. Lệnh cập nhật này cú thể thực hiện dự khung nhỡn cú cập nhật được hay khụng. Lệnh DROP thụng thường là:
DROP VIEW NVHÀNỘI ;
Chỳ ý rằng lệnh này xoỏ định nghĩa của khung nhỡn vỡ vậy chỳng ta khụng thể tiếp tục truy vấn hoặc cập nhật đối với khung nhỡn này nữa. Tuy nhiờn, việc xoỏ bỏ một khung nhỡn khụng làm ảnh hưởng đến một bộ nào của quan hệ nền NHÂNVIấN. Ngược lại
DROP TABLE Movie
sẽ khụng chỉ xoỏ bỏ bảng NHÂNVIấN, nú cũng sẽ làm cho khung nhỡn NVHÀNỘI trở nờn vụ dụng bởi vỡ một truy vấn sử dụng nú sẽ tham chiếu đến một quan hệ NHÂNVIấN khụng tồn tại.