Lý Thuyết SQL
Câu lệnh tạo bảng :
CREATE TABLE TableName
column_name data_type [<column_constraint>]
| computer_column_name AS <expression> [PERSISTED]
| <table_constraint> [ , ...n]
[ON { file_group | PRIMARY } ]
a) Các loại ràng buộc trên một cột a) Các loại ràng buộc trên một cột
Được viết ngay sau lời khai báo cột dữ liệu
Cú pháp:
[CONSTRAINT constraint_name ]
NULL
| NOT NULL
| PRIMARY KEY
| UNIQUE
| REFERENCES ref_table [(ref_column)]
[ON DELETE {CASCADE | NO ACTION | SET NULL | SET DEFAULT } ]
[ON UPDATE {CASCADE | NO ACTION | SET NULL | SET DEFAULT } ]
| CHECK (logical_expression)
| DEFAULT <Exp>
Ví dụ: Khai báo ràng buộc trên 1 cột Ví dụ: Khai báo ràng buộc trên 1 cột
CREATE TABLE SanPham
( MaSP Smallint Primary Key ,
TenSP varchar(30) Not Null Unique,
DonGia Money Default 0 Check (DonGia >=0),
SoTon Real Default 0 Check (SoTon >=0),
MaLoaiSP Smallint Not Null References LoaiSP(MaLoaiSP)
On Delete No Action
On Update Cascade
Ví dụ: Đặt tên ràng buộc trên một cột Ví dụ: Đặt tên ràng buộc trên một cột
CREATE TABLE SanPham
( MaSP SmallInt Constraint pkMaSP Primary Key ,
TenSP varchar(30) Constraint uniTenSP Unique ,
DonGia Money Constraint chkDonGia Check (DonGia >=0) ,
SoTon Real Constraint dfSoTon Default 0 ,
MaLoaiSP SmallInt Constraint nnMaLoaiSP Not Null
Constraint fkMaLSP References LoaiSP (MaLoaiSP)
On Delete No Action
On Update Cascade
b- Các loại ràng buộc trên nhiều cột b- Các loại ràng buộc trên nhiều cột
Được viết thành một mệnh đề riêng biệt
Cú pháp
[CONSTRAINT constraint_name ]
PRIMARY KEY ( têncột [ ASC | DESC ] [ ,...n ] )
| UNIQUE ( têncột [ ASC | DESC ] [ ,...n ] )
| FOREIGN KEY ( têncột [,...] )
REFERENCES ref_table [( <ref_columns> )]
[ ON DELETE { CASCADE | NO ACTION | SET NULL | SET DEFAULT } ]
[ ON UPDATE { CASCADE | NO ACTION | SET NULL | SET DEFAULT} ]
| CHECK ( logical_expression )
Ví dụ - Khai báo khóa chính gồm nhiều cột Ví dụ - Khai báo khóa chính gồm nhiều cột
CREATE TABLE CTDH
( MaDH Int Not Null Reference DDH,
MaSP SmallInt Not Null Reference SanPham,
SoLuong float Default 0 Check (SoLuong > 0),
DGBan Money Default 0 Check (DonGia > 0),
ThanhTien As SL * DGBan,
Constraint pk_CTHD Primary Key (MaDH, MaSP)
Ví dụ - Khai báo ràng buộc liên thuộc tính Ví dụ - Khai báo ràng buộc liên thuộc tính
CREATE TABLE DDH
( MADH SmallInt Constraint pkDDH Primary Key ,
NgayDH DateTime Default GetDate( ) Not Null ,
NgayYCGiao DateTime DEFAULT GetDate( ) Not Null ,
Constraint chkNgayYCGiao Check (NgayDH <= NgayYCGiao) ,
MaNCC SmallInt Not Null
Constraint fk_DHH_NCC References NHACC(MaNCC)
1.4- Khai báo cột tự động điền giá trị phân biệt 1.4- Khai báo cột tự động điền giá trị phân biệt
Có các cách sau:
• Dùng kiểu Timestamp
• Dùng thuộc tính IDENTITY [(seed, increment )] : điền tự
động một số nguyên cho mẫu tin mới. Người dùng không
thể nhập dữ liệu cho cột có thuộc tính này. Mỗi table chỉ có
một cột khai báo thuộc tính Identity.
• Dùng kiểu UniqueIdentifier với chỉ định giá trị Default từ
hàm NEWID() hay hàm NEWSEQUENTIALID() để nhận giá trị
phân biệt toàn cầu.
Ví dụ: Tạo cột có giá trị phân biệt Ví dụ: Tạo cột có giá trị phân biệt
CREATE TABLE NhaCungCap
MaNCC int IDENTITY(1, 1) PRIMARY KEY,
TenNCC char(30) NOT NULL
CREATE TABLE KhachHang
MaKH uniqueidentifier DEFAULT NEWID() PRIMARY KEY,
TenKH char(30) NOT NULL
IV- THAY ĐỔI CẤU TRÚC - RÀNG BUỘC IV- THAY ĐỔI CẤU TRÚC - RÀNG BUỘC
• Hiệu chỉnh, thêm, xóa cột và ràng buột
• Kiểm tra hay ngưng kiểm tra ràng buộc
1. Bằng Lệnh ALTER TABLE
2. Sử dụng Object Explorer
1- Sử dụng lệnh ALTER TABLE 1- Sử dụng lệnh ALTER TABLE
Cú pháp chung:
ALTER TABLE table_name
ALTER COLUMN col_name data_type[(p [, s])]
[NULL | NOT NULL ]
| ADD <Thông tin cột / ràng buộc mới>
| DROP CONSTRAINT constraint_name
| DROP COLUMN col_name [,...n]
| {CHECK | NOCHECK}
CONSTRAINT { ALL | constraint_name[,...n] }
1.1- Đổi kiểu dữ liệu hoặc kích thước của cột 1.1- Đổi kiểu dữ liệu hoặc kích thước của cột
ALTER TABLE table_name
ALTER COLUMN col_name data_type
[ NULL | NOT NULL]
Ví dụ:ALTER TABLE KhachHang
ALTER COLUMN TenKH CHAR (40) NULL
Chú ý: Không thể
Giảm kích thước của cột nhỏ hơn kích thước dữ liệu hiện có
Thay đổi kiểu dữ liệu của cột khi cột đó đã có dữ liệu hoặc có
ràng buộc.
Thay đổi kiểu của cột đã dùng trong cột tính toán
Từ NULL thành NOT NULL
1.2- Thêm cột mới 1.2- Thêm cột mới
ALTER TABLE <table_name>
ADD <Thông tin cột mới> [,...]
CREATE TABLE NhanVien (
MaNV Int CONSTRAINT pk_NV Primary Key,
TenNV VarChar(40) NOT NULL)
GO
ALTER TABLE NhanVien
ADD NoiSinh Varchar(20) DEFAULT ‘Đồng Nai’,
MaNVQL Int NULL
Constraint fk_MaNV References NhanVien(MaNV)
Trong trường hợp Table đã có dữ liệu, nếu bạn cần thêm cột với
ràng buộc NOT NULL thì có thể thực hiện một trong 2 cách sau:
• Cách 1: thực hiện qua 3 bước:
(i) thêm cột với thuộc tính NULL,
(ii) Điền đầy đủ các giá trị cho cột,
(iii) Đổi lại thuộc tính của cột thành NOT NULL.
• Cách 2: Thêm cột mới có ràng buộc Default và thuộc tính WITH
VALUES để điền tự động giá trị cho các dòng đang tồn tại trong
bảng.
ALTER TABLE SanPham ADD SoTon Float NOT NULL
CONSTRAINT df_ST DEFAULT 0 WITH VALUES
3- Xóa cột : 3- Xóa cột :
ALTER TABLE <tablename>
DROP COLUMN ColName [,...n]
Ví dụ:
ALTER TABLE SanPham
DROP COLUMN SoTon
Chú ý: Không thể xóa những cột có ràng buộc CHECK,
DEFAULT, FOREIGN KEY, UNIQUE, PRIMARY KEY
4- Thêm RBTV cho bảng 4- Thêm RBTV cho bảng
ALTER TABLE table_name
[WITH CHECK | WITH NOCHECK]
ADD <table_constraint> [,...n]
•WITH NOCHECK: Không kiểm tra ràng buộc đối với dữ liệu đã nhập
•Table_constraint =
PRIMARY KEY( column_name [ , ...n ] )
| UNIQUE (column_name [ , ...n ] )
| FOREIGN KEY (column_name [ , ...n ] )
REFERENCES ref_table ( ref_col [ ,...n ] )
[ON DELETE {CASCADE | NO ACTION | SET NULL | SET DEFAULT} ]
[ON UPDATE {CASCADE | NO ACTION | SET NULL | SET DEFAULT} ]
| DEFAULT <Exp> FOR column_name [ WITH VALUES ]
| CHECK( BT Điều kiện )
Ví dụ: Ví dụ:
CREATE TABLE DDH
( MADH SmallInt Not Null, MaNCC SmallInt,
NgayDH DateTime, NgayYCGiao DateTime
Go
ALTER TABLE DDH ADD
Constraint pk_DDH Primary Key(MaDH) ,
Constraint df_NgayDH Default GetDate( ) For NgayDH ,
Constraint chk_NgayYCGiao Check (NgayDH <= NgayYCGiao) ,
Constraint fk_DDH_NhaCC Foreign Key(MaNCC) References NHACC
5- Hủy bỏ RBTV khỏi bảng: 5- Hủy bỏ RBTV khỏi bảng:
ALTER TABLE table_name
DROP CONSTRAINT <Tên RBTV>
Ví dụ:
ALTER TABLE SanPham
DROP CONSTRAINT df_SoTon
6- Kích hoạt hay tạm ngưng kiểm tra ràng buộc
Foreign key và Check
6- Kích hoạt hay tạm ngưng kiểm tra ràng buộc
Foreign key và Check
ALTER TABLE table_name
{CHECK | NOCHECK} CONSTRAINT {ALL | tênRB [,...n]}
Ví dụ :
-- Tạm ngưng kiểm tra ràng buộc.
ALTER TABLE SanPham NOCHECK
CONSTRAINT chk_DonGia
-- Kích hoạt kiểm tra constraint.
ALTER TABLE SanPham CHECK
CONSTRAINT chk_DonGia
Bạn đang đọc truyện trên: Truyen247.Pro