Giáo trình Quản trị SQL Server (Phần 1)

1. Giới thiệu về hệ quản trị cơ sở dữ liệu

Hệ quản trị cơ sở dữ liệu (Database Management System – DBMS):

− Là tập hợp các chương trình dùng để quản lý cấu trúc và dữ liệu của

cơ sở dữ liệu đồng thời điều khiển việc truy xuất dữ liệu trong cơ sở dữ liệu

− Cung cấp cho người dùng và ứng dụng một môi trường thuận tiện và

sử dụng hiệu quả tài nguyên dữ liệu

Ví dụ: Một số hệ quản trị CSDL thường gặp:

− MS Access

− MS SQL Server

− MySQL

− Oracle

Microsoft SQL Server:

− Là hệ quản trị cơ sở dữ liệu do Microsoft phát triển.

− Hoạt động theo mô hình Client/Server cho phép đồng thời cùng một

lúc nhiều người dùng truy xuất đến cơ sở dữ liệu

SQL, viết tắt của Structured Query Language (ngôn ngữ hỏi có cấu trúc),

là công cụ sử dụng để tổ chức, quản lý và truy xuất dữ liệu đuợc lưu trữ trong các

cơ sở dữ liệu. SQL là một hệ thống ngôn ngữ bao gồm tập các câu lệnh sử dụng

để tương tác với cơ sở dữ liệu quan hệ. Tên gọi ngôn ngữ hỏi có cấu trúc phần

nào làm chúng ta liên tưởng đến một công cụ (ngôn ngữ) dùng để truy xuất dữ

liệu trong các cơ sở dữ liệu. Thực sự mà nói, khả năng của SQL vượt xa so với5

một công cụ truy xuất dữ liệu, mặc dù đây là mục đích ban đầu khi SQL được

xây dựng nên và truy xuất dữ liệu vẫn còn là một trong những chức năng quan

trọng của nó. SQL được sử dụng để điều khiển tất cả các chức năng mà một hệ

quản trị cơ sở dữ liệu cung cấp cho người dùng bao gồm:

− Định nghĩa dữ liệu: SQL cung cấp khả năng định nghĩa các cơ sở

dữ liệu, các cấu trúc lưu trữ và tổ chức dữ liệu cũng như mối quan hệ giữa các

thành phần dữ liệu.

− Truy xuất và thao tác dữ liệu: Với SQL, người dùng có thể dễ

dàng thực hiện các thao tác truy xuất, bổ sung, cập nhật và loại bỏ dữ liệu trong

các cơ sở dữ liệu.

− Điều khiển truy cập: SQL có thể được sử dụng để cấp phát và kiểm

soát các thao tác của người sử dụng trên dữ liệu, đảm bảo sự an toàn cho cơ sở

dữ liệu.

− Đảm bảo toàn vẹn dữ liệu: SQL định nghĩa các ràng buộc toàn vẹn

trong cơ sở dữ liệu nhờ đó đảm bảo tính hợp lệ và chính xác của dữ liệu trước

các thao tác cập nhật cũng như các lỗi của hệ thống.

Như vậy, có thể nói rằng SQL là một ngôn ngữ hoàn thiện được sử dụng

trong các hệ thống cơ sở dữ liệu và là một thành phần không thể thiếu trong các

hệ quản trị cơ sở dữ liệu. Mặc dù SQL không phải là một ngôn ngữ lập trình như

C, C++, Java,. song các câu lệnh mà SQL cung cấp có thể được nhúng vào

trong các ngôn ngữ lập trình nhằm xây dựng các ứng dụng tương tác với cơ sở dữ

liệu. Khác với các ngôn ngữ lập trình quen thuộc như C, C++, Java,. SQL là

ngôn ngữ có tính khai báo. Với SQL, người dùng chỉ cần mô tả các yêu cầu cần

phải thực hiện trên cơ sở dữ liệu mà không cần phải chỉ ra cách thức thực hiện

các yêu cầu như thế nào. Chính vì vậy, SQL là ngôn ngữ dễ tiếp cận và dễ sử

dụng.

SQL Server sử dụng ngôn ngữ lập trình và truy vấn CSDL Transact-SQL

(T-SQL), một phiên bản của Structured Query Language. Ngôn ngữ lập trình và

truy vấn T-SQL cho phép truy xuất dữ liệu, cập nhật và quản lý hệ thống CSDL

quan hệ. Mỗi máy chủ chỉ có một hệ quản trị CSDL SQL Server.

Giáo trình Quản trị SQL Server (Phần 1) trang 1

Trang 1

Giáo trình Quản trị SQL Server (Phần 1) trang 2

Trang 2

Giáo trình Quản trị SQL Server (Phần 1) trang 3

Trang 3

Giáo trình Quản trị SQL Server (Phần 1) trang 4

Trang 4

Giáo trình Quản trị SQL Server (Phần 1) trang 5

Trang 5

Giáo trình Quản trị SQL Server (Phần 1) trang 6

Trang 6

Giáo trình Quản trị SQL Server (Phần 1) trang 7

Trang 7

Giáo trình Quản trị SQL Server (Phần 1) trang 8

Trang 8

Giáo trình Quản trị SQL Server (Phần 1) trang 9

Trang 9

Giáo trình Quản trị SQL Server (Phần 1) trang 10

Trang 10

Tải về để xem bản đầy đủ

pdf 33 trang xuanhieu 7600
Bạn đang xem 10 trang mẫu của tài liệu "Giáo trình Quản trị SQL Server (Phần 1)", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

Tóm tắt nội dung tài liệu: Giáo trình Quản trị SQL Server (Phần 1)

Giáo trình Quản trị SQL Server (Phần 1)
Tạo ràng buộc khóa chính Primary key 
 Ràng buộc PRIMARY KEY được sử dụng để định nghĩa khoá chính của 
 bảng. Khoá chính của một bảng là một hoặc một tập nhiều cột mà giá trị của 
 chúng là duy nhất trong bảng. Hay nói cách khác, giá trị của khoá chính sẽ giúp 
 cho ta xác định được duy nhất một dòng (bản ghi) trong bảng dữ liệu. Mỗi một 
 20 
bảng chỉ có thể có duy nhất một khoá chính và bản thân khoá chính không chấp 
nhận giá trị NULL. Ràng buộc PRIMARY KEY là cơ sở cho việc đảm bảo tính 
toàn vẹn thực thể cũng như toàn vẹn tham chiếu. 
 Để khai báo một ràng buộc PRIMARY KEY, ta sử dụng cú pháp như sau: 
 [CONSTRAINT tên_ràng_buộc] 
 PRIMARY KEY [(danh_sách_cột)] 
 Nếu khoá chính của bảng chỉ bao gồm đúng một cột và ràng buộc 
PRIMARY KEY được chỉ định ở mức cột, ta không cần thiết phải chỉ định danh 
sách cột sau từ khoá PRIMARY KEY. Tuy nhiên, nếu việc khai báo khoá chính 
được tiến hành ở mức bảng (sử dụng khi số lượng các cột tham gia vào khoá là từ 
hai trở lên) thì bắt buộc phải chỉ định danh sách cột ngay sau từ khóa PRIMARY 
KEY và tên các cột được phân cách nhau bởi dấu phẩy. 
 Ví dụ: Câu lệnh dưới đây định nghĩa bảng SINHVIEN với khoá chính là 
MASV CREATE TABLE sinhvien 
 ( 
 Masv NVARCHAR(10) CONSTRAINT pk_sinhvien_masv PRIMARY 
KEY, 
 hodem NVARCHAR(25) NOT NULL , 
 ten NVARCHAR(10) NOT NULL , 
 ngaysinh DATETIME, 
 gioitinh BIT, 
 noisinh NVARCHAR(255), 
 malop NVARCHAR(10) 
 ) 
 Với bảng vừa được tạo bởi câu lệnh ở trên, nếu ta thực hiện câu lệnh: 
 INSERT INTO sinhvien(masv,hodem,ten,gioitinh,malop) 
 VALUES('0261010001','Lê Hoàng Phương','Anh',0,'C26101') 
 một bản ghi mới sẽ được bổ sung vào bảng này. Nhưng nếu ta thực hiện 
tiếp câu lệnh: 
 INSERT INTO sinhvien(masv,hodem,ten,gioitinh,malop) 
 VALUES('0261010001','Lê Huy','Đan',1,'C26101') 
 21 
 thì câu lệnh này sẽ bị lỗi do trùng giá trị khoá với bản ghi đã có. 
 Ví dụ: Câu lệnh dưới đây tạo bảng DIEMTHI với khoá chính là tập bao 
 gồm hai cột MAMONHOC và MASV 
 CREATE TABLE diemthi 
 ( 
 Mamonhoc NVARCHAR(10) NOT NULL , 
 masv NVARCHAR(10) NOT NULL , 
 diemlan1 NUMERIC(4, 2), 
 diemlan2 NUMERIC(4, 2), 
 CONSTRAINT pk_diemthi PRIMARY KEY(mamonhoc,masv) 
 ) 
 Lưu ý: 
 − Mỗi một bảng chỉ có thể có nhiều nhất một ràng buộc PRIMARY 
 KEY. 
 − Một khoá chính có thể bao gồm nhiều cột nhưng không vượt quá 16 
 cột. 
3.2. Tạo ràng buộc khóa ngoại Foreign key 
 Các bảng trong một cơ sở dữ liệu có mối quan hệ với nhau. Những mối 
 quan hệ này biểu diễn cho sự quan hệ giữa các đối tượng trong thế giới thực. Về 
 mặt dữ liệu, những mối quan hệ được đảm bảo thông qua việc đòi hỏi sự có mặt 
 của một giá trị dữ 
 liệu trong bảng này phải phụ thuộc vào sự tồn tại của giá trị dữ liệu đó ở 
 trong một bảng khác. 
 Ràng buộc FOREIGN KEY được sử dụng trong định nghĩa bảng dữ liệu 
 nhằm tạo nên mối quan hệ giữa các bảng trong một cơ sở dữ liệu. Một hay một 
 tập các cột trong một bảng được gọi là khoá ngoại, tức là có ràng buộc 
 FOREIGN KEY, nếu giá trị của nó được xác định từ khoá chính (PRIMARY 
 KEY) hoặc khoá phụ (UNIQUE) của một bảng dữ liệu khác. 
 Hình dưới đây cho ta thấy được mối quan hệ giữa 3 bảng DIEMTHI, 
 SINHVIEN và MONHOC. Trong bảng DIEMTHI, MASV là khoá ngoài tham 
 22 
chiếu đến cột MASV của bảng SINHVIEN và MAMONHOC là khoá ngoài tham 
chiếu đến cột MAMONHOC của bảng MONHOC. 
 Với mối quan hệ được tạo ra như hình trên, hệ quản trị cơ sở dữ liệu sẽ 
kiểm tra tính hợp lệ của mỗi bản ghi trong bảng DIEMTHI mỗi khi được bổ sung 
hay cập nhật. Một bản ghi bất kỳ trong bảng DIEMTHI chỉ hợp lệ (đảm bảo ràng 
buộc FOREIGN KEY) nếu giá trị của cột MASV phải tồn tại trong một bản ghi 
nào đó của bảng SINHVIEN và giá trị của cột MAMONHOC phải tồn tại trong 
một bản ghi nào đó của bảng MONHOC. 
 Ràng buộc FOREIGN KEY được định nghĩa theo cú pháp dưới đây: 
 [CONSTRAINT tên_ràng_buộc] 
 FOREIGN KEY [(danh_sách_cột)] 
 REFERENCES tên_bảng_tham_chiếu(danh_sách_cột_tham_chiếu) 
 [ON DELETE CASCADE | NO ACTION | SET NULL | SET 
DEFAULT] 
 [ON UPDATE CASCADE | NO ACTION | SET NULL | SET 
 23 
DEFAULT] 
 Việc định nghĩa một ràng buộc FOREIGN KEY bao gồm các yếu tố 
sau: 
 − Tên cột hoặc danh sách cột của bảng được định nghĩa tham gia vào 
khoá ngoài. 
 − Tên của bảng được tham chiếu bởi khoá ngoài và danh sách các cột 
được tham chiếu đến trong bảng tham chiếu. 
 − Cách thức xử lý đối với các bản ghi trong bảng được định nghĩa 
trong trường hợp các bản ghi được tham chiếu trong bảng tham chiếu bị xoá 
(ON DELETE) hay cập nhật (ON UPDATE). SQL chuẩn đưa ra 4 cách xử lý: 
 CASCADE: Tự động xoá (cập nhật) nếu bản ghi được tham chiếu bị xoá 
(cập nhật). 
 NO ACTION: (Mặc định) Nếu bản ghi trong bảng tham chiếu đang
 được tham chiếu bởi một bản ghi bất kỳ trong bảng được định nghĩa thì bàn 
ghi đó không được phép xoá hoặc cập nhật (đối với cột được tham chiếu). 
 SET NULL: Cập nhật lại khoá ngoài của bản ghi thành giá trị NULL (nếu 
cột cho phép nhận giá trị NULL). 
 SET DEFAULT: Cập nhật lại khoá ngoài của bản ghi nhận giá trị mặc 
định (nếu cột có qui định giá trị mặc định). 
 Ví dụ: Câu lệnh dưới đây định nghĩa bảng DIEMTHI với hai khoá ngoài trên 
cột MASV và cột MAMONHOC (giả sử hai bảng SINHVIEN và MONHOC đã được 
định nghĩa) 
 CREATE TABLE diemthi 
 ( 
 mamonhoc NVARCHAR(10) NOT NULL , 
 masv NVARCHAR(10) NOT NULL , 
 diemlan1 NUMERIC(4, 2), 
 diemlan2 NUMERIC(4, 2), 
 CONSTRAINT pk_diemthi PRIMARY KEY(mamonhoc,masv), 
 CONSTRAINT fk_diemthi_mamonhoc 
 FOREIGN KEY(mamonhoc) 
 24 
 REFERENCES monhoc(mamonhoc) 
 ON DELETE CASCADE 
 ON UPDATE CASCADE, 
 CONSTRAINT fk_diemthi_masv 
 FOREIGN KEY(masv) 
 REFERENCES sinhvien(masv) 
 ON DELETE CASCADE 
 ON UPDATE CASCADE 
 ) 
 Lưu ý: 
 − Cột được tham chiếu trong bảng tham chiếu phải là khoá chính (hoặc là 
 khoá phụ). 
 − Cột được tham chiếu phải có cùng kiểu dữ liệu và độ dài với cột 
 tương ứng trong khóa ngoài. 
Bảng tham chiếu phải được định nghĩa trước. Do đó, nếu các bảng có mối quan hệ 
vòng, ta có thể không thể định nghĩa ràng buộc FOREIGN KEY ngay trong câu 
lệnh CREATE TABLE mà phải định nghĩa thông qua lệnh ALTER 
 3.3. Tạo ràng buộc Default 
 Câu lệnh dưới đây định nghĩa bảng NHANVIEN với các trường MANV 
 (mã nhân viên), HOTEN (họ và tên), NGAYSINH (ngày sinh của nhân viên), 
 DIENTHOAI (điện thoại) và HSLUONG (hệ số lương) 
 CREATE TABLE nhanvien 
 ( 
 manv NVARCHAR(10) NOT NULL, 
 hoten NVARCHAR(50) NOT NULL, 
 ngaysinh DATETIME NULL 
 dienthoai NVARCHAR(10) NULL, 
 hsluong DECIMAL(3,2) DEFAULT (1.92) 
 ) 
 Trong câu lệnh trên, trường MANV và HOTEN của bảng NHANVIEN 
 25 
 không được NULL (tức là bắt buộc phải có dữ liệu), trường NGAYSINH và 
 DIENTHOAI sẽ nhận giá trị NULL nếu ta không nhập dữ liệu cho chúng còn 
 trường HSLUONG sẽ nhận giá trị mặc định là 1.92 nếu không được nhập dữ liệu. 
 Nếu ta thực hiện các câu lệnh dưới đây sau khi thực hiện câu lệnh trên để 
 bổ sung dữ liệu cho bảng NHANVIEN 
 INSERT INTO nhanvien 
 VALUES('NV01','Le Van A','2/4/75','886963',2.14) 
 INSERT INTO nhanvien(manv,hoten) 
 VALUES('NV02','Mai Thi B') 
 INSERT INTO nhanvien(manv,hoten,dienthoai) 
 VALUES('NV03','Tran Thi C','849290') 
 Ta sẽ có được dữ liệu trong bảng NHANVIEN như sau: 
