Chương III
TABLES
Giảng viên: Phạm Mạnh Cương
1
Ộ
ữ ệ
N I DUNG ể I. Các ki u d li u
II. Các phép toán
ạ
ộ
III. T o Table trong m t CSDL
ổ ấ
ộ IV. Thay đ i c u trúc và ràng bu c
V. Xóa Table
ổ
VI. Đ i tên Table
ệ ữ ệ
VII.Mô hình quan h d li u
2
Ữ Ệ
Ể I CÁC Ki U D Li U
ố
1. Exact Numerics: S Chính Xác
ố ầ
2. Approximate Numerics: S g n đúng
3. Date and Time Ngày giờ
ỗ
ự
ASCII
4. Character strings Chu i ký t
ổ
ự
Unicode
5. Unicode character strings Chu i ký t
ỗ ố
ị
6. Binary Strings Chu i s nh phân
7. Other Data Types
3
ố
1 S Chính Xác Exact Numerics
ị ừ
• Bigint (8 bytes) giá tr t
2
63 đ n 2ế
631
ị ừ
• Int :(4 bytes) giá tr t
2
31 đ n 2ế
31 1.
ị ừ
• SmallInt : (2 bytes) giá tr t
2
15 đ n 2ế
15 1.
ị ừ
ế
• Tinyint : (1 byte) giá tr t
0 đ n 255.
ặ
ị
• Bit : có giá tr 0, 1 ho c NULL.
• Decimal [ ( p [, s ]) ]
ữ ố ố
ế
ố
ả
ổ 1 đ n 38, là t ng s ch s t
i đa bên ph i và
bên trái d u ấ
ấ
ậ
ặ
ị ừ – P (precision) có giá tr t ị ch m th p phân. M c đ nh là 18.
ị ừ
ữ ố ẻ
ế
ố
ả ấ
ấ
0 đ n P, là s ch s l
bên ph i d u ch m th p
ậ phân. M c ặ
ị
– S (Scale) có giá tr t ằ đ nh b ng 0
ươ
ự
• Numeric [ ( p [, s ] ) ]: t
ng t
Decimal
• Money , SmallMoney
4
ố ầ
2 S g n đúng Approximate Numerics
a) Float [( n )] :
ề ị ố ừ • Mi n giá tr tuy ệt đ i t ế 2.23E 308 đ n 1.79E +308
ị ừ ị ư ố ầ ị ị • n là s bít dùng l u ph n đ nh tr , có giá tr t 1 – 53, m c ặ đ nh là 53.
ị ủ ữ ụ ư ố ộ • S byte l u tr ph thu c vào giá tr c a n.
ữ ố ậ ớ ộ ớ – V i n ˛ [1, 24]: 4 byte, v i đ chính xác là 7 ch s th p phân.
ữ ố ậ ớ ộ ớ – V i n ˛ [25, 53]: 8 byte, v i đ chính xác là 15 ch s th p phân.
ệ ố ề ế ị b) Real : 4 byte, Mi n giá tr tuy t đ i 1.18E 38 đ n 3.40E +38.
5
ờ
3 Ngày gi
Date And Time
a) DateTime :
ị ừ
ề
• Mi n giá tr : t
ế 11 1753 đ n 3112 9999
b) SmallDateTime :
ế
ề
ị
• Mi n giá tr : 11 1900 đ n 66 2079
ờ
ơ
ằ Chú .: H ng ngày gi
ấ bao trong d u nháy đ n
ụ
Ví d : ‘19980120 23:59:59.997’
6
ự
ỗ 4 Chu i ký t
Character Strings
ố ị ố i đa là 8000 byte. ộ • Char [(n)] : đ dài c đ nh, t
ố ị ộ ố • Varchar [( n )]: đ dài không c đ nh, t i đa là 8000 byte.
311 byte.
ố ị ộ ố • Varchar( max ) | Text: đ dài không c đ nh, t i đa là 2
7
Unicode
ự ổ 5 Chu i ký t Unicode Character Strings
ố ị ộ ố i đa là 4000 k ý t .ự • nChar [( n )] : đ dài c đ nh, t
ố ị ố i đa là 4000 k ý t .ự ộ • nVarchar[( n )] : đ dài không c đ nh, t
ố ị ộ ố i đa là 2^31–1 byte. • nVarchar(max) | nText : đ dài không c đ nh, t
ấ ằ ơ ỗ ả Chú .: H ng chu i Unicode bao trong d u nháy đ n và ph i
ắ ầ ữ ằ b t đ u b ng ch N: N’sssss’
8
ữ ệ
ị
6 D li u nh phân Binary Strings
ố ị
ố
ộ • Binary [( n )] : đ dài c đ nh, n có t
i đa 8000 bytes.
ổ
ố
ộ • Varbinary [( n )] : đ dài thay đ i, n có t
i đa 8000 bytes.
ổ ư
ộ • Varbinary( max ) | Image : đ dài thay đ i, l u trong 2^31 – 1
bytes.
9
7 Other Data Types
ữ ệ ị ủ ư ể • Sql_Variant : dùng l u giá tr c a các ki u d li u khác
ạ ừ ể trong SQL Server ngo i tr các ki u text, ntext, Image, timestamp, và
sql_variant.
ể ộ ố ể ẽ báo ki u này s • Timestamp : ki u s (binary(8) hay varbinary(8)). C t khai
ậ ị ẫ ớ ỗ đ ượ ự ộ c t ậ ớ đ ng c p nh t v i giá tr phân bi ệ m i khi thêm m u tin m i.. t
ậ ị • UniqueIdentifier : 16 bytes GUID (Globally Unique Identifier). Nh n giá tr này
ằ b ng hàm NewID().
ữ ệ ư • XML : dùng l u d li u XML
10
II CÁC PHÉP TOÁN
ố ọ 1. Các phép toán s h c:
ư); * (nhân), / (chia nguyên hay th cự ), % (ph n dầ
+ (c ngộ ), (trừ)
ỗ ố 2. Phép n i chu i : +
3. Các phép toán so sánh:
<, <=, !<, >, >=, !>, =, <> hay !=
4. Các phép toán lôgic:
NOT, AND (conjunction), OR (disjunction).
11
II CÁC PHÉP TOÁN (TT)
ả
ạ
5. Các phép toán ph m vi:
a) IS [NOT] NULL
b) [NOT] IN (ị )
c) [NOT] BETWEEN AND
ẫ
d) [NOT] LIKE ‘M u văn b n’
12
Ạ
III T O TABLE
ệ
ằ
1. B ng L nh CREATE TABLE
ử ụ
2. S d ng Object Explorer
Khai báo các c tộ
ữ ệ
ộ
Khai báo ràng bu c d li u
13
ệ
ằ
1 B ng L nh CREATE TABLE:
Cú pháp :
CREATE TABLE TableName
(
column_name data_type [
14
ộ ữ ệ
1.1 Khai báo c t d li u
• CREATE TABLE SanPham (
MaSP Smallint , TenSP varchar(30) , DonGia Money , SoTon Real
) • CREATE TABLE DDH ( MaDH Int ,
MaNCC Int , NgayLap DateTime , NgayYCGiao DateTime
)
15
ứ
ể
ộ
1.2 Khai báo c t bi u th c
computer_column_name AS expression
ộ ữ ệ ừ ộ ữ ộ nh ng c t
ứ ị ộ ặ ị ỉ ọ • C t tính toán, là c t ch đ c, ch a d li u tính toán t ư khác. M c đ nh không l u giá tr c t tính toán trong table.
CREATE TABLE CTDH (
MaDH SmallInt , MaSP SmallInt , SL float , DGBan Money , ThanhTien As SL * DGBan
)
16
ữ ệ
ộ
1.3 Khai báo ràng bu c d li u (Constraint)
ụ
ộ
ộ
Có 2 cách khai báo ràng bu c trên table ph thu c vào s c t
ố ộ tham
ủ
ộ
ề
ệ
gia đi u ki n c a ràng bu c:
ộ ộ
ữ ệ
ộ
a) Ràng bu c d li u trên m t c t (Column Constraint)
ộ ủ
ữ ệ
ề
ộ
b) Ràng bu c d li u trên nhi u c t c a Table (Table Constraint)
17
ộ
ạ
ộ ộ a) Các lo i ràng bu c trên m t c t
18
ụ
ộ
Ví d : Khai báo ràng bu c trên 1 c tộ
CREATE TABLE LoaiSP (
MaLoaiSP Smallint primary key, TenLoaiSanPham nvarchar(100)
)
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
19 )
ụ
ặ
ộ
ộ ộ 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
)
20
ộ
ề
ạ
ộ b Các lo i ràng bu c trên nhi u c t
21
ụ
ề
ồ
ộ Ví d Khai báo khóa chính g m nhi u c t
CREATE TABLE CTDH
(
MaDH SmallInt Not Null References DDH,
MaSP SmallInt Not Null References SanPham,
SoLuong float Default 0 Check (SoLuong > 0),
DGBan Money Default 0 Check (DGBan > 0),
ThanhTien As SoLuong * DGBan,
Constraint pk_CTHD Primary Key (MaDH, MaSP)
)
22
ụ
ộ
ộ
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)
)
23
ộ ự ộ
ề
ị
ệ
1.4 Khai báo c t t
đ ng đi n giá tr phân bi
t
ộ • 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.
create table NHACC ( MaNCC smallint IDENTITY(1,1) primary key , TenNCC nvarchar(30) unique )
24
ử ụ
2 S d ng Object Explorer
25
26
Ổ Ấ
Ộ
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 c
ư
ộ
ể
ể
• 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
27
ử ụ
ệ
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
| DROP CONSTRAINT constraint_name
| DROP COLUMN col_name [,...n]
| {CHECK | NOCHECK}
CONSTRAINT { ALL | constraint_name[,...n] }
28
ổ ể
ặ
ướ
ữ ệ 1.1 Đ i ki u d li u ho c kích th
ộ ủ c c a c t
Ví dụ: ALTER TABLE KhachHang ALTER COLUMN TenKH CHAR (40) NULL
29
ộ
ộ
ớ
ớ
1.2 Thêm c t m i
ALTER TABLE
ADD [,...]
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)
30
ộ
Chú ý: khi thêm c t NOT NULL
ườ ợ ầ 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: ự
• Cách 1: th c hi n qua 3 b
ộ ớ ộ (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
ể ề ự ộ ồ ạ ị
đ ng giá tr cho các d òng đang t n t i trong VALUES đ đi n t
b ng.ả
ALTER TABLE SanPham
ADD SoTon Float NOT NULL
CONSTRAINT df_ST DEFAULT 0 WITH VALUES 31
3 Xóa c t :ộ
ALTER TABLE
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
32
ỏ ả
ủ
ỏ
5 H y b RB kh i b ng:
ALTER TABLE table_name
DROP CONSTRAINT
Ví dụ:
ALTER TABLE SanPham
DROP CONSTRAINT df_ST
33
ư
ạ
ể
ạ
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
34
ộ
ổ
7 Đ i tên c t :
SP_RENAME 'TableName.OldName',
'NewName', 'COLUMN'
Ví dụ:
SP_RENAME 'SanPham.DonGia', 'DonGiaSP', 'COLUMN'
35
ử ụ
2 S d ng Object Explorer
36
V XÓA TABLE :
DROP TABLE [, …n]
Chú ý:
Không thể xóa Table cha được tham
chiếu bởi Table khác.
37
VI Đ IỔ TÊN B NG:Ả
EXEC SP_RENAME 'OldName', 'NewName'
Ví dụ: Đổi tên table NCC thành NhaCungCap.
EXEC sp_rename ‘NCC', ‘NhaCungCap'
38
VII MÔ HÌNH QUAN HỆ
ệ ữ ệ
ữ
ố
ể
ễ
ả
• Bi u di n m i quan h d li u gi a các b ng
ộ
ệ
ỉ
ạ
• Khai báo, hi u ch nh các ràng bu c khóa ngo i
ử
ả
ạ
ấ
• T o, s a và xóa c u trúc b ng
39
ạ
ớ
ệ
1 T o m i mô hình quan h
B1: Click phải vào Database Diagram và chọn New Database->Diagram
B2: Chọn bảng cho mô hình
B3: Click nút Close kết thúc quá trình tạo mô hình
40
41
BÀI T PẬ
Ự
Ậ
TH C HÀNH BÀI T P 1
42
Ả Ơ
C M N
43
Tài liệu liên quan
Tài liêu 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)
30
ộ
Chú ý: khi thêm c t NOT NULL
ườ ợ ầ 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: ự • Cách 1: th c hi n qua 3 b
ộ ớ ộ (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
ể ề ự ộ ồ ạ ị đ ng giá tr cho các d òng đang t n t i trong VALUES đ đi n t
b ng.ả
ALTER TABLE SanPham
ADD SoTon Float NOT NULL
CONSTRAINT df_ST DEFAULT 0 WITH VALUES 31
3 Xóa c t :ộ
ALTER TABLE
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
32
ỏ ả
ủ
ỏ
5 H y b RB kh i b ng:
ALTER TABLE table_name
DROP CONSTRAINT
Ví dụ:
ALTER TABLE SanPham
DROP CONSTRAINT df_ST
33
ư
ạ
ể ạ 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
34
ộ
ổ
7 Đ i tên c t :
SP_RENAME 'TableName.OldName', 'NewName', 'COLUMN'
Ví dụ:
SP_RENAME 'SanPham.DonGia', 'DonGiaSP', 'COLUMN'
35
ử ụ
2 S d ng Object Explorer
36
V XÓA TABLE :
DROP TABLE
Chú ý:
Không thể xóa Table cha được tham
chiếu bởi Table khác.
37
VI Đ IỔ TÊN B NG:Ả
EXEC SP_RENAME 'OldName', 'NewName'
Ví dụ: Đổi tên table NCC thành NhaCungCap.
EXEC sp_rename ‘NCC', ‘NhaCungCap'
38
VII MÔ HÌNH QUAN HỆ
ệ ữ ệ
ữ
ố
ể
ễ
ả
• Bi u di n m i quan h d li u gi a các b ng
ộ
ệ
ỉ
ạ • Khai báo, hi u ch nh các ràng bu c khóa ngo i
ử
ả
ạ
ấ
• T o, s a và xóa c u trúc b ng
39
ạ
ớ
ệ
1 T o m i mô hình quan h
B1: Click phải vào Database Diagram và chọn New Database->Diagram
B2: Chọn bảng cho mô hình
B3: Click nút Close kết thúc quá trình tạo mô hình
40
41
BÀI T PẬ
Ự
Ậ
TH C HÀNH BÀI T P 1
42
Ả Ơ C M N
43

