Professional Documents
Culture Documents
(HR)
EMPLOYEES
EMPLOYEE_ID
FIRST_NAME
LAST_NAME
EMAIL
DEPARTMENTS
DEPARTMENT_ID PHONE_NUMBER
DEPARTMENT_NAME HIRE_DATE
MANAGER_ID JOB_ID
LOCATION_ID SALARY
COMMISSION_PCT
MANAGER_ID
DEPARTMENT_ID
JOB_HISTORY
EMPLOYEE_ID
START_DATE
END_DATE
JOB_ID
DEPARTMENT_ID
LOCATIONS
LOCATION_ID
COUNTRIES STREET_ADDRESS
COUNTRY_ID
POSTAL_CODE
COUNTRY_NAME
CITY
REGION_ID STATE_PROVINCE
COUNTRY_ID
REGIONS
REGION_ID
REGION_NAME
2.3. Mô tả các bảng dữ liệu trong cơ sở dữ liệu HR
Bảng 2.1. Bảng dữ liệu REGIONS
Tên cột Mô tả cột Kiểu dữ liệu Khóa
REGION_ID Mã khu vực int PK
REGION_NAME Tên khu vực nvarchar(25)
b. Tạo vấn tin hiển thị tên nhân viên và mã số phòng ban của nhân viên có
mã số 176
c. Thay đổi lab2_1.sql hiển thị tên nhân viên và lương của những nhân viên có
mức lương không nằm trong khoảng 5000 đến 12000, ghi câu lệnh lại thành
lab2_3.sql
d. Hiển thị tên nhân viên, mã số công việc và ngày vào làm của những nhân
viên được nhận từ 20/02/1998 đến 01/05/1998
e. Hiển thị tên nhân viên và mã số phòng ban của những nhân viên ở các
phòng ban có mã số là 20 , 50. Kết quả được sắp xếp theo thứ tự tên
f. Thay đổi lab2_3 để hiển thị tên nhân viên và lương của những nhân viên
có tiền lương trong khoảng 5000 và 12000 và ở các phòng ban có mã số
20 hoặc 50. Nhãn của các cột là Employee và Monthly salary, sau đó ghi
lại thành lab2_6
g. Hiển thị tên nhân viên và ngày vào làm của những nhân viên được nhận
vào làm năm 1994
h. Hiển thị tên nhân viên và mã số công việc của những nhân viên không bị
quản lý.
i. Hiển thị tên nhân viên, tiền lương của những nhân viên có tiền hoa hồng .
Sắp xếp kết quả theo thứ tự tiền lương và hoa hồng giảm dần.
j. Hiển thị tên của những nhân viên có ký tự thứ ba của tên là chữ a
l. Hiển thị tên, mã số công việc và tiền lương của những nhân viên là
sales representative (SA_REP) hay stock clerk (ST_CLERK)
b. Hiển thị mã số nhân viên, tên, tiền lương và cột tiền lương đã được tăng
15% không có số lẽ, nhãn cột là New Salary. Ghi câu lệnh SQL thành tập
tin lab3_2.sql.
c. Chạy lại vấn tin trong lab3_2.sql, thay đổi vấn tin trong lab3_2.sql, thêm
cột mới lương tăng thêm (lương mới – lương củ), đặt tiêu đề là Increase.
Ghi câu lệnh SQL thành tập tin lab3_4.sql. Chạy lại vấn tin.
d. Viết vấn tin hiển thị tên các nhân viên có ký tự đầu là chữ hoa và các ký tự
khác là chữ thường, chiều dài tên nhân viên cho các nhân viên có tên bắt
đầu với J, A hay M. Đặt mỗi cột một nhãn thích hợp. Sắp xếp kết quả theo
tên nhân viên.
e. Hiển thị tên nhân viên và tính số tháng làm việc của nhân viên, đặt tên
cột là MONTHS_WORKED.Sắp xếp kết quả theo số tháng làm việc. Làm
tròn số tháng làm việc.
f. Viết vấn tin tạo nội dung sau cho mỗi nhân viên : <employee last name>
earns <salary> monthly but wants <3 times salary>. Đặt tên cột là Dream
Salaries.
g. Tạo vấn tin hiển thị tên nhân viên và tiền lương của các nhân viên, Định
dạng tiền lương dài 15 ký tự, lắp đầy bên trái bằng dấu $. Đặt tên nhãn là
Salary.
h. Hiển thị tên nhân viên, ngày vào làm, ngày nâng lương (ngày thứ hai đầu tiên
sau 6 tháng làm việc. Đặt tên cột REVIEW và định dạng cột ngày theo mẫu
“Monday, the Thirty-First of July, 2000.”
i. Hiển thị tên nhân viên, ngày vào làm và ngày trong tuần của ngày vào làm.
Đặt tên cột là DAY. Sắp xếp kết quả theo ngày trong tuần, bắt đầu bằng
Monday.
j. Tạo vấn tin hiển thị tên nhân viên, tổng số hoa hồng. Nếu nhân viên không
có thu nhập hoa hồng thì hiển thị nội dung là “No Comission”, đặt tên nhãn là
COMM.
k. Tạo vấn tin hiển thị tên nhân viên và biểu thị tổng số tiền lương hàng năm
bằng dấu *. Mỗi dấu * đại diện 1000 dolar. Sắp xếp dữ liệu theo thứ tự
giảm dần của tiền lương. Đặt tên nhãn là
EMPLOYEES_AND_THEIR_SALARIES.
l. Sử dụng hàm CASE, viết vấn tin hiển thị cấp bậc của tất cả các nhân viên
dựa trên giá trị của cột JOB_ID, như sau :
JOB GRADE
a. AD_PRES A
b. ST_MAN B
c. IT_PROG C
d. SA_REP D
e. ST_CLERK E
f. Khác 0
b. Tạo danh sách các công việc duy nhất trong phòng ban có mã số 30, bao
gồm cột mã số vị trí của phòng ban trong kết quả.
c. Viết vấn tin hiển thị tên nhân viên, mã số phòng ban, mã số vị trí phòng
ban và tên thành phố của tất cả các nhân viên có thu nhập từ hoa hồng.
d. Hiển thị tên nhân viên và tên phòng ban cho tất cả các nhân viên có chữ a
trong tên. Ghi câu lệnh thành tập tin lab4_4.sql.
e. Viết vấn tin hiển thị tên nhân viên, mã số công việc, mã số phòng ban
và tên phòng ban cho tất cả các nhân viên làm việc ở Toronto.
f. Hiển thị tên nhân viên và mã số nhân viên, cùng với tên người quản lý và
mã số người quản lý. Nhãn của các cột là Employee, Emp#, Manager,
Mgr#. Ghi câu lệnh lại thành lab4_6.sql.
g. Thay đổi lab4_6.sql để hiển thị tất cả các nhân viên bao gồm nhân viên
King (không có người quản lý).
h. Tạo vấn tin hiển thị tên nhân viên, mã số phòng ban và tất cả các nhân viên
làm chung phòng ban với nhân viên đó. Đặt tên nhãn cho các cột.
i. Tạo vấn tin hiển thị tên nhân viên, ngày vào làm của những nhân viên được
nhận vào làm sau ngày vào làm của Davies.
j. Hiển thị tên và ngày vào làm của những nhân viên được nhận vào làm trước
quản lý của họ, cùng với tên của người quản lý và ngày vào làm. Nhãn của
các cột là Employee, Emp Hired, Manager, Mgr Hired.
a. Hiển thị tiền lương cao nhất, thấp nhất, tổng lương và lương trung bình
của các nhân viên. Đặt tên cột lần lượt là Maximum, Minimum, Sum và
Average. Làm tròn kết quả không có số lẽ. Ghi câu lệnh lại thành tập tin
lab5_6.sql
b. Thay đổi lab5_6.sql để có kết quả theo từng nhóm công việc.
c. Viết vấn tin để hiển thị tổng số nhân viên của mỗi nhóm công việc.
e. Viết vấn tin hiển thị chênh lệch giữa lương cao nhất và thấp nhất. Đặt tên cột
là DIFFERENCE. SELECT max(salary)-min(salary) as Differece FROM
employees
f. Hiển thị mã số nhà quản lý và tiền lương thấp nhất của nhân viên trong nhóm
nhà quản lý đó. Chỉ hiển thị tiền lương thấp nhất trên 6000 dolar, sắp xếp thứ
tự giảm dần theo tiền lương thấp nhất.
g. Viết vấn tin hiển thị tên phòng ban, địa điểm, số nhân viên trong phòng ban
và lương trung bình của phòng ban. Đặt tên nhãn lần lượt là Name, Location,
Number of People và Salary. Làm tròn lương trung bình đến 2 số lẽ.
2.3.5 Thực hành SUBQUERY
a. Viết vấn tin hiển thị tên và ngày vào làm của các nhân viên trong phòng ban
của nhân viên tên Zlotkey, không bao gồm Zlotkey.
b. Tạo vấn tin hiển thị mã số nhân viên và tên nhân viên của các nhân viên
có thu nhập cao hơn tiền lương trung bình. Sắp xếp kết quả theo thứ tự
tiền lương giảm dần.
c. Viết vấn tin hiển thị mã số nhân viên và tên nhân viên của các nhân viên làm
việc cùng phòng với những nhân viên có chữ u trong tên. Ghi câu lệnh SQL
thành lab6_3.sql. Chạy vấn tin.
d. Hiển thị tên, mã số phòng ban và mã số công việc của tất cả các nhân viên
có vị trí phòng ban là 1700.
e. Hiển thị tên và tiền lương của những nhân viên do King quản lý.
f. Hiển thị mã số phòng ban, tên nhân viên và mã số công việc của mọi nhân
viên trong phòng ban tên Executive.
g. Thay đổi lab6_3.sql hiển thị mã số nhân viên, tên nhân viên và tiền lương
của các nhân viên có thu nhập lớn hơn tiền lương trung bình và làm chung
phòng với bất kỳ nhân viên nào có chữ u trong tên.
a. Phòng nhân sự cần danh sách mã số phòng ban không có công việc
‘ST_CLERK’. Sử dụng toán tử tập hợp để tạo báo cáo này.
b. Phòng nhân sự cần danh sách các quốc gia không đặt phòng ban nào. Hiển thị
mã số quốc gia và tên quốc gia. Sử dụng toán tử tập hợp để tạo báo cáo này.
c. Tạo danh sách các công việc cho các phòng ban 10, 50, 20 (kết quả theo
đúng thứ tự phòng ban như vậy). Hiển thị mã số công việc và mã số phòng
ban sử dụng toán tử tập hợp.
d. Tạo báo cáo danh sách bao gồm mã nhân viên, mã công việc của các nhân
viên có tên công việc giống như tên công việc khi họ bắt đầu vào làm (nghĩa là,
họ đã từng thay đổi công việc nhưng bây giờ quay lại làm công việc ban đầu)
Thêm dòng đầu tiên trong bảng dữ liệu mẫu sau vào table
MY_EMPLOYEE, đừng liệt kê các cột trong câu lệnh INSERT
d. Thêm dòng thứ hai trong bảng dữ liệu đã cho vào table MY_EMPLOYEE, liệt
kê các cột được thêm dữ liệu trong câu lệnh INSERT, xem lại các dòng đã
thêm vào table MY_EMPLOYEE
i. Thay đổi lương cho các nhân viên có tiền lương nhỏ hơn 900 thành 1000.
l. Thêm dòng dữ liệu cuối cùng trong bảng dữ liệu mẫu vào table
MY_EMPLOYEE.
o. Hủy bỏ tác vụ DELETE gần đây nhất (câu n) mà không hủy bỏ tác vụ
INSERT từ trước (câu l).
c. Viết câu lệnh tạo table EMP dựa trên bảng sau. Ghi lại thành tập tin
script lab9_3.sql, sau đó thi hành câu lệnh để tạo table. Xem lại table đã
được tạo chưa.
d. Thay đổi table EMP cho phép họ nhân viên dài hơn. Xem lại thay
đổi.
e. Xem lại hai table DEPT và EMP đã có trong kho dữ liệu chưa
f. Tạo table EMPLOYEES2 dựa vào cấu trúc của table EMPLOYEES (bao gồm
các cột EMPLOYEE_ID, FIRST_NAME, LAST_NAME, SALARY và
DEPARTMENT_ID). Tên của các cột trong table mới lần lượt là ID,
FIRST_NAME, LAST_NAME, SALARY và DEPT_ID.
i. Xóa cột đầu tiên của table EMP, xem lại cấu trúc của EMP.
EMP
Column Data type
Name
ID numeric(7,0)
LAST_NAME varchar(25)
FIRST_NAME varchar(25)
DEPT
Column Data type
Name
ID numeric(7,0)
NAME Varchar(25)
a. Thêm ràng buộc khóa chính mức table cho table EMP trên cột ID. Đặt tên
ràng buộc là my_emp_id_pk
b. Thêm ràng buộc khóa chính mức table cho table DEPT trên cột ID. Đặt tên
ràng buộc là my_deptid_pk.
c. Thêm cột DEPT_ID vào table EMP. Thêm ràng buộc khóa ngoài cho table
EMP để bảo đảm là không thể gán cho nhân viên một phòng ban chưa có.
Đặt tên ràng buộc là my_emp_dept_id_fk.
d. Xác định các ràng buộc đã được thêm vào bằng cách vấn tin view
e. Hiển thị tên đối tượng và kiểu đối tượng cho các table EMP và DEPT sử
dụng view INFORMATION_SCHEMA. TABLES hoặc sys. all_objects ,
chú ý đến các table mới và các tập tin INDEX đã được tạo.
f. Thay đổi table EMP. Thêm cột COMMISSION kiểu số (precision 2, scale 2).
Thêm ràng buộc cho cột để bảo đảm gía trị cột >0.