(123doc) Database Quan Ly Nhan Vien SQL
(123doc) Database Quan Ly Nhan Vien SQL
-- cau lenh tao bang 'phongban' cho CSDL, primary key = maphg(bang
ma utf8)
create table quanlynhanvien2.phongban
(
tenphg varchar(40),
maphg int,
trphg varchar(9),
ng_nhanchuc date,
constraint pk_maphg primary key(maphg)
) engine = InnoBD default charset = utf8 collate = utf8_unicode_ci;
-- cau lenh tao bang 'diadiem_phg' cho CSDL, primary key = maphg,
diadiem (bang ma utf8)
create table quanlynhanvien2.diadiem_phg
(
maphg int,
diadiem varchar(50),
constraint pk_diadiemphg primary key (maphg, diadiem)
) engine = InnoBD default charset = utf8 collate = utf8_unicode_ci;
-- cau lenh tao bang 'nhanvien' cho csdl, primary key = manv (bang ma
utf8)
create table quanlynhanvien2.nhanvien
(
honv varchar(20),
tenlot varchar(20),
tennv varchar(20),
manv varchar(9),
ngsinh date,
dchi varchar(100),
phai varchar(3),
luong float,
ma_nql varchar(9),
phg int,
constraint pk_nhanvien primary key (manv)
)engine = InnoBD default charset = utf8 collate = utf8_unicode_ci;
-- cau lenh tao bang 'dean' cho CSDL , primary key = mada (bang ma
utf8)
create table quanlynhanvien2.dean
(
tenda varchar(100),
mada int,
ddiem_da varchar(50),
phong int,
constraint pk_dean primary key (mada)
)engine = InnoBD default charset = utf8 collate = utf8_unicode_ci;
-- cau lenh tao bang 'thannhan' cho csdl, primary key = ma_nvien, tentn
(bang ma utf8)
create table quanlynhanvien2.thannhan
(
ma_nvien varchar(9),
tentn varchar(50),
phai varchar(3),
ngsinh date,
quanhe varchar(20),
constraint pk_thannhan primary key (ma_nvien, tentn)
)engine = InnoBD default charset = utf8 collate = utf8_unicode_ci;
-- cau lenh tao bang 'phancong' cho CSDL, primary key = ma_nvien,
soda (bang ma uf8)
create table quanlynhanvien2.phancong
(
ma_nvien varchar(9),
soda int,
thoigian date,
constraint pk_phancong primary key (ma_nvien, soda)
)engine = InnoBD default charset = utf8 collate = utf8_unicode_ci;
-- da tao xong cac ban cho csdl - den buoc tao khoa ngoai cho cac bang
-- theo so do lien he giu cac bang, lan luot dung cac lenh sau de tao khoa
ngoai bang cau lenh
-- 2. tao khoa ngoai cho 2 bang 'nhanvien - phong ban' (quan he n-1)
alter table nhanvien add constraint fk_nhanvien_phongban foreign key
(phg) references phongban(maphg)
-- 3. tao khoa ngoai cho 2 bang 'nhan vien - phong ban (quan he 1 - n)
can hoi thay lai (ma_nql hay manv)
alter table phongban add constraint fk_phongban_nhanvien foreign key
(trphg) references nhanvien(manv)
('123123456', 2, 1),
('123123456', 40, 2),
('123456789', 40, 3),
('147852369', 40, 4),
('333445555', 2, 5),
('333445555', 40, 6),
('666884444', 40, 7),
('888665555', 2, 8),
('987654321', 40, 9),
('987987987', 40, 10),
('999887777', 40, 11)
/* Cap nhat thong tin field TrPHG cho table PhongBan thoa rang buoc
khoa ngoai */
update phongban set trphg='666884444' where maphg=1
update phongban set trphg='987987987' where maphg=2
update phongban set trphg='123456789' where maphg=4
update phongban set trphg='333445555' where maphg=5
/* Cap nhat thong tin field Ma_NQL cho table NhanVien thoa rang buoc
khoa ngoai */
update nhanvien set ma_nql='123456789' where manv='123123456'
update nhanvien set ma_nql='123456789' where manv='123456789'
update nhanvien set ma_nql='147852369' where manv='147852369'
update nhanvien set ma_nql='123456789' where manv='333445555'
update nhanvien set ma_nql='666884444' where manv='666884444'
update nhanvien set ma_nql='999887777' where manv='888665555'
update nhanvien set ma_nql='123456789' where manv='987654321'
update nhanvien set ma_nql='123456789' where manv='987987987'
update nhanvien set ma_nql='123456789' where manv='999887777'
/* Xoa 1 record trong table PhanCong: khong cho nhan vien Bui Thuy
Vu tham gia du an Hoa Hoc nua*/
delete from phancong where ma_nvien='999887777' and soda=40
-- Cau 3
select *
from nhanvien
where (luong>25000 and phg=4) or (luong>30000 and phg=5)
-- cau 4
Hide details
………………………………………………………………..
code
--BTLT 2
--1. liệt kê những nhân viên (MANV,HONV, TENLOT,TENNV)làm việc ở phòng 'NC'
SELECT MANV, HONV, TENLOT,TENNV
FROM NHANVIEN
WHERE PHONG = 'NC'
--2.Liệt kê những nhân viên có mức lương trên 3.000.000
SELECT MANV, HONV, TENLOT,TENNV
FROM NHANVIEN
WHERE MLUONG > 3000000
--3 Liệt kê họ tên những nhân viên và tên phòng ban nhân viên đó trực thuộc có mức lương từ 2.000.000 đến
3.000.000
SELECT HONV+' ' +TENLOT+''+TENNV AS 'TENNV',PHONG
FROM NHANVIEN
WHERE MLUONG BETWEEN 2000000 AND 3000000
--4. Liệt kê họ tên đầy đủ của các nhân viên ở "TP HCM"
SELECT HONV+' ' +TENLOT+''+TENNV AS 'TENNV'
FROM NHANVIEN
WHERE DCHI LIKE'%TPHCM'
--5. Liệt kê ngày sinh và địa chỉ của nhân viên 'Dinh Ba Tien'
SELECT NGAYSINH,DCHI
FROM NHANVIEN
WHERE HONV ='Dinh' and TENLOT='Ba' and TENNV='Tien'
--6. Liệt kê danh sách các thân nhân dưới 18 tuổi của các nhận viên có mã là 'NV001'
SELECT HONV+' ' +TENLOT+''+TENNV AS 'TENNV'
FROM NHANVIEN
WHERE YEAR(GETDATE())-YEAR(NGAYSINH)<18 and MANV ='001'
--7. leit64 kê danh sách tất cả các nhân viên nữ trên 30 tuổi
SELECT HONV+' ' +TENLOT+' '+TENNV AS 'TENNV'
FROM NHANVIEN
WHERE YEAR(GETDATE())-YEAR(NGAYSINH)>30 and PHAI='NU'
--8. Với mỗi phòng ban, liệt kê tên phòng ban và địa điểm phòng
SELECT TENPHG, DIADIEM
FROM PHONGBAN PB,DIADIEM_PHG DD
WHERE PB.MAPHG = DD.MAPHG
--9. liệt kê những người trưởng phòng của từng phòng ban
SELECT MAPHG, HONV+' ' +TENLOT+' '+TENNV AS 'TENNV'
FROM PHONGBAN AS PB,NHANVIEN AS NV
WHERE PB.TRPHG=NV.MANV
--15. Với mỗi nhân viên, liệt kê họ tên nhân viên và họ tên người quản lý trực tiếp của nhân viên đó
SELECT N1.HONV, N1.TENNV, N2.HONV AS HONQL, N2.TENNV AS TENNQL
FROM NHANVIEN N1 LEFT JOIN NHANVIEN N2 ON N1.MA_NQL = N2.MANV
---------------
SELECT N1.HONV, N1.TENNV, N2.HONV AS HONQL, N2.TENNV AS TENNQL
FROM NHANVIEN N1 LEFT JOIN NHANVIEN N2 ON N1.MA_NQL = N2.MANV
--16. Với mỗi nhân viên, liệt kê họ tên nhân viên và họ tên trưởng phòng của phòng ban mà nhân viên
đó lam việc.
SELECT
FROM
WHERE
--17. liệt kê họ tên nhân viên và tên cáC đề án mà nhân viên đó tham gia nếu có
(SELECT HONV+' ' +TENLOT+' '+TENNV AS 'TEN NHAN VIEN', TENDA
FROM DEAN DA, PHANCONG PC, NHANVIEN NV
WHERE NV.MANV=PC.MANV and PC.MADA=DA.MADA )--> SAI, Vì bị mất dữ liệu.
----------
SELECT N.HONV,N.TENNV, D.TENDA
FROM (NHANVIEN N LEFT JOIN PHANCONG P ON N.MANV = P.MANV) LEFT JOIN DEAN D ON D.MADA =
P.MADA
--18.Với mỗi đề án, liệt kê tên đề án (TENDA) và tổng số giờ lam việc một tuần của tất cả các nhân viên
tham gia dự án đó.
SELECT DA.MADA,TENDA, SUM(THOIGIAN) AS TONG_TG
FROM DEAN DA, PHANCONG PC, NHANVIEN NV
WHERE NV.MANV=PC.MANV and PC.MADA=DA.MADA
GROUP BY DA.MADA,TENDA
--19.Với mỗi nhân viên, liệt kê họ và tên nhân viên và nhân viên đó có bao nhiều thân nhân.
SELECT NV.MANV,HONV,TENNV, COUNT(MATN) AS TONG_TN
FROM NHANVIEN NV, THANNHAN TN
WHERE NV.MANV=TN.MANV
GROUP BY NV.MANV,HONV,TENNV
--20. VỚI mỗi phòng ban, liệt kê tên phòng ban (TENPHG) và lương trung bình của những nhân viên làm
việc cho phòng ban đó
SELECT MAPHG,TENPHG, AVG(MLUONG) AS LUONG_tb
FROM NHANVIEN NV,PHONGBAN PB
WHERE NV.PHONG=PB.MAPHG
GROUP BY MAPHG,TENPHG
--21. Cho biết lương trung bình cuả tất cả các nữ nhân viên
SELECT AVG(MLUONG) AS LUONG_tb
FROM NHANVIEN
WHERE PHAI='NU'
--22.VỚi các phòng ban có mức lương trung bình trên 30.000 liệt kê tên phòng ban và số lượng nhân
viên của phòng ban đó.
SELECT MAPHG,TENPHG,COUNT(MANV)AS SO_LUONG, AVG(MLUONG) AS LUONG_tb
FROM NHANVIEN NV,PHONGBAN PB
WHERE NV.PHONG=PB.MAPHG
GROUP BY MAPHG,TENPHG
HAVING AVG(MLUONG) >30000
--23. Liệt kê danh sách các đề án (MADA) có: nhân công với họ (HONV) là 'DInh' hoặc có trưởng phòng
chủ trì đề án có họ 'Dinh'
SELECT MADA
FROM NHANVIEN NV, PHANCONG PC
WHERE NV.MANV=PC.MANV AND NV.HONV='Dinh'
UNION
SELECT MADA
FROM NHANVIEN NV, PHONGBAN PB, DEAN DA
WHERE NV.MANV=PB.TRPHG AND PB.MAPHG=DA.PHONG
AND NV.HONV='Dinh'
-------------------
SELECT DISTINCT MADA,TENDA
FROM DEAN
WHERE MADA IN (
SELECT MADA
FROM NHANVIEN NV, PHANCONG PC
WHERE NV.MANV= PC.MANV and NV.HONV='Dinh')
OR MADA IN(
SELECT MADA
FROM NHANVIEN NV, PHONGBAN PB, DEAN DA
WHERE NV.MANV=PB.TRPHG AND PB.MAPHG=NV.PHONG
and NV.HONV ='Dinh')
--24.liệt kê danh sách những nhân viên có trên 2 thân nhân
SELECT NV.MANV,NV.HONV,NV.TENLOT,NV.TENNV,COUNT(MATN) AS SO_TN
FROM NHANVIEN NV,THANNHAN TN
WHERE NV.MANV =TN.MANV
GROUP BY NV.MANV,NV.HONV,NV.TENLOT,NV.TENNV
HAVING COUNT(MATN) >2
--25.Liệt kê danh sách những nhân viên không có nhân thân:
SELECT NV.MANV,NV.HONV,NV.TENLOT,NV.TENNV
FROM NHANVIEN NV,THANNHAN TN
WHERE NV.MANV =TN.MANV
GROUP BY NV.MANV,NV.HONV,NV.TENLOT,NV.TENNV
HAVING COUNT(MATN) =0
--26. Liệt kê danh sách nhưng trưởng phòng có tối thiểu một thân nhân
SELECT NV.MANV,NV.HONV,NV.TENLOT,NV.TENNV
FROM NHANVIEN NV,THANNHAN TN, PHONGBAN PB
WHERE NV.MANV =TN.MANV and NV.MANV= PB.TRPHG
GROUP BY NV.MANV,NV.HONV,NV.TENLOT,NV.TENNV
HAVING COUNT(MATN) >=1
--27. Liệt kê họ tên của những trưởng phòng chưa có gia đình.
SELECT NV.MANV,NV.HONV,NV.TENLOT,NV.TENNV
FROM NHANVIEN NV,THANNHAN TN, PHONGBAN PB
WHERE NV.MANV =TN.MANV and NV.MANV= PB.TRPHG
GROUP BY NV.MANV,NV.HONV,NV.TENLOT,NV.TENNV
HAVING COUNT(MATN) =0
--28. Liệt kê họ tên nhân viên có múc lương trên mức lương trung bình của của phòng nghiên cứu
SELECT HONV,TENLOT,TENNV
FROM NHANVIEN
WHERE MLUONG > (SELECT AVG(MLUONG)
FROM PHONGBAN PB, NHANVIEN NV
WHERE PB.MAPHG=NV.PHONG and TENPHG='NGHIEN CUU')
--29. Liệt kê tên phòng ban và họ tên trường phòng của phòng ban có đông nhân viên nhất
SELECT TENPHG, HONV, TENLOT, TENNV
FROM PHONGBAN PB, NHANVIEN NV
WHERE NV.MANV=PB.TRPHG
and PB.MAPHG= (SELECT MAPHG, COUNT(MANV)
FROM NHANVIEN NV, PHONGBAN PB
WHERE PB.MAPHG=NV.PHONG and
COUNT(MANV)= ( SELECT MAX (SO_NV)
FROM ((SELECT COUNT(MANV)AS SO_NV FROM PHONGBAN PB, NHANVIEN NV WHERE
PB.MAPHG=NV.PHONG GROUP BY MAPHG))))
---------------->>>>>>>>>>>> Code chưa hoàn chỉnh.
--30. Liệt kê họ tên và địa chỉ của những nhân viên làm việc cho một đề án ở 'TP HCM' nhưng phòng ban
mà
--họ trực thuộc lại không tọa lạc tại tp HCM.
--31. Liệt kê họ tên địa chỉ của các nhân viên làm việc cho một đề an ở một thành php61 nhưng phòng
ban mà
--trực thuộc lại không nằm ở tp đó.
--32. liệt kê danh sách những nhân viên làm việc trong mọi đê án của công ty:
SELECT MANV,HONV,TENLOT,TENNV
FROM NHANVIEN
WHERE MANV IN
(SELECT R1.MANV
FROM PHANCONG AS R1
WHERE NOT EXISTS
(SELECT *
FROM DEAN AS S
WHERE NOT EXISTS
(SELECT *
FROM PHANCONG AS R2
WHERE R2.MANV=R1.MANV AND R2.MADA=S.MADA)))
--33. Liệt kê danh sách những nhân viên được phân công tất cả đề án do phòng 'NGHIEN CUU' chủ trì
SELECT MANV,HONV,TENLOT,TENNV
FROM NHANVIEN
WHERE MANV IN
(SELECT R1.MANV
FROM PHANCONG AS R1
WHERE NOT EXISTS
(SELECT *
FROM DEAN AS S
WHERE PHONG = 'NC' AND NOT EXISTS
(SELECT *
FROM PHANCONG AS R2
WHERE R2.MANV=R1.MANV AND R2.MADA=S.MADA)))
--34. Liệt kê danh sách họ tên nhân viên tham gia tất cả các đề án do phòng ban của nhân viên đó trực
thuộc chủ trì.
\code</tenlot,tennv)