Bài giảng SQL Server - Chương 3: Bảng (Tables) - Phạm Mạnh Cương
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
Bạn đang xem trước 20 trang tài liệu Bài giảng SQL Server - Chương 3: Bảng (Tables) - Phạm Mạnh Cương, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Chương IIITABLESGiảng viên: Phạm Mạnh Cương1NỘI DUNGI. Các kiểu dữ liệuII. Các phép toánIII. Tạo Table trong một CSDLIV. Thay đổi cấu trúc và ràng buộcV. Xóa TableVI. Đổi tên TableVII.Mô hình quan hệ dữ liệu2I- CÁC KiỂU DỮ LiỆU1. Exact Numerics: Số Chính Xác2. Approximate Numerics: Số gần đúng3. Date and Time - Ngày giờ4. Character strings - Chuỗi ký tự ASCII5. Unicode character strings - Chuổi ký tự Unicode6. Binary Strings - Chuỗi số nhị phân7. Other Data Types31- 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 , SmallMoney42- Số gần đúng - Approximate Numericsa) 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.53- Ngày giờ - Date And Timea) DateTime :• Miền giá trị : từ 1-1- 1753 đến 31-12- 9999b) SmallDateTime :• Miền giá trị: 1-1- 1900 đến 6-6- 2079Chú .: Hằng ngày giờ bao trong dấu nháy đơnVí dụ: ‘1998-01-20 23:59:59.997’64- 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.75- 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ảibắt đầu bằng chữ N: N’sssss’86- 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.97- Other Data Types• Sql_Variant : dùng lưu giá trị của các kiểu dữ liệu kháctrong 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 XML10II- CÁC PHÉP TOÁN1. 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).11II- CÁC PHÉP TOÁN (TT)5. Các phép toán phạm vi:a) IS [NOT] NULLb) [NOT] IN ()c) [NOT] BETWEEN AND d) [NOT] LIKE ‘Mẫu văn bản’12III- TẠO TABLE1. Bằng Lệnh CREATE TABLE2. Sử dụng Object Explorer- Khai báo các cột- Khai báo ràng buộc dữ liệu131- 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 } ]141.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)151.2 Khai báo cột biểu thứccomputer_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ộtkhá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)161.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)17a) Các loại ràng buộc trên một cột18Ví dụ: Khai báo ràng buộc trên 1 cộtCREATE 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 ActionOn Update Cascade)19CREATE TABLE LoaiSP( MaLoaiSP Smallint primary key, TenLoaiSanPham nvarchar(100))Ví dụ: Đặt tên ràng buộc trên một cộtCREATE 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 NullConstraint fkMaLSP References LoaiSP (MaLoaiSP)On Delete No ActionOn Update Cascade)20b- Các loại ràng buộc trên nhiều cột21Ví dụ - Khai báo khóa chính gồm nhiều cộtCREATE 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))22Ví dụ - Khai báo ràng buộc liên thuộc tínhCREATE 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] }281.1- Đổi kiểu dữ liệu hoặc kích thước của cộtVí dụ:ALTER TABLE KhachHangALTER COLUMN TenKH CHAR (40) NULL291.2- Thêm cột mớiALTER TABLE ADD [,...]30CREATE TABLE NhanVien (MaNV Int CONSTRAINT pk_NV Primary Key,TenNV VarChar(40) NOT NULL)GOALTER TABLE NhanVienADD NoiSinh Varchar(20) DEFAULT 'Đồng Nai',MaNVQL Int NULL Constraint fk_MaNV References NhanVien(MaNV)Chú ý: 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ớirà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 WITHVALUES để điền tự động giá trị cho các dòng đang tồn tại trongbảng.31ALTER TABLE SanPham ADD SoTon Float NOT NULLCONSTRAINT df_ST DEFAULT 0 WITH VALUES3- Xóa cột :32ALTER TABLE DROP COLUMN ColName [,...n]Ví dụ:ALTER TABLE SanPhamDROP COLUMN SoTonChú ý: Không thể xóa những cột có ràng buộc CHECK,DEFAULT, FOREIGN KEY, UNIQUE, PRIMARY KEY5- Hủy bỏ RB khỏi bảng:33ALTER TABLE table_nameDROP CONSTRAINT Ví dụ:ALTER TABLE SanPhamDROP CONSTRAINT df_ST6- Kích hoạt hay tạm ngưng kiểm tra ràng buộc Foreign key và Check34ALTER 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 NOCHECKCONSTRAINT chk_DonGia-- Kích hoạt kiểm tra constraint.ALTER TABLE SanPham CHECKCONSTRAINT chk_DonGia7- Đổi tên cột :35SP_RENAME 'TableName.OldName', 'NewName', 'COLUMN'Ví dụ:SP_RENAME 'SanPham.DonGia', 'DonGiaSP', 'COLUMN'2- Sử dụng Object Explorer36V- XÓA TABLE :37DROP 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:38EXEC 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ảng391- Tạo mới mô hình quan hệ40B1: Click phải vào Database Diagram và chọn New Database->DiagramB2: Chọn bảng cho mô hìnhB3: Click nút Close kết thúc quá trình tạo mô hình41BÀI TẬPTHỰC HÀNH BÀI TẬP 142CẢM ƠN43