CHƯƠNG VI:Chương 3: View
I. View
1. Định nghĩa
 View là một bảng tạm thời, không lưu trữ dữ liệu
mà nó được tạo ra để nhận dữ liệu từ các bảng
khác
 View được tạo ra từ câu lệnh truy vấn (SELECT),
truy vấn từ một hoặc nhiều bảng dữ liệu
 View được sử dụng:
 Khai thác dữ liệu từ nhiều bảng
 Chia sẻ khai thác cho nhiều người dùng
 An toàn trong khai thác
 Không ảnh hướng dữ liệu gốc
2
3
2. Tạo View
 Cú pháp:
CREATE VIEW tên-khung-nhìn[ (ds-tên-cột) ]
as
câu-lệnh-SELECT
 Lưu ý
-Nếu không chỉ định danh sách tên cột cho khung nhìn, tên các cột chính là
tiêu đề các cột trong kết quả câu SELECT
-Tên các cột trong view được chỉ định thì phải có cùng số lượng với số
lượng cột trong kết quả của câu SELECT
-Phải đặt tên cho cột của View (ds-tên-cột) trong trường hợp sau:
Cột được phát sinh từ một biểu thức số học, hoặc hàm có sẵn hay hằng
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
Đổi tên của cột so với tên của cột trong bảng CSDL.
4
• Ví dụ:
CREATE VIEW thongtin_nv
AS
SELECT manv, hoten, tendonvi
FROM nhanvien, donvi
WHERE nhanvien.madv = donvi.madv
CREATE VIEW thongtin_nv (manv, hoten, tuoi, tendonvi)
AS
SELECT manv,hoten, datediff(year,ngaysinh,getdate()), tendonvi
FROM nhanvien,donvi
WHERE nhanvien.madv = donvi.madv
5
 Ví dụ:
NHANVIEN(MaNV, Hoten, DiaChi, SDT, NgaySinh, GT, HSL)
HANG(MaHang, TenHang, NhaSX, TGianBaoHanh)
KHACHHANG(MaKH, TenKH, CMT, DiaChi, SoDienThoai, Email)
HOADONXUAT(MaHD, MaKH, NgayLapHD, MaNV, PhuongThucTT)
CT_HOADON(MaHD, MaHang, SoLuongMua, DonGia)
 Tạo View chứa danh sách nhân viên nữ
 Tạo View chứa danh sách nhân viên với các thông tin: mã nhân viên, họ
tên, giới tính và tuổi
 Tạo View cho biết họ tên của khách hàng đã mua tổng số tiền hàng > 10
triệu
 Tạo View cho biết họ tên của nhân viên đã bán được > 20 triệu tiền hàng
Ngôn ngữ truy vấn 6
*Xóa khung nhìn
 Cú pháp:
drop view tên-khung-nhìn
 Ví dụ:
drop view thongtin_nv
 Lưu ý:
- Khi một View bị xóa thì các quyền được cấp phát cho người dùng trên
View đó cũng sẽ bị xóa. Nên khi tạo lại View thì phải cấp phát lại
quyền cho người sử dụng
7
3. Thay đổi định nghĩa khung nhìn
• Dùng để định nghĩa lại View mà không làm thay đổi các
quyền đã được cấp phát cho người dùng trước đó.
• Cú pháp:
ALTER VIEW tên_khung_nhìn [ (danh_sách_tên_cột) ]
as
câu_lệnh_SELECT
9
• Ví d :ụ
CREATE VIEW viewlop
AS
SELECT malop, tenlop, tenkhoa
FROM lop, khoa
WHERE lop.makhoa=khoa.makhoa AND tenkhoa = N‘Khoa Công ngh ’ệ
• nh ngh a l i:Đị ĩ ạ
ALTER VIEW viewlop
AS
SELECT malop, tenlop, hedaotao
FROM lop, khoa
WHERE lop.makhoa=khoa.makhoa AND tenkhoa= N‘Khoa Công ngh tin h c’ệ ọ
10
Cho Database gồm
Khoa(MaK, TenK, SoDT)
Lop(MaLop, TenLop, Siso, MaK)
Sinhvien(MaSV,TenSV,NS,GT,MaLop)
MonHoc(MaMon,TenMon,SoDVHT)
Diem(MaSV,MaMon,Ketqua, Lanthi)
 Tạo view
