CaiDat SQLServer
Page 1 of 1
CaiDat SQLServer
Hướng dẫn thực hành môn QTCSDL
Mục đích:
- Ôn lại việc tạo bảng, khai báo các ràng buộc khóa chính, khóa ngoại.
- Thực hiện tạo Default
- Thực hiện khai báo ràng buộc toàn vẹn (RBTV) trên miền giá trị sử dụng Rule và Check Constraint
- Bài tập thực hành: QLSV (các mục 1,2,3.1 3.9)
Hướng dẫn:
- Đọc file QLSV.pdf, xem qua các RBTV sẽ phải cài đặt.
- Xác định kiểu dữ liệu cho các thuộc tính trong bảng dựa vào các RBTV.
- Thực hiện tạo các bảng, sử dụng SQL Query Analyzer
CREATE TABLE CHUONGTRINH (
MaCT char(3) NOT NULL ,
TenCT nvarchar(30) NOT NULL
)
- Thực hiện khai báo khóa chính
ALTER TABLE CHUONGTRINH
ADD CONSTRAINT PK_CHUONGTRINH PRIMARY KEY(MaCT)
- Thực hiện khai báo khóa ngoại
ALTER TABLE GIANGKHOA ADD
CONSTRAINT FK_GIANGKHOA_CHUONGTRINH FOREIGN KEY
(MACT) REFERENCES CHUONGTRINH(MaCT)
1. Thực hiện tạo default (giá trị mặc định)
o Tạo default ngay khi tạo bảng
Khai báo ngay trong script tạo bảng :
create table T (
col1 int,
col2 int default 1
)
Ví dụ :
drop table T
go
create table T (
col1 int,
col2 int default 1
)
go
insert into T(col1) values (2)
go
select * from T
o Tạo default sau khi tạo bảng
B1: tạo default
CREATE DEFAULT def_SttLop AS 0
B2: Gắn default vào một thuộc tính của bảng. Khi thực hiện bắt buộc default phải được tạo trước.
SP_BINDEFAULT ‘def_SttLop’, ‘Lop.SoThuTuLop’
/* Khi do: insert Lop(KhoaHoc,Khoa,ChuongTrinh) values(1,1,1)
tương đương với
insert Lop(KhoaHoc,Khoa,ChuongTrinh,SoThuTuLop)
values (1,1,1,0)
Gia tri mac dinh SoThuTuLop la 0
*/
- Gỡ bỏ default khỏi thuộc tính của bảng.
SP_UNBINDEFAULT 'Lop.SoThuTuLop'
- Hủy default. Khi dùng bắt buộc default phải được gỡ bỏ khỏi tất cả các thuộc tính của bảng mà nó đã được gắn vào.
DROP DEFAULT def_SttLop
2. Thực hiện khai báo ràng buộc toàn vẹn miền giá trị
sử dụng check constraint
ALTER TABLE CHUONGTRINH
ADD Constraint c_MaCT CHECK (MaCT IN ('CT1','CT2'))
- Gỡ bỏ check constraint
ALTER TABLE ChuongTrinh
DROP CONSTRAINT c_MaCT
3. Thực hiện khai báo ràng buộc toàn vẹn miền giá trị sử dụng rule
B1: Tạo rule
CREATE RULE r_MACT
AS @MaCT IN ('CT1','CT2')
B2: Gắn rule vào một thuộc tính của bảng. Khi thực hiện bắt buộc rule phải được tạo trước.
SP_BINDRULE 'r_MaCT', 'ChuongTrinh.MaCT'
Để thực hiện đồng thời B1 và B2. Thêm GO vào giữa.
CREATE RULE r_MACT
AS @MaCT in ('CT1','CT2')
GO
SP_BINDRULE 'r_MaCT', 'ChuongTrinh.MaCT'
- Gỡ bỏ rule khỏi thuộc tính của bảng.
SP_UNBINDRULE 'ChuongTrinh.MaCT'
- Hủy rule.
Khi dùng bắt buộc rule phải được gỡ bỏ khỏi tất cả các thuộc tính của bảng mà nó đã được gắn vào.
DROP RULE r_MACT
4. So sánh việc dùng rule và check constraint
o Constraint gắn đặc thù với một thuộc tính cụ thể của một bảng
o Rule có thể áp dụng cho nhiều thuộc tính của nhiều bảng khác nhau có cùng RBTV về miền giá trị Sử dụng Rule khi có nhiều RBTV về miền giá trị giống nhau trong CSDL.
CREATE RULE r_SoTietToiDa
AS @SoTiet <= 120
GO
SP_BINDRULE 'r_SoTietToiDa', 'GiangKhoa.SoTiet_LT'
GO
SP_BINDRULE 'r_SoTietToiDa', 'GiangKhoa.SoTiet_TH'
- Thực hiện khai báo các RBTV từ 3.1 3.9 tương tự. Một số hướng dẫn:
o 3.7: Sử dụng các hàm CEILING, FLOOR(làm tròn nguyên), hàm ROUND (làm tròn thực), toán tử % (modulo), hàm CAST (ép kiểu)
o 3.9: Sử dụng hàm getdate (lấy ngày hiện hành), hàm year (lấy năm từ một ngày).
- Khi gặp các vấn đề mới, các lỗi không rõ nguyên nhân, sử dụng SQL Server Books Online (nhấn Shift-F1 trong SQL Query Analyzer) để tìm hiểu ví dụ như:
o Tìm các hàm toán học (để làm tròn): Đánh “Mathematical Function” trong Index hay Search (tương tự cho “DateTime function”)
o Xem cú pháp CreateRule, Check Constraint, …
o Xem sử dụng Rule, Check Constraint thông qua Enterprise Manager: Đánh “Wizard” trong Search.
Bài tập ở nhà:
- Thực hiện RBTV miền giá trị sử dụng Rule và CheckConstraint trên bài Quản lý hàng hóa.
- Tìm hiểu cách sử dụng rule, check constraint, default thông qua SQL Enterprise Manager 200x.
Default
Check Constraint
Rule
Mục đích:
- Ôn lại việc tạo bảng, khai báo các ràng buộc khóa chính, khóa ngoại.
- Thực hiện tạo Default
- Thực hiện khai báo ràng buộc toàn vẹn (RBTV) trên miền giá trị sử dụng Rule và Check Constraint
- Bài tập thực hành: QLSV (các mục 1,2,3.1 3.9)
Hướng dẫn:
- Đọc file QLSV.pdf, xem qua các RBTV sẽ phải cài đặt.
- Xác định kiểu dữ liệu cho các thuộc tính trong bảng dựa vào các RBTV.
- Thực hiện tạo các bảng, sử dụng SQL Query Analyzer
CREATE TABLE CHUONGTRINH (
MaCT char(3) NOT NULL ,
TenCT nvarchar(30) NOT NULL
)
- Thực hiện khai báo khóa chính
ALTER TABLE CHUONGTRINH
ADD CONSTRAINT PK_CHUONGTRINH PRIMARY KEY(MaCT)
- Thực hiện khai báo khóa ngoại
ALTER TABLE GIANGKHOA ADD
CONSTRAINT FK_GIANGKHOA_CHUONGTRINH FOREIGN KEY
(MACT) REFERENCES CHUONGTRINH(MaCT)
1. Thực hiện tạo default (giá trị mặc định)
o Tạo default ngay khi tạo bảng
Khai báo ngay trong script tạo bảng :
create table T (
col1 int,
col2 int default 1
)
Ví dụ :
drop table T
go
create table T (
col1 int,
col2 int default 1
)
go
insert into T(col1) values (2)
go
select * from T
o Tạo default sau khi tạo bảng
B1: tạo default
CREATE DEFAULT def_SttLop AS 0
B2: Gắn default vào một thuộc tính của bảng. Khi thực hiện bắt buộc default phải được tạo trước.
SP_BINDEFAULT ‘def_SttLop’, ‘Lop.SoThuTuLop’
/* Khi do: insert Lop(KhoaHoc,Khoa,ChuongTrinh) values(1,1,1)
tương đương với
insert Lop(KhoaHoc,Khoa,ChuongTrinh,SoThuTuLop)
values (1,1,1,0)
Gia tri mac dinh SoThuTuLop la 0
*/
- Gỡ bỏ default khỏi thuộc tính của bảng.
SP_UNBINDEFAULT 'Lop.SoThuTuLop'
- Hủy default. Khi dùng bắt buộc default phải được gỡ bỏ khỏi tất cả các thuộc tính của bảng mà nó đã được gắn vào.
DROP DEFAULT def_SttLop
2. Thực hiện khai báo ràng buộc toàn vẹn miền giá trị
sử dụng check constraint
ALTER TABLE CHUONGTRINH
ADD Constraint c_MaCT CHECK (MaCT IN ('CT1','CT2'))
- Gỡ bỏ check constraint
ALTER TABLE ChuongTrinh
DROP CONSTRAINT c_MaCT
3. Thực hiện khai báo ràng buộc toàn vẹn miền giá trị sử dụng rule
B1: Tạo rule
CREATE RULE r_MACT
AS @MaCT IN ('CT1','CT2')
B2: Gắn rule vào một thuộc tính của bảng. Khi thực hiện bắt buộc rule phải được tạo trước.
SP_BINDRULE 'r_MaCT', 'ChuongTrinh.MaCT'
Để thực hiện đồng thời B1 và B2. Thêm GO vào giữa.
CREATE RULE r_MACT
AS @MaCT in ('CT1','CT2')
GO
SP_BINDRULE 'r_MaCT', 'ChuongTrinh.MaCT'
- Gỡ bỏ rule khỏi thuộc tính của bảng.
SP_UNBINDRULE 'ChuongTrinh.MaCT'
- Hủy rule.
Khi dùng bắt buộc rule phải được gỡ bỏ khỏi tất cả các thuộc tính của bảng mà nó đã được gắn vào.
DROP RULE r_MACT
4. So sánh việc dùng rule và check constraint
o Constraint gắn đặc thù với một thuộc tính cụ thể của một bảng
o Rule có thể áp dụng cho nhiều thuộc tính của nhiều bảng khác nhau có cùng RBTV về miền giá trị Sử dụng Rule khi có nhiều RBTV về miền giá trị giống nhau trong CSDL.
CREATE RULE r_SoTietToiDa
AS @SoTiet <= 120
GO
SP_BINDRULE 'r_SoTietToiDa', 'GiangKhoa.SoTiet_LT'
GO
SP_BINDRULE 'r_SoTietToiDa', 'GiangKhoa.SoTiet_TH'
- Thực hiện khai báo các RBTV từ 3.1 3.9 tương tự. Một số hướng dẫn:
o 3.7: Sử dụng các hàm CEILING, FLOOR(làm tròn nguyên), hàm ROUND (làm tròn thực), toán tử % (modulo), hàm CAST (ép kiểu)
o 3.9: Sử dụng hàm getdate (lấy ngày hiện hành), hàm year (lấy năm từ một ngày).
- Khi gặp các vấn đề mới, các lỗi không rõ nguyên nhân, sử dụng SQL Server Books Online (nhấn Shift-F1 trong SQL Query Analyzer) để tìm hiểu ví dụ như:
o Tìm các hàm toán học (để làm tròn): Đánh “Mathematical Function” trong Index hay Search (tương tự cho “DateTime function”)
o Xem cú pháp CreateRule, Check Constraint, …
o Xem sử dụng Rule, Check Constraint thông qua Enterprise Manager: Đánh “Wizard” trong Search.
Bài tập ở nhà:
- Thực hiện RBTV miền giá trị sử dụng Rule và CheckConstraint trên bài Quản lý hàng hóa.
- Tìm hiểu cách sử dụng rule, check constraint, default thông qua SQL Enterprise Manager 200x.
Default
Check Constraint
Rule
Page 1 of 1
Permissions in this forum:
You cannot reply to topics in this forum