Tạo khung nhỡn

Một phần của tài liệu giao trinh SQL (Trang 87 - 89)

Cõu lệnh CREATE VIEW được sử dụng để tạo ra khung nhỡn và cú cỳ phỏp như sau:

CREATE VIEW tờn_khung_nhỡn[(danh_sỏch_tờn_cột)] AS

view DSSV

Table LOP Table SINHVIEN

cõu_lệnh_SELECT

Vớ dụ 3.11: Cõu lệnh dưới đõy tạo khung nhỡn cú tờn DSSV từ cõu lệnh SELECT truy vấn dữ liệu từ hai bảng SINHVIEN và LOP

CREATE VIEW dssv AS SELECT masv,hodem,ten, DATEDIFF(YY,ngaysinh,GETDATE()) AS tuoi,tenlop FROM sinhvien,lop WHERE sinhvien.malop=lop.malop

và nếu thực hiện cõu lệnh:

SELECT * FROM dssv

ta cú được kết quả như sau:

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.

Vớ dụ 3.12: Cõu lệnh dưới đõy tạo khung nhỡn từ cõu truy vấn tương tự như vớ dụ trờn nhưng cú đặt tờn cho cỏc cột trong khung nhỡn:

CREATE VIEW dssv(ma,ho,ten,tuoi,lop) AS SELECT masv,hodem,ten, DATEDIFF(YY,ngaysinh,GETDATE()),tenlop FROM sinhvien,lop WHERE sinhvien.malop=lop.malop và cõu lệnh:

SELECT * FROM dssv

trong trường hợp này cú kết quả như sau:

Khi tạo khung nhỡn với cõu lệnh CREATE VIEW, ta cần phải lưu ý một số nguyờn tắc sau:

• Tờn khung nhỡn và tờn cột trong khung nhỡn, cũng giống như bảng, phải tuõn theo qui tắc định danh.

• Khụng thể qui định ràng buộc và tạo chỉ mục cho khung nhỡn.

• Cõu lệnh SELECT với mệnh đề COMPUTE ... BY khụng được sử dụng để định nghĩa khung nhỡn.

• Phải đặt tờn cho cỏc cột của khung nhỡn trong cỏc trường hợp sau đõy:

 Trong kết quả của cõu lệnh SELECT cú ớt nhất một cột được sinh ra bởi một biểu thức (tức là khụng phải là một tờn cột trong bảng cơ sở) và cột đú khụng được đặt tiờu đề.

 Tồn tại hai cột trong kết quả của cõu lệnh SELECT cú cựng tiờu đề cột.

Vớ dụ 3.13: Cõu lệnh dưới đõy là cõu lệnh sai do cột thứ 4 khụng xỏc định được tờn cột

CREATE VIEW tuoisinhvien AS

SELECT masv,hodem,ten,DATEDIFF(YY,ngaysinh,GETDATE()) FROM sinhvien

Một phần của tài liệu giao trinh SQL (Trang 87 - 89)