Hệ quản trị cơ sở dữ liệu SQL Server

19 1000 0
Hệ quản trị cơ sở dữ liệu SQL Server

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Nội dung tài liệu Hệ quản trị cơ sở dữ liệu SQL Server giới thiệu đến các bạn những nội dung về hệ quản trị cơ sở dữ liệu, tổng quan về SQL Server, những điểm mới của SQL Server 2008,... Mời các bạn cùng tham khảo, với các bạn chuyên ngành Công nghệ thông tin thì đây là tài liệu tham khảo hữu ích.

ĐẠI CƯƠNG SQL SERVER – Mai Đức Thạch 0165.859.7998 – nadipage.com, webnadi.com, vneverestweb.com HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU Dữ liệu sở liệu: - Dữ liệu có nghĩa thơng tin thành phần quan trọng lĩnh vực, công việc Trong công việc thường ngày bao gồm việc sử dụng có tạo liệu Khi liệu tạo phân tích chúng trở thành thơng tin Thơng tin giúp ta tiên định kiện - CSDL tập hợp liệu tổ chức cho nội dung dễ dàng truy cập, quản lý cập nhật Quản trị liệu: việc quản lý lượng lớn thông tin, bao gồm việc lưu trữ thông tin chế thao tác thơng tin thơng tin Ngồi ra, hệ thống phải đảm bảo tính an tồn thơng tin lưu trữ nhiều tình khác Có phương pháp quản trị liệu khác nhau: Hệ thống dựa tập tin Hệ thống sở liệu + Hệ thống lưu trữ liệu tập tin riêng + Được phát triển vào cuối năm 1960 để giải biệt Trong đó, nhóm tập tin lưu máy vấn đề ứng dụng có tính truy cập thao tác máy tính Tập liệu lớn khắc phục nhược điểm hệ tin lưu liệu gọi bảng, dòng gọi thống quản lý theo file ghi, cột gọi trường + CSDL sử dụng để lưu trữ liệu có hệ thống + Nhược điểm hệ thống này: chương trình có tổ chức CSDL giúp quản lý liệu nhanh chóng khác ứng dụng tương tác với dễ dàng Dữ liệu lưu trữ truy xuất file liệu khác Nó khơng tồn hệ lưu trữ file đơn giản thời gian lưu trữ thống ép buộc theo chuẩn việc lưu lâu trữ cấu trúc file liệu + Ưu điểm hệ thống quản lý liệu tập trung ● Dư thừa mâu thuẫn liệu ● Giảm dư thừa liệu ● Khó khăn phải truy xuất bất ngờ ● Giảm mâu thuẫn liệu ● Cô lập liệu ● Dữ liệu lưu trữ chia sẻ ● Khó khăn việc xử lý truy cập đồng thời bất ● Các chuẩn thiết lập trì thường ● Tồn vẹn liệu trì ● Vấn đề bảo mật tính tồn vẹn liệu phải lập trình ● Bảo mật liệu cài đặt chương trình Hệ quản trị sở liệu (DBMS – DataBase Management System): - Khái niệm: Một hệ quản trị CSDL định nghĩa tập ghi có liên quan với tập hợp chương trình cho phép cập nhật thao tác ghi Hệ quản trị CSDL tập trung, CSDL lưu trũ tập trung nơi, người truy cập đến CSDL tập trung từ máy tính họ CSDL tập hợp liệu có liên quan với hệ quản trị CSDL tập hợp chương trình thêm vào để thêm vào sửa đổi liệu Do đó, hệ quản trị CSDL phần mềm cho phép định nghĩa, xây dựng bảo trì CSDL Hệ quản trị CSDL cung cấp môi trường thuận tiện hiệu để có lượng lớn liệu giao dịch xử lý Các loại hệ quản trị CSDL sử dụng từ hệ thống nhỏ chạy máy tính cá nhân hệ thống lớn chạy máy chủ lớn Các hệ quản trị CSDL khác hỗ trợ câu lệnh truy vấn khác nhau, có ngơn ngữ truy vấn chuẩn gọi ngơn ngữ vấn tin có cấu trúc (SQL) Hiện hệ thứ tư Không cần phải sử dụng hệ quản trị CSDL phổ biến để thiết lập CSDL Người viết tự viết chương trình để tạo quản lý CSDL họ, hiệu họ tạo phần mềm quản lý CSDL theo mục đích riêng Môi trường hệ thống CSDL đơn giản mô tả bên - Lợi ích hệ quản trị CSDL + Lưu trữ liệu + Truy vấn đồng thời phục hồi liệu + Định nghĩa liệu + Hiệu + Thao tác liệu + Điều khiển đa truy cập + Bảo mật toàn vẹn liệu + Ngôn ngữ truy xuất CSDL giao diện lập trình ứng dụng API - Các mơ hình CSDL: mơ hình liệu mơ tả kho chứa liệu xử lý việc lưu trữ truy xuất liệu từ kho Người phân tích thiết kế mơ hình liệu phải dựa vào q trình phát triển CSDL Mỗi mơ hình phát triển dựa vào mơ hình trước + Mơ hình liệu file phằng: chứa bảng hay file Nó dùng cho CSDL đơn giản mà quản lý lượng lớn liệu Nó tạo dư thừa liệu mơ tả nhiều lần + Mơ hình phân cấp: ghi liên kết với thông qua cấp bậc giống cấu trúc Trong quan hệ gọi quan hệ cha-con Một ghi cha có vài ghi con, ghi có ghi cha Để tìm liệu đó, người dùng cần phải biết cấu trúc Ưu điểm mô hình này: ● Dữ liệu lưu trữ CSDL, liệu chia sẻ dễ dàng bảo mật hệ quản trị CSDL ● Độc lập giữ liệu hệ quản trị CSDL giúp giúp giảm chi phí bảo trì chương trình + Mơ hình mạng: tương tự mơ hình phân cấp Thực chất mơ hình phân cấp tập mơ hình mạng Tuy nhiên, sử dụng lý thuyết tập để tạo phân cấp mà nút có nhiều nút cha Dữ liệu lưu trữ tập thay định dạng theo phân cấp Nó giúp hạn chế dư thừa liệu Nó cho phép nút có nhiều nút cha Vì vậy, ghi vật lý liên quan với thông qua danh sách liên kết Mơ hình mạng kết hợp với mơ hình phân cấp mơ hình liệu sở để c ài đặt nhiều hệ thống CSDL thương mại Ngơn ngữ cấu trúc mơ hình mạng định nghĩa Hội thảo ngôn ngữ hệ thống liệu (CODASYN) Đối với CSDL, tên CSDL, tên ghi thành phần tạo nên ghi lưu trữ Nó gọi sơ đồ mạng, phần chúng nhìn thấy chương trình ứng dụng, chương trình lấy thông tin cần thiết từ liệu CSDL gọi sơ đồ Những thành phần ngơn ngữ sử dụng mơ hình mạng: ● Ngôn ngữ định nghĩa liệu ● Ngôn ngữ thao tác liệu ● Ngôn ngữ điều khiển liệu Ưu điểm Nhược điểm - Khó thiết lập CSDL theo mơ hình - Các quan hệ dễ dàng thiết lập mơ hình mạng - Người lập trình phải nắm rõ cấu trúc bên CSDL so với mơ hình phân cấp để truy cập - Mơ hình đảm bảo tồn vẹn liệu - Nó cung cấp mơi trường truy cập CSDL nên để di - Mơ hình đạt độc lập liệu cần thiết chuyển từ A sang E phải qua B, C, D + Mơ hình quan hệ: Tất liệu chứa bảng, bảng chứa dòng cột Dữ liệu bảng quan hệ với thông qua cột thay cho liên kết vật lý Những phép toán cung cấp để thực dòng bảng liệu Mơ hình mơ tả CSDL tập hợp quan hệ Trong thuật ngữ mô hình, dịng gọi Tuple, cột gọi thuộc tính, bảng gọi quan hệ Danh sách giá trị trường gọi miền Có thể có vài thuộc tính có chung miền Số thuộc tính quan hệ gọi bậc quan hệ Số Tuple xác định số thành viên quan hệ Ưu điểm cho phép lập trình viên tập trung vào góc nhìn logic hơn tập trung vào góc nhìn vật lý Nhược điểm thực thi châm so với mơ hình CSDL khác Hệ quản trị CSDL quan hệ (Relational DataBase Management System - RDBMS): + Thực thể: đối tượng cụ thể nhận biết rõ ràng, có đặc tính gọi thuộc tính, nhóm thực thể gọi tập thực thể, tập thực thể đặt tên, tên phảm ánh nội dung tập thực thể + Bảng: chứa nhóm thực thể có liên quan với hay gọi tập thực thể Một bảng gọi quan hệ (Relation), dòng gọi (Tuples), cột gọi thuộc tính (Attributes) Thành viên quan hệ số quan hệ, bậc quan hệ số thuộc tính quan hệ - Người dùng hệ quản trị CSDL: + Quản trị viên CSDL + Thiết kế viên CSDL + Chun viên phân tích hệ thống lập trình viên ứng dụng + Chuyên viên cài đặt thiết kế viên quản trị CSDL + Người dùng cuối - Phân biệt hệ quản trị CSDL hệ quản trị CSDL quan hệ: DBMS RDBMS - Khơng cần có liệu theo cấu trúc dạng bảng - Phải cấu trúc dạng bảng mối quan hệ bảng không ép buộc mối quan hệ dạng bảng mục đảm bảo hệ thống liệu - Lượng nhỏ liệu lưu trữ truy xuất - Có thể lưu truy xuất lượng lớn liệu - Bảo mật RDBMS - Bảo mật mạnh so với DBMS - Là hệ thống đơn người dùng - Là hệ thống đa người dùng - Hầu hết không hỗ trợ kiến trúc client/server - Hỗ trợ kiến trúc client/server - Thực thể quan trọng khơng có quan hệ - Người dùng thiết lập nhiều ràng buộc tồn vẹn thiết lập thực thể cho bảng để liệu sau sử dụng người dùng giữ đắn quan hệ quan trọng ĐẠI CƯƠNG SQL SERVER – Mai Đức Thạch 0165.859.7998 – nadipage.com, webnadi.com, vneverestweb.com MƠ HÌNH DỮ LIỆU Mơ hình hóa liệu (Data Modeling) tiến trình áp dụng mơ hình thích hợp cho liệu thơ Nó trải qua ba bước - Lược đồ quan hệ thực thể: + Các ký hiệu biểu diễn: Đa trị (Multi-valued) Có nhiều giá trị với thể thực thể chứa Số điện thoại Phức hợp (Composite) Có thể chứa hai hay nhiều thuộc tính, nhiều biểu diễn thuộc tính Đường Vùng Dẫn xuất (Derived) Các thuộc tính có giá trị phụ thuộc hồn tồn vào thuộc tính khác Tuổi Địa Mơ hình quan hệ thực thể (Entity- Relationship): xem toàn giới thực tập hợp đối tượng mối quan hệ chúng - Năm thành phần mơ hình quan hệ thực thể: + Thực thể (Entity): đối tượng tồn giới thực phân biệt với đối tượng khác + Mối quan hệ (Relationship): kết hợp hay gắn kết hay nhiều thực thể + Thuộc tính (Attributes): đặc tính hay đặc trưng thực thể, phân biệt thực thể với thực thể khác + Tập thực thể (Entity Set): tập thực thể tương tự - Các loại quan hệ: - Một số khái niệm khác: + Khóa (primary key): thuộc tính định rõ thực thể tập thực thể + Tập thực thể yếu (Weak entity sets): nhiều tập thực thể khơng đủ thuộc tính để thiết lập khóa + Tập thực thể mạnh (Strong entity sets): tập thực thể có đủ thuộc tính để thiết lập khóa Chuẩn hóa: tiến trình gỡ bỏ liệu dư thừa từ bảng CSDL quan hệ Bảng ban đầu Dạng chuẩn 1: First Normal Form BẢNG CHI TIẾT DỰ ÁN CỦANHÂN VIÊN - Tạo bảng riêng biệt cho nhóm manv maduan tenduan tennv loai luong liệu liên quan 142 113, 124 Sach, Xay Thach A 20000 - Các cột bảng phải có giá trị nguyên tố 168 113 Sach Dai B 15000 - Tất thuộc tính khóa phải nhận 263 113 Sach Ngoc C 10000 dạng BẢNG CHI TIẾT DỰ ÁN 109 124 Xay Vu C 10000 maduan tenduan 113 Sach Dạng chuẩn 2: Second Normal Form 124 Xay - Chúng thỏa mãn yêu cầu dạng chuẩn BẢNG CHI TIẾT NHÂN VIÊN - Chúng không phụ thuộc phần bảng manv tennv loai luong - Các bảng quan hệ thơng qua khóa ngoại BẢNG CHI TIẾT DỰ ÁN BẢNG CHI TIẾT DỰ ÁN 142 Thach A 20000 CỦA NHÂN VIÊN maduan tenduan 168 Dai B 15000 manv maduan 113 Sach 263 Ngoc C 10000 142 113 124 Xay 109 Vu C 10000 142 124 168 113 Dạng chuẩn 2: Third Normal Form 263 113 - Chúng thỏa mãn yêu cầu dạng chuẩn hai 109 124 - Không tồn phụ thuộc bắc cầu bảng BẢNG CHI TIẾT NHÂN VIÊN BẢNG CT DỰ ÁN BẢNG CT DỰ ÁN CỦA NHÂN VIÊN manv tennv loai luong maduan tenduan manv maduan 142 Thach A 20000 113 Sach 142 113 168 Dai B 15000 124 Xay 142 124 263 Ngoc C 10000 BẢNG CT LƯƠNG 168 113 109 Vu C 10000 loai luong 263 113 A 20000 109 124 Các loại tốn tử: mơ hình quan hệ xâu dựng dựa B 15000 BẢNG CHI TIẾT sở đại số quan hệ (gồm tập hợp phép toán hoạt động C 10000 NHÂN VIÊN quan hệ Mỗi toán tử giữ quan hệ đầu vào kết quan hệ đầu ra) manv tennv loai - Phép chọn (SELECT δ) 142 Thach A - Phép chiếu (PROJECT π) 168 Dai B - Phép nhân (PRODUCT x) 263 Ngoc C - Phép kết hợp (UNION U) 109 Vu C - Phép giao (INTERSECT ) - Phép hiệu (DIFFERENCE) - Phép nối (JOIN) - Phép chia (DIVIDE) ĐẠI CƯƠNG SQL SERVER – Mai Đức Thạch 0165.859.7998 – nadipage.com, webnadi.com, vneverestweb.com Cơ sở liệu: tập liệu lưu trữ tập tin liệu đĩa thiết bị lưu trữ di chuyển Một sở liệu để giữ thiết bị thật CƠ SỞ DỮ LIỆU HỆ THỐNG (System Databases) - Tạo sở liệu: CREATE DATABASE tên_CSDL ON PRIMARY (NAME = N’tên_luận_lý’, FILENAME = N’tên_vật_lý’, SIZE = ‘kích_thước_ban_đầu’, MAXSIZE = ‘kích_thước_lớn_nhất’, FILEGROWTH = ‘kích_thước_tăng_trưởng’ ) LOG ON ( NAME = N’tên_luận_lý’, FILENAME = N’tên_vật_lý’, SIZE = ‘kích_thước_ban_đầu’, MAXSIZE = ‘kích_thước_lớn_nhất’, FILEGROWTH = ‘kích_thước_tăng_trưởng’ ) Lệnh mở CSDL: USE tên_CSDL - Thay đổi sở liệu: ALTER DATABASE tên_CSDL Đổi tên Cơ sở liệu MODIFY NAME = tên_CSDL_mới Thêm file vào CSDL ADD FILE ( NAME = N’tên_luận_lý’, FILENAME = N’tên_vật_lý’, SIZE = ‘kích_thước_ban_đầu’, MAXSIZE = ‘kích_thước_lớn_nhất’, FILEGROWTH = ‘kích_thước_tăng_trưởng’ ) Chọn kiểu xếp COLLATE tên_kiểu_sắp_xếp - Quyền sở hữu CSDL EXEC sp_changedbowner ‘tên_tài_khoản’ - Hủy bỏ CSDL DROP DATABASE tên_CSDL tên file luận lý: file vật lý câu lệnh TransactSQL tham chiếu tên file luận lý Tên file logic phải tuân theo luật cho định danh SQL Server nằm số tên file luận lý CSDL FILE CƠ SỞ DỮ LIỆU - Các loại CSDL hệ thống ● master: lưu trữ tất thông tin hệ thống phiên cải đặt SQL Server ● msdb: sử dụng SQL Server Agent để nhắc nhở thao tác thực theo lịch biểu công việc khác ● model: sử dụng CSDL mẫu cho tất CSDL tạo phiên cài đặt cụ thể ● resource: CSDL đọc, gồm đối tượng hệ thống ● tempdb: lưu trữ đối tượng tạm thời tập kết trung gian - Thay đổi liệu CSDL hệ thống: Người dùng không phép cập nhật thông tin trực tiếp vào đối tượng CSDL hệ thống: bảng, thủ tục, khung nhìn; sử dụng tập đầy đủ cơng cụ quản trị cho phép họ quản trị đầy đủ hệ thống quản lý tất người sử dụng đối tượng CSDL: + Các tiện ích quản trị SQL Server Management Studio + Giao diện lập trình ứng dụng với đối tượng quản lý SQL Server + Kịch Transact-SQL thủ tục lưu trữ - Xem liệu CSDL hệ thống: + Khung nhìn danh mục hệ thống + Các đối tượng quản lý SQL Server + Các hàm danh mục, phương thức, thuộc tính, tính chất giao diện lập trình ứng dụng CSDL ● Đối tượng liệu ActiveX (ADO) ● CSDL liên kết nhúng đối tượng (OLEDB) ● Các thủ tục lưu trữ hàm CƠ SỞ DỮ LIỆU NGƯỜI DÙNG ĐỊNH NGHĨA tên file vật lý: đường dẫn thư mục Nó phải tuân theo luật cho tên file hệ điều hành Các file CSDL gồm: *.MDF File liệu sơ cấp: điểm bắt đầu CSDL trỏ đến file khác CSDL *.NDF File liệu thứ cấp: chứa đựng tất file liệu, trừ file liệu Có thể khơng cần *.LDF File chứa đựng tất thông tin nhật ký sử dụng để phục hồi CSDL Mỗi CSDL có - Bản chụp CSDL khung nhìn tĩnh, đọc CSDL CREATE DATABASE tên_bản_chụp ON (NAME = tên_luận_lý, FILENAME =’tên_vật_lý’,) [,…………… ] AS SNAPSHOT OF tên_CSDL_cần_chụp Lưu ý: việc tạo chụp yêu cầu tên luận lý tập tin CSDL CSDL gốc - Sao lưu liệu tập tin BACKUP DATABASE Tên_CSDL TO DISK = 'Tên_tập_tin_bak' [ WITH INIT , NOUNLOAD , NAME = ‘đặt tên cho backup’, SKIP , STATS = 10, NOFORMAT ] - Khôi phục CSDL: RESTORE DATABASE Đặt_tên_cho_csdl_sau_khi_khôi_phục FROM DISK = 'Ten_tap_tin_bak' [ WITH FILE = 1, UNLOAD , STATS = 10, RECOVERY , REPLACE ] CƠ SỞ DỮ LIỆU MẪU Adventure Works - Gồm phần + AdventureWorks: xử lý giao dịch trực tuyến (Online Transaction Processing OLTP) + AdventureWorksDW: kho (Data warehouse) + AdventureWorksAS: dịch vụ phân tích (Analysis Services) ĐẠI CƯƠNG SQL SERVER – Mai Đức Thạch 0165.859.7998 – nadipage.com, webnadi.com, vneverestweb.com Ngôn ngữ Transact-SQL ngôn ngữ mở rộng ngôn ngữ ANSI-SQL ISO-SQL Ngôn ngữ định nghĩa liệu DDL – Data definition language ngôn ngữ dùng để tạo, thay đổi xóa cấu trúc đối tượng - Thao tác với Cơ sở liệu: (xem phần tạo sở liệu) - Thao tác với bảng: + Tạo bảng CREATE TABLE tên_bảng ( tên_cột_1 kiểu_dữ_liệu(độ_rộng) ràng_buộc, tên_cột_2 kiểu_dữ_liệu(độ_rộng) ràng_buộc, ) Các ràng buộc liệu cột: ● NULL | NOT NULL: giá trị null có phép sử dụng cột hay không ● DEFAULT (): gán giá trị mặc định ban đầu cho liệu Thông thường không đặt kiểu số kiểu chuỗi N/A Unknown Nó khơng sử dụng cột có kiểu liệu timestamp ; có thuộc tính IDENTITY, ROWGUIDCOL hay đối tượng mặc định ● IDENTITY([,]): dùng để tạo cột có giá trị tự động phát sinh để định danh hàng bảng ● DEFAUT NEWID(): tạo cột định danh tổng thể ● Các ràng buộc Constraint gồm kiểu sau: ► PRIMARY KEY([,cột_thứ_2, ]): sử dụng để tạo khóa chính, đảm bảo tính tồn vẹn thực thể bảng, bảng có khóa cột khóa khơng chứa giá trị NULL Trong trường hợp hai cột giữ vai trị khóa ta dùng thêm dấu phẩy sau ► UNIQUE([,cột_thứ_2, ]): để tạo ràng buộc khóa nhất, đảm bảo giá trị nhập cột hay tập hợp cột Một bảng có nhiều ràng buộc UNIQUE ► FOREIGN KEY REFERENCES .: cột bảng để đến khóa bảng khác nhằm đảm bảo toàn vẹn tham chiếu ► CHECK điều_kiện : dùng để kiểm tra giới hạn giá trị nhập vào thỏa mãn điều kiện quy định + Thay đổi cấu trúc bảng: ALTER TABLE tên_bảng ALTER COLUMN tên_cột kiểu_dữ_liệu_mới - - Đổi kiểu liệu cột ADD tên_cột kiểu_dữ_liệu - - Thêm cột DROP COLUMN tên_cột, - - Xóa cột EXEC sp_rename ‘tên_bảng.tên_cột’, ‘tên_mới’,’COLUMN’ –Đổi tên cột EXEC sp_rename ‘tên_bảng’, ‘tên_mới’ Đổi tên bảng ADD CONSTRAINT [] - - Thêm constraint DROP CONSTRAINT - - Xóa constraint + Xóa bảng khỏi sở liệu: DROP TABLE tên_bảng Ngôn ngữ thao tác liệu DML – Data manipulation language ngôn ngữ dùng để thao tác với liệu bảng - Rút trích liệu từ sở liệu: SELECT cột_hiển_thị FROM bảng_truy_xuất WHERE điều_kiện_lọc CÁC_LỆNH_KHÁC + Một số lệnh định dạng cột_hiển_thị: ● Để hiển thị nhiều cột bảng, ta liệt kê tên cột phân cách dấu phẩy; để liệt kê tất cột bảng ta dùng ký tự * ALL ; để hiển thị cột nhiều bảng khác nhau, cột có nhiều bảng ta phải dùng . để tránh lỗi không tường minh ● Để đổi tên cột hiển thị ta dùng = AS ● Lệnh DISTNCT dùng để ngăn chặn hiển thị ghi trùng ● Lệnh TOP [PERCENT] [WITH TIES] :hiển thị tập dòng kết Trong đó: ► : số hàng hay phần trăm số hàng bảng trả tập kết ► PERCENT: trả số hàng bị giới hạn tỷ số phần trăm ► WITH TIES: ghi cuối TOP có giá trị kết ghi trả + Một số lệnh bảng_truy_xuất ● Khi truy xuất từ bảng, ta tên bảng cần truy xuất đến ● Khi truy xuất từ nhiều bảng , ta sử dụng lệnh: TỪ_KHĨA_NỐI ON Trong TỪ_KHĨA_NỐI là: ► INNER JOIN : để nối bảng vào, không phân biệt bảng bên trái với bảng bên phải ► LEFT JOIN : để nối bảng vào, lấy tất giá trị bảng bên trái nối với bảng bên phải ► RIGHT JOIN : để nối bảng vào, lấy tất giá trị bảng bên phải nối với bảng bên trái + Một số lệnh điều_kiện_lọc: sử dụng tốn tử >; =; =num trả giá trị lớn >=num hàm lũy thừa DB_ID([‘tên_CSDL’]) HOST_ID() dy trả số định danh máy trạm trả tên máy trạm expr Null thay value dd 1-31 wk 1-53 dw 1-7 mm 1-12 qq yy 1-7 17539999 ROUND(num,length) SIGN(num) SQRT(num) hàm làm tròn xác định dấu num hàm bậc hai OBJECT_ID (‘tên_đối_tượng’) OBJECT_NAME (‘id_đối_tượng’) trả số định danh đối tượng USER_ID(‘user’) Số định danh người dùng USER_NAME(‘user’) trả tên người dùng trả tên đối tượng hàm đánh số hàng, bắt đầu với với hàng đấu tiên sau tăng dần hàm trả xếp hạng hàng mà khơng có khoảng cách hàng DENSE_RANK() - Biểu thức: kết hợp nhiều phần tử toán tử, giá trị, định danh ước tính trả kết Trước thực cần kiểm tra xem trường COUNTRY có nhập liệu hay khơng tốn tử NULL + Biểu thức bản: So sánh so sánh giá trị liệu Logic trả sai với AND, OR, NOT, LIKE, ANY, ALL IN Số học thực phép tính số học +, -, *, /, Tốn tử ngơi tồn tử thực tồn hạng Tốn tử nhị phân tốn tử thực bit liệu Hàm ghép chuỗi ghép chuỗi thành chuỗi Gán giá trị gán giá trị cho biến + Biểu thức CASE: Biểu thức CASE so sánh: so sánh biểu thức với giá Biểu thức CASE tìm kiếm: tìm kiếm theo điều kiện, trị trả kết tương ứng thỏa mãn để trả kết tương ứng CASE Biểu_thức CASE WHEN Giá_trị_1 THEN Biểu_thức_kết_quả_1 WHEN bt_1 THEN kết_quả_bt_1 [WHEN Giá_trị_2 THEN Biểu_thức_kết_quả_2 ] [WHEN bt _2 THEN kết_quả_bt_2 ] [ ELSE Biểu_thức_kết_quả_N] [ ELSE biểu_thức_kết_quả_N] END END RÀNG BUỘC DỮ LIỆU TRONG SQL SERVER – Mai Đức Thạch 0165.859.7998 – nadipage.com, webnadi.com, vneverestweb.com TOÀN VẸN DỮ LIỆU (DATA INTEGRITY) ĐỊNH NGHĨA TOÀN VẸN DỮ LIỆU ► Trong CSDL, liệu lưu trữ cập nhật giá trị nhập vào cần phải kiểm tra tính hợp lệ tính đắn ► Nếu có thao tác sửa hay xóa liệu, thay đổi cần phải phản ánh đến tất nơi khác CSDL có liên quan đến liệu đó.tính hợp lệ tính đắn ► Tính tồn vẹn liệu bảo quản (maintained) cách đưa số kiểm tra thời điểm tạo bảng thời điểm chỉnh sửa bảng, sau kiểm tra áp dụng quản lý liệu QUY TẮC TỒN VẸN DỮ LIỆU Có số qui tắc(rule) cho tồn vẹn liệu giúp đảm bảo tính đắn quán liệu Các qui tắc là: ► Trong bảng khơng thể có hai ghi (record) mà giá trị tất cột ► Chỉ có giá trị liệu hợp lệ thêm vào ► Tính hợp lệ liệu phải trì (đảm bảo) liệu chỉnh sửa ► Với bảng có quan hệ với qua cột chung, thay đổi liệu cột chung bảng nên phản ánh phù hợp tới bảng có liên quan CƠ CHẾ THỰC THI TỒN VẸN DỮ LIỆU ► Constraints: thuộc tính, bạn gắn cho cột bảng để ngăn liệu không hợp lệ nhập vào cột ► Default values: Bạn định nghĩa giá trị cho cột không chấp nhận giá trị null Khi thực thêm sửa giá trị mặc định chèn vào ghi cột bị bỏ trống ► Rules: constraint áp dụng để điều khiển giá trị liệu nhập vào bảng Các rule độc lập với việc định nghĩa bảng áp dụng cho nhiều bảng ► Triggers: có chứa đoạn code tạo thành câu lệnh T-SQL thi tự động có kiện xác định xảy RÀNG BUỘC TOÀN VẸN Các ràng buộc sử dụng để đảm bảo tính hợp lệ liệu bảng đảm bảo tính quán liệu bảng liên quan Bạn định nghĩa ràng buộc cho cột cho bảng RÀNG BUỘC CHECK - Ràng buộc CHECK xác định miền giá trị nhập vào cho cột - Ràng buộc CHECK tạo với biểu thức logic (là biểu thức có giá trị trả True hay False) để kiểm tra giá trị nhập vào - Bạn áp dụng ràng buộc CHECK tới nhóm cột - Cú pháp: CREATE TABLE ({ [CONSTRAINT ] [CHECK(bt_logic)} [,…n ] ) RÀNG BUỘC UNIQUE - Ràng buộc UNIQUE áp dụng cho cột cho kết hợp nhiều cột để đảm bảo tính liệu cột Ràng buộc UNIQUE đảm bảo tính tồn vẹn thực thể bảng Trong bảng có nhiều ràng buộc UNIQUE cho nhiều cột Với cột áp dụng ràng buộc UNIQUE, Giá trị null phép nhập vào lần - Ràng buộc UNIQUE định nghĩa bên câu lệnh CREATE TABLE ALTER TABLE ALTER TABLE ADD CONSTRAINT tên_constraint UNIQUE (tên_cột) RÀNG BUỘC PRIMARY KEY - Mục đích cột khóa (PRIMARY KEY) để xác định tính record có bảng - Ràng buộc PRIMARY KEY kiểm tra liệu cột khóa chính, khơng cho đưa vào giá trị trùng - Một PRIMARY KEY cột kết hợp nhiều cột - Ràng buộc PRIMARY KEY bên câu lệnh CREATE TABLE ALTER TABLE CREATE TABLE ({ [CONSTRAINT tên_constraint] [PRIMARY KEY] } [, n] ) RÀNG BUỘC FOREIGN KEY - Ràng buộc khóa ngoại (FOREIGN KEY) dùng bạn muốn kiểm tra tính tồn liệu Nghĩa giá trị nhập vào cho cột khóa ngoại bắt buộc phải có cột PRIMAY KEY UNIQUE bảng tham chiếu Cột FOREIGN KEY, PRIMARY KEY UNIQUE phải có kiểu liệu - Các tùy chọn cascading định nghĩa với việc tạo ràng buộc khóa ngoại để đảm bảo tính quán liệu bảng liên thực thay đổi cột PRIMARY KEY UNIQUE + ON UPDATE [NO ACTION | CASCADE]: Chỉ cho SQL SERVER cách thi hành có hành động cập nhật xảy cột PRIMARY KEY UNIQUE bảng tham chiếu + NO ACTION: Báo lỗi bên cột khóa ngoại có giá trị có liên quan tới giá trị bị sửa cột PRIMARY KEY UNIQUE  CASCADE: Khi cập nhật giá trị cột PRIMARY KEY CÁC LOẠI TOÀN VẸN DỮ LIỆU TOÀN VẸN THỰC THỂ (Entity Integrity) Mỗi bảng CSDL biểu diễn cho thực thể, record (dòng) bên bảng biểu diễn cho thể thực thể Toàn vẹn thực thể đảm bảo bởi: - PRIMARY KEY: không cho phép chèn vào giá trị null giá trị trùng với giá trị có - UNIQUE: khơng cho phép nhập vào giá trị trùng cho phép nhập vào giá trị null lần - INDEXES: dùng để ngăn cản nhập giá trị trùng vào cột để đảm bảo tính giá trị - IDENTITY: định nghĩa cho cột định danh bảng Cột định danh cột có chứa giá trị hệ thống phát sinh record thêm vào Tất giá trị cột TOÀN VẸN MIỀN GIÁ TRỊ (Domain Integrity) Một miền tập hợp giá trị tạo giá trị hợp lệ cột Để đảm bảo toàn vẹn miền, tất giá trị liệu bảng nên thuộc miền xác định - FOREIGN KEY: Giá trị cho cột null giá trị tồn cột UNIQUE cột PRIMARY KEY mà cột có tham chiếu đến - CHECK: miền giá trị hợp lệ nhập vào cho cột - DEFAULT: giá trị cho cột không chấp nhận giá trị null Giá trị mặc định tự động gán cho cột cột bị bỏ trống - NOT NULL: cột khơng chấp nhận giá trị NULL (không để trống) - DATA TYPES: Kiểu liệu hợp lệ xác định cho nhiều cột khác Ví dụ: Khi cột định nghĩa có kiểu liệu date chấp nhận giá trị kiểu date - RULES: ràng buộc xác định miền dạng giá trị hợp lệ cho cột Rule định nghĩa độc lập sau áp dụng cho nhiều bảng TỒN VẸN THAM CHIẾU (Referential Integrity) - Toàn vẹn tham chiếu đảm bảo tính qn liệu bảng có liên quan với thông qua cột chung (trường chung) - Sử dụng khóa ngoại để thực tồn vẹn tham chiếu - Tính tồn vẹn tham chiếu đảm bảo qui tắc sau: + Các giá trị chèn vào cột khóa ngoại giá trị bắt buộc phải có tồn cột UNIQUE khóa bảng tham chiếu + Nếu giá trị cột UNIQUE khóa sửa đổi, thay đổi tương tự thực cột khóa ngoại + Nếu giá trị cột UNIQUE PRIMARY KEY bị xóa bỏ, xóa bỏ nên thực cột khóa ngoại TỒN VẸN DO NGƯỜI DÙNG ĐỊNH NGHĨA (User-defined Integrity) - Các ràng buộc tồn vẹn có sẵn SQL Server 2005 chưa đủ để đảm bảo giá trị liệu theo dạng (format) miền theo mong muốn Do ràng buộc người dùng định nghĩa áp dụng cho cột để trì tính tồn vẹn liệu - Ví dụ: Số điện thoại yêu cầu phải có dạng (123) 456-789 - Như tạo kiểu liệu người dùng định nghĩa để nhận vào giá trị theo dạng RÀNG BUỘC DỮ LIỆU TRONG SQL SERVER – Mai Đức Thạch 0165.859.7998 – nadipage.com, webnadi.com, vneverestweb.com INDEX CƠ SỞ DỮ LIỆU tổ chức liệu ndf Tập tin sơ cấp (Primary Data Files) ndf Tập tin thứ cấp (Secondary Data Files) ndf Tập tin ghi vết (Transaction Log Files) Mục đích việc sử dụng index: nhắm tạo bảng để xếp liệu; từ đó, record lấy dễ dàng liệu xếp SQL Server sử dụng index tương tự mục lục sách Index có chứa thơng tin cho phép bạn tìm liệu mà khơng phải qt tồn bảng Các truy vấn bảng index thực thi nhanh chiếm tài nguyên TẠO FILE INDEX - Tăng tốc độ truy xuất liệu - Đảm bảo tính dòng ►Nên tạo file index: + Cho khóa chính, khóa ngoại + Thường xun tìm kiếm theo miền + Thường xuyên truy cập theo thứ tự - Các dòng liệu bảng lưu trang liệu (data page) Ngồi ra, cịn có trang index để lưu trữ index bảng, - Kích thước trang 8KB, bắt đầu 96 byte header lưu thông tin trang như: + số trang (page number), + kiểu trang (page type), + khơng gian cịn trống trang, + trỏ trỏ đến trang trước - Các trang index giúp truy cập trực tiếp dòng bảng Có phương pháp sử dụng để tổ chức trang bảng + Các bảng có clustered index (bảng clustered) + Các bảng khơng có clustered index (heap) HEAP SQL Server truy xuất liệu cách quét toàn bảng (table scan) Một bảng quét sau: + Bắt đầu từ trang liệu bảng + Quét từ trang tới trang khác tất dịng có bảng Index Allocation Maps (IAMs) sử dụng để di chuyển từ trang tới trang khác heap Với bảng có clustered index, liên kết trang sử dụng để di chuyển từ trang tới trang khác + Đọc dòng bảng rút(extract) dòng thỏa mãn điều kiện truy vấn + Là cách tốt cho việc truy xuất bảng nhỏ CLUSTERED SQL Server sử dụng truy xuất index (indexed access) để truy xuất liệu Truy xuất index thực sau: - Duyệt cấu trúc index để tìm dịng mà truy vấn yêu cầu - Đọc lấy(extract) dòng thỏa mãn điều kiện truy vấn - Là cách tốt để truy xuất dòng dãy dòng từ bảng lớn KHÔNG TẠO FILE INDEX - Tiêu tốn không gian đĩa - Incurs overhead ►Không nên tạo file index: + Trên cột tham chiếu đến câu truy vấn + Cột có giá trị + Các cột có kiểu liệu bit, text, images CẤU TRÚC HEAP (HEAP STRUCTURES) - Trong cấu trúc heap, trang liệu dịng liệu khơng xếp theo thứ tự cụ thể Các dòng trang liệu không liên kết(link) với mà kết nối(connenction) luận lý (logical) qua thông tin ghi trang IAM (Index Allocation Map - Bản đồ cấp phát mục) SQL Server 2005 sử dụng trang IAM để duyệt cấu trúc heap Bạn đọc heap cách duyệt trang IAM để tìm extent có chứa trang cho heap - Sự phân vùng cấu trúc heap: mặc định, heap có phân vùng; phân vùng tạo cho bảng có cấu trúc heap, phân vùng chứa liệu cấu trúc heap riêng biệt KIẾN TRÚC INDEX - Trong SQL Server, mục tổ chức giống nhị phân (B-tree) Mỗi trang mục index B-tree gọi nút mục (index node) + Nút trang liệu (data page) trang mục (index page) chứa mục trỏ tới dòng liệu + Nút gốc nút trung gian có chứa trang mục (index page) nắm giữ mục dòng (index row) + Mỗi Chỉ mục dịng có chứa giá trị khóa trỏ trỏ tới nút trung gian khác, trỏ tới dòng - liệu nút Nút cao gọi nút gốc (root node) Nút nằm nút nút gốc gọi nút mức trung gian (intermediate node) Nút mức thấp gọi nút (leaf node) - Phân vùng bảng(Table Partitionning) + Phân vùng kỹ thuật phân chia logic bảng index thành nhiều phân vùng(partition) nhằm quản lý hiệu sở liệu với dung lượng lớn + Mỗi phân vùng chứa dòng liệu tổ chức theo cấu trúc heap cấu trúc clustered index + Phân vùng cho phép truy xuất liệu nhanh chóng hiệu quả, thao tác quản lý thực tập liệu thay tồn bảng Table partitioning kỹ thuật phân chia bảng thành đoạn nhằm quản lý hiệu sở liệu với dung lượng lớn Đối với ứng dụng truy cập từ bên ngoài, bảng (table) bảng nhất, có cấu trúc vật lý khác so với bảng không phân đoạn Bảng phân đoạn dựa vào giá trị trường (trường chọn gọi partition key) Ví dụ bạn có liệu giao dịch bán hàng chứa bảng BanHang, bạn phân đoạn theo năm trường NgayGiaoDich (ngày giao dịch): giao dịch xảy năm 2009 nằm đoạn riêng, tương tự với giao dịch năm 2010… Kỹ thuật làm tăng khả mở rộng SQL Server lên nhiều, giúp cho việc quản trị sở liệu lớn trở nên dễ dàng Thử hình dung với bảng liệu chứa vài trăm triệu ghi thường xuyên cập nhật, tác vụ backup/restore, create/rebuild index tốn thời gian Việc truy vấn sửa đổi liệu vất vả Table partitioning nhằm giải trở ngại đó, có ưu điểm sau: Tiện lợi quản trị - Bạn backup/restore đoạn mà khơng ảnh hưởng đến đoạn cịn lại: ví dụ thời điểm năm 2010 đoạn chứa liệu 2009 năm trước khơng cịn tiếp nhận liệu nữa, bạn không cần phải thường xuyên backup đoạn cần backup đoạn 2010 - Bạn REBUILD lại index đoạn (những đoạn cần phải REBUILD có nhiều thao tác xóa, sửa) thay tồn bảng - Nó cho phép nhanh chóng loại bỏ liệu nguyên đoạn khỏi bảng thay phải dùng lệnh DELETE (thao tác gọi SWITCH-OUT) Tương tự cho phép “nạp” liệu từ bảng khác vào thành đoạn (SWITCH-IN) Tính có giá trị ứng dụng ETL Datawarehouse Ví dụ bạn cần import liệu năm 2008, bạn import vào bảng riêng sau switch-in bảng vào bảng cách tức Trước có partitioning, bạn phải dùng lệnh INSERT để chuyển liệu từ bảng riêng vào bảng Quá trình nhiều thời gian suốt q trình bảng bị khóa khơng thể truy cập Cải tiến hiệu - Khi câu lệnh cần lấy liệu đoạn hệ thống cần truy nhập vào đoạn bỏ qua đoạn cịn lại (tính gọi partition elimination) - Khi đoạn liệu lưu trữ ổ cứng khác làm giảm tranh chấp vào/ra câu lệnh Ví dụ hai câu lệnh SELECT UPDATE hoạt động bảng hai đoạn khác thực hồn tồn song song với Việc phân đoạn bảng dựa hai khái niệm sau đây: · Partition function: qui định giá trị biên cho đoạn Hệ thống dựa vào hàm để xác định đoạn mà ghi thuộc vào · Partition scheme: ánh xạ đoạn khai báo partition function vào filegroup (mỗi đoạn lưu trữ filegroup) RÀNG BUỘC DỮ LIỆU TRONG SQL SERVER – Mai Đức Thạch 0165.859.7998 – nadipage.com, webnadi.com, vneverestweb.com CẤU TRÚC CLUSTERED INDEX - Clustered index xếp liệu bảng theo thứ tự khóa index Toàn bảng trở thành index Các node chứa khóa index đồng thời chứa tất trường cịn lại Kích thước clustered index khoảng 5% kich thước bảng Trước tạo clustered index, bạn cần phải đảm bảo hệ thống cịn khơng gian trống tối thiểu gấp 1, lần so với liệu bảng - Nguyên tắc (Guidelines) tạo clustered mục + Chỉ tối đa clustered index cho bảng + Clustered index chứa nhiều trường + Khi tạo khóa chính(Primary Key) cho bảng, mặc định clustered index tự động tạo với cho bảng + Nếu bảng khơng có khóa chính, clustered index nên định nghĩa trên: ● Các cột khóa mở rộng thường dùng cho việc tìm kiếm ●Cột sử dụng truy vấn trả kết tập hợp lớn ● Các cột mà liệu trùng ● Các cột dùng để nối hai bảng Không đánh mục cột trường hợp sau: - Cột chứa số giá trị Bảng chứa số hàng Việc đánh mục bảng nhỏ khơng tối ưu khiến cho SQL Server nhiều thời gian để duyệt mục để tìm kiếm liệu thực việc tìm kiếm hàng bảng Trường tĩnh: Trường clustered index không nên bị cập nhật thường xuyên, có mặt bảng giá trị cần giữ nguyên Khi bị cập nhật, thân clustered index cần cập nhật để xếp ghi vào vị trí cho thứ tự, đồng thời nonclustered index khác phải cập nhật theo trỏ phải chứa giá trị Thao tác cập nhật trường clustered index tốn diễn thường xuyên, làm cho clustered index bị phân mảnh CẤU TRÚC NONCLUSTERED INDEX - Một mục non-clustered xác định cách xếp logic bảng Vì vậy, bảng có nhiều mục nonclustered (có thể lên tới 249) Một mục non-clustered giống mục sách giáo khoa Dữ liệu lưu trữ nơi, mục nơi khác với trỏ trỏ tới vị trí lưu trữ liệu + Các nhãn mục lưu trữ theo thứ tự giá trị khố mục, thơng tin bảng khơng thay đổi Nếu khơng có mục clustered tạo bảng, hàng trật tự định Một mục non-clustered mục thứ tự logic mục không trùng khớp với thứ tự vật lý, thứ tự lưu trữ hàng ổ đĩa + SQL tìm kiếm giá trị liệu cách tìm theo mục non-clustered để xác định vị trí liệu bảng sau nhận trực tiếp liệu từ vị trí Qúa trình giống việc sử dụng mục sách Nếu bảng liệu phía xếp sử dụng mục clustered, vị trí giá trị khố; Ngược lại, vị trí ID hàng bao gồm số hiệu file, số trang, số hiệu hàng - Nonclustered index có cấu trúc B-tree giống clustered index, có số khác biệt sau: + Thứ tự vật lý dịng liệu bảng khơng lưu trữ theo thứ tự qui định khóa nonclustered + Trong cấu trúc nonclustered index, node chứa khóa index trỏ trỏ đến trang ● Nếu bảng có clustered index, trỏ khóa clustered index ● Nếu bảng khơng có clustered index, trỏ RowID, dạng định danh ghi kết hợp fileID + pageID+ offset - Nonlustered index sử dụng bạn muốn mở rộng thêm nhiều cách tìm kiếm liệu khác Trước tạo, cần xem xét số nguyên tắc sau: + Khi clustered index tạo lại sử dụng tùy chọn DROP_EXISTING, SQL Server xây dựng lại nonclustered index + Tạo clustered index trước tạo nonclustered index, làm để xây dựng lại nonclustered index tạo clustered index TÌM KIẾM CÁC DỊNG DỮ LIỆU Tìm kiếm dịng khơng có index - Khi khơng có index tạo cho bảng, SQL Server sử dụng view catalog để tìm dịng - SQL Server sử dụng sys.indexes để tìm trang IAM Trang IAM có chứa danh sách tất trang bảng, qua SQL Server đọc tất trang liệu - Khi view sys.indexes sử dụng, query optimizer kiểm tra tất dòng bảng rút dòng tham chiếu truy vấn Điều làm phát sinh nhiều thao tác nhập/xuất sử dụng nhiều tài nguyên Tìm kiếm dịng với clustered index - Các clustered index lưu trữ dòng liệu dựa giá trị khóa chúng - Khi thực tìm kiếm dòng clustered index, câu lệnh SELECT dùng với cột clustered index mệnh đề WHERE Tìm kiếm dịng với Nonclustered index - Nonclustered index tương tự mục lục sách - Các trỏ nút mức index trỏ tới vị trí lưu trữ liệu bảng - Khi thực tìm kiếm dòng nonclustered index, câu lệnh SELECT dùng với cột nonclustered index mệnh đề WHERE Đơn vị cấp phát (Allocation Unit): tập hợp trang nằm heap B-tree, sử dụng để quản lý liệu dựa kiểu trang chúng Các kiểu đơn vị cấp phát sử dụng để quản lý liệu bảng index: - IN_ROW_DATA: dùng để quản lý liệu dịng mục mà có chứa tất loại liệu ngoại trừ đối tượng liệu lớn (LOB) - LOB_DATA: dùng để quản lý đối tượng liệu lớn (LOB) varbinary(max), varchar(max) , xml - ROW_OVERFLOW_DATA: dùng để quản lý liệu có độ dài biến đổi liệu có kiểu varchar, nvarchar, varbinary, sql_variant DỰA THEO CẤU TRÚC Clustered index lưu trữ liệu theo kiểu xếp Nó thực thi cấu index Btree Một bảng có clustered index clustered index xác định thứ tự lưu trữ vật lý liệu Nonclustered index không xếp lại thứ tự vật lý liệu Chúng tạo trỏ trỏ vị trí vật lý dịng liệu SQL Server 2005 hỗ trợ tới 249 nonclustered cho bảng Unique index định nghĩa cột có chứa giá trị khơng trùng - Nếu bảng có PRIMARY KEY, unique clustered index định nghĩa tự động cột - Nếu bảng có cột với ràng buộc UNIQUE, unique nonclustered index tự động tạo cột CÁC LOẠI INDEX DỰA THEO ĐẶC ĐIỂM Composite index (index kết hợp) index tạo hai hay nhiều cột Cả clustered index nonclustered index composite index Full-Text index cho phép thực truy vấn phức tạp liệu kí tự Sử dụng tính Full-Text index, việc tìm kiếm thực từ riêng biệt, cụm từ, đoạn văn, phần từ, biến thể từ (drunk biến thể drink) XML Index xem index XML Clusered index nonclustered index tạo cột liệu XML TẠO INDEX Các quy tắc tạo Index: - Một index có tối đa 16 cột - Quá nhiều index làm giảm hiệu suất thực thi câu lệnh INSERT, UPDATE DELETE - Các index nên sử dụng cho bảng có khối lượng liệu lớn có yêu cầu cập nhật thấp để cải thiện hiệu suất truy vấn - Ngay bảng có liệu nhỏ nên trì index, sau liệu cịn thêm vào bảng Xem thơng tin index: SQL Server 2005 cho phép bạn xem thuộc tính, khơng gian sử dụng index tất index định nghĩa bảng Có thể xem thơng tin hai cách sau: - Dùng thủ tục nội sp_helpindex sp_helpindex “” - Dùng SQL Server Management Studio CLUSTERED CREATE CLUSTERED INDEX INDEX ON (tên_cột) INDEX NON CREATE NONCLUSTERED INDEX CLUSTERED ON (tên_cột) UNIQUE INDEX CREATE UNIQUE INDEX ON (tên_cột) SQL Server 2005 không cho phép tạo unique index cột có chứa giá trị trùng COMPOSITE CREATE INDEX ON (tên_cột [ASC | DESC], [,….n]) INDEX Cột Computed cột ảo bảng, giá trị tính tốn dựa biểu thức thực thi - Cú pháp tạo bảng có cột computed COMPUTED CREATE TABLE ( [ AS ]) INDEX - Cú pháp tạo index cột computed CREATE INDEX ON (tên_cột_computed) RÀNG BUỘC DỮ LIỆU TRONG SQL SERVER – Mai Đức Thạch 0165.859.7998 – nadipage.com, webnadi.com, vneverestweb.com Hệ số tùy chọn FILLFACTOR tỷ lệ điền đầy(dữ liệu vào) trang mức index Khi tạo dựng lại(rebuild) index, SQL Server ghi đầy liệu vào trang mức tới tỷ lệ xác định FILLFACTOR, phần lại trang bỏ trống để sau sử dụng Giá trị có chủa từ đến 100 (mặc định sủ dụng cho bảng đọc) CREATE INDEX ON (tên_cột) WITH (FILLFACTOR=n) Tùy chọn PAD_INDEX dùng để xác định khoảng trống để lại trang (page) mức trung gian (intermediate level) index cho việc tăng trưởng sau này.Tùy chọn có ích Fillfactor xác định, sử dụng tỷ lệ xác định hệ số FILLFACTOR Nếu tùy chọn không định thiết lập OFF SQL Server đảm bảo trang index mức trung gian có đủ khoảng trống để chứa dịng CHỈNH SỬA INDEX Khi index tăng trưởng, bắt đầu có phân mảnh Sự phân mảnh làm giảm tốc độ truy vấn lấy liệu, hao tổn tài nguyên Để giảm phân mảng, index cần sửa lại Câu lệnh ALTER INDEX với tùy chọn sử dụng cho việc bảo trì index ALTER INDEX ON {REBUILD [WITH (PAD_INDEX= {on|off} | FILLFACTOR=n%) ] | Disable | REORGANIZE } XÓA INDEX: DROP INDEX Tên_index ON Tên_bảng TỔ CHỨC INDEX SỰ PHÂN MẢNH INDEX Mỗi index tạo, thông tin index lưu trang index Các trang index xếp liên tiếp liên kết với trỏ Khi thực thêm xóa liệu làm cho thông tin index bị rải rác, điều gọi phân mảnh Sự phân mảnh làm giảm tốc độ thực thi truy vấn thời gian đáp ứng lâu SQL Server 2005 cho phép tổ chức lại index theo định kỳ để giảm phân mảnh tăng tốc độ đáp ứng TỔ CHỨC LẠI INDEX Tổ chức lại Index index trang có xếp lại thứ tự, trang index trống bị loại bỏ, nhằm bỏ phân mảnh clustered index nonclustered index Cú pháp tổ chức lại index: ALTER INDEX Tên_index ON Tên_bảng REORGANIZE XÂY DỰNG LẠI INDEX Xây dựng lại index xóa index tồn tạo lại index có tên Việc xây dựng lại index, phân mảnh index trước loại bỏ hoàn toàn + Cú pháp tổ chức lại index câu lệnh ALTER INDEX ALTER INDEX Tên_index ON Tên_bảng REBUILD + Cú pháp tạo index với từ khóa DROP_EXISTING để xây dựng lại Index CREATE [UNIQUE | CLUSTERED | NONCLUSTERED] INDEX Tên_index ON Tên_bảng(tên_cột) WITH ( DROP_EXISTING= ON | OFF ) PHÂN VÙNG INDEX (PARTITIONED INDEX) Phân vùng bảng hay index chia liệu thành nhóm dịng nhỏ Thực thao tác quản lý nhóm dịng hiệu hơn, thực khối nhỏ liệu thay tồn bảng hay index Các bước tạo phân vùng index: - Bước 1: Tạo hàm phân vùng (Partition Function) CREATE PARTITION FUNCTION Tên_hàm_phân_vùng(kiểudl_của_tham_số) AS RANGE [LEFT | RIGHT] FOR VALUES (Giá_trị_1, …,Giá_trị_n) - Bước 2: Tạo lược đồ phân vùng (Partition Scheme) CREATE PARTITION SCHEME Tên_lược_đồ_phân_vùng AS PARTITION Tên_hàm_phân_vùng ALL TO (tên_file_group | [PRIMARY] , …) - Bước 3: Tạo bảng có phân vùng index phân vùng CREATE TABLE Tên_bảng (tên_cột kiểudl, …) ON Tên_lược_đồ_phân_vùng (tên_cột_phân_vùng) Cú pháp tạo index phân vùng CREATE [UNIQUE | CLUSTERED | NONCLUSTERED] INDEX Tên_index ON Tên_bảng(tên_cột) [ON Tên_lược_đồ_phân_vùng(Tên_cột_phân_vùng)] XML index sơ cấp (Primary XML index): tạo cho cột XML để tăng tốc độ truy vấn cột XMl index tạo bảng có khóa tạo XML index sơ cấp cho cột XML CREATE PRIMARY XML INDEX Tên_index ON Tên_bảng(tên_cột_xml) XML INDEX XML index thứ cấp (Secondary XML index): dùng để: tìm kiếm giá trị vị trí tài liệu XML; lấy thuộc tính đối tượng cụ thể tài liệu XML; XML index thứ cấp tạo cột có XML index sơ cấp Có thể tạo nhiếu XML index thứ cấp bảng có XML sơ cấp CREATE XML INDEX Tên_index ON Tên_bảng(tên_cột_xml) USING XML INDEX tên_index_xml FOR VALUE | PATH | PROPERTY KHÓA LOCKING SQL Server cung cấp tính ngăn cản nhiều người dùng đồng thời thực cập nhật liệu Sử dụng tính locking, người dùng ngăn người dùng khác chỉnh sửa liệu mà thực cập nhật Trong SQL Server 2005 cho phép khóa mức sau: Dịng; Bảng; Trang; Cơ sở liệu Việc thực khóa riêng dịng bảng làm gia tăng số lượng khóa, tốn tài nguyên để lưu trữ khóa Query optimizer cho phép áp dụng khóa trang để giảm bớt tài nguyên dùng cho việc lưu khóa Hai tùy chọn sau dùng câu lệnh CREATE INDEX ALTER INDEX: ALLOW_ROW_LOCK; ALLOW_PAGE_LOCK Cú pháp: CREATE INDEX ON (tên_cột) WITH (ALLOW_ROW_LOCKS={ON|OFF}, ALLOW_PAGE_LOCKS={ON|OFF} ) VƠ HIỆU HĨA INDEX Vơ hiệu hóa index nhằm giới hạn người dùng truy xuất index Nếu vô hiệu hóa clustered index, người dùng bị giới hạn truy xuất liệu bảng đó, cịn thơng tin index không bị gỡ bỏ Khi nâng cấp SQL Server lên phiên mới, index định nghĩa bảng tự động bị vô hiệu ALTER INDEX Tên_index ON Tên_bảng DISABLE THAO TÁC INDEX TRỰC TUYẾN - Các thao tác index trực tuyến bao gồm: tạo mới, tạo lại, xóa index Khi có thao tác index thực hiện, người dùng khác bị hạn chế truy xuất liệu bảng thao tác hoàn thành Để khắc phục hạn chế trên, SQL Server 2005 cung cấp tùy chọn ONLINE phép nhiều người dùng truy cập liệu bảng thao tác index thực - Các lệnh SQL cho thao tác index trực tuyến + Tạo: CREATE INDEX ON (tên_cột)[,…n]) WITH (ONLINE={ON|OFF}) + Sửa: ALTER INDEX ON REBUILD WITH (ONLINE={ON|OFF}) + Xóa: DROP INDEX ON WITH (ONLINE={ON|OFF}) + Sửa bảng: ALTER TABLE DROP CONSTRAINT WITH (ONLINE= {ON|OFF}) THAO TÁC INDEX SONG SONG Với máy tính có đa xứ lý, SQL Server 2005 sử dụng nhiều xử lý để thực thi thao tác index Điều gọi thao tác index song song Các index lớn sử dụng nhiều xử lý, điều làm hạn chế tính sẵn sàng xử lý cho ứng dụng khác Để khắc phục hạn chế, bạn cần xác định tùy chọn MAXDOP để giới hạn số xử lý dùng thao tác index Cú pháp: ALTER INDEX ON WITH (MAXDOP=max_degree_of_parallelism) INDEX PHỨC HỢP Một index phức hợp (Composite index) sử dụng nhiều 16 cột khóa kích thước tối đa 900 byte Để mở rộng thêm chức nonclustered index, SQL Server 2005 cho phép bạn đưa thêm cột khơng khóa vào index Có thể thêm tối đa 1023 cột khơng khóa, bắt buộc phải có chứa cột khóa Cú pháp: CREATE NONCLUSTERED INDEX ON (tên_cột,…) INCLUDE (tên_cột,…) RÀNG BUỘC DỮ LIỆU TRONG SQL SERVER – Mai Đức Thạch 0165.859.7998 – nadipage.com, webnadi.com, vneverestweb.com THỦ TỤC NỘI TẠI (STORED PROCEDURE) ĐỊNH NGHĨA - Stored Procedure khối câu lệnh T-SQL thực tác vụ cụ thể, biên dịch lưu trữ SQL Server tên xử lý đơn vị - Stored procedure dùng cho công việc thực nhiều lần - Các câu lệnh T- SQL thủ tục nội gồm: khai báo biến, cấu trúc điều khiển,… - Thủ tục nội gọi từ phía client kết trả thông qua tham số ra, trả tập ghi LỢI ÍCH CỦA THỦ TỤC NỘI TẠI - Nâng cao độ bảo mật: :người quản trị CSDL nâng cao tính bảo mật cách kết hợp đặc quyền CSDL với stored procedure Người quản trị CSDL khơng cho phép người dùng có quyền truy xuất trực tiếp tới bảng view, cấp quyền thực thi stored procedure có liên quan tới chúng cho người dùng - Thực thi đoạn mã biên dịch trước: Stored procedure biên dịch lần thực thi Mỗi lần thực thi sau, SQL Server sử dụng lại biên dịch trước - Giảm lưu lượng trao đổi client server: Tất câu lệnh T-SQL stored procedured thực thi khối Do mà đường truyền mạng sử dụng riêng cho câu lệnh chúng thực thi - Tái sử dụng mã: Stored procedure sử dụng nhiều lần Do vậy, thực tốn tương tự bạn khơng cần phải gõ lại hàng trăm câu lênh T-SQL THỦ TỤC NỘI TẠI MỞ RỘNG - Thủ tục nội mở rộng (extended SP) thủ tục không nằm SQL Server - Chúng thủ tục triển khai thư viện liên kết động (DLL), thực thi bên ngồi mơi trường SQL Server - Các thủ tục nội mở rộng có tên bắt đầu ‘xp_’ chứa lược đồ dbo CSDL master - Thủ tục nội mở rộng dùng để thực thi công việc phức tạp mà câu lệnh T-SQL thực THỦ TỤC NỘI TẠI TẠM THỜI - Thủ tục nội tạm thời (temprorary sp) tạo dùng tạm thời phiên làm việc(session) - Thủ tục nội tạm thời lưu trữ CSDL temdb - Có hai loại thủ tục tạm thời Thủ tục tạm thời cục Thủ tục tạm thời toàn cục * Chỉ có người tạo nhìn thấy sử * Tất người dùng nhìn thấy sử dụng dụng * Tự động bị xóa session kết thúc * Bị xóa session cuối kết thúc * Tên thủ tục bắt đầu # không 116 * Tên thủ tục bắt đầu ## khơng q 128 kí tự kí tự THỦ TỤC NỘI TẠI TỪ XA - Thủ tục nội chạy SQL Server xa gọi remote stored procedure - Remote stored procedure dùng server xa cho phép truy cập từ xa (remote access) THỦ TỤC NỘI TẠI CỤC BỘ - Các thủ tục nội cục tạo CSDL riêng biệt - Thủ tục nội cục truy xuất người tạo THỦ TỤC NỘI TẠI HỆ THỐNG - Storered procedure hệ thống thủ tục định nghĩa sẵn SQL Server Bảng hệ thống mặc định tạo lúc tạo CSDL Các bảng lưu thông tin đối tượng người dùng định nghĩa bảng, view… Người dùng dùng thủ tục nội hệ thống để truy xuất cập nhật bảng hệ thống trừ người quản trị CSDL cấp quyền Người quản trị CSDL chủ sở hữu thủ tục nội hệ thống - Storered procedure hệ thống sử dụng quản trị CSDL - Các storered procedure hệ thống cung cấp truy cập dễ dàng tới thông tin metadata đối tượng CSDL bảng hệ thống, bảng người dùng định nghĩa, view, index - Storered procedure hệ thống xuất lược đồ sys hệ thống CSDL người dùng định nghĩa Khi tham chiếu đến, định danh lược đồ sys sử dụng - Storered procedure hệ thống lưu trữ vật lý CSDL Resource có tên bắt đầu ‘sp_’ - Thủ tục nội hệ thống phân thành nhóm sau + Các thủ tục liệt kê danh mục (catalog): Danh mục hệ thống (system catalog) tập bảng lưu trữ tất thông tin bảng có CSDL người dùng Thủ tục danh mục sử dụng để truy xuất thông tin danh mục hệ thống + Các thủ tục bảo mật: Là thủ tục hệ thống giúp cho việc quản lý bảo mật CSDL + Các thủ tục trỏ (cursor): Là thủ tục sử dụng để thực chức trỏ + Các thủ tục truy vấn phân tán: Là thủ tục sử dụng để thực thi quản lý truy vấn phân tán + Các thủ tục SQL Mail CSDL Main: Là thủ tục sử dụng để thực thao tác e-mail bên SQL Server THỦ TỤC NỘI TẠI NGƯỜI DÙNG Những hướng dẫn sau xem xét lúc tạo thủ tục lưu: • Tên phải đặt theo quy tắc nhận diện tên • Tất đối tượng liệu tạo thủ tục lưu, trừ mặc định, quy tắc, bắt lỗi, thủ tục view Đối tượng tham chiếu đến thủ tục tạo • Thủ tục lưu tham chiếu đến bảng tạm thời • Các thủ tục gọi thủ tục lưu truy cập vào tất đối tượng tạo lời gọi thủ tục • Trong thủ tục lưu sử dụng tới 2100 tham số • Chúng ta tạo nhiều biến số cục thủ tục lưu mà nhớ cung cấp • Kích cỡ lớn thủ tục lưu 128 MB Tạo thủ tục: CREATE [PROC | PROCEDURE] [@tên_tham_số Kiểu_dữ_liệu [=giá_trị_mặc_định] [OUTPUT] ] [WITH ENCRYTION] AS Các_câu_lệnh_T-SQL THAY ĐỔI THỦ TỤC NỘI TẠI - Có thể thay đổi nội dung tên thủ tục cách xóa tạo lại dùng lệnh ALTER PROCEDURE Nếu tạo lại, toàn quyền hạn gắn với thủ tục bị Nếu dùng ALTER để sửa, quyền hạn giữ lại Để thực thay đổi, bạn phải chủ sở hữu thủ tục có quyền thực thay đổi ALTER PROCEDURE [ @tên_tham_số Kiểu_dữ_liệu [=giá_trị_mặc_định] [OUTPUT] ] [WITH ENCRYTION | RECOMPILE] AS Các_câu_lệnh_T-SQL WITH RECOMILE: thủ tục biên dịch lại lúc chạy - Khi thay đổi thủ tục, thay đổi cần phản ánh tới đối tượng phụ thuộc (các đối tượng có liên quan) để chúng cập nhật Một số lưu ý dùng lệnh ALTER PROCEDURE để sửa + Thủ tục nội tạo có tùy chọn WITH ENCRYPTION, thực sửa tùy chọn nên giữ lại + Các thành viên thuộc role sysadmin, db_ddladmin, db_owner có quyền thực thi câu lệnh ALTER PROCEDURE XÓA THỦ TỤC NỘI TẠI Thủ tục nội xóa khơng dùng đến Lỗi hiển thị, có thủ tục khác gọi đến thủ tục bị xóa Trước xóa thủ tục, sử dụng thủ tục nội hệ thống sp_depend để xác định xem có đối tượng phụ thuộc vào DROP PROCEDURE RÀNG BUỘC DỮ LIỆU TRONG SQL SERVER – Mai Đức Thạch 0165.859.7998 – nadipage.com, webnadi.com, vneverestweb.com XEM THÔNG TIN THỦ TỤC NỘI TẠI - Xem thông tin thủ tục nội tại: + Cách – sử dụng thủ tục hệ thống sp_helptext: sp_helptext ‘Tên_đối_tượng’ [, computed_column_name] + Cách – sử dụng hàm OBJECT_DEFINITION: OBJECT_DEFINITION (‘tên_đối_tượng’) + Cách – sử dụng view hệ thống sys.sql_modules: SELECT * | definition FROM sys.sql_modules WHERE object_id = OBJECT_ID(‘tên_đối_tượng’) - Xem phụ thuộc: sp_depends ‘tên_thủ_tục’ + Một thủ tục thực thi có tham chiếu đến nhiều đối tượng CSDL khác nhau, ngược lại, có nhiều đối tượng khác tham chiếu đến Điều gọi phụ thuộc + Khi có thay đổi thủ tục, thay đổi cần phản ánh thích hợp tới đối tượng phụ thuộc để đảm bảo thực thi đắn truy vấn + Sử dụng thủ tục nội hệ thống sp_depends để xem phụ thuộc thủ tục THỦ TỤC TRẢ VỀ GIÁ TRỊ - Một thủ tục nội gọi thực mặc định trả giá trị nguyên khác Giá trị trả xem mã trở Giá trị mã trả cho biết thủ tục có thực thành công hay không - SQL Server 2005 cho phép sử dụng lệnh RETURN để trả giá trị nguyên tường minh thay cho giá trị mã trả mặc định Lệnh RETURN điều khiển quay trở lại chương trình gọi Bất kỳ câu lệnh T-SQL đặt sau lệnh RETURN bị bỏ qua Lệnh RETURN trả giá trị NULL Nếu cố trả NULL, thông báo cảnh báo phát sinh giá trị 0(zero) trả RETURN [] SỬ DỤNG THAM SỐ - Dữ liệu truyền từ chương trình gọi đến thủ tục gọi việc dùng tham số Tham số chia thành hai loại + Tham số vào: cho phép chương trình gọi truyền giá trị tới thủ tục Các giá trị gán cho biến định nghĩa bên thủ tục + Tham số ra: cho phép thủ tục truyền giá trị ngược trở lại chương trình gọi Các giá trị gán cho biến chương trình gọi Tham số định nghĩa tạo thủ tục Để rõ tham số ra, từ khóa OUTPUT sử dụng khai báo tham số Khi gọi thủ tục, câu lệnh gọi rõ biến chứa kết từ khóa OUTPUT ALTER PROCEDURE @tên_tham_số Kiểu_dữ_liệu, @tên_tham_số Kiểu_dữ_liệu OUTPUT AS Các_câu_lệnh_T-SQL - Gọi thủ tục EXEC [OUTPUT] Nếu câu lệnh gọi quên từ khóa OUTPUT, thủ tục thực khơng có giá trị trả Đặc điểm tham số + Kiểu liệu tham số kiểu image text + Trong câu lệnh gọi phải có biến nhận giá trị trả + Biến tham số sử dụng câu lệnh T-SQL sau + Tham số trỏ THỦ TỤC LỒNG NHAU Trong thủ tục gọi thực thủ tục khác SQL Server 2005 cho phép lồng tối đa 32 cấp Sử dụng biến hệ thống @@NESTLEVEL để biết cấp độ lồng Khi @@NESTLEVEL thực thi chuỗi T-SQL giá trị trả cấp độ lồng + Nếu sử dụng sp_executesql để thực thi @@NESTLEVEL, giá trị trả cấp độ lồng + QUẢN LÝ LỖI SQL Server 2005 giới thiệu cấu trúc TRY…CATCH cho việc quản lý lỗi thủ tục Khi câu lệnh SQL khối TRY gây lỗi, điều khiển chuyển tới khối CATCH, lỗi xử lý Sau lỗi xử lý, điều khiển chuyển tới câu lệnh SQL viết sau câu lệnh END CATCH Cú pháp: BEGIN TRY Các_câu_lệnh_T-SQL END TRY BEGIN CATCH Các_câu_lệnh_T-SQL END CATCH Những câu lệnh khối TRY viết sau câu lệnh gây lỗi không thực thi - Trong SQL Server 2005, tất lỗi có mã số lỗi View hệ thống sys.message chứa tất thông báo lỗi mặc định mã số chúng Việc quản lý lỗi thủ tục hỗ trợ biến hệ thống @@ERROR @@ERROR chứa mã số lỗi câu lệnh T-SQL gây lỗi sau Nếu khơng có câu lệnh gây lỗi @@ERROR có giá trị - Hàm ERROR_MESSAGE() sử dụng khối CATCH để hiển thị thông báo lỗi xảy khối TRY - Hàm ERROR_NUMBER(): Trả mã số lỗi - Hàm ERROR_SEVERITY(): - Hàm ERROR_STATE(): Trả mã số trạng thái lỗi - Hàm ERROR_PROCUDURE(): Trả tên thủ tục nội có lỗi xảy - Hàm ERROR_LINE(): Trả số dịng mà gây lỗi RÀNG BUỘC DỮ LIỆU TRONG SQL SERVER – Mai Đức Thạch 0165.859.7998 – nadipage.com, webnadi.com, vneverestweb.com KHÁI NIỆM Trigger thủ tục nội tại, thực thi có thao tác cập nhật liệu bảng Khác với thủ tục nội tại, trigger: thực thi trực tiếp; khơng có tham số vào/ra Các trigger định nghĩa bảng cụ thể Trigger tự động kích hoạt hành động INSERT, UPDATE, DELETE xảy bảng mà định nghĩa TRIGGER DATA MANIPUNATION LANGUAGE (DML) TRIGGER DML trigger thực thi liệu bảng view cập nhật lệnh INSERT, UPDATE, DELETE 1.Sử dụng bảng Inserted Deleted: - Các câu lệnh DML trigger truy cập đến hai bảng logic đặc biệt Inserted Deleted - Bảng Inserted Deleted chứa ảnh dòng liệu bị tác động lệnh cập nhật + Bảng Inserted chứa tập dòng liệu cập nhật thao tác INSERT, UPDATE bảng + Bảng Deleted chứa tập dòng liệu cập nhật thao tác DELETE, UPDATE bảng Tất dòng liệu bị tác động câu lệnh insert, delete, update nằm bảng Inserted Deleted Viết trigger cho ba hành động insert, delete, update Trong trigger viết câu lệnh select liệu từ bảng Inserted, select từ bảng deleted Sau biên dịch thử trigger Trigger Insert: thực thi ghi chèn vào bảng, đảm bảo giá trị nhập vào phải phù hợp với ràng buộc định nghĩa cho bảng CREATE TRIGGER ON [WITH ENCRYTION] FOR INSERT AS Khi insert ghi vào bảng, INSERT trigger lưu chép ghi vào bảng Inserted Sau kiểm tra giá trị bảng Inserted có tuân theo ràng buộc hay khơng Nếu ghi hợp lệ, INSERT trigger thêm dịng vào bảng, ngược lại hiển thị thông báo lỗi Trigger Update: thực thi ghi sửa Khi có ghi update, trigger UPDATE chép ghi gốc vào bảng Deleted ghi vào bảng Inserted Nếu giá trị hợp lệ, ghi từ bảng Inserted copy vào bảng, ngược lại hiển thị thông báo lỗi copy ghi gốc bảng Deleted quay lại bảng Có thể sử dụng hàm UPDATE(tên_cột) để kiểm tra cột cập nhật Hàm trả true|false CREATE TRIGGER ON [WITH ENCRYTION] FOR UPDATE AS Trigger Delete: dùng để giới hạn người dùng xóa ghi bảng Nếu người dùng thực xóa ghi xảy sau: Bản ghi bị xóa khỏi bảng chèn vào bảng Deleted; Bản ghi xóa kiểm tra lại ràng buộc cho việc xóa; Nếu có ràng buộc có ghi ngăn cản việc xóa, trigger DELETE hiển thị thơng báo lỗi; Bản ghi bị xóa bảng Deleted chép quay trở lại bảng CREATE TRIGGER ON [WITH ENCRYTION] FOR DELETE AS Trigger After: thực thi thao tác INSERT, DELETE, UPDATE hồn tất Chỉ tạo AFTER Trigger cho bảng Một bảng có nhiều AFTER trigger cho thao tác INSERT, DELETE, UPDATE, chúng thực thi theo thứ tự mà chúng tạo AFTER trigger thực thi sau ràng buộc bảng kiểm tra hoàn tất CREATE TRIGGER ON [WITH ENCRYTION ] FOR | AFTER INSERT | DELETE | UPDATE AS Trigger INSTEAD OF: định nghĩa cho bảng view Mỗi bảng view có “INSTEAD OF” Trigger tạo cho tao tác INSERT, DELETE, UPDATE “INSTEAD OF” trigger thực thi trước ràng buộc bảng thực Không thể tạo INSTEAD OF trigger cho thao tác delete update bảng có thiết lập tùy chọn ON DELETE cascade ON UPDATE cascade CREATE TRIGGER ON [WITH ENCRYTION] INSTEAD OF { INSERT | DELETE | UPDATE } AS Thay đổi Trigger: ALTER TRIGGER ON [WITH ENCRYTION] {FOR | AFTER | INSTEAD OF} {INSERT | DELETE | UPDATE} AS Xóa Trigger: DROP TRIGGER tên_DML_trigger, Xem định nghĩa Trigger: sp_hepltext(tên_trigger) MỤC ĐÍCH: Các trigger chứa chuỗi xử lý phức tạp dùng cho việc đảm bảo toàn vẹn liệu mức thấp - Thay đổi dây chuyền(cascading) tới bảng có liên quan - Kiểm tra toàn vẹn liệu phức tạp ràng buộc(constraint) CHECK - Định nghĩa thông báo lỗi theo ý muốn - Duy trì liệu chưa chuẩn hóa - So sánh tình trạng liệu trước sau cập nhật DATA DEFINITION LANGUAGE(DDL) TRIGGER DDL trigger thực thi bảng view tạo, xóa, thay đổi lệnh CREATE, DROP, ALTER Khái niệm DDL Trigger: - DDL trigger thực thi thủ tục nội kiện DDL (như ALTER, CREATE, DROP) xảy CSDL - DDL trigger sử dụng cho công việc quản trị giám sát điều chỉnh hành động CSDL - Sử dụng DDL trigger bạn muốn: + Ngăn cản thay đổi lược đồ CSDL + Xảy điều CSDL để phản ứng (response) thay đổi lược đồ CSDL - DDL trigger định nghĩa CSDL mức server Thao tác DDL Trigger: - Tạo DDL Trigger: CREATE TRIGGER ON {ALL SERVER | DATABASE} [WITH ENCRYTION] {FOR | AFTER} {} AS - Thay đổi DDL Trigger: ALTER TRIGGER ON {ALL SERVER | DATABASE} [WITH ENCRYTION] {FOR | AFTER} {} AS - Xóa DDL Trigger: DROP TRIGGER ON {ALL SERVER | DATABASE} Phạm vi DDL Trigger: DDL trigger gọi lệnh SQL thực thi CSDL hành server hành Phạm vi DDL trigger phụ thuộc vào trigger thực thi cho kiện CSDL hay kiện server DDL trigger chia thành hai loại + DDL trigger phạm vi CSDL (Database-scope): gọi kiện thay đổi lược đồ CSDL Các trigger lưu trữ CSDL thực thi kiện DDL, ngoại trừ liên quan đến bảng tạm + DDL trigger phạm vi Server (Sever-scope): gọi kiện DDL mức server Các trigger lưu CSDL master LOGON TRIGGER Logon trigger thực thi thủ tục nội để đáp ứng kiện logon Logon trigger kích hoạt sau giai đoạn chứng thực đăng nhập kết thúc, trước phiên làm việc người dùng thực thiết lập Logon trigger khơng kích hoạt việc chứng thực thất bại RÀNG BUỘC DỮ LIỆU TRONG SQL SERVER – Mai Đức Thạch 0165.859.7998 – nadipage.com, webnadi.com, vneverestweb.com KHÁI QUÁT KHUNG NHÌN VIEW ĐỊNH NGHĨA - View cách để xem liệu từ hay nhiều bảng sở liệu - View bảng ảo, tạo cột lấy từ nhiều bảng(table) khác Các bảng gọi bảng cở sở, chúng CSDL từ CSDL khác - View chứa cột lấy từ View khác CSDL CSDL khác Một View có tối đa 1024 cột - View khơng thể xếp trừ bạn tạo unique clustered index - Có thể tạo nhiều nonclustered index View, với unique clustered index tạo lần - Một index tạo view + View không chứa cột từ view khác + Bảng sở nằm CSDL với view PHÂN LOẠI Khung nhìn tiêu chuẩn (Standard View): view tạo với cột lấy từ nhiều bảng Khung nhìn mục (Indexed View): view có unique clustered index Indexed view có ích cho truy vấn thống kê liệu Indexed view khơng thích hợp cho bảng thường xuyên cập nhật - Những lợi kiểu view cung cấp chế tìm kiếm nhanh chóng để lấy thơng tin view cách liên tục Chỉ mục tạo View mục phải mục loại clustered Mỗi mục tạo ra, kéo theo số mục loại non-clustered tạo - Tốt nên xây dưng View mục liệu không thường xuyên cập nhật, việc trì view có chi phí cao việc trì mục bảng Nếu view mục tạo liệu cập nhật thường xun chi phí để trì liệu view mục làm giảm ưu điểm việc sử dụng view mục Khung nhìn phân tán (Partitioned View): view dùng liệu phân vùng từ nhiều bảng Nếu bảng sở server, view xem partitioned view cục (local partitioned view ), ngược lại, đặt sever khác gọi partition view phân tán (Distributed partitioned view) - Tính cho phép phân chia phân tán liệu theo chiều ngang tới nhiều server sở liệu làm cho cảm thấy sở liệu thống nhât - Việc phân chia view cho phép chúng phân tán thông qua nhiều máy khác Các bảng phân chia phân tán qua nhiều server Vì thế, server cần truy nhập tới server khác Do đó, bạn cần cài đặt cầu hình tất server server liên kết (linked servers) THAO TÁC TẠO , SỬA , XĨA VIEW – XEM THƠNG TIN KHUNG NHÌN Tạo khung nhìn: CREATE VIEW AS Câu_lệnh_Select - Để thực thi câu lệnh tạo view, người thực phải thành viên Role systemadmin, chủ sở hữu CSDL (db_owner), có quyền thực thi lệnh CREATE VIEW (db_DDLadmin) Trước thực lệnh tạo view, nên chạy thử câu lệnh SELECT view - Một số giới hạn tạo view: View tạo sở liệu tại; Câu truy vấn để định nghĩa View bao gồm mệnh đề COMPUTE, COMPUTE BY từ khóa INTO Khơng sử dụng mệnh đề ORDER BY khơng có từ khóa TOP; Mỗi View bao gồm tới 1024 cột từ hay nhiều bảng từ nhiều View khác; Các bảng tạm thời tham gia vào View; Không thể kết hợp câu lệnh CREATE VIEW với câu lệnh T-SQL khối (batch) Sửa khung nhìn: Một view sửa cách xóa tạo lại sử dụng câu lệnh ALTER VIEW ALTER VIEW AS Câu_lệnh_Select Xóa khung nhìn: DROP VIEW Xem thơng tin khung nhìn: - Xem thơng tin định nghĩa khung nhìn: EXEC sp_helptext - Xem phụ thuộc khung nhìn: view tham chiếu đến nhiều đối tượng khác CSDL ngược lại; trước xóa view, cần phải biết đối tượng phụ thuộc vào nó; sử dụng thủ tục nội hệ thống sp_depends để xem phụ thuộc đối tượng CSDL Cú pháp EXEC sp_depends - Dấu thơng tin định nghĩa khung nhìn: CREATE VIEW WITH ENCRYPTION AS Câu_lệnh_Select - Phân tán khung nhìn (Distributed Partitioned views): DPVs cho phép truy vấn liệu Server CSDL khác Các Server cần phải cấu Linked Server để truy cập với EXEC sp_dropserver [ @server=]'server' [, [ @droplogins=] {'droplogins' | NULL} ] LỢI ÍCH CỦA KHUNG NHÌN - Bảo mật thơng qua cá nhân hóa truy xuất: Dữ liệu nhạy cảm che giấu khỏi người dùng khơng có đủ thẩm quyền để truy xuất Cá nhân hóa truy xuất liệu thực việc cho phép người dùng truy xuất CSDL thông qua tập nhỏ view - Tùy biến hiển thị liệu: Sử dụng view, liệu lấy từ nguồn hiển thị khác theo yêu cầu người dùng - Trộn liệu từ nhiều bảng view: View ghép cột từ nhiều bảng view khác chúng hiển thị lấy từ bảng - Thao tác ghi (record): View dùng để cập nhật liệu cho bảng, view có chứa tất cột quan trọng bảng (như cột khóa chính, cột NOT NULL) - Kiểm tra ràng buộc toàn vẹn: Nếu liệu thêm chỉnh sửa thông qua view SQL Server tự động kiểm tra liệu để đảm bảo ràng buộc toàn vẹn cho cột TÙY CHỌN KHI TẠO KHUNG NHÌN Tùy chọn CHECK OPTION: tùy chọn kết hợp với câu lệnh CREATE VIEW để ngăn không cho cập nhật liệu không thoả điều kiện mệnh đề WHERE câu lệnh SELECT CREATE VIEW AS Câu_lệnh_Select [WITH CHECK OPTION ] Tùy chọn SCHEMABINDING: sử dụng câu lệnh CREATE VIEW ALTER VIEW nhằm để gắn kết view với lược đồ(schema) bảng sở - Khi gắn kết với view, bảng sở thay đổi Vì thay đổi (xóa, sửa) đối tượng làm ảnh hưởng tới view - Chỉ xóa sửa view trước để bỏ phụ thuộc, sau thực thay đổi bảng sở CREATE VIEW [WITH SCHEMABINDING] AS Câu_lệnh_Select Tạo số khung nhìn: view có unique clustered index Kết view thông thường phát sinh thực thi, indexed view lưu kết CSDL Bất kỳ thay đổi liệu bảng sở, chúng tự động cập nhật tới index view Khi tạo index cho view, bạn cần phải gắn view tới lược đồ tùy chọn schemabinding CREATE UNIQUE CLUSTERED ON (tên_cột, ) Lưu ý: Không nên sử dụng Index view cho bảng có liệu thường xuyên cập nhật KHUNG NHÌN HỆ THỐNG - View hệ thống view định nghĩa sẵn SQL Server - Thuộc tính đối tượng khác table view lưu trữ bảng hệ thống Các thuộc tính xem siêu liệu (metadata) - Siêu liệu xem thơng qua view hệ thống - Các loại view hệ thống + Catalog view + Information Schema views + Compatibility views + Replication views + Dynamic Management views + Notification services views THÊM – SỬA – XĨA KHUNG NHÌN - Đổi tên khung nhìn: Có thể thực thay đổi view bẳng câu lệnh ALTER VIEW đổi tên view thủ tục nội hệ thống sp_rename sp_rename ‘’, ‘’, ‘’ + Kiểu_đối_tượng: bao gồm COLUMN, DATABASE, INDEX, OBJECT, USERDATATYPE + Một số ý đổi tên view: tên view cần đổi phải có CSDL hành; thực đổi tên view bạn có quyền chỉnh sửa (modify); chủ sở hữu CSDL thay đổi tên tất view - Có thể sử dụng view để cập nhật (thêm, sửa, xóa) liệu bảng CSDL + Một số điểm cần ý thực thay đổi liệu qua view: cập nhật tiến hành cột lấy từ bảng; cập nhật liệu cột tính tốn, thống kê; view có sử dụng WITH CHECK OPTION, giá trị cập nhật phải thỏa mãn điều kiện (trong mệnh đề WHERE); tất ghi cập nhật view có chứa tất cột có constraint định nghĩa chúng bảng sở + Một số ý dùng câu lệnh UPDATE để cập nhật liệu view: cập nhật giá trị cột có thuộc tính IDENTITY; khơng thể thực cập nhật bảng sở có chứa cột TIMESTAMP; cập nhật dòng mà gặp lỗi ràng buộc hay qui tắc (rule), lỗi trả dòng khong cập nhật; view bảng sở có kết nối đệ qui (self join), câu lệnh UPDATE không thực + Một số ý dùng câu lệnh INSERT view: giá trị cho tất cột không nhận giá trị NULL; view bảng sở có kết nối đệ qui (self join), câu lệnh INSERT không thực CREATE VIEW [schema_name ] view_name [(column [ , n ] )] [WITH [ , n ] ] AS select_statement [ ; ] [WITH CHECK OPTION] ::= {[ENCRYPTION] [SCHEMABINDING] [VIEW_METADATA]} NHỮNG ĐIỂM MỚI CỦA SQL SERVER 2008 – Mai Đức Thạch 0165.859.7998 – nadipage.com, webnadi.com, vneverestweb.com NHỮNG ĐIỂM MỚI CỦA SQL SERVER 2008 Giới thiệu: - Tầm nhìn tảng liệu SQL Server 2008 giúp tổ chức tạo ứng dụng hệ thiên thao tác liệu - SQL Server 2008 giới thiệu lĩnh vực Tầm nhìn tảng liệu : + Nền tảng liệu cho doanh nghiệp (Enterprise Data Platform) + Sự phát triển động (Dynamic Development) + Dữ liệu quan hệ mở rộng (Beyond Relational Data) + Xử lý thông minh(Business intelligence) - Các cải tiến SQL Server Management Studio cải thiện hiệu suất giúp phát triển ứng dụng nhanh - Tầm nhìn tảng liệu SQL Server 2008 giúp tổ chức tạo hệ ứng dụng thiên thao tác liệu Tầm nhìn tảng liệu: - Nền tảng liệu là:an toàn; dễ quản lý; đáng tin cậy cho việc tạo ứng dụng quan trọng - SQL Server 2008 nhắm đến lĩnh vực chính: + Nền tảng liệu doanh nghiệp + Thông tin toàn doanh nghiệp + Sự phát triển động + Dữ liệu quan hệ mở rộng Thông tin vị trí: - Với khả liệu khơng gian SQL Server cho phép chuyên gia xây dựng ứng dụng liên quan đến vị trí địa lý thiết bị hệ thống định vị toàn cầu (GPS) - SQL Server 2008 giới thiệu kiểu liệu không gian, giúp nhà phát triển dễ dàng phát triển ứng dụng định vị + Kiểu liệu hình học(geometry) sử dụng để biểu diễn cho đối tượng mặt phẳng với tọa độ x y nằm cạnh của hình đa giác, đường(line) ,… + Kiểu liệu địa lý(geography) sử dụng vĩ độ(latitude) kinh độ(longitude) để xác định điểm trái đất Hỗ trợ cho loại liệu nào: - Các kiểu liệu người dùng lớn (Large User-Defined Types) + Sử dụng để lưu trữ liệu không gian đói tượng geometry geography + Nếu thuộc tính SqlUserDefinedTypeAttribute.MaxByteSize thiết lập -1, kiểu liệu người dùng định nghĩa (UDT) lưu trữ lên tới 2GB, ngược lại dung lượng khơng thể lớn kích thước thuộc tính MaxByteSize - Dữ liệu FILESTREAM: Cho phép tách liệu nhị phân lớn, trước hệ CSDL quản lý, để lưu trữ tập tin bên ngồi khơng gian lưu trữ tốn (hệ thống file NTFS) đảm bảo tính truy cập liệu - Tích hợp tìm kiếm tồn văn (Full-Text Search): Giúp tìm kiếm nhanh tài liệu liệu văn bản, cung cấp thuận lợi qua việc lựa chọn dùng LIKE với kí tử mở rộng tùy ý xây dựng giải pháp Các hệ thống kết nối không thường xuyên: - SQL Server 2008 kết hợp với NET Framework 3.5 cho phép bạn phát triển ứng dụng dựa đệm (cache-base) dựa thông báo (notification-based) - Khi làm việc đâu, sở liệu truy cập ứng dụng mobile sau đồng chúng kết nối lại với server Thấu hiểu lan tỏa (Pervasive Insight): - Dịch vụ phân tích (Analysis Services): + SQL Server 2008 cung cấp cải thiện hiệu suất truy vấn đa chiều phân tích liệu + SQL Server 2008 provides improved multidimentional query performance and data analysis + Cải tiến SQL Server Analysis Services góp phần cải thiện việc phân tích liệu, xử lý phân tích trực tuyến (OLAP), cải thiện hiệu suất truy vấn đa chiều + (OLAP), and improving performance of multidimention expression queries + Một số cải tiến là: * Thiết kế thuộc tính mối quan hệ (Attribute Relationship Design) * Ghi lại MOLAP * Tính tốn khối (Block Computation) * Tối ưu hóa truy vấn Join (Star Join Query Optimization) - Dịch vụ tích hợp (Integration Services): + Dịch vụ tích hợp SQL Server đóng vai trị quan trọng thao tác Rút (Extrat), biến đổi load (ETL) liệu + Trong SQL Server 2008, Dịch vụ tích hợp 28 tốn quản lý lưu lượng(flow) bảo trì 11 kế hoạch thiết kế để thực nhiều hoạt động khác + Một số tác vụ * Các tác vụ container (Container Tasks) * Các tác vụ chuẩn bị liệu (Data Preparation Tasks) * Các tác vụ SQL (SQL Tasks) * Các tác vụ bảo trì (Maintenace Tasks) - Dịch vụ báo cáo (Reporting Services): + Các cải tiến Dịch vụ Báo cáo giúp cải thiện trực quan hóa chuyển giao liệu làm dơn giản việc triển khai cấu hình báo cáo + Dịch vụ Báo cáo SQL Server 2008 có nhiều tính cải tiến để đáp ứng nhiều yêu cầu báo cáo khác Một số đặc điểm là: * Lập báo cáo có quản lý (Managed Reporting) * Lập báo cáo khơng theo thể thức (Ad-Hoc Reporitng) * Trình thiết kế báo cáo (Report Designer) * Trình xây dựng báo cao (Report Builder) * Các báo cáo hấp dẫn(Compelling Reports) Các cải tiến Management Studio: Tính intelliSense (phán đốn thơng minh) gồm có đặc tính sau: + Tăng tốc độ phát triển ứng dụng cách cung cấp tham chiếu trực truyến cú pháp mã + Giám sát mã gõ vùng soạn thảo mã gợi ý (prompts) cú pháp, giúp cho việc viết hồn thành mã mà khơng nhiều thời gian + Tiết kiệm thời gian cho người phát triển phần mềm cung cấp trợ giúp cú pháp, hoàn thành từ, danh sách đối tượng csdl có sẵn, danh sách hàm hệ thống vv + Có thể kích hoạt khơng kích hoạt tính intelliSense cách chọn menu Query => chọn intelliSense NHỮNG ĐIỂM MỚI CỦA SQL SERVER 2008 – Mai Đức Thạch 0165.859.7998 – nadipage.com, webnadi.com, vneverestweb.com NGÔN NGỮ TRANSACT-SQL Biến kiểu liệu: - Trong SQL Server 2005 phiên trước, việc khai báo khởi tạo giá trị cho biến thực riêng biệt Đây điều bất lợi nhiều thời gian khai báo nhiều biến thủ tục truy vấn lớn - Khai báo khởi tạo giá trị cho biến SQL Server 2005 DECLARE @ () SET @ = - Khai báo khởi tạo giá trị cho biến SQL Server 2008 DECLARE @ () = Giới thiệu kiểu liệu Date Time: Trong SQL Server 2008, Microsoft giới thiệu bốn kiểu liệu ngày là: date; time; datetime2; datetimeoffset Kiểu liệu date time không cho phép lưu trữ ngày tháng mà cịn có thêm độ xác cho thành phần thời gian Cung cấp date time khơng hỗ trợ ứng dụng triển khai khắp tồn cầu a Kiểu liệu date: lưu trữ ngày khơng lưu trữ Phạm vi ngày lưu trữ từ ngày 01/01/0001 đến ngày 31/12/9999 Mặc định, giá trị ngày hiển thị theo dạng YYYY-MM-DD Kiểu date chiếm byte có độ xác 10 số b Kiểu liệu time: lưu trữ thời không lưu trữ thành phần ngày Kiểu liệu time hỗ trợ độ xác tới 100 nano giây Phạm vi thời gian lưu trữ từ 00:00:00.0000000 through 23:59:59.9999999 mặc định độ xác số c Kiểu liệu datetime2: cải tiến kiểu datetime Phạm vi ngày mà kiểu datetime2 lưu trữ từ 01/01/0001 đến 31/12/9999 Kiểu liệu datetime2 lưu trữ ngày với với độ dài biến động từ 19 (YYYY-MM-DD hh:mm:ss) đến 27 (YYYY-MM-DD hh:mm:ss.0000000) kí tự d Kiểu liệu datetimeoffset: kiểu mở rộng kiểu liệu datetime2 Kiểu liệu datetimeoffset cho phép lưu trữ ngày thời gian (dựa đồng hồ 24 giờ) Thời gian nhận biết theo khu vực (time zone) Phạm vi thời gian khu vực hợp lệ từ -14:00 tới +14:00 Cột SPARSE: Là cột thông thường giống cột khác, làm giảm không gian lưu trữ bị chiếm giữ cột có nhiều giá trị null (sẽ không cấp phát không gian lưu trữ cho giá trị null cột) - Sử dụng từ khoá thưa thớt để khai báo cột CREATE TABLE ( SPARSE ) - Không thiết lập SPARSE cho cột có kiểu liệu geography, geometry, image, ntext, text, timestamp - Cột thưa sử dụng với Column set filtered indexed + Column set: cột thêm đại diện cho tất cột thưa (sparse column) thêm vào bảng cột xml-typed + Filtered indexes: sử dụng để hiển thị dòng có chứa giá trị tính tốn(populated values ) để tạo index(chỉ số) nhỏ hiệu Độ rộng bảng: bảng có tối đa 1024 cột Một bảng rộng(wide table), loại bảng đặc biệt SQL Server 2008, cho phép bạn tăng số lượng cột đến 30.000 cách sử dụng cột sparse cột column set Số lượng index số liệu thống kê (statistics) tăng lên đến 1.000 30.000 Để chuyển đổi bảng vào bảng rộng, bạn thêm column set tới phần định nghĩa bảng Các bảng rộng có cân nhắc hiệu suất, chẳng hạn thời gian chạy tăng lên yêu cầu nhớ thời gian biên dịch Kiểu liệu không gian: - Dữ liệu không gian biểu diễn thông tin vị trí địa lý hình dạng đối tượng trái đất Dữ liệu không gian cung cấp thơng tin mà sử dụng nhiều ngữ cảnh khác như: + Phân tích khu vực, quốc gia, xu hướng bán hàng quốc tế + Quyết định vị trí để đặt cửa hàng dựa gần gũi với khách hàng cạnh tranh + Tìm đường đến đích cách dùng thiết bị hệ thống định vị toàn cầu (GPS) + Cho phép khách hàng theo dõi việc cung cấp bưu kiện + Xác định ngơi nhà có nguy bị lũ lụt tác động thay đổi khí hậu làm thủy triều dâng cao - Kiểu liệu “geometry” “geography”: Kiểu liệu hình học(geometry) địa lý (geography) gồm có thuộc tính phương thức để thực thao tác tính tốn khoảng cách địa điểm + Kiểu liệu hình học (geometry) sử dụng để lưu trữ liệu mặt phẳng 2-D có tọa độ XY biểu diễn cho điểm, đường thẳng đa giác không gian hai chiều + Kiểu liệu địa lý(geography) liệu sử dụng kinh độ vĩ độ để tìm điểm trái đất - Kiểu liệu hình học(geometry) địa lý(geography) có 11 đối tượng liệu khơng gian, gọi kiểu thể (instance) Tuy nhiên, có bảy kiểu thể tạo chỉnh sửa sở liệu - Bộ định vị không gian Spatial Reference Identifiers (SRIDs): + SRID id dùng để xác định hệ trục tọa độ cho phép xác định vị trí cụ thể trái đất NHỮNG ĐIỂM MỚI CỦA SQL SERVER 2008 – Mai Đức Thạch 0165.859.7998 – nadipage.com, webnadi.com, vneverestweb.com - Phương thức tĩnh (Static Methods): + Không thể sử dụng câu lệnh SET INSERT để gán giá trị cho mục liệu khơng gian Thay vào đó, bạn tạo mục liệu không gian mới, bạn phải gọi phương thức tĩnh + Phương thức tĩnh sử dụng để tạo thể hiện(instance) kiểu liệu geometry geography + STGeomFromText () phương thức tĩnh Phương thức sử dụng để xây dựng thể từ kiểu liệu geometry geography + Thay sử dụng phương thức Parse(), bạn sử dụng phương thức STGeomFromText() Phương thức Parse() khơng có tham số đầu vào cho SRID, STGeomFromText() yêu cầu SRID Phương thức Mô tả STPointFromText Creates a Point instance STMPointFromText Creates a MultiPoint instance STLineFromText Creates a Line instance STMLineFromText Creates a MultiLine instance STGeomCollFromText Creates a GeometryCollection instance Cú pháp: geometry::STGeomFromText(‘geometry_target_text’,SRID) Kiểu liệu hierarchyid: - Kiểu liệu hiearachyid cho phép bạn phát triển mối quan hệ phần tử liệu khác có bảng để biểu diễn nút phân cấp - Kiểu liệu hiearachyid làm cho bạn dễ dàng lưu trữ truy vấn liệu có tính phân cấp sơ đồ tổ chức phịng ban, liên kết Website Các hàm tồn tử: Các phiên trước SQL Server khơng có câu lệnh TSQL dựng để chuyển đổi nhị phân- tới – kí tự, kí tự - tới - nhị phân Với SQL Server 2008, CONVERT () chức tăng cường để hỗ trợ hình thức chuyển đổi Cú pháp: CONVERT(data_type[(length)], expression[ , style]) Hàm cải tiến: - Hàm DATEPART() có sẵn SQL Server 2005 nâng cấp để hỗ trợ kiểu liệu giới thiệu SQL Server 2008 Hàm DATEPART() giúp lấy giá trị thành phần riêng lẻ kiểu liệu ngày thời gian Một số ví dụ thành phần là: năm, tháng, ngày, giờ, phút thêm bốn thành phần micro giây(microsecond), nano giây(nanosecond), TZoffset, ISO_WEEK - Hàm DATENAME() cung cấp chức tương tự hàm DATEPART() - Các hàm Xquery với giá trị chuỗi (String ): SQL Server 2008 giới thiệu hàm Xquery hỗ trợ việc chuyển đổi ký tự thành chữ hoa chữ thường + fn:upper-case(): chuyển đổi ký tự tham số thành chữ hoa fn:upper-case($argument) as xs:string + fn:lower-case(): chuyển đổi ký tự tham số thành chữ thường fn:upper-lower($argument) as xs:string Hỗ trợ thêm toán tử gán: +=; -=; *=; /=; %= CÁC CẢI TIÊN TRONG DML VÀ XML DML Bảng khởi tạo giá trị (Table Value Constructor): cho phép thêm nhiều dòng liệu vào bảng câu lệnh INSERT Cú pháp: VALUES () [, ] ::={} [, ] ::={} Tham số có giá trị từ bảng: - Tham số Table-valued SQL Server 2008 thuận tiện cho việc truyền nhiều dòng liệu tới thủ tục nội (stored preocedure) mà không cần dùng nhiều tham số, XML bảng tạm - Tham số Table-valued cho phép bạn tạo biến kiểu bảng truyền tới thủ tục nội Thủ tục nội xử lý nội dung chí cập nhật trả giá trị - Cú pháp: CREATE TYPE [] type_name AS TABLE ( < column_definition >[< table_constraint > ] [, …n ] ) Câu lệnh MERGE: - Câu MERGE lệnh cho phép trì bảng đích(target table) dựa điều kiện kết nối bảng nguồn(source table) câu lệnh - Bạn thực thao tác sau câu lệnh MERGER + Insert dịng liệu có bảng source dịng khơng có bảng đích (target) + Update dịng liệu bảng đích (target) dịng có bảng nguồn (source) + Delete dịng liệu bảng đích (target) dịng khơng có bảng nguồn (source) - Một lợi quan trọng MERGE tất liệu đọc xử lý lần - Cú pháp: MERGE target_table USING ON [ WHEN MATCHED THEN UPDATE SET col1 = val1 [, col1 = val1 ] ] Trong đó: + target_table: bảng có thay đổi thực + source_table: bảng mà dịng từ inserted, updated, deleted vào bảng đích (target table) + merge_search_condition: điều kiện nối(JOIN) toán tử so sánh + MATCHED: true dòng target_table source_table phù hợp với merge_search_condition + NOT MATCHED:true dịng từ source_table khơng có target_table + NOT MATCHED BY SOURCE: true if a row exist in the target_table but not in the source_table Toán tử GROUPING SETS: hỗ trợ thống kê theo nhiều nhóm cột dịng tổng cộng tùy chọn Tốn tử GROUPING SETS cho phép nhóm nhiều nhóm cột với theo sau dòng tổng cộng tùy chọn biểu diễn cặp () - Cú pháp: GROUP BY GROUPING SETS () NHỮNG ĐIỂM MỚI CỦA SQL SERVER 2008 – Mai Đức Thạch 0165.859.7998 – nadipage.com, webnadi.com, vneverestweb.com ROLLUP(): sử dụng với mệnh đề GROUP BY tạo dịng tổng hợp, dịng siêu tổng hợp, dịng tích lũy, dòng tổng cộng Cú pháp: SELECT a, b, c, function () FROM GROUP BY ROLLUP (a, b, c) Trong đó: - a,b,c: thành phần danh sách cột hợp lại - function: hàm SQL avg(), sum() - expression: biểu thức SQL CUBE(): sử dụng với mệnh đề GROUP BY tạo nhóm tất hốn vị phần tử có danh sách cột Cú pháp: SELECT a, b, c, function () FROM GROUP BY CUBE (a, b, c) Trong đó: - a,b,c: thành phần danh sách cột hợp lại - unction: hàm SQL avg(), sum() - expression: biểu thức SQL GROUPING_ID(): hàm thêm vào SQL Server 2008 cho mệnh đề GROUP BY mục tiêu để tính tốn mức độ (level) nhóm cột cụ thể Điều sử dụng SELECT, ORDER BY HAVING mệnh đề Kiểu trả INT Cú pháp: GROUP_ID( [, n]) Kiểu liệu XML Schema: - Trong lược đồ XML, có ba loại liệu khác cụ thể là, xs:date, xs:time, xs:dateTime - Những kiểu liệu truyền cho XQuery chuyển đổi kiểu Trong SQL Server 2008, giá trị kiểu liệu có định dạng sau : + yyyy-mm-ddZ (Z zone) + yyyy-mm-dd[ + | - ]hh:mm + yyyy-mm-ddThh:mm:ss[.sss][ +| - ]hh:mm Cải tiến XML DML: - Phương thức modify() sửa nội dung tài liệu XML cách sử dụng câu lệnh XML DML - Các cải tiến XML DML SQL Server 2008 phương thức modify() cho phép insert - Sử dụng từ khóa insert với modify() cho phép bạn chèn nút XML mà định nghĩa biến XML vào tài liệu XML ... định danh SQL Server nằm số tên file luận lý CSDL FILE CƠ SỞ DỮ LIỆU - Các loại CSDL hệ thống ● master: lưu trữ tất thông tin hệ thống phiên cải đặt SQL Server ● msdb: sử dụng SQL Server Agent... cụ quản trị cho phép họ quản trị đầy đủ hệ thống quản lý tất người sử dụng đối tượng CSDL: + Các tiện ích quản trị SQL Server Management Studio + Giao diện lập trình ứng dụng với đối tượng quản. .. tục nội hệ thống để truy xuất cập nhật bảng hệ thống trừ người quản trị CSDL cấp quyền Người quản trị CSDL chủ sở hữu thủ tục nội hệ thống - Storered procedure hệ thống sử dụng quản trị CSDL

Ngày đăng: 09/04/2016, 16:55

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan