Nhưđó núi đến ở chương 1, bảng dữ liệu là cấu trỳc cú vai trũ quan trọng nhất trong cơ sở dữ liệu quan hệ. Toàn bộ dữ liệu của cơ sở dữ liệu được tổ chức trong cỏc bảng, những bảng này cú thể là những bảng hệ thống được tạo ra khi tạo lập cơ sở dữ liệu, và cũng cú thể là những bảng do người sử dụng định nghĩa.
Hỡnh 3.1 Bảng trong cơ sở dữ liệu quan hệ
Trong cỏc bảng, dữ liệu được tổ chức dưới dạng cỏc dũng và cột. Mỗi một dũng là một bản ghi duy nhất trong bảng và mỗi một cột là một trường. Cỏc bảng trong cơ sở
dữ liệu được sử dụng để biểu diễn thụng tin, lưu giữ dữ liệu về cỏc đối tượng trong thế giới thực và/hoặc mối quan hệ giữa cỏc đối tượng. Bảng trong hỡnh 3.1 bao gồm 10 bản ghi và 4 trường là MAKHOA, TENKHOA, DIENTHOAI và TRUONGKHOA.
Cõu lệnh CREATE TABLE được sử dụng để định nghĩa một bảng dữ liệu mới trong cơ sở dữ liệu. Khi định nghĩa một bảng dữ liệu mới, ta cần phải xỏc định được cỏc yờu cầu sau đõy:
• Bảng mới được tạo ra sử dụng với mục đớch gỡ và cú vai trũ như thế nào trong cơ sở dữ liệu.
• Cấu trỳc của bảng bao gồm những trường (cột) nào, mỗi một trường cú ý nghĩa như thế nào trong việc biểu diễn dữ liệu, kiểu dữ liệu của mỗi trường là gỡ và trường đú cú cho phộp nhận giỏ trị NULL hay khụng.
• Những trường nào sẽ tham gia vào khúa chớnh của bảng. Bảng cú quan hệ với những bảng khỏc hay khụng và nếu cú thỡ quan hệ như thế nào.
• Trờn cỏc trường của bảng cú tồn tại những ràng buộc về khuụn dạng, điều kiện hợp lệ của dữ liệu hay khụng; nếu cú thỡ sử dụng ởđõu và như thế nào. Cõu lệnh CREATE TABLE cú cỳ phỏp như sau
CREATE TABLE tờn_bảng ( tờn_cột thuộc_tớnh_cột cỏc_ràng_buộc [,... ,tờn_cột_n thuộc_tớnh_cột_n cỏc_ràng_buộc_cột_n] [,cỏc_ràng_buộc_trờn_bảng] ) Trong đú:
tờn_bảng Tờn của bảng cần tạo. Tờn phải tuõn theo qui tắc định danh và khụng được vượt quỏ 128 ký tự.
tờn_cột Là tờn của cột (trường) cần định nghĩa, tờn cột phải tuõn theo qui tắc định danh và khụng được trựng nhau trong mỗi một bảng. Mỗi một bảng phải cú ớt nhất một cột. Nếu bảng cú nhiều cột thỡ định nghĩa của cỏc cột (tờn cột, thuộc tớnh và cỏc ràng buộc) phải phõn cỏch nhau bởi dấu phẩy.
thuộc_tớnh_cột Mỗi một cột trong một bảng ngoài tờn cột cũn cú cỏc thuộc tớnh bao gồm:
• Kiểu dữ liệu của cột. Đõy là thuộc tớnh bắt buộc phải cú đối với mỗi cột.
• Giỏ trị mặc định của cột: là giỏ trị được tự động gỏn cho cột nếu như người sử dụng khụng nhập dữ liệu
cho cột một cỏch tường minh. Mỗi một cột chỉ cú thể cú nhiều nhất một giỏ trị mặc định.
• Cột cú tớnh chất IDENTITY hay khụng? tức là giỏ trị của cột cú được tự động tăng mỗi khi cú bản ghi mới được bổ sung hay khụng. Tớnh chất này chỉ cú thể sử dụng đối với cỏc trường kiểu số.
• Cột cú chấp nhận giỏ trị NULL hay khụng
Vớ dụ 3.1: Khai bỏo dưới đõy định nghĩa cột STT cú kiểu dữ liệu là int và cột cú tớnh chất IDENTITY:
stt INT IDENTITY
hay định nghĩa cột NGAY cú kiểu datetime và khụng cho phộp
chấp nhận giỏ trị NULL:
ngay DATETIME NOT NULL
và định nghĩa cột SOLUONG kiểu int và cú giỏ trị mặc định là
0:
soluong INT DEFAULT (0)
cỏc_ràng_buộc Cỏc ràng buộc được sử dụng trờn mỗi cột hoặc trờn bảng nhằm cỏc mục đớch sau:
• Quy định khuụn dạng hay giỏ trị dữ liệu được cho phộp trờn cột (chẳng hạn qui định tuổi của một học sinh phải lớn hơn 6 và nhỏ hơn 20, số điện thoại phải là một chuỗi bao gồm 6 chữ số,...). Những ràng buộc kiểu này được gọi là ràng buộc CHECK
• Đảm bảo tớnh toàn vẹn dữ liệu trong một bảng và toàn vẹn tham chiếu giữa cỏc bảng trong cơ sở dữ liệu. Những loại ràng buộc này nhằm đảm bảo tớnh đựng của dữ liệu như: số chứng minh nhõn dõn của mỗi một người phải duy nhất, nếu sinh viờn học một lớp nào đú thỡ lớp đú phải tồn tại,... Liờn quan đến những loại ràng buộc này bao gồm cỏc ràng buộc PRIMARY KEY (khoỏ chớnh), UNIQUE (khúa dự tuyển) và FOREIGN KEY (khoỏ ngoài)
Cỏc loại ràng buộc này sẽ được trỡnh bày chi tiết hơn ở phần sau.
Vớ dụ 3.2: 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 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.1.1 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ụ 3.3: 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), 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ụ 3.4: 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
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 NULL , makhoa NVARCHAR(5),
CONSTRAINT chk_lop
CHECK (namnhaphoc<=YEAR(GETDATE()) AND
hedaotao IN ('chớnh quy','tại chức')) )
3.1.2 Ràng buộc 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 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ụ 3.5: 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')
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ụ 3.6: 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.
3.1.3 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ụ 3.7: 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, tenlop NVARCHAR(30) NOT NULL, khoa SMALLINT NULL, hedaotao NVARCHAR(25) NULL, namnhaphoc INT NULL, makhoa NVARCHAR(5),
CONSTRAINT pk_lop PRIMARY KEY (malop),
CONSTRAINT unique_lop_tenlop UNIQUE(tenlop) )
3.1.4 Ràng buộc 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 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.
Hỡnh 3.2 Mối quan hệ giữa cỏc bảng
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 DEFAULT]
• 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ụ 3.8: 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) 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 TABLE.
3.2 Sửa đổi định nghĩa bảng
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 |
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ụ 3.9: 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
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
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 đ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