3.4. Tạo ràng buộc Unique 
 Trên một bảng chỉ có thể có nhiều nhất một khóa chính nhưng có thể có 
 nhiều cột hoặc tập các cột có tính chất như khoá chính, tức là giá trị của chúng là 
 duy nhất trong bảng. Tập một hoặc nhiều cột có giá trị duy nhất và không được 
 chọn làm khoá chính được gọi là khoá phụ (khoá dự tuyển) của bảng. Như vậy, 
 một bảng chỉ có nhiều nhất một khoá chính nhưng có thể có nhiều khoá phụ. 
 Ràng buộc UNIQUE được sử dụng trong câu lệnh CREATE TABLE để 
 định nghĩa khoá phụ cho bảng và được khai báo theo cú pháp sau đây: 
 [CONSTRAINT tên_ràng_buộc] 
 UNIQUE [(danh_sách_cột)] 
 Ví dụ: Giả sử ta cần định nghĩa bảng LOP với khoá chính là cột MALOP 
 nhưng đồng thời lại không cho phép các lớp khác nhau được trùng tên lớp với 
 nhau, ta sử dụng câu lệnh như sau: 
 CREATE TABLE lop 
 ( 
 malop NVARCHAR(10) NOT NULL, 
 26 
 tenlop NVARCHAR(30) NOT NULL, 
 khoa SMALLINT NULL, 
 hedaotao NVARCHAR(25) NULL, 
 namnhaphoc INT 
 makhoa NVARCHAR(5), 
 CONSTRAINT pk_lop PRIMARY KEY (malop), 
 CONSTRAINT unique_lop_tenlop UNIQUE(tenlop) 
 ) 
3.5. Tạo ràng buộc Check 
 Ràng buộc CHECK được sử dụng nhằm chỉ định điều kiện hợp lệ đối với 
 dữ liệu. Mỗi khi có sự thay đổi dữ liệu trên bảng (INSERT, UPDATE), những 
 ràng buộc này sẽ được sử dụng nhằm kiểm tra xem dữ liệu mới có hợp lệ hay 
 không. 
 Ràng buộc CHECK được khai báo theo cú pháp như sau: 
 [CONSTRAINT tên_ràng_buộc] 
 CHECK (điều_kiện) 
 Trong đó, điều_kiện là một biểu thức logic tác động lên cột nhằm qui định 
 giá trị hoặc khuôn dạng dữ liệu được cho phép. Trên mỗi một bảng cũng như trên 
 mỗi một cột có thể có nhiều ràng buộc CHECK. 
 Ví dụ: Câu lệnh dưới đây tạo bảng DIEMTOTNGHIEP trong đó qui định 
 giá trị của cột DIEMVAN và DIEMTOAN phải lớn hơn hoặc bằng 0 và nhỏ hơn 
 hoặc bằng 10. 
 CREATE TABLE diemtotnghiep 
 ( 
 hoten NVARCHAR(30) NOT NULL, 
 ngaysinh DATETIME, 
 diemvan DECIMAL(4,2) 
 CONSTRAINT chk_diemvan 
 CHECK(diemvan>=0 AND diemvan<=10), 
 27 
 diemtoan DECIMAL(4,2) 
 CONSTRAINT chk_diemtoan 
 CHECK(diemtoan>=0 AND diemtoan<=10), 
 ) 
 Như vậy, với định nghĩa như trên của bảng DIEMTOTNGHIEP. 
 các câu lệnh dưới đây là hợp lệ: 
 INSERT INTO diemtotnghiep(hoten,diemvan,diemtoan) 
 VALUES('Le Thanh Hoang',9.5,2.5) 
 INSERT INTO diemtotnghiep(hoten,diemvan) 
 VALUES('Hoang Thi Mai',2.5) 
 Còn câu lệnh dưới đây là không hợp lệ: 
 INSERT INTO diemtotnghiep(hoten,diemvan,diemtoan) 
 VALUES('Tran Van Hanh',6,10.5) 
 do cột DIEMTOAN nhận giá trị 10.5 không thoả mãn điều kiện của ràng 
