Chương 3 - Tables. Chương này gồm có những nội dung chính sau: Các kiểu dữ liệu, các phép toán, tạo Table trong một CSDL, thay đổi cấu trúc và ràng buộc, xóa Table, đổi tên Table, mô hình quan hệ dữ liệu. Mời các bạn cùng tham khảo.
Trang 1Chương III TABLES Giảng viên: Phạm Mạnh Cương
Chương III TABLES
Giảng viên: Phạm Mạnh Cương
Trang 2NỘ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
Trang 3I- CÁC KiỂU DỮ LiỆU
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
Trang 41- 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.
Trang 5• 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. [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. [1, 24]: 4 byte, với độ chính xác là 7 chữ số thập phân
b) Real : 4 byte, Miền giá trị tuyệt đối 1.18E- 38 đến 3.40E +38.
Trang 63- Ngày giờ - Date And Time
Trang 74- 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
Trang 85- 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’
Trang 96- 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.
Trang 107- 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
Trang 12II- 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’
Trang 13III- TẠO TABLE
Trang 141- 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 } ]
Trang 151.1 Khai báo cột dữ liệu
• CREATE TABLE SanPham
Trang 161.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
Trang 171.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)
Trang 18a) Các loại ràng buộc trên một cột
Trang 19Ví 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)
Trang 20Ví dụ: Đặt tên ràng buộc trên một cột
CREATE TABLE SanPham
(
MaSP SmallInt Constrain t 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
Trang 21b- Các loại ràng buộc trên
nhiều cột
Trang 22Ví 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)
Trang 23Ví 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)
)
Trang 241.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
)
Trang 252- Sử dụng Object Explorer
Trang 27IV- 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
Trang 281- 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}
Trang 291.1- Đổi kiểu dữ liệu hoặc kích thước
của cột
Ví dụ:
Trang 301.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)
Trang 31Chú ý: khi thêm cột NOT
NULLTrong 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
Trang 323- 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
Trang 335- 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
Trang 346- 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.
Trang 357- Đổi tên cột :
SP_RENAME 'TableName.OldName', 'NewName', 'COLUMN'
Ví dụ:
SP_RENAME 'SanPham.DonGia', 'DonGiaSP', 'COLUMN'
Trang 362- Sử dụng Object Explorer
Trang 37V- 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.
Trang 38VI- ĐỔ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'
Trang 39VII- 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
Trang 401- 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
Trang 42BÀI TẬP
THỰC HÀNH BÀI TẬP 1
Trang 43CẢM ƠN