- Lấy ra danh sách sinh viên nữ học môn cơ sở dữ liệu và
kết quả
- Cho biết số sinh viên đã qua môn toán rời rạc
- Lấy ra tên sinh viên và điểm trung bình của các sinh viên
- Cho biết số sinh viên học lại của từng môn
Ngôn ngữ truy vấn
11

Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 3 VIEW

  • 1.
  • 2.
    I. View 1. Địnhnghĩa  View là một bảng tạm thời, không lưu trữ dữ liệu mà nó được tạo ra để nhận dữ liệu từ các bảng khác  View được tạo ra từ câu lệnh truy vấn (SELECT), truy vấn từ một hoặc nhiều bảng dữ liệu  View được sử dụng:  Khai thác dữ liệu từ nhiều bảng  Chia sẻ khai thác cho nhiều người dùng  An toàn trong khai thác  Không ảnh hướng dữ liệu gốc 2
  • 3.
  • 4.
    2. Tạo View Cú pháp: CREATE VIEW tên-khung-nhìn[ (ds-tên-cột) ] as câu-lệnh-SELECT  Lưu ý -Nếu không chỉ định danh sách tên cột cho khung nhìn, tên các cột chính là tiêu đề các cột trong kết quả câu SELECT -Tên các cột trong view được chỉ định thì phải có cùng số lượng với số lượng cột trong kết quả của câu SELECT -Phải đặt tên cho cột của View (ds-tên-cột) trong trường hợp sau: Cột được phát sinh từ một biểu thức số học, hoặc hàm có sẵn hay hằng 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 Đổi tên của cột so với tên của cột trong bảng CSDL. 4
  • 5.
    • Ví dụ: CREATEVIEW thongtin_nv AS SELECT manv, hoten, tendonvi FROM nhanvien, donvi WHERE nhanvien.madv = donvi.madv CREATE VIEW thongtin_nv (manv, hoten, tuoi, tendonvi) AS SELECT manv,hoten, datediff(year,ngaysinh,getdate()), tendonvi FROM nhanvien,donvi WHERE nhanvien.madv = donvi.madv 5
  • 6.
     Ví dụ: NHANVIEN(MaNV,Hoten, DiaChi, SDT, NgaySinh, GT, HSL) HANG(MaHang, TenHang, NhaSX, TGianBaoHanh) KHACHHANG(MaKH, TenKH, CMT, DiaChi, SoDienThoai, Email) HOADONXUAT(MaHD, MaKH, NgayLapHD, MaNV, PhuongThucTT) CT_HOADON(MaHD, MaHang, SoLuongMua, DonGia)  Tạo View chứa danh sách nhân viên nữ  Tạo View chứa danh sách nhân viên với các thông tin: mã nhân viên, họ tên, giới tính và tuổi  Tạo View cho biết họ tên của khách hàng đã mua tổng số tiền hàng > 10 triệu  Tạo View cho biết họ tên của nhân viên đã bán được > 20 triệu tiền hàng Ngôn ngữ truy vấn 6
  • 7.
    *Xóa khung nhìn Cú pháp: drop view tên-khung-nhìn  Ví dụ: drop view thongtin_nv  Lưu ý: - Khi một View bị xóa thì các quyền được cấp phát cho người dùng trên View đó cũng sẽ bị xóa. Nên khi tạo lại View thì phải cấp phát lại quyền cho người sử dụng 7
  • 8.
    3. Thay đổiđịnh nghĩa khung nhìn • Dùng để định nghĩa lại View mà không làm thay đổi các quyền đã được cấp phát cho người dùng trước đó. • Cú pháp: ALTER VIEW tên_khung_nhìn [ (danh_sách_tên_cột) ] as câu_lệnh_SELECT 9
  • 9.
    • Ví d:ụ CREATE VIEW viewlop AS SELECT malop, tenlop, tenkhoa FROM lop, khoa WHERE lop.makhoa=khoa.makhoa AND tenkhoa = N‘Khoa Công ngh ’ệ • nh ngh a l i:Đị ĩ ạ ALTER VIEW viewlop AS SELECT malop, tenlop, hedaotao FROM lop, khoa WHERE lop.makhoa=khoa.makhoa AND tenkhoa= N‘Khoa Công ngh tin h c’ệ ọ 10
  • 10.
    Cho Database gồm Khoa(MaK,TenK, SoDT) Lop(MaLop, TenLop, Siso, MaK) Sinhvien(MaSV,TenSV,NS,GT,MaLop) MonHoc(MaMon,TenMon,SoDVHT) Diem(MaSV,MaMon,Ketqua, Lanthi)  Tạo view - Lấy ra danh sách sinh viên nữ học môn cơ sở dữ liệu và kết quả - Cho biết số sinh viên đã qua môn toán rời rạc - Lấy ra tên sinh viên và điểm trung bình của các sinh viên - Cho biết số sinh viên học lại của từng môn Ngôn ngữ truy vấn 11

