





Preview text:
Tên: Lê Xuân Hoàng Lớp: IS 301 U  Mã SV: 28211106313 ĐỀ 1:
Câu 1: Dùng câu lệnh Create table tạo bảng sau: Bảng DICHVU: CREATE TABLE DICHVU (  MADV VARCHAR(10) PRIMARY KEY,  TENDV VARCHAR(255) ,  DVT INT ,  TIENDV DECIMAL(10,2) ); Bảng SDDICHVU: CREATE TABLE SDDICHVU(  ID INT PRIMARY KEY ,  MAKT VARCHAR(10) ,  MADV INT ,  SOLUONG INT ,
 FOREIGN KEY (MAKT) REFERENCES KHACHTRO( MAKT) ,
 FOREIGN KEY (MADV) REFERENCES DICHVU( MADV)  ); Bảng KHACHTRO: CREATE TABLE KHACHTRO(  MAKT INT PRIMARY KEY ,  HOLOT VARCHAR(255),  TENKT VARCHAR(255),  SOCMND INT ,  PHAI VARCHAR (5),  QUEQUAN VARCHAR (255),  DIENTHOAI VARCHAR (11) );
Câu 2: dùng câu lệnh insert nhập dữ liệu cho các bảng (tối thiểu mỗi bảng 5 bộ)
INSERT INTO DICHVU (MADV, TENDV, DVT, TIENDV) VALUES 
(DV01, 'Internet', 'tháng', 150000), 
(DV02, 'Du lich', 'Lần', 20000), 
(DV03, 'Sua chua', 'kg', 20000), 
(DV04, 'khach san', 'Tiếng', 55000), 
(DV05, 'Taxi', 'chuyến', 30000);
INSERT INTO KHACHTRO (MAKT, HOLOT, TENKT, SOCMND, PHAI,  QUEQUAN, DIENTHOAI) VALUES
(KT001, 'Le', 'Anh Tuan', '282456789', 'Nam', 'Hanoi', '0987111321'),
(KT002, 'Nguyen', 'Thi Phuong', '282654321', 'Nữ', 'HCM', '0123111789'),
(KT003, 'Le', 'Minh Quan', '282789012', 'Nam', 'Da Nang', '0361112147'),
(KT004, 'Huynh', 'Quoc Khanh’, '282321789', 'Nam', 'Hue', '0975318642'),
(KT005, 'Nguyen', 'Thi Thu', '282789456', 'Nữ', 'Quang Ngai', '0922215678');
INSERT INTO SDDICHVU (ID, MAKT, MADV, SOLUONG) VALUES (1, KT001, DV02, 2), (2, KT003, DV01, 1), (3, KT002, DV03, 1), (4, KR004, DV04, 3), (5, KT005, DV05, 2); Câu 3:
câu 3.1:Thiết kế Q_lietkedichvu để liệt kê tất cả những dịch vụ m các khách trọ đã 
sử dụng, sắp xếp tăng dần trên trường SOLUONG với các thông tin sau MAKT HOTEN TENDV SOLUONG TIENDV THANHTIEN
Trường HO TEN = HOLOT + TENKT 
Trường THANH TIEN = SOLUONG * TIENDV SELECT  SDDICHVU.MAKT,
 CONCAT(KHACHTRO.HOLOT, ' ', KHACHTRO.TENKT) AS HO_TEN,  DICHVU.TENDV,  SDDICHVU.SOLUONG,  DICHVU.TIENDV,
 SDDICHVU.SOLUONG * DICHVU.TIENDV AS THANH_TIEN FROM  SDDICHVU JOIN
 KHACHTRO ON SDDICHVU.MAKT = KHACHTRO.MAKT JOIN
 DICHVU ON SDDICHVU.MADV = DICHVU.MADV ORDER BY  SDDICHVU.SOLUONG ASC;
Câu 3.2: Thiết kế Q_tongtientungdichvu để tính tổng số tiền m khách h ng đã sử 
dụng theo từng dịch vụ ao gồm các thông tin:  MADV TENDV TONGTIEN SELECT  SDDICHVU.MADV,  DICHVU.TENDV,
 SUM(SDDICHVU.SOLUONG * DICHVU.TIENDV) AS TONGTIEN FROM  SDDICHVU JOIN
 DICHVU ON SDDICHVU.MADV = DICHVU.MADV GROUP BY  SDDICHVU.MADV, DICHVU.TENDV;
Câu 3.3: Thiết kế Q_tong tientheokhach để tính tổng tiền phải trả của từng khách 
trọ ao gồm những thông tin sau:  MAKT HOVATEN TONGTIEN SELECT  SDDICHVU.MAKT,
 CONCAT(KHACHTRO.HOLOT, ' ', KHACHTRO.TENKT) AS HOVATEN,
 SUM(SDDICHVU.SOLUONG * DICHVU.TIENDV) AS TONGTIEN FROM  SDDICHVU JOIN
 DICHVU ON SDDICHVU.MADV = DICHVU.MADV JOIN
 KHACHTRO ON SDDICHVU.MAKT = KHACHTRO.MAKT GROUP BY  SDDICHVU.MAKT, HOVATEN;
câu 3.4: Thiết kế Q-nhapmadichvu hiển thị tất cả những khách trọ sử dụng dịch vụ 
đó với các thông tin sau  MAKT HOTEN PHAI MADV TENDV SOLUONG
Trường PHAI phải hiển thị rõ l “Nam” hoặc “Nữ”. SELECT  KHACHTRO.MAKT,
 CONCAT(KHACHTRO.HOLOT, ' ', KHACHTRO.TENKT) AS HO_TEN,  CASE
 WHEN KHACHTRO.PHAI = 'Nam' THEN 'Nam'
 WHEN KHACHTRO.PHAI = 'Nu' THEN 'Nữ'  ELSE 'Khác'  END AS PHAI,  SDDICHVU.MADV,  DICHVU.TENDV,  SDDICHVU.SOLUONG FROM  KHACHTRO JOIN
 SDDICHVU ON KHACHTRO.MAKT = SDDICHVU.MAKT JOIN
 DICHVU ON SDDICHVU.MADV = DICHVU.MADV WHERE
 DICHVU.MADV = '0002'; chú thích: có thể thay mã dịch vụ khác mà bạn quan tâm.
Câu 3.5: Thiết kế Q_ tổng tiền sử dụng dịch vụ thống kê tổng tiền sử 
dụng dịch vụ của từng khách trọ theo từng dịch vụ với kết quả như  sau: 
Trong đó, TONG TIEN DV = tổng của ([SOLUONG] * [TIENDV]) SELECT  KHACHTRO.MAKT,
 CONCAT(KHACHTRO.HOLOT, ' ', KHACHTRO.TENKT) AS HOVATEN,
 SUM(SDDICHVU.SOLUONG * DICHVU.TIENDV) AS TONGTIENDV,
 SUM(CASE WHEN DICHVU.TENDV = 'Điểm tâm' THEN 
SDDICHVU.SOLUONG * DICHVU.TIENDV ELSE 0 END) AS Điểm Tâm,
 SUM(CASE WHEN DICHVU.TENDV = 'Giặt ủi' THEN SDDICHVU.SOLUONG * 
DICHVU.TIENDV ELSE 0 END) AS Giặc Ủi,
 SUM(CASE WHEN DICHVU.TENDV = 'Karaoke' THEN SDDICHVU.SOLUONG 
* DICHVU.TIENDV ELSE 0 END) AS KARAOKE,
 SUM(CASE WHEN DICHVU.TENDV = 'Taxi' THEN SDDICHVU.SOLUONG * 
DICHVU.TIENDV ELSE 0 END) AS Taxi FROM  KHACHTRO JOIN
 SDDICHVU ON KHACHTRO.MAKT = SDDICHVU.MAKT JOIN
 DICHVU ON SDDICHVU.MADV = DICHVU.MADV GROUP BY  KHACHTRO.MAKT, HOVATEN;
Câu 3.6 : Thiết kế query Q-cập nhật thực hiện cập nhật tăng giá tiền dịch vụ lên 10% 
cho tất cả các dịch vụ trong khách sạn. UPDATE DICHVU
SET TIENDV = TIENDV * 1.1; -- Tăng giá tiền lên 10%
câu 3.7: Thiết kế Q-xoa dichvu để xoá dịch vụ có mã số DV04, xem thay đổi trong các  bảng và nhận xét:
-- Xoá dịch vụ có mã số DV04 từ bảng DICHVU
DELETE FROM DICHVU WHERE MADV =’DV04’;
-- Xoá các bản ghi liên quan trong bảng SDDICHVU
DELETE FROM SDDICHVU WHERE MADV = ‘DV04’;
NHẬN XÉT: dịch vụ có mã số DV04 đã xóa 
