Tải bản đầy đủ (.doc) (19 trang)

Đề thi oracle Đại học Ngoại ngữ tin học TPHCM

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (104.33 KB, 19 trang )

BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC NGOẠI NGỮ - TIN HỌC

ĐỀ THI THỰC HÀNH
Môn: Oracle

Thời gian thi: 45 phút

(Được sử dụng tài liệu)
Cho một phần lược đồ CSDL gồm:
NHANVIEN(MANV, HOTEN, NGAYSINH, DIACHI, DIENTHOAI, EMAIL)
DUAN(MADA,TENDUAN,DIADIEM)
PHANCONG(MANV, MADA, SONGAYLAMVIEC)
1. Tạo bảng, ràng buộc khóa chính, khóa ngoại và thêm dữ liệu mẫu.
2. Viết truy vấn tìm ra danh sách nhân viên tham gia dưới 2 dự án, sắp xếp
tăng dần theo họ tên nhân viên.
3. Viết function truyền vào mã nhân viên, trả về tổng số ngày làm việc trong
các dự án của nhân viên đó
4. Viết procedure truyền vào mã nhân viên, in ra thông báo dạng: “Nhan vien
Nguyen Thanh An co tong sô ngay lam viec trong cac du an la 50 ngay”

Lưu ý: Sinh viên ghi chú thích họ tên và MSSV ở đầu bài làm, lưu bài thường
xuyên và để nguyên bài làm khi hết giờ làm bài.
Câu 1 Dùng câu lệnh truy vấn hiển thị cột lương hàng tháng của các nhân viên dạng:
Tên nhân viên : 1 thang luong = luong.
HD:
SELECT ename "EMPLOYEE",sal "MONTHLY SALARY"
FROM emp;
Câu 2: Dùng câu lệnh truy vấn hiển thị cột: mã nhân viên, tên nhân viên, lương, mã người
quản lý của những nhân viên có mã người quản lý là 7902, 7566,7788.
HD:


SELECT empno,ename,sal,mgr
FROM emp

ĐỀ 1


WHERE mgr IN (7902,7566,7788);
Câu 3:Dùng câu lệnh truy vấn hiển thị cột: mã nhân viên, tên nhân viên, mã người quản
lý, mã phòng ban của những nhân viên có tên: ford, allen.
HD:
SELECT empno,ename,mgr,deptno
FROM emp
WHERE ename IN ('FORD','ALLEN');
Câu 4:Dùng câu lệnh truy vấn hiển thị cột: tên nhân viên, ngày vào làm của những nhân
viên vào làm từ tháng giêng đến tháng 12 năm 1981.
HD:
SELECT ename,hiredate
FROM emp
WHERE hiredate BETWEEN '1-JAN-81' AND '31-DEC-81';
Câu 5:Dùng câu lệnh truy vấn hiển thị cột: tên nhân viên, nghề nghiệp của những nhân
viên
không phải là: clerk, manager, analyst.
HD:
SELECT ename,job
FROM emp
WHERE job NOT IN('CLERK','MANAGER','ANALYST');
Câu 6: Dùng câu lệnh truy vấn hiển thị cột: mã nhân viên, tên nhân viên, lương của
những
nhân viên có lương không nằm trong 1000 đến 1500.
HD:

SELECT empno,ename,sal
FROM emp
WHERE sal NOT BETWEEN 1000 AND 1500;
Câu 7: Dùng câu lệnh truy vấn hiển thị cột: mã nhân viên, tên nhân viên, lương, mã người
quản lý của những nhân viên có tên không chứa ký tự: A.
HD:
SELECT empno,ename,sal,mgr
FROm emp
WHERE ename NOT LIKE '%A%';
Câu 8: Dùng câu lệnh truy vấn hiển thị cột: mã nhân viên, tên nhân viên, lương, thưởng


của
những nhân viên có được tiền thưởng.
HD:
SELECT empno,ename,sal,comm
FROM emp
WHERE comm IS NOT NULL;
Câu 9: Dùng câu lệnh truy vấn hiển thị cột: tên nhân viên, nghề nghiệp, lương của những
nhân viên có nghề nghiệp là: salesman hoặc president và có lương > 1500.
HD:
SELECT ename,job,sal
FROM emp
WHERE (job='SALESMAN' OR job='PRESIDENT')
AND sal>1500;
Câu 10: Dùng câu lệnh truy vấn hiển thị cột chi tiết nhân viên gồm: tên nhân viên, nghề
nghiệp dạng: công việc của (nhân viên) là ( nghề nghiệp).
HD:
SELECT 'Cong viec cua '|| INITCAP(ename)|| ' la '||LOWER(job) AS "EMPLOYEE
DETAIL"

