Chương 4 THAO TÁC DỮ LIỆU

- Lý thuyết: 4 tiết

4 - 1

Chương 4. Thao tác dữ liệu

- Thực hành: 6 tiết

Thao tác dữ liệu

 Thêm các hàng mới vào một bảng.

 Chỉnh sửa các hàng đã tồn tại trong bảng.

 Loại bỏ hàng từ bảng.

4 - 2

Chương 4. Thao tác dữ liệu

4.1 Ngôn ngữ thao tác dữ liệu

Thao tác dữ liệu

 Chèn dữ liệu vào bảng.

4 - 3

Chương 4. Thao tác dữ liệu

4.2 Câu lệnh chèn (INSERT)

Thao tác dữ liệu

 Chèn một hàng vào bảng

4.2 Câu lệnh chèn (INSERT)

INSERT INTO table ([column, column, ...])

VALUES (value, value ...);

INSERT INTO Dept

VALUES (50, 'MARKETING', null,'SAN JOSE');

4 - 4

Chương 4. Thao tác dữ liệu

Ví dụ

Thao tác dữ liệu

 Chép dữ liệu từ bảng khác

4.2 Câu lệnh chèn (INSERT)

INSERT INTO table [(column, column...)]

SELECT select_list

 select_list: Danh sách cột hay biểu thức cần lấy dư˜ liệu

FROM table1;

INSERT INTO EMP_TMP(Ename, Sal)

SELECT Firstname, Salary FROM Emp

WHERE Sal > 1000;

4 - 5

Chương 4. Thao tác dữ liệu

Ví dụ

Thao tác dữ liệu

 INSERT đồng thời trên nhiều bảng

 INSERT không điều kiện (UNCONDITIONAL)

4.2 Câu lệnh chèn (INSERT)

INSERT ALL

INTO T1 (C1, C2, ...) VALUES (V1, V2, ...)

INTO T2 (C1, C2, ...) VALUES (V1, V2, ...)

4 - 6

Chương 4. Thao tác dữ liệu

[SELECT C1, C2, ... FROM T];

Thao tác dữ liệu

 INSERT đồng thời trên nhiều bảng

 INSERT có điều kiện (CONDITIONAL)

INSERT [ALL| FIRST]

WHEN c1 = 1 THEN INTO T1 (C1, C2, ...) VALUES (V1, V2, ...)

WHEN c1 = 2 THEN INTO T2 (C1, C2, ...) VALUES (V1, V2, ...)

WHEN c1 = 3 THEN INTO T3 (C1, C2, ...) VALUES (C1, C2, ...)

SELECT C1, C2, ... FROM T;

 FIRST: thực hiện câu lệnh đầu tiên có điều kiện đúng.

 ALL: thực hiện mọi câu lệnh có điều kiện đúng.

4 - 7

Chương 4. Thao tác dữ liệu

4.2 Câu lệnh chèn (INSERT)

Thao tác dữ liệu

 Chèn hàng với giá trị NULL

 Không tường minh

INSERT INTO Dept(Deptid, Deptname)

