Bài thực hành Cơ sở dữ liệu bài số 01 | Học viện Công nghệ Bưu chính Viễn thông
Bài thực hành Cơ sở dữ liệu bài số 01 của Học viện Công nghệ Bưu chính Viễn thông với những kiến thức và thông tin bổ ích giúp sinh viên tham khảo, ôn luyện và phục vụ nhu cầu học tập của mình cụ thể là có định hướng ôn tập, nắm vững kiến thức môn học và làm bài tốt trong những bài kiểm tra, bài tiểu luận, bài tập kết thúc học phần, từ đó học tập tốt và có kết quả cao cũng như có thể vận dụng tốt những kiến thức mình đã học vào thực tiễn cuộc sống. Mời bạn đọc đón xem!
Preview text:
lOMoARcPSD| 37922327 THỰCHÀNH CƠSỞDỮLIỆU Điểm: Nhận xét: Ngày tháng:14/11/2023 Lớp:D20CQVT01-N Nhóm: 01 MSSV: N20DCVT007
Họ và tên:.TRẦN BẢO DUY MỤCLỤC
1. Tạo một kết nối mới với tên HR@ ...................................................... 2
2. Lệnh SELECT trong Oracle dùng ể lấy dữ liệu ...................................................................... 5
3. Lệnh AS sẽ ặt tên mới cho ối tượng ........................................................................................ 9
4. Các toán tử so sánh .................................................................................................................. 9
5. Lệnh rẻ nhánh CASE trong Oracle ....................................................................................... 13
6. Lệnh INSERT thêm dữ liệu vào bảng trong Oracle .............................................................. 14
7. Lệnh UPDATE trong Oracle ................................................................................................. 16
8. Lệnh DELETE trong Oracle ................................................................................................. 18
9. Truy vấn con (Subquery).................................................................................................18 lOMoARcPSD| 37922327
1. Tạo một kết nối mới với tên HR@
THỰC HIỆN TRÊN ORACLE DEVELOPER
Bấm vào nút + xanh dương
Cửa sổ mới xuất hiện
Nhập vào tên, username, password… lOMoARcPSD| 37922327
Bấm nút Test và cho kết quả thành công hay không? Nếu connect không thành công thì tiến hành sửa lỗi.
Ghi lại các thông tin ăng nhập, cách thức sửa lỗi (nếu có) và kết quả ạt ược: - Name: baoduy2002 - Username: SYS - Password: duyngu lOMoARcPSD| 37922327 Bấm nút Connet
Bấm vào Tables (Filtered) và liệt kê ra có bao nhiêu
Table trong lược ồ CSDL có sẵn: lOMoARcPSD| 37922327
Liệt kê các thuộc tính của từng quan hệ có trong mục ra Tables, ghi lại thuộc tính nào là
thuộc tính khóa chính và khóa ngoại:
- COUNTRIES (COUNTRY_ID, COUNTRY_NAME, REGION_ID) Khóa ngoại: REGION_ID
- DEPARTMENTS (DEPARTMENT_ID, DEPARTMENT_NAME, MANAGER_ID, LOCATION_ID)
Khóa ngoại: MANAGER_ID, LOCATION_ID
- EMPLOYEES (EMPLOYEE_ID, FIRST_NAME, LAST_NAME, EMAIL,
PHONE_NUMBER, HIRE_DATE, JOB_ID, SALARY, COMMISSION_PCT, MANAGER_ID, DEPARTMENT_ID)
Khóa ngoại: JOB_ID, MANAGER_ID, DEPARTMENT_ID
- JOB_HISTORY(EMPLOYEE_ID, START_DATE, END_DATE, JOB_ID, DEPARTMENT_ID)
Khóa ngoại: JOB_ID, DEPARTMENT_ID
- JOBS (JOB_ID, JOB_TITLE, MIN_SALARY, MAX_SALARY)
- LOCATIONS(LOCATION_ID, STREET_ADDRESS, POSTAL_CODE, CITY, STATE_PROVINCE, COUNTRY_ID) Khóa ngoại: COUNTRY_ID
- REGIONS(REGION_ID, REGION_NAME)
2. Lệnh SELECT trong Oracle dùng ể lấy dữ liệu
Thực hiện lệnh như sau: SELECT * FROM department; Kết quả hiển thị: lOMoARcPSD| 37922327
Thực hiện lệnh như sau: SELECT * FROM employee; Kết quả hiển thị: lOMoARcPSD| 37922327
Nhận xét lệnh này thực hiện làm gì: SELECT ược dùng
ể lấy kết quả từ một hoặc nhiều bảng trong cơ sở dữ liệu của SQL Server> SELECT*
< Lấy các cột trong bảng> FROM Thực hiện lệnh sau: SELECT * FROM employee WHERE
emp_name = 'King'; và sau ó SELECT * FROM employee lOMoARcPSD| 37922327
WHERE emp_name = 'KING';
Nhận xét sau khi nhận kết quả thu ược:
Trong SQL Server, ối với kiểu dữ liệu character
òi hỏi sự chính xác. Trong ví dụ trên
‘King’ khác với ‘KING’ lOMoARcPSD| 37922327
Giải thích cú pháp lệnh SELECT SELECT expressions FROM tables WHERE conditions; SELECT là lệnh ược dùng ể lấy kết quả có
iểu kiện từ một hoặc nhiều bảng trong
cơ sở dữ liệu của SQL Server.
SELECT < Tên các cột cần ược hiển thị trong kết quả truy vấn>
FROM < Tên các bảng liên quan ến câu truy vấn> WHERE < iều kiện> Thực hiện lệnh: SELECT * FROM employee WHERE job = 'CLERK' and salary > 900 ORDER BY salary DESC;
Kết quả thu ược là gì và rút ra kết luận: lOMoARcPSD| 37922327
Lệnh trên cho kết quả toàn bộ thông tin của EMPLOYEE với iều kiện JOB_ID là ST_CLERK
và có SALARY lớn hơn 900, ược sắp xếp theo mức lương giảm dần. lOMoARcPSD| 37922327 3. Lệnh AS sẽ
ặt tên mới cho ối tượng Sử dụng AS ể
ổi tên cột của các kết quả truy vấn Thực hiện lệnh sau:
SELECT emp_id as manhanvien,
emp_name as tennhanvien FROM employee
Kết quả thu ược là gì và rút ra kết luận:
Câu lệnh trên tạo ra một dữ liệu mới là MANHANVIEN dựa trên EMPLOYEE_ID có sẵn,
tạo ra một dữ liệu mới là TENNHANVIEN dựa trên LAST_NAME có sẵn.
4. Các toán tử so sánh = So sánh bằng <> So sánh không bằng != So sánh không bằng 10 lOMoARcPSD| 37922327 > So sánh lớn hơn >=
so sánh lớn hơn hợc bằng < So sánh bé hơn <=
So sánh bé hơn hoặc bằng IN ( )
Kiểm tra có nằm trong danh sách NOT Kiểm tra phủ ịnh BETWEEN Kiểm tra trong khoảng IS NULL
Kiểm tra là giá trị NULL
IS NOT NULL Kiểm tra không phải là giá trị NULL LIKE
So sánh gần giống, sử dụng % and _
REGEXP_LIKE So sánh sử dụng Regular Expression EXISTS
Kiểm tra sub query có trả về dữ liệu không, tối thiểu là 1 row 11
Viết lệnh truy vấn SELECT lấy danh sách nhân viên có lương (SALARY) cao hơn 2500 và kết quả thu ược: lOMoARcPSD| 37922327
Viết lệnh truy vấn SELECT lấy danh sách nhân viên có lương (SALARY) trong khoảng từ
2000 ến 3000 và kết quả thu ược: lOMoARcPSD| 37922327 lOMoARcPSD| 37922327
Viết lệnh truy vấn SELECT lấy danh sách nhân viên có ID là 7900, 7839, 7369 và kết quả thu ược:
Không có nhân viên có ID là 7900, 7839, 7369
Viết lệnh truy vấn SELECT lấy danh sách nhân viên có ngoại trừ nhân viên ở phòng có mã
phòng là 30 và kết quả thu ược: lOMoARcPSD| 37922327 lOMoARcPSD| 37922327
5. Lệnh rẻ nhánh CASE trong Oracle
Thực hiện lệnh như sau:
SELECT EMP_ID,EMP_NAME,JOB, CASE
WHEN SALARY > 800 AND SALARY < 1000 THEN 'LUONG THAP'
WHEN SALARY >= 1000 AND SALARY <= 2500 THEN 'TRUNG BINH'
WHEN SALARY > 2500 THEN 'LUONG CAO' ELSE 'khong ro' END FROM EMPLOYEE;
Nhận xét kết quả thu ược:
Câu lệnh trên cho ra bảng ánh giá mức lương, nhân viên có mức lương >800 và <1000 nhân viên ược
ánh giá có mức lương thấp, nhân viên có mức lương >=1000 và <=2500 nhân viên ược
ánh giá có mức lương trung bình, nhân viên có mức lương >2500 ược ánh giá là có mức lương cao.
Từ ó, giải thích cú pháp lệnh CASE trong Oracle: CASE [ expression ]
WHEN condition_1 THEN result_1 lOMoARcPSD| 37922327
WHEN condition_2 THEN result_2 ...
WHEN condition_n THEN result_n ELSE result END
Các tham số của nó ược giải thích như sau:
- expression là giá trị dùng ể so sánh với các condition (1, ... n) ở phía dưới.
- condition_1, condition_2, ... condition_n là các giá trị dùng ể so sánh với expression, nếu cặp
nào bằng nhau thì giá trị ằng sau WHEN sẽ ược lấy.
- result_1, result_2, ... result_n là các giá trị sẽ ược lấy nếu condition ở trước nó bằng với expression.
nếu các cặp expression và condition không có cặp nào giống nhau thì giá trị tại ELSE sẽ ược lấy. 14
6. +Lệnh INSERT thêm dữ liệu vào bảng trong Oracle Thực hiện lệnh sau: INSERT INTO EMPLOYEE
(EMP_ID,EMP_NAME,EMP_NO,HIRE_DATE,JOB,SALARY,DEPT_ID) VALUES
(0001,'Nguyen Van A','D19', '05-09-2019','Sinh vien', 200, 5); lOMoARcPSD| 37922327
Sau khi thực hiện, vào trang Tab Data của bảng EMPLOYEE, kết quả thu ược là gì:
Từ ó, giải thích cú pháp lệnh INSERT dùng ể thêm một record vào bảng trongOracle: Lệnh INSERT dùng
ể thêm một record vào bảng, Trong ó mỗi column sẽ tương
ứng với giá trị mà truyền vào ở VALUES, tức thứ tự của nó sẽ tương ứng với nhau. INSERT INTO table
(column1, column2, ... column_n ) VALUES
(expression1, expression2, ... expression_n );
INSERT INTO < Tên bảng cần chèn dữ liệu>
(Danh sách các cột sẽ chứa giá trị mới chèn vào)
VALUES --Giá trị tương ứng cho các cột vừa ược liệt kê bên trên—
(Các giá trị cần truyền vào tương ứng với danh sách các cột) lOMoARcPSD| 37922327
7. Lệnh UPDATE trong Oracle Thực hiện lệnh sau: UPDATE EMPLOYEE
SET HIRE_DATE = '05-09-2022' WHERE EMP_ID = 1;
Sau khi thực hiện, vào trang Tab Data của bảng EMPLOYEE, kết quả thu ược là gì:
Từ ó, giải thích cú pháp lệnh UPDATE dùng ể cập nhật dữ liệu trong một bảng theo một iều kiện nào ó: UPDATE table_name
SET column1 = expression1, column2 = expression2, ... lOMoARcPSD| 37922327
column_n = expression_n WHERE conditions;
Lệnh Update dùng ể cập nhật dữ liệu trong một bảng theo một iều kiện nào ó. UPDATE SET WHERE <Điều kiện>; lOMoARcPSD| 37922327
Hãy cập nhật tên nhân viên và mã số nhân viên bằng chính tên của bạn và mã sinh viên của bạn:
8. Lệnh DELETE trong Oracle Thực hiện lệnh DELETE FROM EMPLOYEE WHERE emp_id = '1';
Sau khi thực hiện, vào trang Tab Data của bảng EMPLOYEE, kết quả thu ược là gì: lOMoARcPSD| 37922327 lOMoARcPSD| 37922327 Thực hiện lệnh: DELETE FROM EMPLOYEE
WHERE EMP_NAME = 'ADAMS' AND SALARY < 1000;
Sau khi thực hiện, vào trang Tab Data của bảng EMPLOYEE, kết quả thu ược là gì: Sau khi thực hiện lệnh lOMoARcPSD| 37922327
Từ ó, giải thích cú pháp lệnh DELETE dùng ể xóa dữ liệu: DELETE FROM table_name WHERE conditions;
Lệnh DELETE ược dùng ể xóa một hoặc nhiều bản ghi (hàng) từ một bảng. DELETE FROM WHERE
< Điều kiện mà bản ghi phải áp ứng ể bị xóa>; 9.
Truy vấn con (Subquery)
Lệnh SELECT trả về một bảng dữ liệu mới, bảng này sẽ không lưu vào hệ thống mà là một
bảng tạm (local temporary) và sẽ tự giải phóng khi câu truy vấn kết thúc. Ta có thể thực hiện
một truy vấn trên bảng kết quả này.
Tìm nhân viên có lương cao nhất bằng lệnh: SELECT * FROM EMPLOYEE WHERE SALARY = ( SELECT MAX(SALARY) FROM EMPLOYEE );
Kết quả thu ược là gì và giải thích: lOMoARcPSD| 37922327
- Tìm mức lương cao nhất bằng lệnh MAX(SALARY)
- Tìm nhân viên có mức lương bằng với mức lương vừa tìm ược.
Tìm số lượng nhân viên có lương cao hơn lương trung bình: SELECT COUNT(*) FROM ( SELECT salary, ( SELECT AVG(salary)
FROM employee) AS luongtb FROM employee )
WHERE salary > luongtb
Kết quả thu ược là gì và giải thích: lOMoARcPSD| 37922327
- Tính trung bình cộng tiền lương của EMPLOYEE từ bảng EMPLOYEES và ặt tên tổng tbc là luongtb.
- Lấy danh sách tiền lương của các nhân viên từ bảng EMPLOYEES
- Tính tổng các nhân viên có mức lương lớn hơn lương trung bình (salary > luongtb)
Viết lệnh thực hiện tìm danh sách lương nhân viên có lương cao hơn mức trung bình: lOMoARcPSD| 37922327