III. Ngôn ngữ định nghĩa dữ liệu
4. Khung nhì n VIEW
Khung nhìn (View) là một bảng tạm thời, có cấu trúc như một bảng. Nội dung của khung nhìn dựa trên một truy vấn (query), nó chỉ tồn tại trong bộ nhớ. Dữ liệu trong một khung nhìn có thể đến từ một hoặc nhiều bảng trong CSDL. Nó cũng có thể đến từ các khung nhìn khác thậm chí đến từ dữ liệu trong các CSDL khác. Sử dụng khung nhìn có những thuận lợi nhất định, nó cho phép ta:
Dấu tên cột đối với người sử dụng
Giới hạn số lương cột và hàng mà người sử dụng sẽ làm việc Dễ dàng bảo mật dữ liệu
Theo quan điểm của người lập trình thì CSDL chuẩn hóa sẽ dễ dàng làm việc và bảo tri, nhưng nó không dễ dàng để người sử dụng làm việc. Nếu người sử dụng nhìn vào bảng DonHang họ chỉ thấy cột MaKhachHang. Nếu họ muốn xem tên khách hàng họ phải họ phải liên kết với bảng KhachHang. Đây là một tác vụ không dễ đối với người sử dụng. Sử dụng khung nhìn ta có thể liên kết hai bảng này lại và cung cấp khung nhìn cho người sử dụng Người sử dụng dùng khung nhìn để nhận thông tin cần thiết mà không cần biết cách liên kết bên dưới giữa các bảng.
Khung nhìn có thể tính gộp dữ liệu, ví dụ bạn có thể dễ dàng tạo khung nhìn chứa tổng giá trị đơn hàng cho từng khách hàng.
Một thuận lợi khác của khung nhìn là khả năng tùy chỉnh dữ liệu theo nhu cầu của người sử dụng. Ví dụ một cột trong khung nhìn có thể được kết hợp bởi 2 cột HoDem và cột Ten.
Người phát triển thường dùng tên cột không rõ ý nghĩa, khung nhìn sẽ giúp bạn giải quyết vấn đề này. Bạn có thể dễ dàng tạo khung nhìn có tên hiệu cho các cột.
Số cột trong bảng là nhiều, bạn có thể tạo ra khung nhìn chỉ chứa các cột cần thiết.
Bạn có thể cấp quyền truy cập trên khung nhìn thay vì cấp quyền truy cập trên bảng.
Để tạo khung nhìn bạn sử dụng lệnh CREATE VIEW theo cú pháp sau: CREATE VIEW <tên khung nhìn>
AS
SELECT <câu lệnh select> Ví dụ:
create view khdonhang as
select donhang.madonhang, donhang.ngaydathang,khachhang.hodem + ' ' + khachhang.ten as hoten
from donhang,khachhang
where donhang.makhachhang = khachhang.makhachhang Thực hiện câu truy vấn trên khung nhìn vừa tạo ra:
Nếu trong câu lệnh CREATE VIEW, ta không chỉ định danh sách các tên cột cho khung nhìn, tên các cột trong khung nhìn sẽ chính là tiêu đề các cột trong kết quả của câu lệnh SELECT. Trong trường hợp tên các cột của khung nhìn đươc chỉ định, chúng phải có cùng số lượng với số lượng cột trong kết quả của câu truy vấn.
create view khdonhang(Madonhang,NgayDatHang,HovaTen) as
select donhang.madonhang, donhang.ngaydathang,khachhang.hodem + ' ' + khachhang.ten
from donhang,khachhang
Bài Tập
Bài 1: Tạo CSDL LUONG để lưu trữ lương, trong đó có bảng tblLuong có cấu trúc như sau:
Tên trường Kiểu dữ liệu Ghi chú
HoDem nvarchar(50) Ten nvarchar(20) DonVi nvarchar(20) Luong smallmoney
PhuCap smallmoney Allow Nulls
Thuong smallmoney Allow Nulls
TamUng smallmoney Allow Nulls
Yêu cầu:
1. Nhập dữ liệu cho bảng
2. Xem danh sách tất cả các cán bộ ở phòng Tài vụ
3. Đưa ra danh sách những người ở phòng kế hoạch đã tạm ứng tiền
4. Đưa ra danh sách những người ở phòng Kế hoạch và phòng Tài vụ có mức thưởng lớn hơn 500.000 đ
5. Bổ xung thêm cột ConLai để tính số tiền còn được nhận của mỗi cán bộ Bài 2: Tạo cơ sở dữ liệu SinhVien sau đó sử dụng các lệnh để tạo các bảng sau:
tblSinhvien(Masv, Hoten, DiaChi, Malop) tblLop(Malop, Tenlop, MaNghanh)
tblNganhHoc(MaNganh, TenNganh, MaKhoa) tblKhoa(MaKhoa, TenKhoa)
Bài 3: Tạo một View hiển thị thông tin chi tiết của sinh viên (trong CSDL SinhVien đã tạo ở bài trên) dựa trên 4 bảng trên. Thông tin hiển thị bao gồm Masv, HoTen, Diachi, Tenlop, Tenkhoa, Tennganhhoc. Danh sách sinh viên được hiển thị theo lớp, trong 1 lớp thì sắp xếp theo tên.
Chương 5: Một số hàm trong SQL Server