VALUES (30, ‘PURCHASING');

 Tường minh

INSERT INTO DEPT

VALUES (100, ‘FINANCE', NULL, NULL);

4 - 8

Chương 4. Thao tác dữ liệu

4.2 Câu lệnh chèn (INSERT)

Thao tác dữ liệu

 Một số lỗi thường gặp

 Thiếu giá trị cho cột NOT NULL.

 Trùng lặp giá trị vi phạm ràng buộc duy nhất.

 Vi phạm ràng buộc khóa ngoại.

 Vi phạm ràng buộc CHECK.

 Lỗi kiểu dữ liệu.

 Giá trị lớn hơn độ rộng cột.

4 - 9

Chương 4. Thao tác dữ liệu

4.2 Câu lệnh chèn (INSERT)

Thao tác dữ liệu

 cập nhật dư˜ liệu trong cơ sở dữ liệu

4 - 10

Chương 4. Thao tác dữ liệu

4.3 Câu lệnh cập nhật (UPDATE)

Thao tác dữ liệu

4.3 Câu lệnh cập nhật (UPDATE)

UPDATE table [alias]

SET column [,column...] = [expr, subquery]

Trong đó

expr, subquery: Giá trị được cập nhật vào bảng.

4 - 11

Chương 4. Thao tác dữ liệu

[WHERE condition]

Thao tác dữ liệu

4.3 Câu lệnh cập nhật (UPDATE)

Cập nhật thông tin cho SCOTT với công việc mới là SALEMAN và tăng lương lên 1.1 lần.

Ví dụ

UPDATE Emp

SET jobid = 'SALEMAN', salary = salary * 1.1

4 - 12

Chương 4. Thao tác dữ liệu

WHERE Firstname = 'SCOTT'

Thao tác dữ liệu

4.3 Câu lệnh cập nhật (UPDATE)

Cập nhật tiền lương cho nhân viên dựa vào mức lương cao nhất công việc của họ.

UPDATE Emp

SET salary = (SELECT max_salary

FROM Job J

WHERE J.jobid = Emp.jobid)

4 - 13

Chương 4. Thao tác dữ liệu

Ví dụ

Thao tác dữ liệu

 xóa hàng đang tồn tại trong cơ sở dữ liệu

4 - 14

Chương 4. Thao tác dữ liệu

4.4 Câu lệnh xóa (DELETE)

Thao tác dữ liệu

 Xóa dữ liệu trong một bảng

4.4 Câu lệnh xóa (DELETE)

DELETE FROM table

[WHERE condition];

DELETE FROM Emp

Xóa tất cả những hàng dữ liệu có Deptid =10.

DELETE FROM Emp

WHERE Deptid = 10

4 - 15

Chương 4. Thao tác dữ liệu

Ví dụ Xóa tất cả dữ liệu trong bảng EMP.

Thao tác dữ liệu

 Xóa dữ liệu dựa trên bảng khác

4.4 Câu lệnh xóa (DELETE)

Xóa tất cả những nhân viên thuộc phòng Public.

DELETE FROM Emp

WHERE Deptid = (SELECT Deptid

FROM Dept

WHERE deptName LIKE 'Publi%');

4 - 16

Chương 4. Thao tác dữ liệu

Ví dụ:

Thao tác dữ liệu

 cập nhật hoặc chèn tuỳ thuộc vào bản ghi đích.

MERGE INTO table AS alias

USING (table|view|sub_query) AS alias ON (join condition) WHEN MATCHED THEN

UPDATE SET

col1 = col1_val, col2 = col2_val

WHEN NOT MATCHED THEN

INSERT (column_list) VALUES (column_values);

4 - 17

Chương 4. Thao tác dữ liệu

4.5 Câu lệnh kết hợp (MERGE)

Thao tác dữ liệu

4.5 Câu lệnh kết hợp (MERGE)

MERGE INTO Copy_emp AS c

USING Emp e ON (c.empid = e.empid) WHEN MATCHED THEN

UPDATE SET

c.ename = e.ename, ... c.deptid = e.deptid

WHEN NOT MATCHED THEN

INSERT VALUES(e.empid, e.ename, e.jobid, e.salary,…, e.managerid, e.deptid);

4 - 18

Chương 4. Thao tác dữ liệu

Ví dụ Cập nhật hoặc chèn vào bảng Copyemp, sử dụng Emp

Thao tác dữ liệu

 là một đơn vị làm việc nguyên tố

 bắt đầu khi user kết nối vào cơ sở dữ liệu

 kết thúc khi thuộc một trong các trường hợp sau:

 COMMIT hoặc ROLLBACK.

 Các lệnh DDL và DCL thực hiện (tự động commit).

 Lỗi, thoát khỏi SQL*Plus, hệ thống bị down.

4 - 19

Chương 4. Thao tác dữ liệu

4.6 Điều khiển chuyển tác

Thao tác dữ liệu

4 - 20

Chương 4. Thao tác dữ liệu

4.6 Điều khiển chuyển tác

Thao tác dữ liệu

 Lệnh COMMIT

4.6 Điều khiển chuyển tác

 kết thúc hay hoàn tất chuyển tác

 Lệnh SAVEPOINT

COMMIT

 lưu điểm bắt đầu chuyển tác.

4 - 21

Chương 4. Thao tác dữ liệu

SAVEPOINT name

Thao tác dữ liệu

 Lệnh ROLLBACK

4.6 Điều khiển chuyển tác

 quay lại điểm SAVEPOINT hoặc toàn bộ chuyển tác

 Tự động COMMIT

ROLLBACK [TO SAVEPOINT name]

 lưu điểm bắt đầu chuyển tác.

4 - 22

Chương 4. Thao tác dữ liệu

SET AUTO[COMMIT] ON/OFF

Thao tác dữ liệu

4.6 Điều khiển chuyển tác

INSERT INTO Dept

VALUES (50,’TESTING’,’LAS VEGAS’);

SAVEPOINT INSERT_DONE;

DELETE FROM Dept

where DNAME = ’TESTING’;

ROLLBACK TO INSERT_DONE ;

COMMIT;

4 - 23

Chương 4. Thao tác dữ liệu

Ví dụ

Thao tác dữ liệu

 Trước khi thực hiện lệnh COMMIT hoặc ROLLBACK

 có thể phục hồi dữ liệu

 có thể xem trước kết quả

 người dùng không phải hiện hành sẽ không xem được kết quả

 các hàng giả lập bị khóa.

4 - 24

Chương 4. Thao tác dữ liệu

4.6 Điều khiển chuyển tác

Thao tác dữ liệu

 Sau khi thực hiện lệnh COMMIT

 Dữ liệu bị cố định.

 Tất cả người dùng có thể xem được kết quả.

 Mở khóa của các hàng giả lập; có thể thao tác được.

 Tất cả các SavePoint bị xóa bỏ.

4 - 25

Chương 4. Thao tác dữ liệu

4.6 Điều khiển chuyển tác

Thao tác dữ liệu

 Sau khi thực hiện lệnh ROLLBACK

 Mọi sự thay đổi dữ liệu sẽ không được thực hiện

 Tình trạng dữ liệu trước đó được phục hồi.

 Tình trạng khóa của các hàng giả lập được xóa bỏ.

4 - 26

Chương 4. Thao tác dữ liệu

4.6 Điều khiển chuyển tác

Câu lệnh SQL

 Trả lời câu hỏi phần 4.7 trong giáo trình

 Thực hành viết các câu lệnh thao tác dữ liệu trong phần bài tập

 Chuẩn bị nội dung chương 5.

4 - 27

Chương 4. Thao tác dữ liệu

Câu hỏi và bài tập