Lý Thuyết SQL

Màu nền
Font chữ
Font size
Chiều cao dòng

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: Truyen2U.Pro