CHƯƠNG 4 : NGÔN NGỮ TRUY VẤN SQL
4.2. Các lệnh khai báo cấu trúc cơ sở dữ liệu
4.2.1. Lệnh tạo cấu trúc bảng
Câu lệnh tạo bảng có cú pháp như sau:
CREATE TABLE <tên_bảng>
(<tên cột > <kiểu dữ liệu > [null | not null],
[constraint <tên ràng bu ộc khóa chính> primary key (khóa chính)],
[constraint <tên ràng buộc khóa ngoại> foreign key (khóa ngọai) references <bảng>])
Trong đó:
– <tên_bảng>: là chuỗi ký tự bất kỳ khơng có ký hiệu trống và khơng trùng v ới các từ khóa.
– <tên_cột>: là chuỗi ký tự bất kỳ không chứa ký hiệu trống, trong một bảng tên cột là duy nhất.Thứ tự các cột trong bảng là không quan tr ọng.
– not null: không l ấy giá trị rỗng (null), thuộc tính khóa chính bị ràng buộc not null.
– Khi muốn tạo ngay khóa chính và khóa ng oại từ câu lệnh tạo bảng ta có thể sử dụng từ khóa Primary key (<khóa chính>) để khai báo khóa chính của bảng. Dùng Foreign key (<khóa ng oại>) để khai báo khóa ngoại cho bảng.
– Kiểu dữ liệu (Data type): Qui định kiểu dữ liệu mà cột sẽ lưu trữ bên trong bảng. Sau đây là bảng mô tả các kiểu dữ liệu cơ sở trong Microsoft SQL Server:
Ký hiệu Kiểu dữ Số Diễn giải
liệu byte
Bit Integer 1 Kiểu dữ liệu bit có giá trị 0 hay 1. 0 là FALSE
Kiểu dữ liệu số nguyên có giá tr ị từ -263 đến
BigInt Integer 8 263 – 1, thơng thường khi cần lưu trữ dữ liệu có
dạng số nguyên thật lớn thì nên dùng kiểu dữ liệu bigint
Kiểu dữ liệu số nguyên có giá tr ị từ
Int Integer 4 n-2,147,483,648 đến 2,147,483,647, thông
thường khi cần lưu trữ dữ liệu dạng số ngun khơng l ớn lắm thì ta nên dùng kiểu dữ liệu int. Kiểu dữ liệu số nguyên có giá tr ị từ -32,768 đến
SmallInt Integer 2 32,767, thông thường khi cần lưu trữ dữ liệu
dạng số nguyên vừa và nhỏ thì ta nên dùng kiểu dữ liệu smallint.
Kiểu dữ liệu số nguyên có giá tr ị từ 0 đến 255.
TinyInt Integer 1 thông thường khi cần lưu trữ dữ liệu dạng số
nguyên nhỏ thì ta nên dùng kiểu dữ liệu tinyint.
Decimal hoặc Decimal Varies Kiểu dữ liệu số từ -1038
– 1 đến 1038 – 1
Numeric Numeric
Money Money 8 Kiểu dữ liệu từ -263 đến 263 thêm vào đó 4 số lẻ
SmallMoney Money 4 Kiểu dữ liệu tiền từ -214,748.3648 đến
214,748.3647
Float Approxima Varies Kiểu dữ liệu số từ: -1.79E+308 đến 1.79E+308
te Numeric
Date/ Kiểu dữ liệu ngày tháng xu ất hiện đầu tiên trong
DateTime Time 8 SQL server 7.0 cho phép có giá tr ị null, có giá
trị từ January 1, 1753 đến December 31, 9999
Date/ Kiểu dữ liệu ngày tháng xu ất hiện đầu tiên trong
4 SQL server 7.0 cho phép có giá tr ị null, có giá
SmallDatetime Time
trị từ January 1, 1900 đến December 31, 2079
Kiểu số đặc Con trỏ đến cursor, trong khi trỏ đến chúng
Cursor 1 nhận một byte, khả năng trỏ đến phụ thuộc vào
biệt số lượng mẫu tin trong bảng
Unique Số đặc biệt 16 Nhận dạng tồn cục duy nhất theo khơng gian
Identity (binary) và thời gian
Char Character Varies Kiểu dữ liệu ký tự Non – Unicode với chiều dài
cố định, chiều dài cho phép là 8000 ký t ự.
Varchar Character Varies Kiểu dữ liệu ký tự Non – Unicode với chiều dài
biến đổi, chiều dài cho phép là 8000 ký t ự.
Nchar Unicode Varies Kiểu dữ liệu ký tự Unicode với chiều dài cố
Nvarchar Unicode Varies Kiểu dữ liệu ký tự Unicode với chiều dài biến đổi, chiều dài cho phép là 4000 ký t ự.
Kiểu dữ liệu ký tự Non – Unicode với không
Text Character Varies gian chứa 8 kb số trang, chiều dài cho phép là
2,147,483,647 ký t ự.
Kiểu dữ liệu ký tự Non – Unicode với không
Ntext Unicode Varies gian chứa 8kb số trang, chiều dài biến đổi cho
phép 1,073,741,823 ký t ự.
Binary Binary Varies Dữ liệu nhị phân có chiều dài cố định tối đa
8000 bytes
XML là một kiểu dữ liệu được sử dụng để lưu
XML XML trữ các tài liệu XML. Mỗi dịng d ữ liệu có thể
lưu trữ lên đến 2GB dữ liệu XML. Ví dụ 4.1: Viết lệnh tạo các bảng
CREATE TABLE KHOA
( MAKHOA char(2) not null,
TENKHOA nvarchar(50) not null,
constraint PK_KHOA primary key (MA_KHOA) )
CREATE TABLE MONHOC
( MAMH char(8) not null,
TENMH nvarchar(50) not null, SOTC INT,
constraint PK_MONHOC primary key (MA_MH) )
CREATE TABLE LOP
( MALOP char(8) not null,
TENLOP nvarchar(50) not null, MAKHOA char(2) not null,
constraint PK_LOP primary key (MALOP),
constraint FK_LOP_KHOA foreign key(MAKHOA) references KHOA(MAKHOA)
)
CREATE TABLE SINHVIEN
( MASV char(10) not null,
HOTEN nvarchar(30) not null,
DCHI nvarchar(30), GIOITINH nvarchar(5), MALOP char(8),
constraint PK_SINHVIEN primary key (MASV),
constraint FK_SINHVIEN_LOP foreign key(MALOP) references LOP(MALOP)
)
CREATE TABLE KETQUA
( MASV char(10) not null,
MAMH char(8) not null, LANTHI char(1) not null, DIEM int,
constraint PK_KETQUA primary key (MASV, MAMH, LANTHI), constraint FK_KETQUA_SINHVIEN foreign key(MASV) references
SINHVIEN(MASV),
constraint FK_KETQUA_MONHOC foreign key(MAMH) references MONHOC(MAMH)
)
4.2.2. Lệnh hủy bỏ một bảng
Lệnh hủy bỏ bảng có chức năng hủy bỏ cấu trúc và tồn bộ dữ liệu có trong bảng Cú pháp : DROP TABLE <tên bảng>
Ví dụ 4.2: DROP TABLE KETQUA DROP TABLE LOP
4.2.3. Lệnh sửa đổi trúc bảng
Lệnh sửa đổi cấu trúc b ảng dùng để: – Thêm cột vào bảng:
– Hủy bỏ cột của bảng
ALTER TABLE <tên_bảng> DROP COLUMN <tên_cột> – Mở rộng độ dài của cột
ALTER TABLE <Tên_bảng> ADD CONSTRAINT <Ten_RBTV> <RBTV> – Xóa ràng bu ộc tồn vẹn trên bảng
– Thêm cột ghi chú vào bảng SINHVIEN ALTER TABLE SINHVIEN
add ghichu nvarchar(100)
– Thêm khóa chính cho bảng KHOAHOC ALTER TABLE KHOA
add primary key (makhoa) hoặc
ALTER TABLE KHOA
add constraint PK_KHOA primary key (MAKHOA) – Thêm khóa ngo ại cho bảng LOPHOC
ALTER TABLE LOP
add foreign key (makhoa) references KHOA(makhoa)
hoặc add constraint FK_LH_KH foreign key (makhoa) references KHOA(makhoa)
– Xóa ràng bu ộc FK_DT_KH của LOPHOC ALTER TABLE LOPHOC
drop constraint FK_LH_KH