Tuy đây làm bài tập mình sưu tầm trong 1 số giáo trình dạy ở Cao Đẳng, Đại Học.. nó không đầy đủ lắm nhưng nó sẽ là kiến thức bổ ít cho các bạn theo học SQL Server. Các thao tác truy vấn từ dễ đến khó
- Trước tiên hãy tạo Database BANHANG:
Mã:
CREATE DATABASE BANHANG
go
USE BANHANG
go
CREATE TABLE nhacungcap
(
macongty NVARCHAR(10) NOT NULL CONSTRAINT pk_nhacungcap PRIMARY KEY(macongty),
tencongty NVARCHAR(40) NOT NULL,
tengiaodich NVARCHAR(30) NULL,
diachi NVARCHAR(60) NULL,
dienthoai NVARCHAR(20) NULL,
fax NVARCHAR(20) NULL,
email NVARCHAR(50) NULL
)
go
CREATE TABLE loaihang
(
maloaihang INT NOT NULL CONSTRAINT pk_loaihang PRIMARY KEY(maloaihang),
tenloaihang NVARCHAR(15) NOT NULL
)
go
CREATE TABLE mathang
(
mahang NVARCHAR(10) NOT NULL CONSTRAINT pk_mathang PRIMARY KEY(mahang),
tenhang NVARCHAR(50) NOT NULL,
macongty NVARCHAR(10) NULL ,
maloaihang INT NULL ,
soluong INT NULL,
donvitinh NVARCHAR(20) NULL ,
giahang MONEY NULL
)
go
CREATE TABLE nhanvien
(
manhanvien NVARCHAR(10) NOT NULL CONSTRAINT pk_nhanvien PRIMARY KEY(manhanvien),
ho NVARCHAR(20) NOT NULL ,
ten NVARCHAR(10) NOT NULL ,
ngaysinh DATETIME NULL ,
ngaylamviec DATETIME NULL ,
diachi NVARCHAR(50) NULL ,
dienthoai NVARCHAR(15) NULL ,
luongcoban MONEY NULL ,
phucap MONEY NULL
)
go
CREATE TABLE khachhang
(
makhachhang NVARCHAR(10) NOT NULL CONSTRAINT pk_khachhang PRIMARY KEY(makhachhang),
tencongty NVARCHAR(50) NOT NULL ,
tengiaodich NVARCHAR(30) NOT NULL ,
diachi NVARCHAR(50) NULL ,
email NVARCHAR(30) NULL ,
dienthoai NVARCHAR(15) NULL ,
fax NVARCHAR(15) NULL
)
go
CREATE TABLE dondathang
(
sohoadon INT NOT NULL CONSTRAINT pk_dondathang PRIMARY KEY(sohoadon),
makhachhang NVARCHAR(10) NULL ,
manhanvien NVARCHAR(10) NULL ,
ngaydathang SMALLDATETIME NULL ,
ngaygiaohang SMALLDATETIME NULL ,
ngaychuyenhang SMALLDATETIME NULL ,
noigiaohang NVARCHAR(50) NULL
)
go
CREATE TABLE chitietdathang
(
sohoadon INT NOT NULL ,
mahang NVARCHAR(10) NOT NULL ,
giaban MONEY NOT NULL ,
soluong SMALLINT NOT NULL ,
mucgiamgia REAL NOT NULL,
CONSTRAINT pk_chitietdathang
PRIMARY KEY(sohoadon,mahang)
)
go
go
USE BANHANG
go
CREATE TABLE nhacungcap
(
macongty NVARCHAR(10) NOT NULL CONSTRAINT pk_nhacungcap PRIMARY KEY(macongty),
tencongty NVARCHAR(40) NOT NULL,
tengiaodich NVARCHAR(30) NULL,
diachi NVARCHAR(60) NULL,
dienthoai NVARCHAR(20) NULL,
fax NVARCHAR(20) NULL,
email NVARCHAR(50) NULL
)
go
CREATE TABLE loaihang
(
maloaihang INT NOT NULL CONSTRAINT pk_loaihang PRIMARY KEY(maloaihang),
tenloaihang NVARCHAR(15) NOT NULL
)
go
CREATE TABLE mathang
(
mahang NVARCHAR(10) NOT NULL CONSTRAINT pk_mathang PRIMARY KEY(mahang),
tenhang NVARCHAR(50) NOT NULL,
macongty NVARCHAR(10) NULL ,
maloaihang INT NULL ,
soluong INT NULL,
donvitinh NVARCHAR(20) NULL ,
giahang MONEY NULL
)
go
CREATE TABLE nhanvien
(
manhanvien NVARCHAR(10) NOT NULL CONSTRAINT pk_nhanvien PRIMARY KEY(manhanvien),
ho NVARCHAR(20) NOT NULL ,
ten NVARCHAR(10) NOT NULL ,
ngaysinh DATETIME NULL ,
ngaylamviec DATETIME NULL ,
diachi NVARCHAR(50) NULL ,
dienthoai NVARCHAR(15) NULL ,
luongcoban MONEY NULL ,
phucap MONEY NULL
)
go
CREATE TABLE khachhang
(
makhachhang NVARCHAR(10) NOT NULL CONSTRAINT pk_khachhang PRIMARY KEY(makhachhang),
tencongty NVARCHAR(50) NOT NULL ,
tengiaodich NVARCHAR(30) NOT NULL ,
diachi NVARCHAR(50) NULL ,
email NVARCHAR(30) NULL ,
dienthoai NVARCHAR(15) NULL ,
fax NVARCHAR(15) NULL
)
go
CREATE TABLE dondathang
(
sohoadon INT NOT NULL CONSTRAINT pk_dondathang PRIMARY KEY(sohoadon),
makhachhang NVARCHAR(10) NULL ,
manhanvien NVARCHAR(10) NULL ,
ngaydathang SMALLDATETIME NULL ,
ngaygiaohang SMALLDATETIME NULL ,
ngaychuyenhang SMALLDATETIME NULL ,
noigiaohang NVARCHAR(50) NULL
)
go
CREATE TABLE chitietdathang
(
sohoadon INT NOT NULL ,
mahang NVARCHAR(10) NOT NULL ,
giaban MONEY NOT NULL ,
soluong SMALLINT NOT NULL ,
mucgiamgia REAL NOT NULL,
CONSTRAINT pk_chitietdathang
PRIMARY KEY(sohoadon,mahang)
)
go
Đây là Database mô tả công việc bán hàng của 1 cty. Các Table đã được đưa về các dạng chuẩn rồi. Chúng ta sẽ tạo các liên kết cho Database:
- Ràng buộc thiết lập giá trị mặc định bằng 1 cho cột SOLUONG và bằng 0 cho cột MUCGIAMGIA trong bảng CHITIETDATHANG
- Bảng DONDATHANG ràng buộc kiểm tra ngày giao hàng và ngày chuyển hàng phải sau hoặc bằng với ngày đặt hàng.
- Ràng buộc cho bảng NHANVIEN để đảm bảo rằng một nhân viên chỉ có thể làm việc trong công ty khi đủ 18 tuổi và không quá 60 tuổi.
Mã:
go
ALTER TABLE mathang
ADD CONSTRAINT fk_mathang_loaihang FOREIGN KEY (maloaihang)
REFERENCES loaihang(maloaihang)
ON DELETE CASCADE ON UPDATE CASCADE , CONSTRAINT fk_mathang_nhacungcap
FOREIGN KEY (macongty)REFERENCES nhacungcap(macongty)
ON DELETE CASCADE ON UPDATE CASCADE
go
ALTER TABLE dondathang
ADD CONSTRAINT fk_dondathang_khachhang FOREIGN KEY (makhachhang)
REFERENCES khachhang(makhachhang)
ON DELETE CASCADE ON UPDATE CASCADE ,CONSTRAINT fk_dondathang_nhanvien
FOREIGN KEY (manhanvien)REFERENCES nhanvien(manhanvien)
ON DELETE CASCADE ON UPDATE CASCADE
go
ALTER TABLE chitietdathang
ADD CONSTRAINT fk_chitiet_dondathang FOREIGN KEY (sohoadon)
REFERENCES dondathang(sohoadon)
ON DELETE CASCADE ON UPDATE CASCADE ,
CONSTRAINT fk_chitiet_mathang FOREIGN KEY (mahang)
REFERENCES mathang(mahang)
ON DELETE CASCADE ON UPDATE CASCADE
go
ALTER TABLE chitietdathang
ADD CONSTRAINT df_chitietdathang_soluong DEFAULT(1) FOR soluong,
CONSTRAINT df_chitietdathang_mucgiamgia DEFAULT(0) FOR Mucgiamgia
go
ALTER TABLE dondathang
ADD CONSTRAINT chk_dondathang_ngay CHECK (ngaygiaohang>=ngaydathang AND
ngaychuyenhang>=ngaydathang)
go
ALTER TABLE nhanvien
ADD CONSTRAINT chk_nhanvien_ngaylamviec CHECK (datediff(yy,ngaysinh,ngaylamviec)
BETWEEN 18 AND 60)
Chúc các bạn học tốt.(Mời các bạn đọc phần 2 tại đây)
ALTER TABLE mathang
ADD CONSTRAINT fk_mathang_loaihang FOREIGN KEY (maloaihang)
REFERENCES loaihang(maloaihang)
ON DELETE CASCADE ON UPDATE CASCADE , CONSTRAINT fk_mathang_nhacungcap
FOREIGN KEY (macongty)REFERENCES nhacungcap(macongty)
ON DELETE CASCADE ON UPDATE CASCADE
go
ALTER TABLE dondathang
ADD CONSTRAINT fk_dondathang_khachhang FOREIGN KEY (makhachhang)
REFERENCES khachhang(makhachhang)
ON DELETE CASCADE ON UPDATE CASCADE ,CONSTRAINT fk_dondathang_nhanvien
FOREIGN KEY (manhanvien)REFERENCES nhanvien(manhanvien)
ON DELETE CASCADE ON UPDATE CASCADE
go
ALTER TABLE chitietdathang
ADD CONSTRAINT fk_chitiet_dondathang FOREIGN KEY (sohoadon)
REFERENCES dondathang(sohoadon)
ON DELETE CASCADE ON UPDATE CASCADE ,
CONSTRAINT fk_chitiet_mathang FOREIGN KEY (mahang)
REFERENCES mathang(mahang)
ON DELETE CASCADE ON UPDATE CASCADE
go
ALTER TABLE chitietdathang
ADD CONSTRAINT df_chitietdathang_soluong DEFAULT(1) FOR soluong,
CONSTRAINT df_chitietdathang_mucgiamgia DEFAULT(0) FOR Mucgiamgia
go
ALTER TABLE dondathang
ADD CONSTRAINT chk_dondathang_ngay CHECK (ngaygiaohang>=ngaydathang AND
ngaychuyenhang>=ngaydathang)
go
ALTER TABLE nhanvien
ADD CONSTRAINT chk_nhanvien_ngaylamviec CHECK (datediff(yy,ngaysinh,ngaylamviec)
BETWEEN 18 AND 60)
Chúc các bạn học tốt.(Mời các bạn đọc phần 2 tại đây)
0 comments:
Đăng nhận xét