Chương III Tables

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

ppt42 trang | Chia sẻ: lylyngoc | Lượt xem: 1500 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu Chương III Tables, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Chương III TABLES Giảng viên: Phạm Mạnh Cương * 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 * 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 * 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 * 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. * 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’ * 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. * 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’ * 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. * 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 * 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). * 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’ * 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 * 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 } ] * 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 ) * 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 ) * 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) * a) Các loại ràng buộc trên một 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 ) * CREATE TABLE LoaiSP ( MaLoaiSP Smallint primary key, TenLoaiSanPham nvarchar(100) ) 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 * 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) ) * 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 | 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 Ví dụ: ALTER TABLE KhachHang ALTER COLUMN TenKH CHAR (40) NULL * 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) 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 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 5- Hủy bỏ RB khỏi bảng: * ALTER TABLE table_name DROP CONSTRAINT Ví dụ: ALTER TABLE SanPham DROP CONSTRAINT df_ST 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 7- Đổi tên cột : * SP_RENAME 'TableName.OldName', 'NewName', 'COLUMN' Ví dụ: SP_RENAME 'SanPham.DonGia', 'DonGiaSP', 'COLUMN' 2- Sử dụng Object Explorer * V- XÓA TABLE : * DROP TABLE [, …n] Chú ý: Không thể xóa Table cha được tham chiếu bởi Table khác. 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' 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 * 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 * BÀI TẬP THỰC HÀNH BÀI TẬP 1 * CẢM ƠN *