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ế

63­1

ị ừ

• 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

ế  1­1­ 1753 đ n 31­12­ 9999

b) SmallDateTime :

ế

• Mi n giá tr : 1­1­ 1900 đ n 6­6­ 2079

ơ

ằ Chú .: H ng ngày gi

ấ  bao trong d u nháy đ n

Ví d : ‘1998­01­20 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.

31­1 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 [] | computer_column_name AS  [PERSISTED] |  [ , ...n] ) [ON { file_group | PRIMARY } ]

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