You are on page 1of 43

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ờ

4. Character strings - Chuỗi ký tự ASCII

5. Unicode character strings - Chuổi ký tự


Unicode

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ừ - 263 đến 263-1
• Int :(4 bytes) giá trị từ - 231 đến 231 - 1.
• SmallInt : (2 bytes) giá trị từ - 215 đến 215 - 1.
• Tinyint : (1 byte) giá trị từ 0 đến 255.
• Bit : có giá trị 0, 1 hoặc NULL.
• Decimal [ ( p [, s ]) ]
– P (precision) có giá trị từ 1 đến 38, là tổng số chữ số tối đa bên phải và
bên trái dấu chấm thập phân. Mặc định là 18.
– S (Scale) có giá trị từ 0 đến P, là số chữ số lẻ bên phải dấu chấm thập
phân. Mặc đị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
• Char [(n)] : độ dài cố định, tối đa là 8000 byte.

• Varchar [( n )]: độ dài không cố định, tối đa là 8000 byte.

• Varchar( max ) | Text: độ dài không cố định, tối đa là 231-1 byte.

7
5- Chuổi ký tự Unicode
- Unicode Character Strings
• 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à 4000 ký tự.

• nVarchar(max) | nText : độ dài không cố định, tối đa là 2^31–1


byte.

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.

• Timestamp : kiểu số (binary(8) hay varbinary(8)). Cột khai báo


kiểu này sẽ được tự động cập nhật với giá trị phân biệt mỗi khi thêm
mẫu tin mới..

• 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) <BT> IS [NOT] NULL
b) <BT> [NOT] IN (<danh sách giá trị>)
c) <BT> [NOT] BETWEEN <Min> AND <Max>
d) <BT> [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 [<column_constraint>]
| computer_column_name AS <expression> [PERSISTED]
| <table_constraint> [ , ...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

• Cột tính toán, là cột chỉ đọc, chứa dữ liệu tính toán từ những cộ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 <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] }


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 <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)

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á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
31
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

32
5- Hủy bỏ RB khỏi bảng:
ALTER TABLE table_name
DROP CONSTRAINT <Tên RBTV>

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 <tên bảng> [, …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

You might also like