buộc 
 Trong ví dụ trên, các ràng buôc được chỉ định ở phần khai báo của 
mỗi cột. Thay vì chỉ định ràng buộc trên mỗi cột, ta có thể chỉ định các ràng buộc 
ở mức bảng bằng cách khai báo các ràng buộc sau khi đã khai báo xong các cột 
trong bảng. 
 Ví dụ: Câu lệnh CREATE TABLE lop 
 ( 
 malop NVARCHAR(10) NOT NULL , 
 tenlop NVARCHAR(30) NOT NULL , 
 khoa SMALLINT NULL , 
 hedaotao NVARCHAR(25) NULL 
 CONSTRAINT chk_lop_hedaotao 
 CHECK (hedaotao IN ('chính quy','tại chức')), 
 namnhaphoc INT NULL 
 CONSTRAINT chk_lop_namnhaphoc 
 28 
 CHECK (namnhaphoc<=YEAR(GETDATE())), 
 makhoa NVARCHAR(5) 
 ) 
 có thể được viết lại như sau: 
 CREATE TABLE lop 
 ( 
 malop NVARCHAR(10) NOT NULL , 
 tenlop NVARCHAR(30) NOT NULL , 
 khoa SMALLINT NULL , 
 hedaotao NVARCHAR(25) NULL 
 namnhaphoc INT 
 makhoa NVARCHAR(5), 
 CONSTRAINT chk_lop 
 CHECK (namnhaphoc<=YEAR(GETDATE()) AND 
 hedaotao IN ('chính quy','tại chức')) 
 ) 
4. Sửa, xóa bảng dữ liệu 
4.1. Sửa bảng dữ liệu 
 Một bảng sau khi đã được định nghĩa bằng câu lệnh CREATE TABLE có 
 thể được sửa đổi thông qua câu lệnh ALTER TABLE. Câu lệnh này cho phép 
 chúng ta thực hiện được các thao tác sau: 
 − Bổ sung một cột vào bảng. 
 − Xoá một cột khỏi bảng. 
 − Thay đổi định nghĩa của một cột trong bảng. 
 − Xoá bỏ hoặc bổ sung các ràng buộc cho bảng 
 Cú pháp của câu lệnh ALTER TABLE như sau: 
 ALTER TABLE tên_bảng 
 ADD định_nghĩa_cột | 
 29 
 ALTER COLUMN tên_cột kiểu_dữ_liêu [NULL | NOT NULL] | 
 DROP COLUMN tên_cột | 
 ADD CONSTRAINT tên_ràng_buộc định_nghĩa_ràng_buộc | 
 DROP CONSTRAINT tên_ràng_buộc 
 Ví dụ: Các ví dụ dưới đây minh hoạ cho ta cách sử dụng câu lệnh ALTER 
TABLE trong các trường hợp. 
 Giả sử ta có hai bảng DONVI và NHANVIEN với định nghĩa như sau: 
 CREATE TABLE donvi 
 ( 
 madv INT NOT NULL PRIMARY KEY, 
 tendv NVARCHAR(30) NOT NULL 
 ) 
 CREATE TABLE nhanvien 
 ( 
 manv NVARCHAR(10) NOT NULL, 
 hoten NVARCHAR(30) NOT NULL, 
 ngaysinh DATETIME, 
 diachi CHAR(30) NOT NULL 
 ) 
 Bổ sung vào bảng NHANVIEN cột DIENTHOAI với ràng buộc CHECK 
nhằm qui định điện thoại của nhân viên là một chuỗi 6 chữ số: 
 ALTER TABLE nhanvien 
 ADD 
 dienthoai NVARCHAR(6) 
 CONSTRAINT chk_nhanvien_dienthoai 
 CHECK (dienthoai LIKE '[0-9][0-9][0-9][0-9][0-9][0-9]') 
 Bổ sung thêm cột MADV vào bảng NHANVIEN: 
 ALTER TABLE nhanvien 
 ADD 
 30 
 madv INT NULL 
 Định nghĩa lại kiểu dữ liệu của cột DIACHI trong bảng NHANVIEN và 
