SQL Server - Bài 2: Các đối tượng trong CSDL
Database dùng để
− Chứa các bảng, bảng ảo, thủ tục nội,
− Mỗi database có một danh sách các người dùng
• Người dùng phải có quyền truy cập database
• Có thể phân nhóm người dùng để cấp quyền
• Tử phiên bản SQL Server 2000 hỗ trợ Application Role
• Các database hệ thống
− Master, Model, Tempdb, msdb
• Các database ví dụ
− AdventureWorks
− AdventureWorkDWs
thể là giá trị từ 1 4000; max biểu thị rằng kích thước lưu trữ tối đa 2 GB Unicode và độ dài biến đổi Mặc định n=1 18 TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Cách sử dụng các kiểu dữ liệu cơ sở • Kiểu chuỗi ký tự − text và ntext và image (Đây là các kiểu dữ liệu được Microsoft khuyến cáo không nên sử dụng bởi lẻ trong tương lai nó sẽ bị loại bỏ. Thay thế vào đó là varchar(max), nvarchar(max), varbinary(max)) Kiểu dữ liệu Miền giá trị Ghi chú text 231- 1 non-Unicode và độ dài biến đổi ntext 230 - 1 Unicode và độ dài biến đổi image 0–2 GB (16-byte pointer) Dữ liệu binary biến đổi từ 0 231 - 1 19 TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Cách sử dụng các kiểu dữ liệu cơ sở • Kiểu chuỗi nhị phân Kiểu dữ liệu Miền giá trị Kích thước Ghi chú binary [ ( n ) ] n là giá trị từ 1 8000 n bytes Độ dài cố định varbinary [ ( n | max) ] n có thể là giá trị từ 1 8000; max biểu thị rằng kích thước lưu trữ tối đa 2 GB Độ dài biến đổi 20 TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Cách sử dụng các kiểu dữ liệu cơ sở • Các kiểu dữ liệu khác − Cursor : • kiểu dữ liệu cho khai báo biến hoặc khai báo tham số loại OUTPUT cho stored procedure chứa tham chiếu tới một cursor. • Column của table không thể được chỉ định với kiểu cursor. 21 TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Cách sử dụng các kiểu dữ liệu cơ sở • Timestamp : − Là kiểu dữ liệu tự động phát sinh số nhị duy nhất bên trong một database. − Giá trị phát sinh mang tính “đóng dấu phiên bản” các dòng của table. − Kích thước 8 bytes 22 TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Cách sử dụng các kiểu dữ liệu cơ sở • uniqueidentifier − Một column hoặc biến cục bộ kiểu dữ liệu uniqueidentifier có thể được khởi tạo giá trị theo các cách sau: • Sử dụng hàm hệ thống NEWID • Chuyển đổi từ một hằng chuỗi dạng xxxxxxxx-xxxx-xxxx-xxxx- xxxxxxxxxxxx, trong đó mỗi x là một ký số hexadecimal trong miền 0-9 hoặc a-f. Ví dụ, 6F9619FF-8B86-D011-B42D- 00C04FC964FF là một giá trị uniqueidentifier hợp lệ. − Khi tiến hành đồng bộ dữ liệu, sử dụng các column kiểu uniqueidentifier để bảo đảm rằng các dòng được nhận dạng duy nhất qua nhiều bản sao chép của table. 23 TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Cách sử dụng các kiểu dữ liệu cơ sở • xml − Là kiểu dữ liệu lưu trữ dữ liệu XML. Bạn có thể lưu trữ dữ liệu xml trong một column, hoặc biến kiểu xml • sql_variant − Là kiểu dữ liệu lưu trữ các giá trị của nhiều kiểu dữ liệu khác nhau được SQL Server hỗ trợ , ngoại trừ text, ntext, image, timestamp và sql_variant • table − Là kiểu dữ liệu đặc biệt có thể được sử dụng để lưu trữ tập kết quả cho việc xử lý ở thời điểm sau đó. Kiểu table chủ yếu được sử dụng cho việc khai báo kiểu kết quả trả về của hàm loại table-valued 24 TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Tạo cấu trúc bảng đơn giản CREATE TABLE Tên_schema.Tên_bảng ( Tên_cột1 Kiểu_dữ_liệu [NOT NULL] , Tên_cột2 Kiểu_dữ_liệu [NOT NULL] [, ...] ) • Từ khóa NOT NULL chỉ định không cho phép dữ liệu tại cột bị bỏ trống. 25 TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Tạo cấu trúc bảng có cột định danh CREATE TABLE Tên_bảng ( Tên_cột1 Kiểu_dữ_liệu_số IDENTITY [(Số_bắt_đầu, Chỉ_số_tăng)] , Tên_cột2 Kiểu_dữ_liệu [NOT NULL] [, ...] ) • Kiểu dữ liệu số: dạng số nguyên (int, smallint, tinyint, numeric và decimal) − Với numeric và decimal thì phải chỉ định không lấy số lẻ. • Số bắt đầu: SQL Server sử dụng để cấp phát cho mẩu tin đầu tiên. Mặc định là 1. • Chỉ số tăng: số cộng lên để cấp phát cho những mẩu tin kế tiếp. Mặc định là 1. 26 TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Thay đổi cấu trúc bảng • Dùng SSMS − Nhanh, đơn giản − Dùng giao diện, không dùng lệnh • Dùng script − Phức tạp, phải thuộc cú pháp lệnh − Cần thiết khi • Sử dụng lại nhiều lần để cập nhật cho CSDL trên máy khác • Cập nhật CSDL qua nhiều giai đoạn 27 TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Thêm một cột mới trong bảng ALTER TABLE Tên_bảng ADD Tên_cột Kiểu_dữ_liệu [, ...] • Tên cột: tên của cột mới được thêm vào bảng. • Kiểu dữ liệu: kiểu dữ liệu tương ứng của cột mới. ALTER TABLE DONDH ADD Ngaydknh DATETIME 28 TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Hủy bỏ cột hiện có bên trong bảng ALTER TABLE Tên_bảng DROP COLUMN Tên_cột [, ...] • Tên cột: tên cột sẽ bị hủy bỏ ra khỏi bảng ALTER TABLE DONDH DROP COLUMN Ngaydknh 29 TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Sửa đổi kiểu dữ liệu của cột ALTER TABLE Tên_bảng ALTER COLUMN Tên_cột Kiểu_dữ_liệu_mới ALTER TABLE VATTU ALTER COLUMN Dvtinh VARCHAR(20) 30 TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Đổi tên cột, tên bảng dữ liệu EXEC sp_rename 'Tên_bảng[.Tên_cột]', 'Tên_mới' [,'COLUMN'] • EXEC: dùng để thực thi các thủ tục nội tại của SQL Server • Tên bảng: tên bảng sẽ đổi tên hoặc chứa tên cột muốn đổi tên • Tên cột: tên cột muốn đổi tên • Tên mới: tên mới của cột hoặc bảng sau khi đổi • COLUMN: sử dụng khi thay đổi tên cột EXEC sp_rename 'NHACC.Tennhacc', 'Hotenncc', 'COLUMN‘ EXEC sp_rename 'NHACC', 'NHACCAP' 31 TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Đối tượng Schema 32 TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Khái niệm • Là khái niệm mới có trong SQL SERVER 2005 • Có thể hiểu schema là một namespace đối với các đối tượng database. • Một schema định nghĩa một ranh giới mà trong đó tất cả các tên là duy nhất. • Bên trong một database, tên của schema là duy nhất luôn có tên với đường dẫn đầy đủ dạng server.database.schema.object là duy nhất. 33 TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Giải quyết vấn đề tên đối tượng user làm việc • Nếu user có schema mặc định, SQL Server cố gắng tìm đối tượng trong schema mặc định. • Nếu không tìm thấy đối tượng trong schema mặc định của user hoặc user không có schema mặc định SQL Server cố gắng để tìm đối tượng trong schema có tên dbo. 34 TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Tạo schema • Có thể tạo bằng SSMS • Cú pháp lệnh CREATE SCHEMA Tên_schema_mới CREATE SCHEMA QLNS 35 TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Xóa schema • Có thể xóa bằng SSMS • Cú pháp lệnh DROP SCHEMA Tên_schema DROP SCHEMA QLNS 36 TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Kiểu dữ liệu do người dùng định nghĩa (Alias Data Type) 37 TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Khái niệm • Dựa trên kiểu dữ liệu định sẵn • Ưu điểm − Giúp thống nhất các cột dữ liệu trong CSDL theo một kiểu − Dễ thay đổi, chỉnh sửa 38 TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Tạo kiểu dữ liệu người dùng định nghĩa • Có thể tạo bằng SSMS • Cú pháp lệnh CREATE TYPE Tên_kiểu_dl_mới FROM 'Kiểu_dl_cơ_sở' [NULL] CREATE TYPE DiaChi FROM NVARCHAR(50) NULL 39 TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Xóa kiểu dữ liệu người dùng định nghĩa DROP TYPE Tên_kiểu_dl DROP TYPE DiaChi 40 TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Bảng ảo (Virtual table – View) 41 TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Khái niệm về bảng ảo • Được xây dựng từ câu truy vấn SELECT để hiển thị dữ liệu từ một hay nhiều bảng − Tập hợp dữ liệu, thể hiện cùng một dữ liệu nhưng theo nhiều cách khác nhau − Làm việc tương tự như một bảng nhưng không lưu trữ dữ liệu − Cho phép thêm/xoá/sửa − Bảo mật dữ liệu, bảo mật nội dung câu truy vấn dữ liệu • Một số hạn chế trong câu lệnh SELECT − Order By − Compute, Compute By − … 42 TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Tạo bảng ảo bằng SSMS • Đơn giản, công cụ tự động phát sinh câu lệnh • Có thể chuyển về dạng viết lệnh SQL 43 TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Tạo mới bảng ảo bằng CREATE VIEW • Tên các cột: sử dụng trong bảng ảo khi tham chiếu đến các cột • WITH ENCRYPTION: mã hóa nội dung câu lệnh SELECT • WITH CHECK OPTION: không cho cập nhật dữ liệu không thoả điều kiện của mệnh đề WHERE trong câu lệnh SELECT CREATE VIEW vw_DONDH_NHACC AS SELECT DONDH.*, NHACC.Diachi AS Diachi, NHACC.Tennhacc AS Hoten FROM DONDH INNER JOIN NHACC ON DONDH.Manhacc = NHACC.Manhacc CREATE VIEW Tên_bảng_ảo [(Tên_các_cột)] [WITH ENCRYPTION] AS Câu_lệnh_SELECT [WITH CHECK OPTION] 44 TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Xem và cập nhật dữ liệu bảng ảo • Làm việc như một bảng thông thường − Sử dụng câu SELECT để xem dữ liệu Select * From vw_DonDH • Sử dụng INSERT/UPDATE để cập nhật dữ liệu − Chỉ có thể cập nhật vào một bảng − Để INSERT dữ liệu vào bảng, bảng ảo phải thỏa mãn các yêu cầu về khóa, ràng buộc khóa ngọai, các cột NOT NULL, các cột tính toán, order by, group by, distinct • Sử dụng Delete để xoá dữ liệu − Bảng ảo tạo từ hai hay nhiều bảng không thể xoá • Có thể xây dựng các trigger trên bảng ảo (sẽ đề cập sau) 45 TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Cập nhật dữ liệu qua bảng ảo sử dụng trigger INSTEAD OF • Bảng ảo có nhiều hạn chế khi thực hiện cập nhật dữ liệu − Group By, Order By, Distinct − Thiếu cột khoá − Ràng buộc toàn vẹn • SQL Server cung cấp loại trigger INSTEAD OF − Cơ chế tương tự như trigger thông thường − Mở rộng khả năng cập nhật, tính toán dữ liệu, đặc biệt với bảng ảo − Xem thêm phần TRIGGER 46 TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Sửa đổi nội dung bảng ảo ALTER VIEW Tên_bảng_ảo [(Tên_các_cột)] [WITH ENCRYPTION] AS Câu_lệnh_SELECT_mới [WITH CHECK OPTION] • Tương tự như xoá bảng rồi tạo lại DROP VIEW Tên_bảng_ảo Go CREATE VIEW Tên_bảng_ảo [(Tên_các_cột)] [WITH ENCRYPTION] AS Câu_lệnh_SELECT_mới [WITH CHECK OPTION]
File đính kèm:
- SQL Server - Bài 2_Các đối tượng trong CSDL.pdf