Bài giảng về View và Con trỏ
Trang 1Chương 7
View và Con trỏ
Trang 2Review
Chỉ mục và chỉ mục toàn văn
Đánh chỉ mục giúp việc nhận dữ liệu về nhanh hơn
Lệnh CREATE INDEX được sử dụng để đánh chỉ mục trên bảng chỉ định
FILLFACTOR chỉ ra một giá trị từ 0 đến 100 nhằm xác định phần trăm của trang chỉ mục được để trống
Có hai kiểu chỉ mục clustered và non-clustered.
Một chỉ mục clustered xác định thứ tự lưu trữ của
dữ liệu trong một bảng Một bảng chỉ có thể có một chỉ mục clustered vì chỉ mục clustered quy định thứ tự lưu trữ vật lý của dữ liệu
Trang 3 Một chỉ mục non-clustered xác định thứ tự lưu trữ logic của một bảng Vì thế, một bảng có thể có nhiều chỉ mục non-clustered (lên tới 249)
Các chỉ mục Clustered và non-clustered có thể được tạo với các đặc tính duy nhất hoặc phức hợp
Các chỉ mục duy nhất không cho phép trùng giá trị trong cột chỉ mục
Các chỉ mục phức hợp cho phép hai hoặc nhiều cột được sử dụng để tạo chỉ mục
Thủ tục lưu hệ thống sp_helpindex system báo cáo thông tin về các chỉ mục trên một bảng
Trang 4 Các chỉ dẫn bắt buộc trình tối ưu hoá truy vấn chọn một chỉ mục riêng biệt để thực hiện truy vấn
Lệnh DROP INDEX xoá một chỉ mục.
Một chỉ mục toàn văn theo sát các từ có ý nghĩa trong một bảng Chỉ mục này sử dụng cho việc tìm kiếm có chứa các từ chỉ mục và các tìm kiếm nâng cao, chẳng hạn như tìm kiếm các cụm từ
Một danh mục toàn văn là một thư mục mà tất cả các chỉ mục toàn văn của cho một cơ sở dữ liệu được đặt ở đó
Trang 5 Từ khoá CONTAINS tìm kiếm các cột chứa các kiểu dữ liệu kí
tự phù hợp với các từ đơn và các cụm từ, các từ gần giống một
từ khác, và các đối sánh quan trọng
Từ khoá FREETEXT tìm kiếm các cột có chứa giá trị đồng nghĩa hoặc gần nghĩa với các từ được cung cấp trong điều kiện tìm kiếm
Trang 6 Định nghĩa con trỏ và quá trình tạo con trỏ
Hiểu rõ View chỉ mục và View phân tán
Nắm vững quá trình thực thi con trỏ
Nhận về dữ liệu từ con trỏ theo hàng
Trang 8Sử dụng view
Lọc các dòng từ bảng
Bảo vệ dữ liệu nhạy cảm khỏi những người dùng không được phép
Làm giảm sự phức tạp của cơ sở dữ liệu
Tách các cơ sở dữ liệu khác nhau ở dạng vật lý vào một cơ sở dữ liệu đơn nhất ở dạng logic
Trang 9Ưu điểm của view
Thuận lợi đối với người sử dụng cuối
Dễ dàng để hiểu được kết quả
Dễ dàng thu được dữ liệu mong muốn
Thuận lợi của View đối với những nhà phát triển
Dễ dàng hạn chế việc nhận dữ liệu trả về
Dễ dàng bảo trì ứng dụng
Trang 10CREATE VIEW NewMoon_employee AS
SELECT emp_id, fname, minit, lname,hire_date FROM employee e, publishers p
WHERE e.pub_id = p.pub_id
AND pub_name = 'New Moon Books'
Trang 11Hướng dẫn tạo View
View chỉ có thể được tạo trong cơ sở dữ liệu hiện tại.
Tên một View tương tự như tên một bảng bởi vì nó phải dễ dàng để nhớ và có sự liên kết (không có khoảng trắng giữa các
kí tự) Nó phải theo các quy ước đặt tên để đảm bảo sự đồng nhất
Một View có thể được xây dựng dựa vào các View khác SQL SERVER cho phép các View được lồng vào nhau tới 32 mức (cấp) Mỗi một View có thể bao gồm tới 1024 cột từ một hay nhiều bảng hoặc từ nhiều View khác
Những giá trị mặc định, những quy tắc và bẫy lỗi không thể được liên kết với View
View không thể đánh chỉ mục
Trang 12Hướng dẫn tạo View (tiếp)
Các bảng tạm thời không thể tham gia vào View
Khai báo View được lưu giữ lại ngay cả khi các bảng liên quan
bị loại bỏ
Câu truy vấn để khai báo View không thể bao gồm các mệnh đề ORDER BY, COMPUTE, COMPUTE BY hoặc từ khóa INTO
Trang 13Sửa đổi dữ liệu thông qua View
Một View có thể được sử dụng để thay đổi dữ liệu trong bảng với điều kiện:
View phải bao gồm ít nhất một bảng nằm trong mệnh đề FROM của phần khai báo View
Không có tất cả các hàm sau (AVG, COUNT, SUM, MIN, MAX, GROUPING) hoặc GROUP BY, UNION, DISTINCT hoặc mệnh đề TOP trong danh sách được chọn
View không có các cột nhận được từ trong danh sách chọn
Trang 14Xoá View
Sau khi một View được sử dụng xong, nó có thể bị xóa để giải phóng vùng nhớ
Việc xóa một View không tác động đến các bảng
cơ sở mà View tham chiếu đến
Câu lệnh xóa một View là:
DROP VIEW view_name
Ví dụ:
DROP VIEW NewMoon_employee
Trang 15Con trỏ
Một con trỏ là một đối tượng cơ sở dữ liệu được sử dụng bởi ứng dụng để thao tác với các hàng dữ liệu thay vì các tập hợp dữ liệu
Với con trỏ chúng ta có thể:
Cho phép định vị các hàng chỉ định của tập kết quả.
Nhận về một hàng đơn hoặc tập hợp các hàng từ vị trí hiện
tại của tập kết quả
Hỗ trợ sửa đổi dữ liệu của hàng ở vị trí hiện tại trong tập
kết quả
Hỗ trợ nhiều cấp độ quan sát đối với các thay đổi được tạo
ra bởi các người dùng khác trên các dữ liêu của tập kết quả
Trang 16 Cung cấp các lệnh Transact-SQL trong các
script, thủ tục lưu, và bẫy lỗi để truy nhập dữ liệu trong tập kết quả
Con trỏ
Trang 17Tạo con trỏ
Lệnh DECLARE dùng để tạo một con trỏ
Nó chứa các lệnh SELECT để bao gồm các bản ghi
từ bảng
Cú pháp là:
DECLARE <Cursor_Name> CURSOR
[LOCAL | GLOBAL]
[FORWARD ONLY | SCROLL]
[STATIC | KEYSET | DYNAMIC |FAST_FORWARD]
[READ_ONLY | SCROLL_LOCKS | OPTIMISTIC]
[TYPE_WARNING]
FOR <Select Statements>
[FOR UPDATE [OF Column_name[,….N]]]
Trang 19Truy xuất và duyệt con trỏ
FETCH FIRST: Truy xuất hàng đầu tiên.
FETCH NEXT: Truy xuất hàng tiếp theo hàng truy xuất trước đó
FETCH PRIOR: Truy xuất hàng trước hàng truy xuất trước đó
FETCH LAST: Truy xuất hàng cuối cùng.
FETCH ABSOLUTE n: Nếu n là một số nguyên
dương, nó sẽ truy xuất n hàng trong con trỏ Nếu n
là một số nguyên âm, n hàng trước hàng cuối cùng trong con trỏ được truy xuất Nếu n bằng 0, không
hàng nào được truy xuất Ví dụ, FETCH Absolute 2
sẽ hiển thị bản ghi thứ hai của một bảng
Trang 20Truy xuất và duyệt con trỏ
FETCH RELATIVE n: Truy xuất n hàng từ hàng truy
xuất trước đó, nếu n là số dương Nếu n là số âm, n
hàng trước hàng truy xuất trước đó được truy xuất
Nếu n bằng 0, hàng hiện tại được nhận về.
Trang 21Các biến toàn cục của
lệnh FETCH
@@FETCH _STATUS: Biến này trả về một số nguyên biễu diễn kết quả của lệnh truy xuất cuối cùng của con trỏ
@@CURSOR_ROWS: Biến này trả về tổng số hàng hiện tại trong con trỏ đang mở
Trang 22Ví dụ tạo con trỏ
Trang 23Tổng kết
View là một cách thức để xem các dữ liệu từ một hay nhiều bảng trong cơ sở dữ liệu View là một bảng ảo, bảng ảo được tạo ra như một tập con của các cột hay các hàng từ một hay nhiều bảng khác nhau
Một view có tác dụng như một bộ lọc trên các bảng sử dụng một câu truy vấn
Lệnh CREATE VIEW để tạo view.
Lệnh DROP VIEW để xoá view.
Một con trỏ là một đối tượng cơ sở dữ liệu được sử dụng bởi ứng dụng để thao tác với các hàng dữ liệu thay vì các tập hợp dữ liệu Sử dụng con trỏ, nhiều tác vụ có thể được thực hiện theo từng hàng trên tập kết quả mà có thể cần hoặc ko cần sự có mặt
Trang 24 Lệnh FETCH được sử dụng để đọc các bản ghi từ con trỏ
Ngầm định, một con trỏ là forward only Nó có thể truy xuất tuần tự các bản ghi từ bản ghi đầu tiên đến bản ghi cuối cùng Nó không thể truy xuất trực tiếp hàng thứ 1 hoặc hàng cuối cùng trong một bảng