Oracle cơ bản - SQL và PL/SQL
Chương 8. CÁC LỆNH THAO TÁC DỮ LIỆU
8.1.THAO TÁC DỮ LIỆU TRONG TABLE
8.1.1.
Thêm mới dòng dữ liệu
Để chèn một row vào table dùng lệnh INSERT. Cú
pháp:
INSERT INTO tablename ([column, column, ...])
VALUES (value, value ...);
Ví dụ:
INSERT INTO dept (depno, dname, loc)
VALUES (50, 'MARKETING', 'SAN JOSE') Chép dữ liệu từ table khác
INSERT INTO table [(column, column...)]
SELECT select_list
FROM table(s)
Ví dụ:
INSERT INTO emp_tmp (ename, sal)
SELECT ename, sal FROM emp WHERE sal > 1000 Bắt đầu từ phiên bản Oracle 9i, ta có thể thêm mới dòng dữ liệu và đặt giá trị mặc định thông qua từ khoá
DEFALT
Ví dụ:
INSERT INTO EMP (EMPNO, ENAME, DEPTNO)
VALUES (8000,’MIKE’,DEFAULT);
8.1.2.
Cập nhật dòng dữ liệu
Để chỉnh sửa dữ liệu dùng lệnh UPDATE.
Cú pháp:
UPDATE table [alias]
SET column [,column...] = [expr, subquery]
[WHERE condition]
Ví dụ 1:
UPDATE emp
SET job = 'SALEMAN', hiredate = sysdate, sal = sal * 1.1
WHERE ename = 'SCOTT';
Ví dụ 2:
UPDATE emp
SET comm = (SELECT comm FROM commission C
WHERE C.empno = emp.empno)
WHERE empno IN (SELECT empno FROM commission);
Ví dụ 3:
UPDATE emp a
SET deptno =
(SELECT deptno FROM dept
WHERE loc = 'BOSTON'),
(sal, comm) = (SELECT
1.1*AVG(sal),1.5*AVG(comm)
FROM emp b
WHERE a.deptno = b.deptno)
WHERE deptno IN
(SELECT deptno FROM dept
WHERE loc = 'DALLAS' OR loc = 'DETROIT');
...);8.1.4.
Xóa dòng dữ liệu
Để xóa dòng dùng lệnh DELETE.
Cú pháp:
DELETE FROM table [WHERE condition]
Ví dụ:
DELETE FROM emp
WHERE deptno = 10; 8.1.5.
Lỗi ràng buộc dữ liệu
Thông thường khi thực hiện các lệnh thao tác dữ liệu hay gặp phải các lỗi ràng buộc toàn vẹn dữ liệu. Các
lỗi này xuất hiện khi có các ràng buộc trước đó mà dữ liệu nhập vào, chỉnh sửa hay khi xoá đi không đảm
bảo các điều kiện toàn vẹn. Mã lỗi: ORA_02292: INTEGRITY CONSTRAINT. Sau đó báo tên của
Constraint bị lỗi. 8.2.LỆNH ĐIỀU KHIỂN GIAO DỊCH
Một câu lệnh SQL có thể gồm
Lệnh DML thao tác dữ liệu
Lệnh DDL định nghĩa dữ liệu
Lệnh DCL điều khiển truy nhập dữ liệu
Một giao dịch bắt đầu khi một lệnh SQL được thực hiện Một giao
dịch kết thúc một trong các trường hợp sau:
COMMIT hoặc ROLLBACK
Ví dụ:
INSERT INTO DEPT
VALUES (50,’TESTING’,’LAS VEGAS’);
SAVEPOINT INSERT_DONE;
UPDATE DEPT
SET DNAME = ‘MARKETING’;
ROLLBACK TO INSERT_DONE ;
UPDATE DEPT SET DNAME = ‘MARKETING’
WHERE DNAME =’SALES’;
COMMIT; 8.3.BÀI TẬP
1. Thêm dữ liệu vào bảng PROJECTS.
PROJID 1 2
P_DESC WRITE C030 COURSE PROOF READ NOTES
P_START_DATE 02-JAN-88 01-JAN-89
P_END_DATE 07-JAN-88 10-JAN-89
BUDGET_AMOUNT 500 600
MAX_NO_STAFF 1 1 2. Thêm dữ liệu vào bảng ASSIGNMENTS.
PROJID 1 1 2
EMPNO 7369 7902 7844