LAB 4 ABC DATABASE
Question 1: (1.sql)
Write SQL statements to create ABC database.
Then, write SQL statements to create all tables and constraints of ABC. Note: need to add appropriate
primary and foreign keys.
1.Table: KHACHHANG
Name
Type
MAKH
Nvarchar
TENKH
Nvarchar
DIACHI
Nvarchar
DT
Nvarchar
EMAIL
Nvarchar
Constraint: TENKH - not null, DT must have from 7 to 10 digit chars.
Size
5
30
50
10
30
2.Table: SANPHAM
Name
MAVT
TENVT
DVT
GIAMUA
SLTON
Constraint: TENVT - not null, GIAMUA >0, SLTON >=0.
Type
Nvarchar
Nvarchar
Nvarchar
int
int
Size
Type
Nvarchar
Date/Time
Nvarchar
int
Size
Type
Nvarchar
Nvarchar
int
int
int
Size
5
30
20
3.Table: HOADON
Name
MAHD
NGAY
MAKH
TONGTG
Constraint: NGAY must be prior to current date.
10
5
4.Table: CHITIETHOADON
Name
MAHD
MAVT
SL
KHUYENMAI
GIABAN
Constraint: SL>0.
10
5
Write SQL statements to insert data to database as follow:
Table VATTU:
MaVT
VT01
VT02
VT03
VT04
VT05
TenVT
XI MANG
CAT
GACH ONG
GACH THE
DA LON
DVT
BAO
KHOI
VIEN
VIEN
KHOI
GIAMUA
50000
45000
120
110
25000
SLTON
5000
50000
800000
800000
100000
VT06
DA NHO
KHOI
Table KHACHHANG:
MAKH
TENKH
KH01
NGUYEN THI BE
KH02
LE HOANG NAM
KH03
TRAN THI CHIEU
KH04
MAI THI QUE ANH
KH05
LE VAN SANG
KH06
TRAN HOANG KHAI
Table HOADON:
MAHD
HD001
HD002
HD003
HD004
HD005
HD006
HD007
HD008
HD009
HD010
NGAY
12/05/2000
25/05/2000
25/05/2000
25/05/2000
26/05/2000
02/06/2000
22/06/2000
25/06/2000
15/08/2000
30/09/2000
Table CHITIETHOADON:
MAHD
MAVT
HD001
VT01
HD001
VT05
HD002
VT03
HD003
VT02
HD004
VT03
HD004
VT04
HD005
VT05
HD006
VT04
HD007
VT04
HD008
VT01
HD009
VT02
HD010
VT01
33000
DIACHI
TAN BINH
BINH CHANH
TAN BINH
BINH CHANH
QUAN 10
TAN BINH
100000
DT
8457895
9878987
8457895
EMAIL
[email protected]
namlehoang @abc.com.vn
[email protected]
8457897
MAKH
KH01
KH02
KH01
KH04
KH04
KH03
KH04
KH03
KH04
KH01
SL
5
10
10000
20
50000
20000
10
10000
20000
100
25
25
GIABAN
52000
30000
150
55000
150
120
30000
120
125
55000
48000
57000
Answer:
CREATE DATABASE ABC
USE ABC
CREATE TABLE KHACHHANG
(
MAKH nvarchar(5) PRIMARY KEY,
TENKH nvarchar(30) NOT NULL,
DIACHI nvarchar(50),
DT nvarchar(10) CHECK(LEN(DT) >= 7 AND LEN(DT) <= 10),
EMAIL nvarchar(30)
)
CREATE TABLE SANPHAM
(
MAVT nvarchar(5) PRIMARY KEY,
TENVT nvarchar(30) NOT NULL,
DVT nvarchar(20),
GIAMUA int CHECK(GIAMUA > 0),
SLTON int CHECK(SLTON >=0)
)
CREATE TABLE HOADON
(
MAHD nvarchar(10) PRIMARY KEY,
NGAY Date CHECK(NGAY < SYSDATETIME ()),
MAKH nvarchar(5) REFERENCES KHACHHANG(MAKH),
TONGGT int
)
CREATE TABLE CHITIETHOADON
(
MAHD nvarchar(10) REFERENCES HOADON(MAHD),
MAVT nvarchar(5),
SL int CHECK(SL > 0),
KHYENMAI int,
GIABAN int,
PRIMARY KEY (MAHD, MAVT)
)
INSERT INTO SANPHAM(MAVT, TENVT, DVT, GIAMUA, SLTON)
VALUES('VT01', 'XI MANG', 'BAO', 50000, 5000)
INSERT INTO SANPHAM(MAVT, TENVT, DVT, GIAMUA, SLTON)
VALUES('VT02', 'CAT', 'KHOI', 45000, 50000)
INSERT INTO SANPHAM(MAVT, TENVT, DVT, GIAMUA, SLTON)
VALUES('VT03', 'GACH ONG', 'VIEN', 120, 80000)
INSERT INTO SANPHAM(MAVT, TENVT, DVT, GIAMUA, SLTON)
VALUES('VT04', 'GACH THE', 'VIEN', 110, 80000)
INSERT INTO SANPHAM(MAVT, TENVT, DVT, GIAMUA, SLTON)
VALUES('VT05', 'DA LON', 'KHOI', 25000, 100000)
INSERT INTO SANPHAM(MAVT, TENVT, DVT, GIAMUA, SLTON)
VALUES('VT06', 'DA NHO', 'KHOI', 33000, 100000)
INSERT INTO KHACHHANG(MAKH, TENKH, DIACHI, DT, EMAIL)
VALUES('KH01','NGUYEN THI BE','TAN BINH','8457895','
[email protected]')
INSERT INTO KHACHHANG(MAKH, TENKH, DIACHI, DT, EMAIL)
VALUES('KH02','LE HOANG NAM','BINH
CHANH','8457895','
[email protected]')
INSERT INTO KHACHHANG(MAKH, TENKH, DIACHI)
VALUES('KH03','MAI THI QUE ANH','BINH CHANH')
INSERT INTO KHACHHANG(MAKH, TENKH, DIACHI, DT)
VALUES('KH04','TRAN THI CHIEU','TAN BINH','8457895')
INSERT INTO KHACHHANG(MAKH, TENKH, DIACHI, EMAIL)
VALUES('KH05','LE VAN SANG','QUAN 10','
[email protected]')
INSERT INTO KHACHHANG(MAKH, TENKH, DIACHI, DT)
VALUES('KH06','TRAN HOANG KHAI','TAN BINH','8457895')
INSERT INTO HOADON(MAHD, NGAY, MAKH)
VALUES('HD001', '2000-05-12', 'KH01')
INSERT INTO HOADON(MAHD, NGAY, MAKH)
VALUES('HD002', '2000-05-25', 'KH02')
INSERT INTO HOADON(MAHD, NGAY, MAKH)
VALUES('HD003', '2000-05-25', 'KH01')
INSERT INTO HOADON(MAHD, NGAY, MAKH)
VALUES('HD004', '2000-05-25', 'KH04')
INSERT INTO HOADON(MAHD, NGAY, MAKH)
VALUES('HD005', '2000-05-26', 'KH04')
INSERT INTO HOADON(MAHD, NGAY, MAKH)
VALUES('HD006', '2000-06-02', 'KH03')
INSERT INTO HOADON(MAHD, NGAY, MAKH)
VALUES('HD007', '2000-06-22', 'KH04')
INSERT INTO HOADON(MAHD, NGAY, MAKH)
VALUES('HD008', '2000-06-25', 'KH03')
INSERT INTO HOADON(MAHD, NGAY, MAKH)
VALUES('HD009', '2000-08-15', 'KH04')
INSERT INTO HOADON(MAHD, NGAY, MAKH)
VALUES('HD010', '2000-09-30', 'KH01')
INSERT INTO CHITIETHOADON(MAHD, MAVT,
VALUES('HD001','VT01',5,52000)
INSERT INTO CHITIETHOADON(MAHD, MAVT,
VALUES('HD001','VT05',10,30000)
INSERT INTO CHITIETHOADON(MAHD, MAVT,
VALUES('HD002','VT03',10000,150)
INSERT INTO CHITIETHOADON(MAHD, MAVT,
VALUES('HD003','VT02',20,55000)
INSERT INTO CHITIETHOADON(MAHD, MAVT,
VALUES('HD004','VT03',50000,150)
INSERT INTO CHITIETHOADON(MAHD, MAVT,
VALUES('HD004','VT04',20000,120)
INSERT INTO CHITIETHOADON(MAHD, MAVT,
VALUES('HD005','VT05',10,30000)
INSERT INTO CHITIETHOADON(MAHD, MAVT,
VALUES('HD006','VT04',10000,120)
INSERT INTO CHITIETHOADON(MAHD, MAVT,
VALUES('HD007','VT04',20000,125)
INSERT INTO CHITIETHOADON(MAHD, MAVT,
VALUES('HD008','VT01',100,55000)
INSERT INTO CHITIETHOADON(MAHD, MAVT,
VALUES('HD009','VT02',25,48000)
INSERT INTO CHITIETHOADON(MAHD, MAVT,
VALUES('HD0010','VT01',25,57000)
SL, GIABAN)
SL, GIABAN)
SL, GIABAN)
SL, GIABAN)
SL, GIABAN)
SL, GIABAN)
SL, GIABAN)
SL, GIABAN)
SL, GIABAN)
SL, GIABAN)
SL, GIABAN)
SL, GIABAN)
Write SQL statements to do bellow task. Write each statement in one .sql file. Question number n
was named n.sql:
Question 2.
(2.sql) List all customers live in TAN BINH as following:
SELECT * FROM KHACHHANG WHERE DIACHI = 'TAN BINH'
Question 3.
as following:
(3.sql) List all products whose name include GACH and price more than 110
select * from SANPHAM where TENVT like '%GACH%' AND GIAMUA > 110
Question 4.
following:
(4.sql) List all orders with these customer, by ascending order of order date as
SELECT MAHD, NGAY, TENKH, DIACHI, DT FROM HOADON, KHACHHANG
WHERE HOADON.MAKH = KHACHHANG.MAKH
ORDER BY NGAY
Question 5.
(5.sql) List all customers that did not place order in June 2000 as following:
SELECT MAKH, DIACHI, DT
FROM KHACHHANG
WHERE MAKH NOT IN
(SELECT MAKH FROM HOADON WHERE MONTH(NGAY)=6 AND YEAR(NGAY)=2000)
Question 6.
(6.sql) List all detail orders that have GIABAN >= GIAMUA. Note that:
TriGiaMua = GIAMUA * SL, TriGiaBan = GIABAN * SL.
SELECT MAHD, SANPHAM.MAVT, TENVT, DVT, GIABAN, GIAMUA, SL, SL*GIAMUA as
TriGiaMua, SL * GIABAN AS TriGiaBan
FROM CHITIETHOADON, SANPHAM
WHERE CHITIETHOADON.MAVT = SANPHAM.MAVT
AND GIABAN >= GIAMUA
Question 7.
(7.sql) List all orders which has maximum total value as following:
SELECT HOADON.MAHD, NGAY, HOADON.MAKH, TENKH, DIACHI, SUM(SL * GIABAN)
AS TongGiaTri
FROM HOADON, CHITIETHOADON, KHACHHANG
WHERE HOADON.MAHD = CHITIETHOADON.MAHD
AND HOADON.MAKH = KHACHHANG.MAKH
GROUP BY HOADON.MAHD, NGAY, HOADON.MAKH, TENKH, DIACHI
HAVING SUM(SL * GIABAN) >= ALL
(SELECT SUM(SL * GIABAN)
FROM CHITIETHOADON
GROUP BY MAHD)
Question 8.
following:
(8.sql) List all products which were bought in minimum number of orders as
SELECT SANPHAM.MAVT, TENVT, DVT, GIAMUA, COUNT(MAHD) AS SlHoaDon
FROM SANPHAM LEFT JOIN CHITIETHOADON
ON SANPHAM.MAVT = CHITIETHOADON.MAVT
GROUP BY SANPHAM.MAVT, TENVT, DVT, GIAMUA
HAVING COUNT(MAHD) <= ALL
(
SELECT COUNT(MAHD)
FROM SANPHAM LEFT JOIN CHITIETHOADON
ON SANPHAM.MAVT = CHITIETHOADON.MAVT
GROUP BY SANPHAM.MAVT
)