FROM emp;
Câu 11: Dùng câu lệnh truy vấn hiển thị cột: tên nhân viên, tên và nghề nghiệp nhân viên,
độ
dài tên nhân viên, vị trí của ký tự ‘A’ trong tên nhân viên, với điều kiện ký tự đầu
tiên bên phải của tên nhân viên là:’N’.
HD:
SELECT ename,CONCAT(ename,job),LENGTH(ename),INSTR(ename,'A')
FROM emp
WHERE SUBSTR(ename,-1,1)='N';
Câu 12:Dùng câu lệnh truy vấn hiển thị cột: tên nhân viện, số tuần từ khi nhân viên vào
làm
đến nay.
HD:
SELECT ename,(SYSDATE-hiredate)/7 WEEKS
FROM emp
Câu 13:
Dùng câu lệnh truy vấn hiển thị cột: mã nhân viên, ngày vào làm, số tháng từ vào
làm đến nay, sáu tháng sau ngày vào làm, ngày thứ sáu đầu tiên sau ngày vào làm,


ngày cuối tháng của ngày vào làm.
HD:
SELECT empno,hiredate,MONTHS_BETWEEN(SYSDATE,hiredate) TENURE,
ADD_MONTHS(hiredate,6) REVIEW,
NEXT_DAY(hiredate,'FRIDAY'),
LAST_DAY(hiredate)
FROM emp;
Câu 14: Dùng câu lệnh truy vấn hiển thị mã nhân viên, ngày vào làm, làm tròn đến tháng
vào làm của các nhân viên vào làm năm 1981.
HD:

SELECT empno,hiredate,ROUND(hiredate,'MONTH')
FROM emp
WHERE hiredate BETWEEN '1-JAN-1981'AND '31-DEC-1981';
Câu 15:
Dùng câu lệnh truy vấn hiển thị cột: mã nhân viên, tháng vào làm dạng “ MM/YY “
của nhân viên BLAKE.
HD:
SELECT empno,TO_CHAR(hiredate,'MM/YY') Month_Hired
FROM emp
WHERE ename = 'BLAKE';
Câu 16:Dùng câu lệnh truy vấn hiển thị cột: tên nhân viên, ngày vào làm có dạng “ First
of
May 1981 12:00:00 AM”.
HD:
SELECT ename,TO_CHAR(hiredate, 'ddspth "of" month YYYY HH24:MI:SS AM')
HIREDATE
FROM emp;
Câu 17: Dùng câu lệnh truy vấn hiển thị cột: tên nhân viên, ngày vào làm có dạng “ 17
November 1981 ”.
HD:
SELECT ename,TO_CHAR(hiredate, 'DD MONTH YYYY') HIREDATE
FROM emp;
Câu 18:Dùng câu lệnh truy vấn hiển thị cột: tên nhân viên, lương có dạng “ $ 3,500 “ của
nhân viên Scott.
HD:
SELECT ename,TO_CHAR(sal,'$99,999') SALARY


FROM emp
WHERE ename = 'SCOTT';

