Chương 3
SQL Structured Query Language Phần 2
Nội dung
DDL (Data Definition Language)
Định nghĩa Database Định nghĩa cấu trúc Bảng Định nghĩa ràng buộc toàn vẹn Định nghĩa khung nhìn
Tham khảo các lệnh trên trong môi trường SQL
Server
Tạo Database
Trong SQL Server CREATE DATABASE Sales ON PRIMARY ( NAME = ‘Sale_data’, FILENAME = ‘d:\database\Sales\Saledata.mdf', SIZE = 10, MAXSIZE = 50, FILEGROWTH = 2 ) LOG ON ( NAME = 'Sales_log', FILENAME = ‘d:\database\Sales\Salelog.ldf', SIZE = 2, MAXSIZE = 5, FILEGROWTH = 1)
Kiểu dữ liệu
Char, Varchar, nchar, nvarchar, text, ntext Ký tự
Bit Bit
Số chính xác Tinyint, smallint, Int, bigint,
Decimal(i,j) , numeric(i,j)
Số thực có định dạng
Số thực Float, Real
Ngày giờ Smalldatetime, Datetime
Loại khác Money, Binary, Image, …
Tạo cấu trúc bảng
Sử dụng lệnh Create, Alter, Drop để tạo , sửa, xóa cấu trúc bảng Lệnh tạo bảng Create:
Định nghĩa các cột : tên cột, kiểu dữ liệu Khai báo các ràng buộc
Cú pháp : CREATE TABLE tênbảng ( Têncột_1 Kiểudữliệu [not null] [unique] [RBTV trên cột], …. Têncột_n Kiểudữliệu [not null] [unique] [RBTV trên cột], [RBTV bảng] )
Tạo cấu trúc bảng
CREATE TABLE KHACHHANG (
MAKH nvarchar(10) NOT NULL Primary Key, TENKH nvarchar(30) NULL, DIACHI nvarchar(40) NULL, THANHPHO nvarchar(50) NOT NULL, DIENTHOAI nvarchar(50) NULL
)
Tạo cấu trúc bảng
CREATE TABLE NHANVIEN ( MANV int NOT NULL, HONV nvarchar(20) NULL, TENNV nvarchar(10) NOT NULL, PHAI bit NOT NULL, NGAYSINH datetime NULL, NOISINH nvarchar(15) NULL, DIACHI nvarchar(40) NOT NULL, DIENTHOAI nvarchar(13) NULL,
CONSTRAINT PK_NHANVIEN PRIMARY KEY (MANV) )
Tạo cấu trúc bảng
CREATE TABLE SANPHAM ( MASP tinyint NOT NULL, TENSP nvarchar(20) NULL, DVT nvarchar(10) NULL, DONGIA real NULL, Tonkho bit
) Go ALTER TABLE SANPHAM ADD CONSTRAINT PK_SANPHAM
PRIMARY KEY(MASP)
Go
Tạo cấu trúc bảng
CREATE TABLE HOADON (
MAHD nvarchar(5) NOT NULL PRIMARY KEY , LOAIHD nvarchar(1) NULL, MAKH nvarchar(10) NULL, MANV int NULL REFERENCES NHANVIEN (MANV), NGAYLAPHD datetime NULL, NGAYGIAONHAN datetime NULL, CONSTRAINT [FK_HD_KH] FOREIGN KEY(MAKH) REFERENCES KHACHHANG (MAKH)
)
Tạo cấu trúc bảng
CREATE TABLE CHITIETHOADON ( MAHD nvarchar(5) NOT NULL , MASP tinyint NOT NULL, SOLUONG smallint NULL DEFAULT 0 , DONGIA float NULL,
CONSTRAINT PK_CTHD PRIMARY KEY (MAHD,MASP) ) Go ALTER TABLE CHITIETHOADON ADD CONSTRAINT [FK_CTHD_HD]
FOREIGN KEY(MAHD) REFERENCES HOADON (MAHD)
Go ALTER TABLE CHITIETHOADON ADD CONSTRAINT [FK_CTHD_SP]
FOREIGN KEY(MASP) REFERENCES SANPHAM(MASP)
Chỉnh sửa cấu trúc bảng Sử dụng lệnh Alter để chỉnh sửa cấu trúc bảng : thêm/xóa cột, đổi
kiểu dữ liệu, thêm/xóa ràng buộc
ALTER TABLE SANPHAM ADD NHOMHANG VARCHAR(3) Go ALTER TABLE SANPHAM ALTER COLUMN NHOMHANG VARCHAR(5) Go ALTER TABLE SANPHAM DROP COLUMN NHOMHANG Go ALTER TABLE CHITIETHOADON DROP CONSTRAINT
[FK_CTHD_HD]
Xóa bảng DROP TABLE SANPHAM
Tạo các Ràng buộc khác
Ràng buộc miền giá trị ALTER TABLE SANPHAM ADD CONSTRAINT [CK_DG] CHECK (DONGIA>0) Go ALTER TABLE HOADON ADD CONSTRAINT CK_Ngay CHECK
(NgaylapHD<=NgayGiaohang)
Go ALTER TABLE SANPHAM ADD CONSTRAINT
df_DG DEFAULT ‘kg’ FOR DONGIA
Khung nhìn – View Khái niệm
Là bảng “ảo” :
Không lưu trữ dữ liệu Khi xem dữ liệu trong View, thực chất là xem tập kết quả
của một câu lệnh Select
Giống như bảng: có thể truy vấn, thêm, xóa, sửa dữ liệu
thông qua view
Mục đích:
Che dấu tính phức tạp của dữ liệu Cung cấp cơ chế đảm bảo an toàn dữ liệu Tăng hiệu quả thực thi
Khung nhìn – View Tạo View
Cú pháp : CREATE VIEW tênview [dscột] AS SELECT … FROM … WHERE Vd1: Tạo view chứa các nhân viên có chức vụ
‘kinhdoanh’
CREATE VIEW nvKDoanh AS Select * From Nhanvien Where chucvu like ‘kinh doanh’
Khung nhìn – View Công dụng
Sử dụng view Select * From nvKDoanh Go Insert into nvKDoanh Values(…) Go Update nvKDoanh Set luong = luong*1.1 Go Delete From nvKDoanh
Không cập nhật trên View mà sử dụng hàm Aggregate hay Distinct khi tạo
Khung nhìn – View Hạn chế Vd2: CREATE VIEW vwHD AS Select Manv, Count(*) From Hoadon Group by Manv Go Select count(*) From vwHD Go Update vwHD Set manv = '100‘ Where manv =1 Go Delete From vwHD
Không xóa trên View mà sử dụng hàm Aggregate hay Distinct , hoặc xây dựng từ nhiều bảng