Ngày 16/12/1987 HĐH OS/2phiên bản 1.0 đã được chính thức phát hành.Lịch sử phát triển Nhưng sau đó IBM đưa ra phiên bản mới củaOS/2 gọi là OS/2 mở rộng, HĐH này sẽ mạnhgọ ộ g, y ạhơn OS
Trang 1Nguyễn Thị Thúy Loan CĐ PT - TH II Trang 2 2/12/2011
Tài liệu tham khảo
[1] Bài giảng: Lê Thị Minh Nguyện
[2] Nhập môn Hệ quản trị cơ sở dữ liệu DB2, Arvind
Krishna
[3] Microsoft SQL Server 2005 Express Edition For
Dummies, Robert Schneider, 2006
[4] Inside Microsoft SQL Server 2005: T-SQL
Programming (Pro-Developer), Itzik Ben-gan, Dejan
Sarka, and Roger Wolter,2006
[5] Trang web
http://ocw.mit.edu/OcwWeb/Electrical-Engineering-and-Computer-Science/index.htm/
Nội dung
Tổng quan về SQL Server
Các đối tượng trong cơ sở dữ liệu
Lập trình với cơ sở dữ liệu
Store Procedure (thủ tục)
Nguyễn Thị Thúy Loan CĐ PT - TH II Trang 4 2/12/2011
Trigger & Function
Backup anh restore
Trang 2TỔNG QUAN VỀ
Chương I
Q SQL SERVER
ThS Nguyễn Thị Thúy Loan
Cao đẳng Phát thanh – Truyền hình II
Bảo đảm các RBTV trên CSDL
Bảo vệ an toàn dữ liệu
Truy vấn dữ liệu nhanh
Trang 3SQL Server là gì?
Hệ quản trị CSDL theo mô hình Client/ Server
có thể dễ dàng phát triển trên mô hình phân
Nguyễn Thị Thúy Loan CĐ PT - TH II Trang 10 2/12/2011
các khoảng thời gian chu trình.
o Alerts: đưa ra các sự kiện xảy ra như: lỗi hay khi một CSDL đạt tới một giới hạn vì bộ nhớ trống sẵn không còn đủ nữa.
Các dịch vụ của SQL Server
Coordinator: Điều phối các giao tác phân tán,
quản lý các giao tác, có trách nhiệm điều
phối các giao tác của CSDL trên nhiều
Nguyễn Thị Thúy Loan CĐ PT - TH II Trang 11 2/12/2011
Trang 4Lịch sử phát triển
1970 IBM đưa ra ngôn ngữ truy vấn SEQUEL
(Structured English Query Language)
1975 IBM và Microsoft hợp tác xây dựng
HĐH OS/2 dựa theo hệ điều hành MS DOS
của Microsoft Ngày 16/12/1987 HĐH OS/2
Nguyễn Thị Thúy Loan CĐ PT - TH II Trang 13 2/12/2011
của Microsoft Ngày 16/12/1987 HĐH OS/2
phiên bản 1.0 đã được chính thức phát hành
Lịch sử phát triển
Nhưng sau đó IBM đưa ra phiên bản mới của
hơn OS/2 phiên bản 1.0 bởi vì nó sẽ tích hợpthêm một phần CSDL SQL của IBM (ngày naychính là HQTCSDL DB2)
Nguyễn Thị Thúy Loan CĐ PT - TH II Trang 14 2/12/2011
Microsoft hợp tác Sybase làm ra sản phẩmthuộc loại HQTCSDL Ashton-Tate vào năm
1988 phát triển trên môi trường OS/2
Lịch sử phát triển
Sau đó Sybase đã phát triển sản phẩm trên môi
trường UNIX và đổi tên riêng là DataServer màg g
ngày nay có tên khác là Sybase Adaptive Server
Microsoft quyết định không phát triển HĐH OS/2
mà thay vào đó cho ra đời một HĐH mạng máy
tính có tên là NT Server và thế là SQL Server chỉ
tính có tên là NT Server và thế là SQL Server chỉ
hoạt động độc lập trên môi trường Windows NT
Trang 5 Mô hình Client/Sever: là kiến trúc gồm 2 thành
Nguyễn Thị Thúy Loan CĐ PT - TH II Trang 17 2/12/2011
Mô hình Client/Sever: là kiến trúc gồm 2 thành
phần máy Client và máy Server, 2 thành phần
này liên lạc với nhau thông qua hệ thống mạng
Mô hình Client/Server
Sử dụng giao tiếp lập trình ứng dụng để truy xuất dữ liệu (API Application liệu (API- Application Programming Interfece)
Thư viện mạng client sử dụng 1 phương thức liên lạc bên trong mạng để giao tiếp với thư viện mạng của server
Nguyễn Thị Thúy Loan CĐ PT - TH II Trang 18 2/12/2011
Thư viện mạng của server nhận gói dữ liệu
và trao chúng cho các dịch vụ mở dữ liệu
Mô hình Client/Server
Nhánh máy trạm (client)
Đọc và hiển thị dữ liệu hiện có bên trong
ểCSDL, tính toán dữ liệu đang hiển thị trên màn
hình ứng dụng, in dữ liệu ra các kết xuất
Các ngôn ngữ sử dụng bên máy khách thường
là: C++, C#, VB, Delphi…
Các ứng dụng khi xây dựng bên nhánh máy
Nguyễn Thị Thúy Loan CĐ PT - TH II Trang 19 2/12/2011
Các ứng dụng khi xây dựng bên nhánh máy
trạm nên tránh việc đọc tòan bộ dữ liệu của
bảng mà chỉ lấy đúng các thông tin cần thiết
Các xử lý sao lưu dữ liệu (backup data) tự
Nguyễn Thị Thúy Loan CĐ PT - TH II Trang 20 2/12/2011
Các xử lý sao lưu dữ liệu (backup data) tựđộng để đảm bảo các dữ liệu không bị mấttrong trường hợp có các sự cố xấu nhất tình cờxảy ra
Trang 6Nguyễn Thị Thúy Loan CĐ PT - TH II Trang 21 2/12/2011
Client network Utility:
Các thành phần SQL Server
công cụ dùng để thiết lập,tham khảo các cấu hìnhmạng: giao thức truyền
Nguyễn Thị Thúy Loan CĐ PT - TH II Trang 22 2/12/2011
cho client, các đường dẫntham khảo đến thư viện
Enterprise Manager (EM): là màn hình dùng
để quản trị SQL Server EM cung cấp cho
Các thành phần SQL Server
người quản trị chức năng để quản lý SQL bằng
giao diện đồ hoạ
o Quản trị các database
T d t b à á thà h hầ bê t
o Tạo database và các thành phần bên trong
database
o Đăng ký làm việc với SQL Server khác
Import and Export Data: công cụ hỗ trợ cho
phép dễ dàng thực hiện việc chuyển dữ liệu từ
Các thành phần SQL Server
phép dễ dàng thực hiện việc chuyển dữ liệu từngoài vào SQL Server và SQL Server ra
Query Analyzer: là công cụ cung cấp bởi
SQL Server là trình soạn thảo và thực thi câuSQL Server, là trình soạn thảo và thực thi câulệnh SQL hay Stored Procedure
Trang 7Các thành phần SQL Server
Server Network Utility: công cụ dùng để thiết
lập các cấu hình cho server và hiển thị các
thông tin đường dẫn tham chiếu thư viện làm
việc
Server Manager: dùng để khởi động tạm
Nguyễn Thị Thúy Loan CĐ PT - TH II Trang 25 2/12/2011
Server Manager: dùng để khởi động, tạm
Mô hình quan hệ dữ liệu
Kiểu dữ liệu do người dùng định nghĩa
Nguyễn Thị Thúy Loan CĐ PT - TH II Trang 27 2/12/2011
Kiểu dữ liệu do người dùng định nghĩa
Quy tắc kiểm tra miền giá trị dữ liệu (rule)
Trang 8Cơ sở dữ liệu của SQL Server
Nguyễn Thị Thúy Loan CĐ PT - TH II Trang 29 2/12/2011
Cơ sở dữ liệu của SQL Server
Khi cài SQL Server xong, hệ thống sẽ tự động tạomột vài CSDL mặc định:
Các tập tin vật lý lưu trữ DL
Hai tập tin vật lý để lưu trữ dữ liệu:
L t ữ dữ liệ (d t fil )
o Lưu trữ dữ liệu (data file)
o Lưu trữ các giao tác mà người dùng đã thực
hiện (transaction log file)
Các tập tin CSDL trong SQL Server được chia
thành 3 loại tập tin
Các tập tin vật lý lưu trữ DL
Trang 9Các tập tin vật lý lưu trữ DL
Tập tin dữ liệu chính (Primary Data File) Phần
mở rộng của tập tin này là * mdf
Tập tin thứ yếu (Secondary Data Files) (không
bắt buộc phải có khi tạo mới CSDL) Phần mở
rộng của tập tin này là * ndf
Nguyễn Thị Thúy Loan CĐ PT - TH II Trang 33 2/12/2011
rộng của tập tin này là *.ndf
Tập tin lưu trữ (Log Files) Phần mở rộng là
*.ldf
Tạo mới cơ sở dữ liệu
Các thuộc tính CSDL trong SQL Server
Tên CSDL (Database name): dài tối đa 128
ấ
ký tự, duy nhất trong SQL Server
Vị trí tập tin (File location): Thông thường
tập tin này sẽ được lưu tại C:\ProgramFiles\Microsoft SQL Server\MSSQL\ Data
Nguyễn Thị Thúy Loan CĐ PT - TH II Trang 34 2/12/2011
Tên tập tin (File name): là tên luận lý của mỗi
loại tập tin dữ liệu tương ứng mà hệ thốngSQL Server dùng để quản lý bên trong
Tạo mới cơ sở dữ liệu
Kích thước ban đầu (Initial size): là kích
thước khởi tạo của tập tin dữ liệu khi CSDL
mới được tạo lập
Tăng kích thước tập tin dữ liệu (File
Tạo mới cơ sở dữ liệu
Ví dụ: tạo CSDL có tên QLBH với kích thước
ban đầu là 50 MB, tự động tăng kích thước lên ự ộ g g 10% khi dữ liệu đầy, kích thước tăng trưởng tập tin tối đa không quá 200MB Và tập tin lưu vết với kích thước ban đầu lúc khởi tạo là 10MB t độ tă kí h th ớ tậ ti lê 5
Nguyễn Thị Thúy Loan CĐ PT - TH II Trang 36 2/12/2011
10MB, tự động tăng kích thước tập tin lên 5
MB khi dữ liệu bị đầy, kích thước tăng trưởng tập tin không giới hạn.
Trang 10Tạo mới cơ sở dữ liệu
Cách 1: tạo trong Query Analyzer
LOG ON(NAME = QLBH_Log,
Nguyễn Thị Thúy Loan CĐ PT - TH II Trang 37 2/12/2011
Tạo mới cơ sở dữ liệu
Cách 2: tạo trong Enterprise Manager
Nguyễn Thị Thúy Loan CĐ PT - TH II Trang 38 2/12/2011
Tạo mới cơ sở dữ liệu
Mô hình quan hệ dữ liệu
Kiểu dữ liệu do người dùng định nghĩaKiểu dữ liệu do người dùng định nghĩa
Quy tắc kiểm tra miền giá trị dữ liệu (rule)
Giá trị mặc định
Trang 11Bảng (Tables)
Dùng để lưu trữ các thông tin dữ liệu của những
đối tượng thực thể trong thế giới thực vào máy
tính
Tên bảng (table name): dài tối đa 128 ký tự
Tên cột (column name)
Nguyễn Thị Thúy Loan CĐ PT - TH II Trang 41 2/12/2011
Tên cột (column name)
Kiểu dữ liệu (Data type): quy định kiểu dữ
liệu mà cột sẽ lưu trữ bên trong bảng
Bảng (Kiểu dữ liệu)
Kiểu dữ liệu Kích thước Miền giá trị dữ liệu lưu trữ
Số nguyên
2 1 83 6 8 ế 2 1 83 6 8 Int 4 bytes Từ -2,147,483,648 đến +2,147,483,648 Smallint 2 bytes Từ -32,768 đến + 32,767
Tinyint 1 byte Từ 0 đến 255 Bit 1 byte 0,1 hoặc Null
Các kiểu dữ liệu dạng số thập phân
Kiểu dữ liệu Kích thước Miền giá trị dữ liệu lưu trữ
Các kiểu dữ liệu dạng chuỗi
Char N bytes y Từ 1 đến 8,000 ký tự, độ dài cố định , ý ự, ộ ị
Varchar N bytes Từ 1 đến 8,000 ký tự, độ dài biến đổi
Text N bytes Từ 1 đến 2,147,483,647 ký tự
Nchar 2* n bytes Unicode, từ 1 đến 4,000 ký tự, mỗi ký tự 2 bytes
Nvarchar 2* n bytes Từ -10^38 đến +10^38
Ntext 2* n bytes từ 1 đến 1,073,741,823 ký tự, mỗi ký tự 1 byte
Các kiểu dữ liệu dạng ngày giờ
datetime 8 bytes Từ 01/01/1753 đến 31/12/9999
smalldatetime 4 bytes Từ 01/01/1900 đến 06/06/2079
Các kiểu dữ liệu dạng chuỗi nhị phân
Image N byte Từ 1 đến 2,147,483,647 bytes
Binary N byte Từ 1 đến 8,000
Tạo cấu trúc bảng dữ liệu
Tạo cấu trúc bảng đơn giản
CREATE TABLE <tên bảng> (
<tên cột 1>: <kiểu dữ liệu 1> [NOT NULL],
<tên cột 2>: <kiểu dữ liệu 2> [NOT NULL],
Trang 12Tạo cấu trúc bảng dữ liệu
Ví dụ:
CREATE TABLE LOP(
Malop char(6) NOT NULL,
TenLop varchar(20) NOT NULL,
SiSo smallInt NOT NULL)
Nguyễn Thị Thúy Loan CĐ PT - TH II Trang 45 2/12/2011
SiSo smallInt NOT NULL)
Tạo cấu trúc bảng dữ liệu
Tạo cấu trúc bảng có giá trị mặc định
CREATE TABLE <tên bảng> (
gia_trị|hàm,
………
ể
Nguyễn Thị Thúy Loan CĐ PT - TH II Trang 46 2/12/2011
Tạo cấu trúc bảng dữ liệu
Ví dụ:
CREATE TABLE LOP(
Tạo cấu trúc bảng dữ liệu
Tạo cấu trúc bảng có cột định danh
CREATE TABLE <tên bảng> (
<tên cột 1>: <kiểu dữ liệu 1> Identity[(số_bắt_đầu,chỉ_số_tăng)],
<tên cột 2>: <kiểu dữ liệu 2> [NOT NULL],tên cột 2 : kiểu dữ liệu 2 [NOT NULL],
………
<tên cột n>: <kiểu dữ liệu n> [NOT NULL])
Trang 13Tạo cấu trúc bảng dữ liệu
Ví dụ:
CREATE TABLE LOP(
TenLop varchar(20) NOT NULL,
Nguyễn Thị Thúy Loan CĐ PT - TH II Trang 49 2/12/2011
Tạo cấu trúc bảng dữ liệu
Enterprise Manager
Right-click Tables/ chọn New Table…
Nguyễn Thị Thúy Loan CĐ PT - TH II Trang 50 2/12/2011
Tạo cấu trúc bảng dữ liệu
Tạo các cột
Tên column Kiểu DL
Nguyễn Thị Thúy Loan CĐ PT - TH II Trang 51 2/12/2011
Tạo cấu trúc bảng dữ liệu
Đặt tên bảng
Nguyễn Thị Thúy Loan CĐ PT - TH II Trang 52 2/12/2011
Trang 14Thay đổi cấu trúc bảng
Query Analyzer
Thêm một cột mới vào bảng
ALTER TABLE Tên_bảng
ADD Tên_cột kiểu_dữ_liệu
Ví dụ:
Nguyễn Thị Thúy Loan CĐ PT - TH II Trang 53 2/12/2011
Ví dụ:
ALTER TABLE LOP
ADD Nien_khoa int
Thay đổi cấu trúc bảng
Query Analyzer
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
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>
Ví dụ:
Ví dụ:
ALTER TABLE LOP
ALTER COLUMN Nien_khoa char(9)
Thay đổi cấu trúc bảng
Đổ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’]
Ví dụ 1: đổi tên cột Nien_khoa thành khoa_hoctrong bảng LOP
EXEC sp_rename ‘LOP.nien_khoa’,
‘khoa hoc’ ‘COLUMN’
‘khoa_hoc’, ‘COLUMN’
Ví dụ 2: thay đổi tên LOP thành LOPHOCEXEC sp_rename ‘LOP’, ‘LOPHOC’
Trang 15Tính toàn vẹn trong cơ sở DL
Ràng buộc toàn vẹn (RBTV) dữ liệu thực sự là
việc đặc ra các quy tắc trong một cơ sở dữ liệu
nhằm kiểm tra các giá trị của dữ liệu trước khi
lưu trữ phải đảm bảo tính chính xác và hợp lý
bên trong một cơ sở dữ liệu
Nguyễn Thị Thúy Loan CĐ PT - TH II Trang 57 2/12/2011
bên trong một cơ sở dữ liệu
Tính toàn vẹn trong cơ sở DL
Các Phương Pháp Ðảm Bảo Data Integrity
Primary Key Constraint
Primary Key Constraint
CONSTRAINT <tên RBTV> PRIMARYKEY(thuộc tính khóa chính)
Ví dụ:
Trang 16Add Primary Key
Enterprise Manager
Right-click column of interest
Set Primary Key
Nguyễn Thị Thúy Loan CĐ PT - TH II Trang 61 2/12/2011
Cách tạo các ràng buộcUnique Constraint
Cách tạo ra Unique Constraint cũng tương tựnhư Primary Key Constraint chỉ việc thay chữPrimary Key thành Unique
Chỉ có một Primary Key Constraint trong một
Nguyễn Thị Thúy Loan CĐ PT - TH II Trang 62 2/12/2011
Chỉ có một Primary Key Constraint trong mộttable trong khi ta có thể có nhiều UniqueConstraint trên một table
Cách tạo các ràng buộc
Foreign Key Constraint
CREATE TABLE LOP
(MaLop INT PRIMARY KEY,
MaKh INT REFERENCES Khoa (MaKH))
Hay
CREATE TABLE LOP
(MaLop INT PRIMARY KEY,
MaKh INT,
CONSTRAINT MaKh_fk FOREIGN KEY
(MaKh) REFERENCES Khoa(MaKh))
Cách tạo các ràng buộc
Foreign Key Constraint
ALTER TABLE <tên bảng> ADD CONSTRAINT <tên RBTV> FOREIGN KEY(các cột khóa ngoại) REFERENCES <tên bảng> (các cột khóa chính)
Ví dụ:
ALTER TABLE LOP ADD CONSTRAINTALTER TABLE LOP ADD CONSTRAINT Makh_fk FOREIGN KEY(MaKh)
REFERENCES Khoa (MaKh)
Trang 17Cách tạo các ràng buộc
Check Constraint (ràng buộc miền giá trị)
CREATE TABLE LOP
(MaLop INT PRIMARY KEY,
TenLop VARCHAR(30),
Nguyễn Thị Thúy Loan CĐ PT - TH II Trang 65 2/12/2011
AND 100))
Cách tạo các ràng buộc
Check Constraint (ràng buộc miền giá trị)
CREATE TABLE LOP(MaLop INT PRIMARY KEY,
Check Constraint (ràng buộc miền giá trị)
Alter table <tenbang>
add constraint <tên constraint> check
Ví dụ:
Alter table Lop
Nguyễn Thị Thúy Loan CĐ PT - TH II Trang 67 2/12/2011
Alter table Lop
add constraint Siso_Ck check (Siso between 1 and
100)
Cách tạo các ràng buộc
Check Constraint (ràng buộc miền giá trị)
Alter table KhachHangAdd constraint DT_Ck check (DT like
‘[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]’)
Nguyễn Thị Thúy Loan CĐ PT - TH II Trang 68 2/12/2011
Alter table SanPhamAdd constraint GiaBan_Ck check (GiaBan >0)
Trang 18NỘI DUNG
Cơ sở dữ liệu của SQL Server
Bảng (Table)
Bảng ảo (View)
Mô hình quan hệ dữ liệu
Kiểu dữ liệu do người dùng định nghĩa
Nguyễn Thị Thúy Loan CĐ PT - TH II Trang 69 2/12/2011
Kiểu dữ liệu do người dùng định nghĩa
Quy tắc kiểm tra miền giá trị dữ liệu (rule)
[WITH CHECK OPTION]// ngăn cản các thao
tác cập nhật dữ liệu (thêm, sửa) tác động trực
tiếp vào bảng ảo không thỏa điều kiện trong
SELECT INTO
Trang 19where diem>7 and kq.masv=sv.masv
Nguyễn Thị Thúy Loan CĐ PT - TH II Trang 73 2/12/2011
where diem 7 and kq.masv sv.masv
Xem kết quả của View
Select * from <Tenview>
Trang 20NỘI DUNG
Cơ sở dữ liệu của SQL Server
Bảng (Table)
Bảng ảo (View)
Mô hình quan hệ dữ liệu
Kiểu dữ liệu do người dùng định nghĩa
Nguyễn Thị Thúy Loan CĐ PT - TH II Trang 77 2/12/2011
Kiểu dữ liệu do người dùng định nghĩa
Quy tắc kiểm tra miền giá trị dữ liệu (rule)
Giá trị mặc định
Mô hình dữ liệu quan hệ
Tạo các ràng buộc khóa ngoại một cách trựcquan hơn
Tạo mô hình quan hệ
o Bước 1:
Nguyễn Thị Thúy Loan CĐ PT - TH II Trang 78 2/12/2011
Mô hình dữ liệu quan hệ
o Bước 2:
Mô hình dữ liệu quan hệ
o Bước 3:
Trang 21NỘI DUNG
Cơ sở dữ liệu của SQL Server
Bảng (Table)
Bảng ảo (View)
Mô hình quan hệ dữ liệu
Kiểu dữ liệu do người dùng định nghĩa
Nguyễn Thị Thúy Loan CĐ PT - TH II Trang 81 2/12/2011
Kiểu dữ liệu do người dùng định nghĩa
Quy tắc kiểm tra miền giá trị dữ liệu (rule)
Giá trị mặc định
KDL do người dùng định nghĩa
Mục đích đảm bảo cho cấu trúc dữ liệu bêntrong CSDL được nhất quán và dễ sửa đổitrong CSDL được nhất quán và dễ sửa đổi
Cú pháp:
EXEC sp_addtype Tên_kiểu_dl_mới,
‘kiểu dữ liệu cơ sở’ [,NULL| NOT NULL]
Nguyễn Thị Thúy Loan CĐ PT - TH II Trang 82 2/12/2011
kiểu_dữ_liệu_cơ_sở [,NULL| NOT NULL]
KDL do người dùng định nghĩa
Ví dụ:
exec sp_addtype dn_sl, ‘float’, ‘not null’
exec sp_addtype slg, ‘int’
Khi tạo lập cấu trúc bảng KQ chúng ta có thể
Mô hình quan hệ dữ liệu
Kiểu dữ liệu do người dùng định nghĩa
Nguyễn Thị Thúy Loan CĐ PT - TH II Trang 84 2/12/2011
Quy tắc kiểm tra miền giá trị dữ liệu (rule)
Giá trị mặc định
Trang 22 Kiểm tra các cột bên trong bảng phải thoả mãn
điều kiện nào đó khi dữ liệu bị sửa đổi hoặc
thêm vào Tính năng hoạt động của nó gần
giống như CHECK constraint
Cú pháp (Query Analyzer)
Nguyễn Thị Thúy Loan CĐ PT - TH II Trang 85 2/12/2011
Rules
Tên_quy_tắc: kiểm tra miền giá trị dữ liệu
được tạo mớiđược tạo mới
Biểu thức: biểu thức luận lý hoặc so sánh Có
3 thành phần:
o Tên biến hình thức (phải bắt đầu bằng @)
Nguyễn Thị Thúy Loan CĐ PT - TH II Trang 86 2/12/2011
o Tên biến hình thức (phải bắt đầu bằng @)
o Toán tử so sánh
o Giá trị so sánh
Rules
Ví dụ 1: Để tạo quy tắc kiểm tra miền giá trị
dữ liệu cột điểm phải từ 0 đến 10
dữ liệu cột điểm phải từ 0 đến 10
CREATE RULE R_Diem
AS
@Diem between 0 and 10
@Diem between 0 and 10
Rules
Ví dụ 2: Để tạo quy tắc kiểm tra miền giá trị
dữ liệu cột đơn vị tính của vật tư chỉ thuộctrong các từ: cái, bộ, kg, m2, m3
ASAS
Trang 23Rules (áp dụng quy tắc KT)
Cú pháp:
EXEC sp bindrule
Tên_qui_tắc, Tên_đối_tượng
Ví dụ 1: Áp dụng quy tắc kiểm tra có tên
R Diem cho cột điểm trong bảng KQ
Nguyễn Thị Thúy Loan CĐ PT - TH II Trang 89 2/12/2011
R_Diem cho cột điểm trong bảng KQ
EXEC sp_bindrule R_Diem, ‘KQ.Diem’
Rules (áp dụng quy tắc KT)
Ví dụ 2: Áp dụng quy tắc kiểm tra có tên là
R_Diem cho kiểu dữ liệu mới có tên là dn_slEXEC sp_bindrule R_Diem, ‘dn_sl’
Nguyễn Thị Thúy Loan CĐ PT - TH II Trang 90 2/12/2011
Trang 24Nguyễn Thị Thúy Loan CĐ PT - TH II Trang 94 2/12/2011
Rules
Xóa rule
DROP Rule Tên_rule
Ví dụ;
Drop Rule R_Diem
Drop Rule R_Siso
NỘI DUNG
Cơ sở dữ liệu của SQL Server
Bảng (Table)g ( )
Bảng ảo (View)
Mô hình quan hệ dữ liệu
Kiểu dữ liệu do người dùng định nghĩa
Quy tắc kiểm tra miền giá trị dữ liệu (rule)
Giá trị mặc định
Trang 25Nguyễn Thị Thúy Loan CĐ PT - TH II Trang 97 2/12/2011
phải duy nhất trong CSDL
Biểu thức: là một giá trị cụ thể nào đó như số,
ngày, chuỗi hoặc một hàm, biểu thức tính
toán
Giá trị mặc định (Default)
Ví dụ: tạo giá trị mặc định cho các cột điểm là 0.
CREATE DEFAULT D DiCREATE DEFAULT D_Diem
Ví dụ: Để liên kết giá trị mặc định vừa tạo
Nguyễn Thị Thúy Loan CĐ PT - TH II Trang 99 2/12/2011
Ví dụ: Để liên kết giá trị mặc định vừa tạo
D_Diem vào cột Diem có trong bảng KQ
EXEC sp_bindefault D_Diem,‘KQ.Diem’
Giá trị mặc định (Default)
Không liên kết các giá trị mặc định vào cột
Cú pháp:
EXEC sp_unbindefault Tên_đối_tượng
Ví dụ: Để hủy bỏ giá trị mặc định đã liên kết
cho cột Diem trong bảng KQ trước đó
Nguyễn Thị Thúy Loan CĐ PT - TH II Trang 100 2/12/2011
cho cột Diem trong bảng KQ trước đó
EXEC sp_unbindefault ‘KQ.Diem’
Trang 26DROP DEFAULT Tên_gt_mặc_định [,…]
Ví dụ:
Nguyễn Thị Thúy Loan CĐ PT - TH II Trang 102 2/12/2011
Chỉ mục (Index)
Tạo chỉ mục để lưu thứ tự sắp xếp các bản ghi
theo giá trị tăng dần của các cột được cho trong
With(index(indexName))
Ví dụ:
Select * from mhSelect from mhWith(index(I_Tenmh))
Trang 27Chỉ mục (Index)
Chỉ nên tạo chỉ mục cho các bảng có số lượng
lớn các bản ghi và ít được cập nhật (vì nếu g ợ ập ậ (
bảng thường xuyên bổ sung dữ liệu thì phải
cập nhật lại index sẽ làm mất nhiều thời gian),
và chỉ nên tạo chỉ mục trên các cột mà thông
ti ủ ó th ờ ê đ ợ th khả tới
Nguyễn Thị Thúy Loan CĐ PT - TH II Trang 105 2/12/2011
tin của nó thường xuyên được tham khảo tới
(vì sẽ làm gia tăng tốc độ tìm kiếm mà không
cần phải tìm kiếm hết các dòng trên bảng).
Các câu lệnh truy vấn dữ liệu
Cấu trúc điều khiển
Biến kiểu dữ liệu cursor
Nguyễn Thị Thúy Loan CĐ PT - TH II Trang 107 2/12/2011
Biến kiểu dữ liệu cursor
Các hàm thường dùng
Biến cục bộ
Trang 28Biến cục bộ
Cú pháp:
DECLARE @Tên_biến kiểu_dữ_liệu[,…]
Gán giá trị cho biến:
SET hoặc SELECT cùng với phép gán (=)
Biến cục bộ
Lệnh SET chỉ để gán giá trị cụ thể hoặc các
biểu thức tính toán hoặc giá trị tính toán từ
các biến khác, ngược lại lệnh SELECT dùng
để gán các giá trị được lấy ra hoặc tính toán
từ dữ liệu của các cột bên trong các bảng dữ
Nguyễn Thị Thúy Loan CĐ PT - TH II Trang 110 2/12/2011
liệu.
Biến cục bộ
Ví dụ 1: để gán giá trị ngày 25/1/1990 vào
biến ngày sinh.
Ví dụ 2:
From KQ
Trang 29Biến cục bộ
Xem giá trị hiện hành của biến
Cú há
Cú pháp:
Nguyễn Thị Thúy Loan CĐ PT - TH II Trang 113 2/12/2011
print 'Diem thap nhat la: '
Nguyễn Thị Thúy Loan CĐ PT - TH II Trang 114 2/12/2011
print @MinDiemprint 'Diem cao nhat la: 'print @MaxDiem
Biến cục bộ
Phạm vi hoạt động của biến:
Trong Transaction-SQL phạm vi hoạt động của
biến chỉ nằm trong một thủ tục nội tại (stored
procedure) hoặc một lô (batch) chứa các câu
lệnh mà biến đã được khai báo bên trong đó
Lô được xem như một nhóm tập hợp của một
ề
hoặc nhiều câu lệnh T-SQL sẽ được biên dịch
đồng thời cùng lúc tại SQL Server và sau đó hệ
thống sẽ thực thi các câu lệnh này ngay sau khi
Nguyễn Thị Thúy Loan CĐ PT - TH II Trang 116 2/12/2011
thống sẽ không có lệnh nào được thực thi bêntrong lô đó
Trang 30Nguyễn Thị Thúy Loan CĐ PT - TH II Trang 117 2/12/2011
Select From Khoa
Order By TenKH desc
Nguyễn Thị Thúy Loan CĐ PT - TH II Trang 118 2/12/2011
Select From Khoa
Order By TenKH desc
go
( mặc dù vi phạm ràng buộc toàn vẹn trong INSERT (giả sử trùng khoá chính
ở cột MaSV) nhưng các lệnh SELECT bên trong lô này vẫn được thực hiện bình thường.
Biến cục bộ
Ví dụ:
Declare @NS datetimeSelect @NS = Max(NgSinh)From SV
goPrint 'SV nho tuoi nhat la: '+ convert (char(12),
HT sẽ báo lỗi vì có thêm từ khoá GO ở giữa 2 lệnh SELECT và PRINT Bởi vì khi đó các lệnh này được chia làm 2 lô và lô thứ hai sẽ không hiểu biến @NS đã được khai báo trong lô thứ 1.
Print SV nho tuoi nhat la: + convert (char(12),
@NS)go
Trang 31NỘI DUNG
Biến cục bộ
Biến hệ thống
Biến hệ thống
Các câu lệnh truy vấn dữ liệu
Cấu trúc điều khiển
Biến kiểu dữ liệu cursor
Nguyễn Thị Thúy Loan CĐ PT - TH II Trang 121 2/12/2011
Biến kiểu dữ liệu cursor
Các hàm thường dùng
Biến hệ thống
Các biến hệ thống trong SQL Server luôn bắtđầu bằng 2 chữ @@ và giá trị mà chúng tađang lưu trữ do hệ thống SQL cung cấp, ngườilập trình không can thiệp trực tiếp để gán giátrị vào các biến hệ thống
Nguyễn Thị Thúy Loan CĐ PT - TH II Trang 122 2/12/2011
trị vào các biến hệ thống
Biến hệ thống
Tên biến kiểu trả về Dùng để trả về
connections số nguyên Tổng số các kết nối vào SQL Server từ khi nó được khởi
động ộ g Error số nguyên số mã lỗi của câu lệnh thực hiện gần nhất Khi một lệnh
thực hiện thành công thì biến này có giá trị là 0 Language chuỗi Tên ngôn ngữ mà hệ thống SQL đang sử dụng Mặc định
là US_English RowCount số nguyên Tổng số mẫu tin được tác động vào câu lệnh truy vấn gần
nhất ServerName chuỗi Tên của máy tính cục bộ được cài đặt trong SQL Server
Nguyễn Thị Thúy Loan CĐ PT - TH II Trang 123 2/12/2011
ServiceName chuỗi Tên dịch vụ kèm theo bên dưới SQL Server
Fetch_Status số nguyên Trạng thái của việc đọc dữ liệu trong bảng theo cơ chế
dòng mẫu tin (cursor) Khi dữ liệu đọc mẫu tin thành công thì biến này có giá trị là 0
Version chuỗi Phiên bản, ngày của phẩm SQL Server và loại CPU
Biến hệ thống
Ví dụ:
Select * From SVSelect @@rowcount
(trả về tổng số mẫu tin đang hiện có trong bảng SV )
Nguyễn Thị Thúy Loan CĐ PT - TH II Trang 124 2/12/2011
bảng SV )
Trang 32Biến hệ thống
Ví dụ:
Set Siso = Siso + 12
Where TenLop like '08%'
Select @@rowcount
Nguyễn Thị Thúy Loan CĐ PT - TH II Trang 125 2/12/2011
(Trả về tổng số mẫu tin có TenLop bắt đầu
Các câu lệnh truy vấn dữ liệu
Cấu trúc điều khiển
Biến kiểu dữ liệu cursor
Nguyễn Thị Thúy Loan CĐ PT - TH II Trang 126 2/12/2011
Biến kiểu dữ liệu cursor
Các hàm thường dùng
Các câu lệnh truy vấn dữ liệu
Truy vấn con: chỉ là một câu lệnh truy vấn lựa
chọn (SELECT) được lồng vào các câu lệnh
truy vấn khác nhằm thực hiện các truy vấn tính
toán phức tạp Khi sử dụng đến truy vấn con
chúng ta cần lưu tâm đến một vài yếu tố sau:
chúng ta cần lưu tâm đến một vài yếu tố sau:
Các câu lệnh truy vấn dữ liệu
vấn con
một cột hoặc một biểu thức sẽ trả về giá trịtrong truy vấn con
đơn lẻ hoặc một danh sách các giá trị
trong SQL Server là không giới hạn
Trang 33Các câu lệnh truy vấn dữ liệu
Truy vấn con trả về một giá trị đơn: là truy vấn
mà kết qủa trả về của nó luôn đảm bảo chỉ là
Kết hợp 2 câu truy vấn trên
FROM SV
Nguyễn Thị Thúy Loan CĐ PT - TH II Trang 130 2/12/2011
FROM SVWHERE Ngsinh = (SELECT MAX(Ngsinh)
Các câu lệnh truy vấn dữ liệu
Truy vấn con trả về danh sách các giá trị: kết
quả trả về của nó là danh sách các giá trị hay
Các câu lệnh truy vấn dữ liệu
Ví dụ 1: để biết nhà cung cấp nào mà công ty
Trang 34Các câu lệnh truy vấn dữ liệu
Hoặc:
FROM NHACC
Nguyễn Thị Thúy Loan CĐ PT - TH II Trang 133 2/12/2011
Các câu lệnh truy vấn dữ liệu
Đâu đảm bảo rằng trong tháng 01/2009 công tychỉ đặt hàng cho 2 nhà cung cấp C01 và C03chỉ đặt hàng cho 2 nhà cung cấp C01 và C03
Do đó để luôn luôn có được danh sách họ têncác nhà cung cấp mà công ty đã đặt hàng trongtháng 01-2009 chúng ta thực hiện truy vấn con
Nguyễn Thị Thúy Loan CĐ PT - TH II Trang 134 2/12/2011
tháng 01 2009 chúng ta thực hiện truy vấn consau:
Các câu lệnh truy vấn dữ liệu
FROM NHACC
WHERE Convert(char(7),WHERE Convert(char(7),NgayDH, 21) = ‘2009-01’ )
Các câu lệnh truy vấn dữ liệu
AND NHACC.MaNCC = DONDH.MaNCC)
Trang 35Các câu lệnh truy vấn dữ liệu
Ví dụ 2: Để biết danh sách các nhà cung cấp
nào mà công ty chưa bao giờ đặt hàng Chúng
ta có thể thực hiện câu truy vấn như sau:
Nguyễn Thị Thúy Loan CĐ PT - TH II Trang 137 2/12/2011
(SELECT Distinct MaNCC
Nguyễn Thị Thúy Loan CĐ PT - TH II Trang 138 2/12/2011
Lưu ý: IN tương đương =ANY
NOT IN tương đương <>ALL
Lệnh INSERT
Cách 1: Thêm trực tiếp một bộ
INSERT INTO bảng[<cột 1> <cột 2> cột n]
INSERT INTO bảng[<cột 1>, <cột 2>,…, cột n]
VALUES(<giá trị 1>, <giá trị 2>,…, <giá trị n>)
Ví dụ: Thêm dữ liệu vào SV
Nguyễn Thị Thúy Loan CĐ PT - TH II Trang 139 2/12/2011
Ví dụ: Thêm dữ liệu vào SV
SV (MaSV, TenSV, NgSinh, Malop)
Lệnh INSERT
Insert into SV values('004', 'Tran Thi Ha',
'05-26 1990' '08CDTH')
Hay
Insert into SV(MaSV, TenSV, NgSinh, Malop)
values('004', 'Tran Thi Ha', '05-26-1990',
Nguyễn Thị Thúy Loan CĐ PT - TH II Trang 140 2/12/2011
values( 004 , Tran Thi Ha , 05 26 1990 ,'08CDTH')
Trang 36Lệnh INSERT
Cách 2: Thêm nhiều bộ giá trị lấy từ các bộ
giá trị của các bảng của CSDL
INSERT INTO bảng[<cột 1>, <cột 2>,…,
<cột n>]
SELECT … FROM … WHERE
Nguyễn Thị Thúy Loan CĐ PT - TH II Trang 141 2/12/2011
SELECT … FROM … WHERE
Lệnh INSERT
Ví dụ:
LOP SV( TenLop SiSo)INSERT INTO LOP_SV( TenLop, SiSo)SELECT TenLop, count(*)
FROM SV, LOP
Nguyễn Thị Thúy Loan CĐ PT - TH II Trang 142 2/12/2011
FROM SV, LOPWHERE SV.MaLop=LOP.MaLopGROUP BY TenLop
Trang 37Lệnh DELETE
Cú pháp:
DELETE [FROM] Bảng
[WHERE <điều kiện>]
Ví dụ: Xóa tất cả các nhân viên có LCB < 700
DELETE FROM NHANVIEN
Nguyễn Thị Thúy Loan CĐ PT - TH II Trang 145 2/12/2011
DELETE FROM NHANVIEN
Ví dụ 1: Hiển thị danh sách sinh viên (Masv,
Ho, Ngsinh) có trong bảng SV theo từng họ , g ) g g g ọ
Họ là kí tự đầu tiên trong Tensv (L(Le),
N(Nguyen),T(Tran),còn lại là chưa phân biệt.
Nguyễn Thị Thúy Loan CĐ PT - TH II Trang 147 2/12/2011
Nguyễn Thị Thúy Loan CĐ PT - TH II Trang 148 2/12/2011
end, Ngsinhfrom SV
Trang 38Biểu thức CASE
Ví dụ 2: Hiển thị danh sách các vật tư (Mavt,
Tenvt, DVT) có trong bảng VATTU theo từng , ) g g g
loại hàng DD (đầu DVD), VD (đầu VCD), TV
(Tivi), TL (Tủ lạnh), LO (Loa thùng), còn lại
chưa phân biệt.
Nguyễn Thị Thúy Loan CĐ PT - TH II Trang 149 2/12/2011
Biểu thức CASE
SELECT MAVTU, TenVTU,
ầ
ELSE ‘chưa phân loại’
End, DVTinh
Biểu thức CASE
Ví dụ 3: Hiển thị danh sách (Malop, Tenlopmoi
và sĩ số) các lớp trong bảng LOP theo tên mới
và sĩ số) các lớp trong bảng LOP theo tên mới.
Với tên mới là 1 kí tự bên phải của Tenlop (t
(cao dang ky thuat), c(cao dang tin hoc), còn
lại là cao dang bao chi.
lại là cao dang bao chi.
End, sisoEnd, sisoFrom lop
Trang 39Biểu thức CASE
Ví dụ 4: Hiển thị danh sách các vật tư trong
bảng VATTU thông tin bổ sung thêm chuỗi
ghi chú, tùy thuộc vào giá trị của cột phần trăm
giá bán (<20 lời ít, 20<= and <=40 lời nhiều,
>40 rất lời)
Nguyễn Thị Thúy Loan CĐ PT - TH II Trang 153 2/12/2011
40 rất lời)
Biểu thức CASE
WHEN PhanTram < 20 Then ‘Lời ít’
WHEN PhanTram Between 20 And 40Then ‘Lời nhiều’
ELSE ‘Rất lời’
Nguyễn Thị Thúy Loan CĐ PT - TH II Trang 154 2/12/2011
ELSE ‘Rất lời’
ENDFROM VATTU
Biểu thức CASE
Ví dụ: cho lược đồ CSDL như sau:
CTPX (Ma_MH, SoPX, SLXuat, DGXuat)
Ví dụ 5: Giảm giá bán hàng trong tháng 2-2007
theo quy tắc sau: Nếu số lượng hàng <= 2 thìkhông giảm giá, Nếu số lượng hàng từ 3 đến
10 thì giảm 10%, Nếu số lượng hàng > 10 thìgiảm 20% (Thay đổi trên ĐGXuất)
Nguyễn Thị Thúy Loan CĐ PT - TH II Trang 156 2/12/2011
giảm 20% (Thay đổi trên ĐGXuất)
Trang 40Biểu thức CASE
UPDATE CTPX
SET DGXuat = CASE
WHEN SLXUAT BETWEEN 3 AND 10
Ví dụ 6: Cập nhật Trợ cấp cho sinh viên sinh
vào tháng 5/1990 Với điều kiện sau: lớp có sĩ
số < 40 thì không trợ cấp, lớp có sĩ số từ 40đến 70 thì 100000, lớp có sĩ số lớn hơn 70 thì500000
Nguyễn Thị Thúy Loan CĐ PT - TH II Trang 158 2/12/2011
500000
Biểu thức CASE
Update SV
When siso <40 then 0
When siso between 40 and 70 then 100000
Các câu lệnh truy vấn dữ liệu
Cấu trúc điều khiển
Biến kiểu dữ liệu cursor.Biến kiểu dữ liệu cursor
Các hàm thường dùng