Chỉ mục duy nhất là chỉ mục chỉ chứa một dòng dữ liệu cho mỗi khóa chỉ mục, có nghĩa là giá trị khóa chỉ mục xuất hiện duy nhất một lần trong chỉ mục. Chỉ mục duy nhất hoạt động hiệu quả hơn vì chúng đảm bảo rằng chỉ cần nhiều hơn một hoạt động nhập/xuất để nhận dữ liệu yêu cầu. SQL Server không cho phép giá trị khóa giống nhau được thêm vào cơ sở dữ liệu. Một chỉ mục là duy nhất nếu bản thân dữ liệu là duy nhất. Nếu dữ liệu trong một trường không là duy nhất ta có thể tạo ra chỉ mục duy nhất bằng cách dùng chỉ mục kết hợp.
- Chỉ mục không duy nhất
Chỉ mục không duy nhất làm việc giống như chỉ mục duy nhất. Tuy nhiên, nó cho phép chứa các giá trị trùng nhau trong nút lá. Chỉ mục không duy nhất không hiệu quả như chỉ mục duy nhất vì nó đòi hỏi xử lý thêm để nhận dữ liệu yêu cầu.
3.3.2. Tạo chỉ mục
Bước 1: Chọn tên bảng/Chọn Indexes/Chọn chuột phải/Chọn New Index
Hình 3.83. Tạo chỉ mục
Bước 2: Xác định các thông số
- Nhập tên chỉ mục tại mục Index Name
- Chọn kiểu Index tại mục Type Index
+ Clustered: là chỉ mục liên cung
+ Nonclustered: là chỉ mục phi liên cung
+ Spatial: là chỉ mục không gian
- Nếu muốn tạo chỉ mục duy nhất, đánh dấu chọn tại mục Unique. Ngược lại, bỏ mục chọn Unique.
- Chọn nút Add
Hình 3.84. Chọn các thông số cho chỉ mục
Bước 3: Chọn trường làm chỉ mục/Chọn OK.
Hình 3.85. Chọn trường làm chỉ mục
Kết quả tạo một chỉ mục liên cung đơn giản
Hình 3.86. Kết quả tạo chỉ mục liên cung
3.3.3. Loại bỏ chỉ mục
Chọn tên chỉ mục/chọn chuột phải/Chọn Delete/Chọn OK.
3.4. View
3.4.1. Khái niệm view
View là một bảng ảo được định nghĩa bằng cách dùng câu lệnh Select. Dữ liệu nguồn của View là Tables, View, Functions, Sysnonyms. View được lưu trữ như một phát biểu SQL được định nghĩa trước.
3.4.2. Các thao tác với View
1) Tạo View
- Dùng công cụ MS
Bước 1: Chọn cơ sở dữ liệu/Chọn Views/Chọn chuột phải/Chọn New View.
Hình 3.87. Tạo view
Bước 2: Chọn dữ liệu nguồn cho View
- Chọn mục Tables, hoặc Views, hoặc Functions, hoặc Synonyms
- Chọn từng bảng hoặc view hoặc hàm/Chọn Add
- Chọn OK.
Hình 3.88. Chọn dữ liệu nguồn cho view
Bước 3: Thiết kế View
- Chọn các trường hoặc xây dựng các biểu thức cần đưa ra tại trường Column.
- Nhập bí danh cho trường tại trường Alias.
- Đánh dấu vào mục Output tương ứng với trường cần đưa ra.
- Chọn kiểu sắp xếp cho trường muốn sắp xếp tại trường Sort Type.
- Chọn thứ tự ưu tiên sắp xếp cho các trường tại trường Sort Order.
- Tạo điều kiện lọc tại trường Filter.
Hình 3.89. Thiết kế View
Bước 4: Lưu view
Bước 5: Chạy View bằng cách chọn nút trên thanh công cụ. Tạo view có phân nhóm:
Bước 1, 2, 3 tương tự như tạo view không có sự phân nhóm. Bước 4: Chọn chuột phải/Chọn Add Group By
Hình 3.90. Tạo nhóm mới
Bước 5: Tại trường Group By chọn thông số (Group By, Max, Min, Count, Sum, Where, Avg,…) phù hợp cho từng trường.
Hình 3.91. Thiết kế nhóm
Bước 6: Lưu view
Bước 7: Chạy View bằng cách chọn nút trên thanh công cụ.
- Dùng câu lệnh T-SQL
Bước 1: Chọn nút New Query , xuất hiện cửa sổ New Query Bước 2: Khai báo câu lệnh tạo view (Create View).
Bước 3: Chọn nút để kiểm tra câu lệnh T-SQL. Bước 4: Chọn nút để thực hiện tạo view.
2) Thay đổi view
Chọn tên View/Chọn chuột phải/Chọn Design/Chỉnh sửa.
3) Xoá view
Chọn tên View/Chọn chuột phải/Chọn Delete/Chọn OK.
Chương 4
THỦ TỤC LƯU TRỮ VÀ HÀM NGƯỜI DÙNG
4.1. Thủ tục lưu trữ (Stored Procedure)
4.1.1. Khái niệm
Thủ tục lưu trữ là một đối tượng trong cơ sở dữ liệu, bao gồm nhiều câu lệnh T- SQL được tập hợp lại với nhau thành một nhóm. Các câu lệnh này sẽ được thực thi khi thủ tục lưu trữ được thực thi.
Trong thủ tục lưu trữ, ta có thể nhúng ngôn ngữ lập trình vào trong ngôn ngữ T- SQL. Thủ tục lưu trữ có thể có các thành phần sau:
- Các cấu trúc điều khiển (IF, WHILE, FOR , CASE,…)
- Các biến nhằm lưu giữ các giá trị tính toán được, các giá trị được truy xuất được từ cơ sở dữ liệu.
Thủ tục lưu trữ được lưu trữ như một phần của cơ sở dữ liệu. Cấu trúc của chúng như một văn bản text. Một tập các câu lệnh SQL được kết hợp lại với nhau thành một khối lệnh bên trong một thủ tục. Một thủ tục có thể nhận các tham số truyền vào cũng như có thể trả về các giá trị thông qua các tham số. Khi một thủ tục lưu trữ đã được định nghĩa, nó có thể được gọi thông qua tên thủ tục, nhận các tham số truyền vào, thực thi các câu lệnh SQL bên trong thủ tục và có thể trả về các giá trị sau khi thực hiện xong.
SQL Server chỉ biên dịch các thủ tục lưu trữ một lần và sử dụng lại kết quả biên dịch này trong các lần tiếp theo trừ khi người dùng có những thiết lập khác. Việc sử dụng lại kết quả biên dịch không làm ảnh hưởng đến hiệu suất hệ thống khi thủ tục lưu trữ được gọi liên tục nhiều lần. Thủ tục lưu trữ được phân tích, tối ưu khi tạo ra nên việc thực thi chúng nhanh hơn nhiều so với việc phải thực hiện một tập rời rạc các câu lệnh SQL tương đương theo cách thông thường. Thủ tục lưu trữ cho phép thực hiện cùng một yêu cầu bằng một câu lệnh đơn giản thay vì phải sử dụng nhiều dòng lệnh SQL. Điều này sẽ làm giảm thiểu sự lưu thông trên mạng. Thay vì cấp phát quyền trực tiếp cho người sử dụng trên các câu lệnh SQL và trên các đối tượng cơ sở dữ liệu, ta có thể cấp phát quyền cho người sử dụng thông qua các thủ tục lưu trữ, nhờ đó tăng khả năng bảo mật đối với hệ thống.
Các thủ tục lưu trữ trả về kết quả theo 4 cách:
- Sử dụng các tham số output.
- Sử dụng các lệnh trả về giá trị, các lệnh này luôn trả về giá trị số nguyên.
- Tập các giá trị trả về của mỗi câu lệnh SELECT có trong thủ tục lưu trữ hoặc của quá trình gọi một thủ tục lưu trữ khác trong một thủ tục lưu trữ.
- Một biến con trỏ toàn cục có thể tham chiếu từ bên ngoài thủ tục.
4.1.2. Các loại thủ tục lưu trữ.
Có 5 kiểu thủ tục lưu trữ
- Thủ tục lưu trữ hệ thống
- Thủ tục lưu trữ bên ngoài
- Thủ tục lưu trữ do người dùng định nghĩa
- Thủ tục lưu trữ tạm thời
- Thủ tục lưu trữ từ xa
1) Thủ tục lưu trữ hệ thống (System stored procedure)
Trong Microsoft SQL Server cung cấp cho chúng ta một số lớn các thủ tục lưu trữ hệ thống dùng để thực hiện các xử lý trong việc quản trị cơ sở dữ liệu. Một thủ tục lưu trữ hệ thống luôn luôn được bắt đầu bằng chữ sp_ và hầu hết tất cả các thủ tục lưu trữ hệ thống được lưu trữ bên trong cơ sở dữ liệu Master. Có hàng trăm Thủ tục lưu trữ hệ thống trong SQL Server. Ta có thể xem chi tiết trong SQL Server Books Online.
Một số thủ tục lưu trữ hệ thống thông dụng:
Thủ tục | Mô tả | |
1 | Sp_Who | Cung cấp các sử dụng đang truy cập SQL Server |
2 | Sp_Who2 | Cung cấp các sử dụng đang truy cập SQL Server |
3 | Sp_configure | Cho biết cấu hình của SQL Server |
4 | Sp_tables | Cung cấp thông tin về bảng |
5 | Sp_password | Cho phép thay đổi password của một người dùng |
6 | Sp_helptext | Hiện thị nội dung của đối tượng View, thủ tục lưu trữ |
7 | Sp_helppdb | Hiện thị nội dung của cơ sở dữ liệu |
8 | Sp_dropuser | Cho phép xóa một người dùng |
9 | Sp_Columns | Hiện thị nội dung của bảng |
10 | Sp_adduser | Thêm một người dùng vào cơ sở dữ liệu |
11 | Sp_addlogin | Cho phép tạo một Login User |
Có thể bạn quan tâm!
- Kết Quả Sau Tạo Ràng Buộc Khóa Ngoại Và Khóa Ngoại
- Xác Nhận Việc Xóa Bảng Dữ Liệu
- Thực Thi Và Lưu Trữ File Đóng Gói
- Ngôn Ngữ Dll Của Thủ Tục Lưu Trữ
- Các Loại Hàm Người Dùng Và Ngôn Ngữ Dll Cho Hàm Người Dùng
- Kết Quả Tạo Các Hàm Người Dùng
Xem toàn bộ 323 trang tài liệu này.
Ví dụ 1: Muốn xem các bảng trong cơ sở dữ liệu Master ta dùng thủ tục sp_tables.
Hình 4.1. Thông tin về bảng trong cơ sở dữ liệu Master
Ví dụ 2: Tạo mới một người dùng có tên là "linhgiang", với mật khẩu "12345" cho phép truy cập vào cơ sở dữ liệu "QLTS", bằng thủ tục hệ thống sp_addlogin như sau:
use master go
exec sp_addlogin 'linhgiang', '12345' , 'QLTS'
Hình 4.2. Kết quả thêm một người dùng mới
2) Thủ tục lưu trữ bên ngoài (Extended Stored Procedure)
Thủ tục lưu trữ bên ngoài là một loại thủ tục lưu trữ sử dụng một chương trình ngoại vi (external program) vốn được dịch thành một thư viện liên kết động (DLL) để mở rộng chức năng hoạt động của SQL Server. Loại này thường bắt đầu bằng tiếp đầu ngữ xp_.
Ví dụ, thủ tục xp_sendmail dùng đề gởi mail cho một người nào đó; thủ xp_cmdshell dùng để chạy một câu lệnh DOS.
Nhiều loại thủ tục lưu trữ bên ngoài được xem như thủ tục lưu trữ hệ thống và ngược lại.
3) Thủ tục lưu trữ do người dùng định nghĩa (Local Stored Procedure)