TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCMTRUNG TÂM TIN HỌC Khái niệm về cơ sở dữ liệu • 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
Trang 1TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
SQL Server
Trang 2TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Các đối tượng trong CSDL
2
Trang 3TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Cơ sở dữ liệu của SQL
Server
Trang 4TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Khái niệm về cơ sở dữ liệu
• 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
Trang 5TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
• Một database bao gồm tối thiểu hai file
− .mdf: lưu trữ các đối tượng trong database như table, view, …
• Có thể bổ sung thêm các tập tin lưu trữ khác
• Tổ chức tốt các tập tin lưu trữ giúp tăng tốc độ xử lý
− .ldf: lưu trữ quá trình cập nhật/thay đổi dữ liệu
− Maximum file size
Các tập tin vật lý lưu trữ cơ sở dữ liệu
Trang 6TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
• Ví dụ lệnh tạo một database đơn giản
Trang 7TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Bảng dữ liệu (Table)
Trang 8TRƯỜ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
• Bảng dùng để lưu trữ các thông tin của một đối
tượng trong thực tế
− Gồm có các dòng và các cột
− Bảng trong CSDL thường có khoá chính (primary key)
− Các bảng thường liên hệ với nhau bằng các mối quan hệ
− Bảng được tạo trong các Schema (mặc định là schema dbo)
• Bảng có thể có các ràng buộc (constraint),
trigger [Sẽ tìm hiểu kỹ trong các chương sau]
Trang 9TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Trang 10TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Giới thiệu các kiểu dữ liệu cơ sở
Loại Các kiểu dữ liệu
Numeric Integer int, bigint, smallint, tinyint
Exact decimal, numeric Approximat
e float, realMonetary money, smallmoney Date and time datetime, smalldatetime
Characte
r Non-Unicode char, varchar, varchar(max), text
Unicode nchar, nvarchar, nvarchar(max), ntext Binary binary, varbinary, varbinary(max)
Global identifier uniqueidentifier
Trang 11TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌCCách sử dụng các kiểu dữ liệu cơ sở
bit 0 hoặc 1 hoặc null n byte -Tùy theo số cột kiểu bit trong 1 bảng
mà SQL Server tối ưu hóa lưu trữ đối với kiểu này theo cách 1 8 1 byte; 9 16 2 byte)
- Giá trị chuỗi TRUE và FALSE có thể được chuyển đổi tới 1 và 0
Trang 12TRƯỜ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 số thập phân : Decimal và numeric:
• decimal[ (p[ , s] )] và numeric[ (p[ , s] )] : Dùng cho các số mà độ
chính xác được cố định và có thứ tự Miền giá trị - 10 38 + 1
10 38 - 1
• p (precision) : Chỉ định tổng số ký số (digits) tối đa có thể được lưu trữ (tính cho cả hai phía dấu chấm động) Giá trị này tuân thủ
từ 138, mặc định là 18.
• s (scale) : Số ký số tối đa bên phải dấu chấm động (phần thập
phân) Giai chia này phải có một giá trị từ 0 p Giai chia chỉ có
thể được chỉ định nếu precision được chỉ định Mặc định là 0
• Kích thước lưu trữ tùy thuộc vào số ký số được chỉ định tại phần Precision
Trang 13TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌCCách sử dụng các kiểu dữ liệu cơ sở
• Kiểu tiền tệ : money và smallmoney
Kiểu dữ liệu Miền giá trị Số byte lưu trữ
money - 922,337,203,685,477.5808
922,337,203,685,477.5807
8 smallmoney - 214,748.3648 214,748.3647 4
Trang 14TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌCCách sử dụng các kiểu dữ liệu cơ sở
• Kiểu số thực : float(n) và real
Kiểu dữ liệu Miền giá trị Số byte lưu trữ
float - 1.79E+308 -2.23E-308, 0
và 2.23E-308 1.79E+308
Phụ thuộc vào n
Mặc định n=53 real - 214,748.3648 214,748.3647 4
Giá trị n Số ký số Kích
thước 1-24 7 4 bytes 25-53 15 8 bytes
Trang 15TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌCCách sử dụng các kiểu dữ liệu cơ sở
• Kiểu ngày giờ
− Sử dụng datetime để trình bày dữ liệu ngày giờ từ
Trang 16TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌCCách sử dụng các kiểu dữ liệu cơ sở
non-Unicode và độ dài biến đổi
Mặc định n=1
Trang 17TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌCCách sử dụng các kiểu dữ liệu cơ sở
Unicode và độ dài biến đổi
Mặc định n=1
Trang 18TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌCCá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 2 31 - 1 non-Unicode và độ dài biến
đổi ntext 2 30 - 1 Unicode và độ dài biến đổi image 0–2 GB (16-byte
pointer)
Dữ liệu binary biến đổi từ 0
2 31 - 1
Trang 19TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌCCá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
Trang 20TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌCCá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
Trang 21TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌCCách sử dụng các kiểu dữ liệu cơ sở
Trang 22TRƯỜ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ụ, 00C04FC964FF là một giá trị uniqueidentifier hợp lệ.
6F9619FF-8B86-D011-B42D-− 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
Trang 23TRƯỜ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ở
− 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ả
Trang 24TRƯỜ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
Trang 25TRƯỜ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.
Trang 26TRƯỜ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
Trang 27TRƯỜ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
Trang 28TRƯỜ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
Trang 29TRƯỜ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)
Trang 30TRƯỜ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'
Trang 31TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Đối tượng Schema
Trang 32TRƯỜ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
Trang 33TRƯỜ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
Trang 34TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Trang 35TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Trang 36TRƯỜ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)
Trang 37TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Trang 38TRƯỜ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
Trang 39TRƯỜ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
Trang 40TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Bảng ảo (Virtual table – View)
Trang 41TRƯỜ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
− …
Trang 42TRƯỜ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
Trang 43TRƯỜ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
CREATE VIEW Tên_bảng_ảo
Trang 44TRƯỜ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)
Trang 45TRƯỜ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ử
• 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
−
Trang 46TRƯỜ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