SQL
Structured Query Language
Phần 2
Chương 3
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
Ký tự Char, Varchar, nchar, nvarchar, text, ntext
Bit Bit
Số chính xác Tinyint, smallint, Int, bigint,
Số thực có
định dạng
Decimal(i,j) , numeric(i,j)
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
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 cập nhật trên View mà
sử dụng hàm Aggregate hay
Distinct khi tạo
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