cho phép cột 
 này chấp nhận giá trị NULL: 
 ALTER TABLE nhanvien 
 ALTER COLUMN diachi NVARCHAR(100) NULL 
 Xoá cột ngày sinh khỏi bảng NHANVIEN: 
 ALTER TABLE nhanvien 
 DROP COLUMN ngaysinh 
 Định nghĩa khoá chính (ràng buộc PRIMARY KEY) cho bảng 
NHANVIEN là cột MANV: 
 ALTER TABLE nhanvien 
 ADD 
 CONSTRAINT pk_nhanvien PRIMARY KEY(manv) 
 Định nghĩa khoá ngoài cho bảng NHANVIEN trên cột MADV tham chiếu
 đến cột MADV của bảng DONVI: 
 ALTER TABLE nhanvien 
 ADD 
 CONSTRAINT fk_nhanvien_madv 
 FOREIGN KEY(madv) REFERENCES donvi(madv) 
 ON DELETE CASCADE 
 ON UPDATE CASCADE 
 Xoá bỏ ràng buộc kiểm tra số điện thoại của nhân viên 
 ALTER TABLE nhanvien 
 DROP CONSTRAINT CHK_NHANVIEN_DIENTHOAI 
 Lưu ý: 
 − Nếu bổ sung thêm một cột vào bảng và trong bảng đã có ít nhất một 
bản ghi thì cột mới cần bổ sung phải cho phép chấp nhận giá trị NULL hoặc phải 
có giá trị mặc định. 
 − Muốn xoá một cột đang được ràng buộc bởi một ràng buộc hoặc 
 31 
 đang được tham chiếu bởi một khoá ngoài, ta phải xoá ràng buộc hoặc khoá 
 ngoài trước sao cho trên cột không còn bất kỳ một ràng buộc và không còn được 
 tham chiếu bởi bất kỳ khoá ngoài nào. 
 − Nếu bổ sung thêm ràng buộc cho một bảng đã có dữ liệu và ràng 
 buộc cần bổ sung không được thoả mãn bởi các bản ghi đã có trong bảng thì câu 
 lệnh ALTER TABLE không thực hiện được. 
4.2. Xóa bảng dữ liệu 
 Khi một bảng không còn cần thiết , ta có thể xoá nó ra khỏi cơ sở dữ liệu 
 bằng câu lệnh DROP TABLE. Câu lệnh này cũng đồng thời xoá tất cả những 
 ràng buộc, chỉ mục, trigger liên quan đến bảng đó. 
 Câu lệnh có cú pháp như sau: 
 DROP TABLE tên_bảng 
 Trong các hệ quản trị cơ sở dữ liệu, khi đã xoá một bảng bằng lệnh 
 DROP TABLE, ta không thể khôi phục lại bảng cũng như dữ liệu của nó. Do đó, 
 cần phải cẩn thận khi sử dụng câu lệnh này. 
 Câu lệnh DROP TABLE không thể thực hiện được nếu bảng cần xoá đang 
 được tham chiếu bởi một ràng buộc FOREIGN KEY. Trong trường hợp này, 
 ràng buộc FOREIGN KEY đang tham chiếu hoặc bảng đang tham chiếu đến 
 bảng cần xoá phải được xoá trước. 
 Khi một bảng bị xoá, tất cả các ràng buộc, chỉ mục và trigger liên quan đến 
 bảng cũng đồng thời bị xóa theo. Do đó, nếu ta tạo lại bảng thì cũng phải tạo lại 
 các đối tượng này. 
 Ví dụ: Giả sử cột MADV trong bảng DONVI đang được tham chiếu bởi 
 khoá ngoài fk_nhanvien_madv trong bảng NHANVIEN. Để xoá bảng DONVI ra 
 khỏi cơ sở dữ liệu, ta thực hiện hai câu lệnh sau: 
 Xoá bỏ ràng buộc fk_nhanvien_madv khỏi bảng NHANVIEN: 
 ALTER TABLE nhanvien 
 DROP CONSTRAINT fk_nhanvien_madv 
 Xoá bảng DONVI: 
 DROP TABLE donvi 
 32 
33 

File đính kèm:

  • pdfgiao_trinh_quan_tri_sql_server_phan_1.pdf