IT004— CƠ SỞ DỮ LIỆU NỘIDUNG BÀI LÀM Đảng 1 Chương trình câu 2.1 --BAI2.1 CREATE TRIGGER trg_NGAYPHATHANH ON PHATHANH AFTER INSERT ,UPDATE AS BEGIN DECLARE @NGAYPH SMALLDATETIME DECL
Trang 1DAI HOC QUOC GIA THANH PHO HO CHI MINH TRUONG DAI HOC CONG NGHE THONG TIN KHOA HE THONG THONG TIN
ZZ
MÔN HỌC CƠ SỞ DỮ LIỆU BÁO CÁO BÀI THỰC HÀNH 6
GVHD: Trần Vĩnh Khiêm Nhóm thực hiện: Nguyễn Nhật Nguyễn — 23521047
Trang 2IT004 - CƠ SO DU LIEU
Uf Tp Hồ Chí Minh, 12/2024 I0
Trang 3IT004 - CƠ SO DU LIEU
NHẬN XÉT CUA GIÁO VIÊN HƯỚNG DẪN
, gdp tháng năm 2024
Người nhận xét (Ký tên và ghi rõ họ tên)
3|Page
Trang 4IT004— CƠ SỞ DỮ LIỆU
MỤC LỤC
Trang 5IT004— CƠ SỞ DỮ LIỆU
NỘIDUNG BÀI LÀM
Đảng 1 Chương trình câu 2.1
BAI2.1
CREATE TRIGGER trg_NGAYPHATHANH ON PHATHANH
AFTER INSERT ,UPDATE
AS
BEGIN
DECLARE @NGAYPH SMALLDATETIME DECLARE @MAPH CHAR(5) DECLARE @MASACH CHAR(5) DECLARE @NGSINH SMALLDATETIME SELECT @NGAYPH=NGAYPH FROM inserted SELECT @MAPH=MAPH FROM inserted SELECT @MASACH=MASACH FROM inserted SELECT @NGSINH=NGSINH FROM TACGIA WHERE MATG IN (SELECT MATG FROM TACGIA_SACH WHERE MASACH=@MASACH)
IF (@NGSINH>=@NGAYPH ) BEGIN
PRINT 'NGAYPH PHAI LON HON NGSINH' ROLLBACK TRAN
END
Đảng 2 Chương trình câu 2.2
CREATE TRIGGER trg_THELOAISACH ON PHATHANH
AFTER INSERT, UPDATE
AS
BEGIN
DECLARE @MASACH CHAR(5) DECLARE @NHAXB VARCHAR(20) SELECT @MASACH=MASACH FROM inserted SELECT @NHAXB=NHAXUATBAN FROM inserted JOIN SACH S ON S.MASACH=@MASACH WHERE S.THEL0AI='Giáo khoa'
IF (@NHAXB!='Gido duc') BEGIN
PRINT 'GIAOKHOA PHAI LA GIAQDUC' ROLLBACK TRAN
END END
Đảng 3 Chương trình câu 3
CAU 3.1
SELECT TG.MATG,HOTEN, SODT FROM TACGIA TG
JOIN TACGIA_SACH TGS ON TGS.MATG=TG.MATG
JOIN SACH S ON S.MASACH=TGS MASACH
JOIN PHATHANH PT ON PT.MASACH=TGS MASACH
WHERE $.THELOAI='Van hoc'
AND PT.NHAXUATBAN='Tre'
Đảng 4 Chương trình câu 3.2
CAU 3.2
SELECT DISTTNCT TOP 1 NHAXUATBAN, C0UNT (distinct S.THELOAI) AS SL FROM
5|Page
Trang 6IT004— CƠ SỞ DỮ LIỆU
PHATHANH PT
JOIN SACH S ON S.MASACH=PT.MASACH
GROUP BY NHAXUATBAN
ORDER BY SL DESC
Bang 5 Chương trình câu 3.3
CAU 3.3
SELECT TOP 1 TG.MATG,HOTEN,SUM(SOLUONG) AS SL FROM TACGIA TG
JOIN TACGIA_SACH TGS ON TGS.MATG=TG.MATG
JOIN PHATHANH PT ON PT.MASACH=TGS MASACH
GROUP BY TG.MATG,HOTEN
ORDER BY SL DESC
DE 2
Đảng 6 Chương trình câu 2.1
2.1
ALTER TABLE XE ADD
CONSTRAINT CK_XXX CHECK ( NAMSX>=2006 )
ALTER TABLE XE DROP constraint CK_Xe
ALTER TABLE XE ADD
CONSTRAINT CK_Xe CHECK (loaiXe ='Toyota' AND NamSxX>=2006)
Đảng 7 Chương trình câu 2.2
2.2
DROP TRIGGER trg_22
CREATE TRIGGER trg_22 ON PHANCONG
FOR INSERT, UPDATE
AS
BEGIN
DECLARE @MANV CHAR(5) DECLARE @MAXE CHAR(5) SELECT @MANV=MANV FROM inserted SELECT @MAXE=MAXE FROM inserted IF( @MANV IN (SELECT MANV FROM NHANVIEN WHERE MAPHONG IN (SELECT MAPHONG FROM PHONGBAN WHERE TENPHONG='Ngoai thanh')) AND @MAXE IN (SELECT
MAXE FROM XE WHERE LOAIXE<>'Toyota' ))
BEGIN PRINT 'NGOAI THANH PHAI DI TOYOTA' ROLLBACK TRAN
END
Bang 8 Churong trinh câu 3
3.2
SELECT NV.MANV,HOTEN, COUNT(DISTINCT X.LOAIXE ) FROM NHANVIEN NV
JOIN PHANCONG PC ON PC.MANV=NV.MANV
JOIN XE X ON X.MAXE=PC.MAXE
JOIN PHONGBAN PB ON PB.TRUONGPHONG=NV MANV
WHERE PB TRUONGPHONG=NV MANV
GROUP BY NV.MANV,HOTEN
HAVING COUNT(DISTINCT X.LOAIXE )=(SELECT COUNT(DISTINCT LOAIXE) FROM XE)
Đảng 9 Chương trình câu 3.2
3.2
SELECT NV.MANV,HOTEN, COUNT(DISTINCT X.LOAIXE ) FROM NHANVIEN NV
JOIN PHANCONG PC ON PC.MANV=NV.MANV
JOIN XE X ON X.MAXE=PC.MAXE
JOIN PHONGBAN PB ON PB.TRUONGPHONG=NV.MANV
Trang 7
IT004— CƠ SỞ DỮ LIỆU
WHERE PB TRUONGPHONG=NV MANV
GROUP BY NV.MANV,HOTEN
HAVING COUNT(DISTINCT X.LOAIXE )=(SELECT COUNT(DISTINCT LOAIXE) FROM XE)
Đảng 10 Chương trình câu 3.3
3.3
SELECT NV1.MAPHONG,NV1.MANV, HOTEN FROM NHANVIEN NV1
WHERE NV1.MANV IN(
SELECT TOP 1 WITH TIES NV2.MANV FROM NHANVIEN NV2
JOIN PHANCONG PC ON PC.MANV=NV2.MANV
JOIN XE ON XE.MAXE=PC MAXE
WHERE XE.LOAIXE='Toyota' AND NV2.MAPHONG=NV1.MAPHONG
GROUP BY NV2.MANV
ORDER BY COUNT(XE.LOAIXE) ASC)
DE 3
Đảng 11 Chương trình câu 2.1
2,1
ALTER TABLE PHIEUTHUE ADD
CONSTRAINT CK_TG CHECK (DATEDIFF (DAY, NgayThue, NgayTra) <= 10)
Bang 12 Chuong trinh cdu 2.2
2.2
CREATE TRIGGER trg_CheckSoSachThue
ON CHITIET_PT
AFTER INSERT, DELETE, UPDATE
AS
BEGIN
Kié@ tra ràng buộc
TF EXTSTS (
SELECT 1 FROM PHIEUTHUE PT WHERE PT.SoSachThue != ( SELECT COUNT(*) FROM CHITIET_PT CT WHERE CT.MaPT = PT.MaPT
) )
BEGIN
N@B& khéng th@a man rang buéc, rollback va bao LôT ROLLBACK TRANSACTION;
RAISERROR ('SdEsach thué không khớp giữa PHTIEUTHUE và CHTITTET_PT.',
16, 1);
END
END;
Đảng 13 Chương trình câu 3.1
3.1
SELECT DISTINCT DG.MADG,HOTEN FROM DOCGIA DG
JOIN PHIEUTHUE PT ON PT.MADG=DG.MADG
JOIN CHITIET_PT CT ON CT.MAPT=PT MAPT
JOIN SACH ON SACH.MASACH=CT MASACH
WHERE SACH.THELOAT='Tin hoc' AND YEAR(PT.NGAYTHUE )=2007
Đảng 14 Chương trình câu 3.2
3.2
SELECT TOP 1 WITH TIES DG.MADG,HOTEN FROM DOCGIA DG
JOIN PHIEUTHUE PT ON PT.MADG=DG.MADG
7|Page
Trang 8IT004— CƠ SỞ DỮ LIỆU
JOIN CHITIET_PT CT ON CT.MAPT=PT MAPT
JOIN SACH ON SACH.MASACH=CT MASACH
GROUP BY DG.MADG, HOTEN
ORDER BY C0UNT(THEL0AT) DESC
Đảng 15 Chương trình câu 3.3
3.3
SELECT DISTINCT $1.THELOAI,S1.MASACH,S1.TENSACH FROM SACH S1
WHERE S1.MASACH IN (
SELECT TOP 1 WITH TIES S2.MASACH FROM CHITIET_PT
JOIN SACH $2 ON S2.MASACH=CHITIET_PT MASACH
WHERE S1 THEL0AT=S2 THELOAT
GROUP BY $2.MASACH
ORDER BY COUNT(MAPT) DESC
)
DE 4
Đảng 16 Chương trình câu 2.1
2.1
ALTER TABLE BANG DIA ADD
CONSTRAINT CK_BD CHECK (THELOAI IN('ca nhac','phim hanh dong','phim tinh
cam'))
Đảng 17 Chương trình câu 2.2
2.2
CREATE TRIGGER trg_22 ON PHIEUTHUE
FOR INSERT, UPDATE
AS
BEGIN
DECLARE @SOLUONGTHUE INT SELECT @SOLUONGTHUE=SOLUONGTHUE FROM inserted WHERE MAKH IN (SELECT MAKH FROM KHACHHANG WHERE LOAIKH<>'VIP' )
IF (@SOLUONGTHUE=5 ) BEGIN
PRINT'VIP MOI DUOC THUE TREN 5' ROLLBACK TRAN
END END
Bang 18 Chuong trinh câu 3 1
3.1
SELECT KH.MAKH,HOTEN FROM KHACHHANG KH
JOIN PHIEUTHUE PT ON PT.MAKH=KH.MAKH
JOIN CHITIET_PM CT ON CT.MAPT=PT.MAPT
JOIN BANG_DIA BD ON BD.MABD=CT MABD
WHERE BD.THELOAI='Tinh cam'
AND SOLUONGTHUE>3
Đảng 19 Chương trình câu 3.2
3.2
SELECT MAKH,HOTEN FROM KHACHHANG
WHERE LOAIKH='VIP'
AND MAKH IN (
SELECT TOP 1 WITH TIES MAKH FROM PHIEUTHUE
GROUP BY MAKH
ORDER BY SUM(SOLUONGTHUE) DESC)
Trang 9
IT004— CƠ SỞ DỮ LIỆU
Đảng 20 Chương trình câu 3.3
3.3
SELECT DISTINCT BD.THELOAI,KH.MAKH,HOTEN FROM BANG_DIA BD
JOIN CHITIET_PM CT ON CT.MABD=BD.MABD
JOIN PHIEUTHUE PT ON PT.MAPT=CT.MAPT
JOIN KHACHHANG KH ON KH.MAKH=PT.MAKH
WHERE KH.MAKH IN(
SELECT TOP 1 WITH TIES KH2.MAKH FROM KHACHHANG KH2
JOIN PHIEUTHUE PT2 ON PT2.MAKH=KH2.MAKH
JOIN CHITIET_PM CT2 ON CT2.MAPT=PT2 MAPT
JOIN BANG_DIA BD2 0N BD2.MABD=CT2.MABD
WHERE BD THELOAI=BD2.THELOAT
GROUP BY KH2.MAKH
ORDER BY COUNT(PT2.MAPT) DESC)
BAI TAP QUANLYCHUYENGIA
Bang 21 Chuong trinh cau 1
1 Liệt kê tất cả chuyên gia trong cơ sở đữ liệu
SELECT * FROM CHUYENGIA
GO
EB Results gil Messages
+ Í1 “| Nguyén Van An 19850510 Nam nguyenvanan@emailcom 0901234567 Pháttiếnphầnmềm 10
Hình 1 Kết quả khi thực hiện chương trình 1
Đảng 22 Chương trình cẩu 2
—-2 Hiển thị tên và email của các chuyên gia nữ
SELECT HOTEN, EMAIL
FROM CHUYENGIA -
WHERE GIOITINH = N'NU'
GO
FH Results gil Messages
HOTEN EMAIL
anthiminh@email.com
Pham Ngô Thị Phượng _ngothiphuongŒ@email.com
Vũ Thị Hương vuthihuong@email.com
Ly Thi Khanh lythikhanh@email.com
¡Dung phamthidung@email.com
Hinh 2 Két quả khi thực hiện chương trình 2
Bang 23 Chương trình cẩu 3
3 Liệt kê các công ty có trên 100 nhân viên
SELECT * FROM CONGTY
WHERE SONHANVIEN > 100
9|Page
Trang 10
IT004— CƠ SỞ DỮ LIỆU
E8 Results gil Messages
MaCongTy TenCongTy DiaChi LinhVuc SoNhanVien
1 TechViet Solutions 123 Đường Lê Lợi, TP.HCM Phát triển phần mềm 200
2 DataSmart Analytics 456 Đường Nguyễn Huê,HàNội Phân tích dữ liệu 150
3 5 Al Innovate 202 Dudng Ly Tu Trong, HA N6i Trí tuê nhân tạo 120
Hinh 3 Két quả khi thực hiện chương trình 3
Bang 24 Chương trình câu 4
—-4 Hiển thị tên và ngày bắt đầu của các dự án trong năm 2023
SELECT TENDUAN, NGAYBATDAU
FROM DUAN
WHERE YEAR(NGAYKETTHUC) = 2023
GO
FH Results gi Messages TENDUAN NGAYBATDAU
1 ị Phát triển ứng dụng di động cho ngân hàng ¡ 2023-01-01
2 Xây dưng hê thống phần tích dữ liêu khách hằng 2023-03-15
kì Triển khai giải pháp đám mây cho doanh nghiệp 2023-02-01
4 Nâng cấp hệ thống bảo mật cho tập đoàn viễnthông 2023-04-01
5 Phát triển chatbot AI cho dịch vụ khách hàng 2023-05-01
Hình 4 Kết quả khi thực hiện chương trình 4
Bang 25 Chương trình cấu 6
—-6 Liệt kê tên chuyên gia và số lượng dự án họ tham gia
SELECT CG.HOTEN, COUNT(CGDA.MADUAN) AS SOLUONGDUAN
FROM CHUYENGIA CG
LEFT JOIN CHUYENGIA DUAN CGDA ON CG.MACHUYENGIA = CGDA.MACHUYENGIA
GROUP BY CG.HOTEN
GO
EH Results gil Messages
SOLUONGDUAN
| Đăng Văn Giang Hoàng Văn Em
Lê Hoàng Cường
Lý Thị Khánh Ngô Thị Phượng Nguyễn Văn An Phạm Thị Dung Trần Thị Bình
Vũ Thị Hương
— Oo
Hinh 5 Két quả khi thực hiện chương trình câu 6
Bang 26 Chương trình cẩu 7
7 Tim các dự án có sự tham gia của chuyên gia có kỹ năng 'Python' cấp độ 4
trở lên
SELECT CGDA.MADUAN, DA TenDuAn
FROM CHUYENGIA_DUAN CGDA
INNER JOIN DUAN DA ON DA.MADUAN = CGDA.MADUAN
10| Page
Trang 11
IT004— CƠ SỞ DỮ LIỆU
INNER JOIN CHUYENGIA_KYNANG CGKN ON CGKN.MACHUYENGIA = CGDA.MACHUYENGIA
INNER JOIN KYNANG KN ON KN.MAKYNANG = CGKN.MAKYNANG
WHERE KN.TENKYNANG = N'Python' AND CGKN.CAPDO >= 4
GROUP BY CGDA.MADUAN, DA.TenDuAn
GO
8 Results gi Messages MADUAN TenDuAn
ị Xây dựng hệ thống phân tích dữ liêu khách hang
Triển khai giải pháp đám mây cho doanh nghiệp
Nâng cấp hê thống bảo mật cho tập đoàn viễn thông Phát triển chatbot AI cho dịch vụ khách hằng
Hình 6 Kết quả khi thực hiện chương trình câu 7
Bang 27 Chương trình cấu
8 Hiê@ thị tên công ty và sôELlượng dự án đang thực hiện
SELECT CT.TenCongTy, COUNT(DA.MADUAN) AS SOLUONGDUAN
FROM CONGTY CT
INNER JOIN DUAN DA ON CT.MACONGTY = DA.MACONGTY
WHERE DA TRANGTHAT = N'Đang thực hiện'
GR0UP BY CT.TenCongTy
8 Results gil Messages
_TenCongTy SOLUONGDUAN
| CloudNine Systems DataSmartAnalytics 1 SecureNetVienam 1
Hình 7 Kết quả khí thực hiện chương trình câu ð
Bang 28 Chương trình cấu 9
9, Tìm chuyên gia có sôEnăm kinh nghiệm cao nhâF trong môi chuyên ngành
SELECT HOTEN, CHUYENNGANH, NAMKTNHNGHTEM
FROM CHUYENGIA CG
WHERE NAMKINHNGHTEM = (
SELECT MAX (NAMKINHNGHIEM) FROM CHUYENGIA
WHERE CHUYENNGANH = CG.CHUYENNGANH) ;
11|Page
Trang 12IT004— CƠ SỞ DỮ LIỆU
HOTEN CHUYENNGANH NAMKINHNGHIEM
2 ê Hoàng Cường Trí tuê nhân tạo 9
3 Nguyễn Văn An Phát tiền phần mềm 10
4 Ngô Thị Phượng Phân tích dữ liệu 5
5 Phạm Thị Dung Khoa học dữ liệu 6
6 Dang Van Giang loT 11
7 Hoang Van Em Dién toan dam may 8
8 Bui Van Inh DevOps 8
9 Ly Thi Khanh Blockchain 4
10 Tran Thi Binh An ninh mạng 7
Hình 8 Kết quả khí thực hiện chương trình câu 9
Đảng 29 Chương trình câu 10
—-10 Liệt kê các cặp chuyên gia đã từng làm việc cùng nhau trong ít nhất một
dự án
SELECT DISTINCT CG1.MaChuyenGia, CG1.HOTEN AS CHUYENGIA1, CG2.MaChuyenGia,
CG2.HOTEN AS CHUYENGIA2
FROM CHUYENGIA_DUAN CGDA1
INNER JOIN CHUYENGIA_DUAN CGDA2 ON CGDA1.MADUAN = CGDA2.MADUAN
AND CGDA1.MACHUYENGIA < CGDA2.MACHUYENGIA
INNER JOIN CHUYENGIA CG1 ON CG1.MACHUYENGIA
GO
CGDA1 MACHUYENGIA CGDA2 MACHUYENGIA
8 Results gil Messages
MaChuyenGia CHUYENGIA1 MaChuyenGia CHUYENGIA2 1 Nguyễn Văn An s Vũ Thị Hướng
2 3 _ LêHoàng Cường 10 Lý Thị Khánh
3 4 Phạm ThịDung 6 Ngô Thị Phượng
4 5 Hoàng Văn Em 7 Dang Van Giang
5 5 Hoang Van Em 9 Bui Van Inh
6 7 Đặng VănGiang 9 Bùi Văn lnh
Hình 9 Kết quả khí thực hiện chương trình câu 10
Bang 30 Chương trình cdu 11
11l Tính tô@g thời gian (theo ngày) mà môi chuyên gia đã tham gia vào các
dự án
SELECT CG.HOTEN, SUM(DATEDIFF (DAY ,CGDA.NGAYTHAMGIA,DA.NGAYKETTHUC)) AS
TONGTHOIGIAN
FROM CHUYENGIA_DUAN CGDA
INNER JOIN DUAN DA ON DA.MADUAN = CGDA.MADUAN
INNER JOIN CHUYENGIA CG ON CG.MACHUYENGIA = CGDA.MACHUYENGIA
WHERE DA.NGAYKETTHUC >= CGDA.NGAYTHAMGIA
GROUP BY CG.HOTEN
GO
Trang 13
IT004— CƠ SỞ DỮ LIỆU
HOTEN TONGTHOIGIAN
2 ang 9 211
3 Hoang Van Em 211
4 Lê Hoàng Cường 213
5 Lý Thị Khánh 213
6 Ngô Thị Phượng 184
7 Nguyễn Văn An 180
8 Phạm Thị Dung 184
9 Trần Thị Bình 213
10 Vũ Thị Hương 180 Hình 10 Kết quả khi thực hiện chương trình câu 11
Đảng 3] Chương trình câu câu 12
12 Tim các công ty có tạ Lệ dự án hoàn thành cao nhâE (trên 90%) SELECT CT.TenCongTy, CAST(COUNT(CASE WHEN DA.TrangThai = N'Hoan thanh' THEN 1
END) AS FLOAT) / COUNT(*) * 100 AS TiLeHoanThanh
FROM CONGTY CT
JOIN DUAN DA ON CT.MaCongTy = DA.MaCongTy
GROUP BY CT.TenCongTy
HAVING CAST(COUNT(CASE WHEN DA.TrangThai = N'Hoan thanh' THEN 1 END) AS
FLOAT) / COUNT(*) * 100 > 90
ORDER BY TiLeHoanThanh DESC;
GO
FB Results gil Messages tenCongly TiLeHoanThanh
1 | TechViet Solutions | 100
Hinh 11 Kết qua khi thực hiện chương trình câu 12
Đảng 32 Chương trình câu 13
13 Liệt kê top 3 ky nang được yêu câu nhiêu nhâF trong các dự án
SELECT TOP 3 WITH TIES
KN.TENKYNANG, COUNT(CGKN.MAKYNANG) AS SOLANYEUCAU
FROM KYNANG KN
INNER JOIN CHUYENGIA_KYNANG CGKN ON KN.MAKYNANG = CGKN.MAKYNANG
GROUP BY KN.TENKYNANG
ORDER BY COUNT(CGKN.MAKYNANG) DESC
FH Results gi Messages TENKYNANG SOLANYEUCAU
| Machine Learning NoSQL AWS Docker SQL
Hinh 12 Két qua khí thực hiện chương trình câu 13
13|Page