Вы находитесь на странице: 1из 6

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
bnt@yahoo.com
namlehoang @abc.com.vn

sanglv@hcm.vnn.vn
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','bnt@yahoo.com')
INSERT INTO KHACHHANG(MAKH, TENKH, DIACHI, DT, EMAIL)
VALUES('KH02','LE HOANG NAM','BINH
CHANH','8457895','namlehoang@abc.com.vn')
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','sanglv@hcm.vnn.vn')
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
)

Вам также может понравиться