Editor's Notes

  • #3 Khung nhìn View có thể được coi như một “bảng ảo” có nội dung được định nghĩa thông qua một câu lệnh Select View khác Table: View không được xem là một cấu trúc lưu trữ dữ liệu trong CSDL Thực chất dữ liệu của View được lấy từ các Table trong CSDL thông qua truy vấn! Định nghĩa: Khung nhìn View có thể được coi như một “bảng ảo” có nội dung được định nghĩa thông qua một câu lệnh Select View khác Table: View không được xem là một cấu trúc lưu trữ dữ liệu trong CSDL Thực chất dữ liệu của View được lấy từ các Table trong CSDL thông qua truy vấn!
  • #5 Lưu ý: Nếu danh sách cột không được chỉ rõ thì cột của View chính là cột của câu lệnh Select Nếu tên cột được chỉ rõ thì phải có cùng số lượng cột trong câu Select Tên view, tên cột đảm bảo định danh Không tạo được ràng buộc và chỉ mục Buộc phải đặt tên cột trong một số trường hợp: Kết quả lệnh Select có cột được tạo bởi biểu thức Có 2 cột trong Select có cùng tiêu đề cột Ví dụ: câu lệnh này sẽ bị lỗi do cột thứ 3 không xác định được CREATE VIEW thongtin_nv AS SELECT manv,hoten,datediff(year,ngaysinh,getdate()),tendv FROM nhanvien,donvi WHERE nhanvien.madv=donvi.madv Sửa lại CREATE VIEW thongtin_nv(manv,hoten,tuoi,donvi) AS SELECT manv,hoten,datediff(year,ngaysinh,getdate()),tendv FROM nhanvien,donvi WHERE nhanvien.madv=donvi.madv
  • #6 Ví dụ: câu lệnh này sẽ bị lỗi do cột thứ 3 không xác định được
  • #7 NHANVIEN(MaNV, Hoten, DiaChi, SDT, NgaySinh, GT, HSL) HANG(MaHang, TenHang, NhaSX, TGianBaoHanh) KHACHHANG(MaKH, TenKH, CMT, DiaChi, SoDienThoai, Email) HOADONXUAT(MaHD, MaKH, NgayLapHD, MaNV, PhuongThucTT) CT_HOADON(MaHD, MaHang, SoLuongMua, DonGia)
  • #9 Ưu điểm: Bảo mật dữ liệu: cấp quyền trên View, hạn chế truy cập trực tiếp dữ liệu. Đơn giản hóa các thao tác truy vấn dữ liệu: truy vấn trên view đơn giản hơn nhiều khi làm việc với nhiều bảng. Tập trung và đơn giản hóa dữ liệu: tập trung trên những dữ liệu cần thiết Độc lập dữ liệu Nhược điểm: Chi phí thời gian Dữ liệu trong View thường chỉ đọc
  • #10 Điều kiện: Trong lệnh SELECT định nghĩa khung nhìn không chứa từ khoá DISTINCT, TOP, GROUP BY và UNION. Các thành phần xuất hiện trong danh sách chọn của câu lệnh SELECT phải là các cột trong các bảng cơ sở, không được chứa các biểu thức tính toán, các hàm gộp. Đảm bảo ràng buộc dữ liệu Thực chất các thao tác này sẽ là những thao tác trên bảng cơ sở và tác động vào bảng cơ sở.