Câu 19: Dùng câu lệnh truy vấn hiển thị cột: tên nhân viên, ngày vào làm của tất cả các
nhân
viên vào làm ngày February 22, 1981.
HD:
SELECT ename,hiredate
FROM emp
WHERE hiredate = TO_DATE('February 22, 1981','MONTH DD, YYYY')
Câu 20: Dùng câu lệnh truy vấn hiển thị cột: nghề nghiệp, lương, lương hệ số của các
nhân
viên biết rằng nếu nghề nghiệp là manager hệ số là 1.20, clerk hệ số 1.15, analyst hệ
số 1.1, còn lại hệ số là 1.
HD:
SELECT job,sal,
DECODE (job,'ANALYST',SAL*1.1,
'CLERK',SAL*1.15,
'MANAGER',SAL*1.20,
SAL)
AS "RECEIVED SALARY"
FROM emp;
Câu 21: Dùng câu lệnh truy vấn hiển thị cột: tên nhân viên, lương, tỷ số thuế của nhân
viên
thuộc phòng ban 30, biết rằng nếu lương < $1,000 tỷ số thuế 0%, từ $1,000 đến
<$2,000 tỷ số 9%, từ $2,000 đến <$3,000 tỷ số 20%, từ $3,000 đến <$4,000 tỷ số
30%, từ $4,000 đến <$5,000 tỷ số 40%, từ $5,000 đến <$6,000 tỷ số 42%, từ $6,000
đến <$7,000 tỷ số 44%, từ $7,000 trở lên tỷ số 45%.
HD:
SELECT ename,sal,
DECODE(TRUNC(sal/1000,0),
0,0.00,
1,0.09,

2,0.20,
3,0.30,
4,0.40,
5,0.42,
6,0.44,


0.45)
AS "TAX_RATE"
FROM emp
WHERE deptno=30;
Câu 22:Dùng câu lệnh truy vấn hiển thị cột: tên nhân viên, mã người quản lý của nhân
viên
nếu nhân viên không có người quản lý cho xuất hiện câu không có người quản lý,điều
kiện mã người quản lý là null.
HD:
SELECT ename,NVL(TO_CHAR(mgr),'No Manager')
FROM emp
WHERE mgr IS NULL;
Câu 23: Dùng câu lệnh truy vấn hiển thị cột: ngày thứ sáu sau sáu tháng kể từ ngày vào
làm
có dạng: Friday, March 12th, 1982, sắp xếp tăng dần theo ngày vào làm.
HD:
SELECT
TO_CHAR(NEXT_DAY(ADD_MONTHS(hiredate,6),'FRIDAY'),'DAY,MONTH
DDTH,YYYY') AS "NEXT 6 MONTH REVIEW"
FROM emp
ORDER BY hiredate;
Câu 24: BT3- 3-46
Dùng câu lệnh truy vấn hiển thị cột: mã nhân viên, tên nhân viên, lương, lương mới

(tăng 0.15 cho toàn bộ nhân viên), số tiền tăng.
HD:
SELECT empno,ename,sal,ROUND(sal+(sal*0.15)) "NEW SALARY"
FROM emp
Câu 25: BT3- 6-47
Dùng câu lệnh truy vấn hiển thị cột: tên nhân viên, số tháng làm việc (kể từ khi vào
làm đến nay), săp xếp tăng dần theo số tháng làm việc.
HD:
SELECT ename,ROUND(MONTHS_BETWEEN(SYSDATE,hiredate),0)
"MONTHS_WORKS"
FROM emp
ORDER BY "MONTHS_WORKS" ASC;


Câu 26: BT3- 8-48
Dùng câu lệnh truy vấn hiển thị cột: tên nhân viên, lương định dạng cột lương có độ
dài 15 ký tự, những khoảng trống bên trái của lương điền vào dấu $.
HD:
SELECT ename ,LPAD(sal,15,'$') "SALARY"
FROM emp;
Câu 27: BT3- 9-49
Dùng câu lệnh truy vấn hiển thị cột: tên nhân viên, độ dài của tên, định dạng tên như
sau: ký tự đầu chử hoa các chử còn lại chử thường. Chỉ hiển thị tên nhân viên bắt
đầu bằng những ký tự: J, A, M.
HD:
SELECT INITCAP(ename),LENGTH(ename) "LENGTH"
FROM emp
WHERE ename LIKE 'A%' OR ename LIKE 'J%' OR ename LIKE 'M%';
Câu 28: BT 3-11-50
Dùng câu lệnh truy vấn hiển thị cột: tên nhân viên, thưởng nếu thưởng không có thì

điền vào câu không có tiền thưởng.
HD:
SELECT ename,NVL(TO_CHAR(comm),'Khong co tien thuong') "COMM"
FROM emp;
Câu 29: BT3- 11-51
Dùng câu lệnh truy vấn hiển thị cột: nghề nghiệp, loại. Biết rằng nếu nghề nghiệp là
president loại A, manager loại B, analyst loại C, salesman loại D, clerk loại E, còn
lại loại O.
HD:
SELECT job,DECODE(job,'PRESEDENT','A',
'MANAGER','B',
'ANALYST','C',
'SALESMAN','D',
'CLERK','E',
'O')
"GRADE"
FROM emp;
Câu 30: BT 4-3-23
Dùng câu lệnh truy vấn hiển thị cột: tên nhân viên, tên phòng ban, vị trí phòng ban


của các nhân viên có tiền thưởng.
HD:
SELECT ename,dname,loc
FROM emp,dept
WHERE emp.deptno=dept.deptno
AND comm IS NOT NULL;
Câu 31: BT 4-6-24
Dùng câu lệnh truy vấn hiển thị cột: tên nhân viên, mã nhân viên, tên người quản lý,
mã người quản lý của tất cả nhân viên.

HD:
SELECT a.ename "NAME", a.empno "EMP#",b.ename "MANAGER",b.empno
"MGR#"
FROM emp a, emp b
WHERE a.mgr=b.empno;
Câu 32: BT 4-9-26
Dùng câu lệnh truy vấn hiển thị cột: tên nhân viên, nghề nghiệp, tên phòng ban,
lương, bậc lương (grade) của các nhân viên.
HD:
SELECT ename,job,dname,sal,grade
FROM emp,dept,salgrade
WHERE emp.deptno=dept.deptno
AND sal BETWEEN losal AND hisal;
Câu 33: BT 4-10-26
Dùng câu lệnh truy vấn hiển thị cột: tên nhân viên, ngày vào làm của các nhân viên
vào làm sau Blake.
HD:
SELECT a.ename,a.hiredate
FROM emp a, emp b
WHERE a.hiredate > DECODE(b.ename,'BLAKE',b.hiredate);
Câu 34: BT 4-11-26
Dùng câu lệnh truy vấn hiển thị cột: tên nhân viên, ngày vào làm của nhân viên, tên
người quản lý, ngày vào làm của người quản lý với điều kiện nhân viên vào làm
trước người quản lý.
HD:
SELECT a.ename "Employee",a.hiredate "Emp HireDate", b.ename "Manager",
b.hiredate " Mgr Hiredate"


FROM emp a ,emp b

WHERE a.mgr=b.empno
AND a.hiredate < b.hiredate
Câu 35:
Dùng câu lệnh truy vấn hiển thị cột: tên nhân viên có ký tự đầu tiên, tên nhân viên
có ký tự cuối cùng trong danh sách alphabetized.
HD:
SELECT ename
FROM emp
WHERE ename LIKE'A%' OR ename LIKE'Z%';
Câu 36:
Dùng câu lệnh truy vấn tính trung bình tiền thưởng của các nhân viên.
HD:
SELECT AVG(comm)
FROM emp;
Câu 37:
Dùng câu lệnh truy vấn hiển thị cột: mã phòng ban, trung bình lương theo phòng
ban, sắp xếp tăng dần theo trung bình lương.
HD:
SELECT deptno,AVG(sal)
FROM emp
GROUP BY deptno
ORDER BY AVG(sal);
Câu 38:
Dùng câu lệnh truy vấn hiển thị cột: mã phòng ban, nghề nghiệp, tổng lương theo
nghề nghiệp ở các phòng ban.
HD:
SELECT deptno,job,SUM(sal)
FROM emp
GROUP BY deptno,job;
Câu 39:

Dùng câu lệnh truy vấn hiển thị cột: mã phòng ban, trung bình lương của những
phòng ban lớn hơn 2000.
HD:
SELECT deptno,AVG(sal)
FROM emp
GROUP BY deptno
HAVING AVG(sal)>2000;


Câu 40:
Dùng câu lệnh truy vấn hiển thị cột: mã phòng ban, trung bình lương của những
phòng ban có lương tối đa lớn hơn 2900.
HD:
SELECT deptno,MAX(sal)
FROM emp
GROUP BY deptno
HAVING MAX(sal)>2900
Câu 41:
Dùng câu lệnh truy vấn hiển thị cột: nghề nghiệp, tổng lương, của những nhân viên
không bán hàng và tổng lương lớn hơn 5000, sắp xếp tăng dần theo tổng lương.
HD:
SELECT job,SUM(sal) "PAYROLL"
FROM emp
WHERE job NOT LIKE 'SALE%'
GROUP BY job
HAVING SUM(sal)>5000
ORDER BY SUM(sal)
Câu 42:
Dùng câu lệnh truy vấn hiển thị lương trung bình cao nhất của các phòng ban.
HD:

SELECT MAX(AVG(sal))
FROM emp
GROUP BY deptno
Câu 43: BT 5-4-27
Dùng câu lệnh truy vấn hiển thị lương cao nhất, lương thấp nhất, tổng lương, trung
bình lương của mỗi nghề.
HD:
SELECT MAX(sal) "Maximum" ,MIN(sal) "Minimum", SUM(sal) "Sum",
ROUND(AVG(sal),0) "Average"
FROM emp;
Câu 44: BT 5-6-27.sql
Dùng câu lệnh truy vấn hiển thị số người làm cùng nghề.
HD:
SELECT job,COUNT(*)
FROM emp
GROUP BY job;
Câu 45: BT 5-9-28


Dùng câu lệnh truy vấn hiển thị cột: mã người quản lý, lương thấp nhất trả cho
người quản lý, không tính người không có mã quản lý và lương thấp nhất ít hơn
1000, sắp xếp giảm dần theo lương.
HD:
SELECT mgr, MIN(sal)
FROM emp
WHERE mgr IS NOT NULL
GROUP BY mgr
HAVING MIN(sal)>1000
ORDER BY MIN(sal) DESC
Câu 46: BT 5-10-28

Dùng câu lệnh truy vấn hiển thị cột: tên phòng ban, vị trí, số người trong phòng ban,
lương trung bình của nhân viên trong phòng ban, lương trung bình lấy hai số lẻ.
HD:
SELECT dname, loc ,COUNT(empno) "Number of People", ROUND(AVG(sal),2)
"Avergage"
FROM emp,dept
WHERE emp.deptno=dept.deptno
GROUP BY dname,loc;
Câu 47: BT 5-11-29
Dùng câu lệnh truy vấn hiển thị cột: tổng số nhân viên, tổng số nhân viên theo năm
vào làm (1980, 1981, 1982, 1983).
HD:
SELECT COUNT(empno)
"Total",SUM(DECODE(TO_CHAR(hiredate,'YYYY'),1980,1,0)) "1980",
SUM(DECODE(TO_CHAR(hiredate,'YYYY'),1981,1,0)) "1981",
SUM(DECODE(TO_CHAR(hiredate,'YYYY'),1982,1,0)) "1982",
SUM(DECODE(TO_CHAR(hiredate,'YYYY'),1983,1,0)) "1983"
FROM emp;
Câu 48:
Dùng câu lệnh truy vấn hiển thị tên nhân viên, những người có lương lớn hơn lương
của nhân viên có mã 7566.
HD:
SELECT ename
FROM emp
WHERE sal>
(SELECT sal
FROM emp
WHERE empno=7566);



Câu 49:
Dùng câu lệnh truy vấn hiển thị cột: tên nhân viên, nghề nghiệp, của những người
làm cùng nghề với người có mã 7369.
HD:
SELECT ename,job
FROM emp
WHERE job=(SELECT job
FROM emp
WHERE empno=7369);
Câu 50:
Dùng câu lệnh truy vấn hiển thị cột: tên nhân viên, nghề nghiệp, của nhân viên làm
cùng nghề với nhân viên có mã 7369 và có lương lớn hơn lương của nhân viên có
mã 7876.
HD:
SELECT ename,job
FROM emp
WHERE job=(SELECT job
FROM emp
WHERE empno=7369)
AND sal>(SELECT sal
FROM emp
WHERE empno=7876);
Câu 51:
Dùng câu lệnh truy vấn hiển thị cột: tên nhân viên, nghề nghiệp, lương, của nhân
viên có lương bằng với lương thấp nhất của các nhân viên.
HD:
SELECT ename,job,sal
FROM emp
WHERE sal=(SELECT MIN(sal)
FROM emp);

Câu 52:
Dùng câu lệnh truy vấn hiển thị cột: mã phòng ban, lương tối thiểu, của các phòng
ban có lương tối thiểu lớn hơn lương tối thiểu của phòng ban 20.
HD:
SELECT deptno,MIN(sal)
FROM emp
GROUP BY deptno
HAVING MIN(sal) > (SELECT MIN(sal)
FROM emp


WHERE deptno=20);
Câu 53:
Dùng câu lệnh truy vấn hiển thị cột: tên nhân viên, lương, mã phòng ban, của nhân
viên có lương bằng với lương tối thiểu của các phòng ban.
HD:
SELECT ename,sal,deptno
FROM emp
WHERE sal IN(SELECT MIN(sal)
FROM emp
GROUP BY deptno);
Câu 54:
Dùng câu lệnh truy vấn hiển thị cột: tên nhân viên, lương, mã phòng ban, của nhân
viên có lương bằng 800, 950, 1300.
HD:
SELECT ename,sal,deptno
FROM emp
WHERE sal IN (800,950,1300);
Câu 55:
Dùng câu lệnh truy vấn hiển thị cột: mã nhân viên, tên nhân viên, nghề nghiệp, của

nhân viên có lương lớn hơn lương trung bình của các phòng ban.
HD:
SELECT empno,ename,job
FROM emp
WHERE sal> ALL
(SELECT AVG(sal)
FROM emp
GROUP BY deptno);
Câu 56: BT 6-1-19
Dùng câu lệnh truy vấn hiển thị cột: tên nhân viên, ngày vào làm, của các nhân viên
làm cùng phòng ban với Blake, trừ Blake.
HD:
SELECT ename, hiredate
FROM emp
WHERE deptno=(SELECT deptno
FROM emp
WHERE ename like '%BLAKE%')
AND ename NOT LIKE '%BLAKE%';
Câu 57: BT 6-2-19


Dùng câu lệnh truy vấn hiển thị cột: mã nhân viên, tên nhân viên, của nhân viên có
lương lớn hơn lương trung bình, sắp xếp giảm dần theo lương.
HD:
SELECT empno,ename
FROM emp
WHERE sal > (SELECT AVG(sal)
FROM emp)
ORDER BY sal DESC;
Câu 58: BT 6-3-19

Dùng câu lệnh truy vấn hiển thị cột: mã nhân viên, tên nhân viên, của nhân viên làm
cùng phòng ban với nhân viên tên có chứa chử T.
HD:
SELECT empno,ename
FROM emp
WHERE deptno IN (SELECT deptno
FROM emp
WHERE ename LIKE'%T%');
Câu 59: BT 6-4-19
Dùng câu lệnh truy vấn hiển thị cột: tên nhân viên, mã phòng ban, nghề nghiệp, của
nhân viên làm ở Dallas.
HD:
SELECT ename, deptno,job
FROM emp
WHERE deptno IN (SELECT deptno
FROM dept
WHERE loc LIKE '%DALLAS%');
Câu 60: BT 6-6-19
Dùng câu lệnh truy vấn hiển thị cột: mã phòng ban, tên nhân viên, nghề nghiệp, của
nhân viên trong bộ phận (phòng ban) bán hàng (sales).
HD:
SELECT deptno, ename,job
FROM emp
WHERE deptno IN (SELECT deptno
FROM dept
WHERE dname LIKE '%SALES%');
Câu 61:


Dùng câu lệnh truy vấn hiển thị cột: tên nhân viên, của nhân viên có quản lý nhân

viên.
HD:
SELECT employee.ename
FROM emp employee
WHERE employee.empno IN (SELECT manager.mgr
FROM emp manager);
Câu 62:
Dùng câu lệnh truy vấn hiển thị cột: tên nhân viên, lương, mã phòng ban, lương
trung bình các phòng ban, của nhân viên có lương cao hơn lương trung bình phòng
ban.
HD:
SELECT a.ename,a.sal,a.deptno,b.salavg
FROM emp a ,(SELECT deptno,avg(sal) salavg
FROM emp
GROUP BY deptno) b
WHERE a.deptno = b.deptno
AND a.sal>b.salavg;
Câu 63: BT-7-1-13
Dùng câu lệnh truy vấn hiển thị cột: tên nhân viên, mã phòng ban, lương, của nhân
viên ở phòng ban, lương tương ứng đồng thời có tiền thưởng (comm).
HD:
SELECT ename, deptno,sal
FROM emp
WHERE (deptno,sal) IN (SELECT deptno,sal
FROM emp
WHERE comm is not null);
Câu 64: BT 7-2-13
Dùng câu lệnh truy vấn hiển thị cột: tên nhân viên, tên phòng ban, lương, của nhân
viên có lương và thưởng (comm) tương ứng lương và thưởng của nhân viên làm ở
Dallas.

HD:
SELECT ename,dname,sal
FROM emp, dept
WHERE emp.deptno=dept.deptno
AND (sal, NVL(comm,0)) IN(SELECT sal, NVL(comm,0)
FROM emp,dept
WHERE emp.deptno=dept.deptno


AND loc LIKE '%DALLAS%');
Câu 65: BT 7-3-13
Dùng câu lệnh truy vấn hiển thị cột: tên nhân viên, ngày vào làm, lương, của nhân
viên có lương và thưởng giống Scott.
HD:
SELECT ename,hiredate,sal
FROM emp
WHERE (sal, NVL(comm,0)) IN (SELECT sal, NVL(comm,0)
FROM emp
WHERE ename LIKE '%SCOTT%')
AND ename NOT LIKE '%SCOTT%';
Câu 66: BT 7-3-13
Dùng câu lệnh truy vấn hiển thị cột: tên nhân viên, nghề nghiệp, lương, của nhân
viên có lương cao hơn lương của các Clerks. Sắp xếp giảm dần theo lương.
HD:
SELECT ename,job,sal
FROM emp
WHERE sal > all (SELECT sal
FROM emp
WHERE job like '%CLERK%')
ORDER BY sal DESC;

Câu 67:
Dùng câu lệnh truy vấn hiển thị cột: tên nhân viên, mã phòng ban, lương hằng năm,
của nhân viên có nghề nghiệp nhập tùy ý (dùng biến thay thế).
HD:
SET VERIFY OFF
SELECT ename,deptno,sal*12
FROM emp
WHERE job=UPPER('&job_title')
/
SET VERIFY ON
Câu 68:
Dùng câu lệnh truy vấn hiển thị cột: mã nhân viên, tên nhân viên, nghề nghiệp, cột
nhập tùy ý, của nhân viên có điều kiện nhập tùy ý, sắp xếp tùy ý. (lưu ý các tùy ý
dùng biến thay thế ).
HD:
SET VERIFY OFF


SELECT empno,ename,job,&column_name
FROM emp
WHERE &condition
ORDER BY &order_column
/
SET VERIFY ON
--Chay chương trình
Enter value for column_name: sal
Enter value for condition: sal>=3000
Enter value for order_column: ename
EMPNO ENAME JOB SAL
------ ---------- --------- ---------7902 FORD ANALYST 3000

7839 KING PRESIDENT 5000
7788 SCOTT ANALYST 3000
Câu 69:
Dùng câu lệnh truy vấn hiển thị cột: mã nhân viên, tên nhân viên, nghề nghiệp, cột
nhập tùy ý, sắp xếp theo cột nhập tùy ý. (lưu ý tùy ý dùng biến thay thế ).
HD:
SET VERIFY OFF
SELECT empno,ename,job,&&column_name
FROM emp
ORDER BY &column_name
/
SET VERIFY ON
Enter value for column_name: DEPTNO
Câu 70:
Viết kịch bản hiển thị nghề nghiệp, tên nhân viên, lương, định dạng: gôm nhóm theo
nghề nghiệp, lương dạng $99,999.99, của nhân viên có lương nhỏ hơn 3000, sắp xếp
tăng dần theo nghề nghiệp, tên nhân viên.
HD:
SET PAGESIZE 37
SET LINESIZE 60
SET FEEDBACK OFF
TTITLE 'Employee|Report'


BTITLE 'Confidential'
BREAK ON job
COLUMN job HEADING 'Job|Catelory' FORMAT A15
COLUMN ename HEADING 'Employee' FORMAT A15
COLUMN sal HEADING 'Salary' FORMAT $99,999.99
REM ** Insert SELECT statement

SELECT job,ename,sal
FROM emp
WHERE sal<3000
ORDER BY job,ename
/
SET FEEDBACK ON
REM clear all formatting commands ...


BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC NGOẠI NGỮ - TIN HỌC

ĐỀ THI THỰC HÀNH
Môn: Oracle

Thời gian thi: 45 phút

(Được sử dụng tài liệu)
Cho một phần lược đồ CSDL gồm:
MATHANG(MAMH, TENMH, SOLUONGTON)
HOADON(MAHD,NGAYHD)
CTHOADON(MAHD, MAMH, SOLUONG,DONGIA)
1. Tạo bảng, ràng buộc khóa chính, khóa ngoại và thêm dữ liệu mẫu.
2. Viết truy vấn tìm ra danh sách các mặt hàng được bán nhiều nhất hôm nay.
3. Viết function truyền vào mã hóa đơn, trả về tổng thành tiền của hóa đơn đó
4. Viết procedure truyền vào mã hóa đơn, in ra thông báo dạng: “Tong tien
cua hoa don HD01 la 1000”

Lưu ý: Sinh viên ghi chú thích họ tên và MSSV ở đầu bài làm, lưu bài thường
xuyên và để nguyên bài làm khi hết giờ làm bài.


ĐỀ 2



×