Download miễn phí Giáo trình Oracle cơ bản - SQL và PL/SQ





MỤC LỤC
MỤC LỤC . .1
CHƯƠNG 1. GIỚI THIỆU CHUNG . .5
1.1. NGÔN NGỮ SQL. .5
1.1.1. Lịch sử phát triển của ngôn ngữ SQL . .5
1.1.2. Chuẩn SQL. .5
1.2. CÁC KHÁINIỆM CƠ BẢN TRONG CƠ SỞ DỮ LIỆU . .5
1.2.1. Các thành phần logic trong database. .5
1.2.2. Các đối tượng trong database . .6
1.2.3. Các nhóm lệnh SQL cơ bản . .6
1.3. CƠ SỞ DỮ LIỆU THỰC HÀNH. .7
1.3.1. Mô hình dữ liệu . .7
1.3.2. Cấu trúc bảng dữ liệu . .7
CHƯƠNG 2. LỆNH TRUY VẤN CƠ BẢN . .9
2.1. CÂU LỆNH TRUY VẤN . .9
2.1.1. Quytắc viết lệnh . .9
2.1.2. Câu lệnh truyvấn cơ bản . .9
2.1.3. Các thành phần khác của mệnh đề SELECT. .9
2.1.4. Phân biệt giá trị dữ liệu trả về . .10
2.1.5. Giá trị NULL . .1 1
2.2. SQL*PLUS, CÔNG CỤ TƯƠNG TÁC LỆNH SQL VỚIDA T ABASE . .1 1
2.2.1. Câu lệnh tương tác của SQL*Plus . .1 1
2.2.2. Phân nhóm câu lệnh trong SQL*Plus. .12
2.2.3. Chi tiết các lệnh SQL*Plus cơ bản . .13
2.3. BÀI TẬP. .15
CHƯƠNG 3. TRUY VẤN DỮ LIỆU CÓ ĐIỀU KIỆN . .17
3.1. CÁC GIỚIHẠN TRONG TRUY VẤN DỮ LIỆU . .17
3.1.1. Mệnh đề WHERE. .17
3.1.2. Các toán tử sử dụng trong mệnh đề WHERE . .18
3.1.3. Ví dụ sử dụng các toán tử điều kiện . .19
3.2. SẮP XẾP DỮ LIỆU TRẢ VỀ. .20
3.2.1. Mệnh đề ORDER BY. .20
3.2.2. Sắp xếp nhiều cột dữ liệu trả về. .20
3.3. BÀI TẬP. .21
CHƯƠNG 4. CÁC HÀM SQL . .23
4.1. TỔNG QUAN VỀ HÀM SQL. .23
4.1.1. Cấu trúc hàm SQL. .23
4.1.2. Phân loại hàm SQL. .23
4.2. HÀM SQL THAO TÁC TRÊN TỪNG DÒNG DỮ LIỆU. .24
4.2.1. Các hàm thao tác trên kiểu dữ liệu số. .24
4.2.2. Các hàm thao tác trên kiểu dữ liệu kýtự. .26
4.2.3. Các hàm thao tác trên kiểu dữ liệu thời gian. .30
4.2.4. Các hàm chuyển đổi kiểu . .32
4.3. HÀM THAO TÁC TRÊN TẬP HỢP . .34
4.3.1. Các hàm tác động trên nhóm . .34
4.3.2. Mệnh đề GROUP BY. .35
4.4. MỘTSỐ HÀM MỚI BỔ SUNG TRONG Oracle9i . .36
4.4.1. Hàm NULLIF . .36
4.4.2. Hàm COALSCE . .36
4.4.3. Câu lệnh case . .36
4.5. BÀI TẬP. .36
4.5.1. Hàm trên từng dòng dữ liệu . .36
4.5.2. Hàm trên nhóm dữ liệu . .39
CHƯƠNG 5. LỆNH TRUY VẤN DỮ LIỆU MỞ RỘNG. .40
5.1. KẾTHỢPDỮ LIỆU TỪ NHIỀU BẢNG . .40
5.1.1. Mối liên kết tương đương . .40
5.1.2. Mối liên kết không tương đương . .40
5.1.3. Mối liên kết cộng . .40
5.1.4. Liên kết của bảng với chính nó (tự thân). .41
5.1.5. Cách biểu diễn kết nối mới trong Oracle 9i . .41
5.1.6. Các toán tử tập hợp . .42
5.2. LỆNH TRUY VẤN LỒNG . .43
5.2.1. Câu lệnh SELECTlồng nhau. . .43
5.2.2. T oán tử SOME/ANY/ALL/NOTIN/EXITS . .43
5.3. CẤU TRÚC HÌNH CÂY. .44
5.3.1. Cấu trúc hình cây trong 1 table . .44
5.3.2. Kỹthuật thực hiện . .44
5.3.3. Mệnh đề WHERE trong cấu trúc hình cây . .45
5.4. BÀI TẬP. .46
CHƯƠNG 6. BIẾN RUNTIME . .50
6.1. DỮ LIỆU THA Y THẾ TRONG CÂU LỆNH . .50
6.2. LỆNH DEFINE . .50
6.3. LỆNH ACCEPT . .51
6.4. BÀI TẬP. .51
CHƯƠNG 7. T ABLE VÀ CÁC LỆNH SQL VỀ T ABLE. .52
7.1. LỆNH TẠO T ABLE. 52
7.1.1. Cú pháp tạo bảng . 52
7.1.2. Tính toán kích thước table (tham khảo) . 53
7.2. MỘTSỐ QUY TẮC KHI TẠO T ABLE . 54
7.2.1. Quytắc đặt tên Object . 54
7.2.2. Quytắc khi tham chiếu đến Object . 54
7.3. Các Kiểu dữ liệu cơ bản. 55
7.3.1. Kiểu CHAR . 55
7.3.2. Kiểu V ARCHAR2 . 55
7.3.3. Kiểu V ARCHAR . 56
7.3.4. Kiểu NUMBER . 56
7.3.5. Kiểu FLOA T. 56
7.3.6. Kiểu LONG . 56
7.3.7. Kiểu DA TE . 57
7.3.8. Kiểu RAW và kiểu LONG RAW. 58
7.3.9. Kiểu ROWID . 58
7.3.10. Kiểu MLSLABEL. 58
7.3.11. Chuyển đổi kiểu . 58
7.4. RÀNG BUỘC DỮ LIỆU TRONG T ABLE . 59
7.4.1. NULL/NOT NULL . 59
7.4.2. UNIQUE . 59
7.4.3. PRIMARYKEY. 59
7.4.4. FOREIGN KEY ( Referential ) . 60
7.4.5. CHECK . 60
7.5. LỆNH DDL CAN THIỆP TỚI T ABLE . 60
7.5.1. Chỉnh sửa cấu trúc table . 60
7.5.2. Các lệnh DDL khác . 61
7.5.3. Chú dẫn cho table . 61
7.5.4. Thay đổi tên object. 62
7.5.5. Xóa dữ liệu của table . 62
7.6. THÔNG TIN VỀ T ABLE TRONG TỪ ĐIỂN DỮ LIỆU. .62
7.7. BÀI TẬP. .63
CHƯƠNG 8. CÁC LỆNH THAO TÁC DỮ LIỆU. .64
8.1. THAO TÁC DỮ LIỆU TRONG T ABLE . .64
8.1.1. Thêm mới dòng dữ liệu . .64
8.1.2. Cập nhật dòng dữ liệu . .65
8.1.3. Lệnh Merge. .65
8.1.4. Xóa dòng dữ liệu. .66
8.1.5. Lỗi ràng buộc dữ liệu . .66
8.2. LỆNH ĐIỀU KHIỂN GIAO DỊCH. .66
8.3. BÀI TẬP. .67
CHƯƠNG 9. SEQUENCE VÀ INDEX. .68
9.1. SEQUENCE. .68
9.1.1. Tạo Sequence. .68
9.1.2. Thay đổi và huỷsequence . .69
9.2. INDEX. .69
9.2.1. Tạo index . .69
9.2.2. Sử dụng index. .69
9.3. BÀI TẬP. .70
CHƯƠNG 10. VIEWS . .71
10.1. VIEWS . .71
10.1.1. Tạo view . .71
10.1.2. Xóa các view . .71
10.2. BÀI TẬP. .72
CHƯƠNG 11. QUYỀN VÀ BẢO MẬT . .73
11.1. QUYỀN - PRIVILEGE . .73
11.2. ROLE. .74
11.3. SYNONYM. .74
CHƯƠNG 12. GIỚI THIỆU NGÔN NGỮ PL/SQL. .76
12.1. TỔNG QUAN VỀ PL/SQL . .76
12.1.1. Cú pháp lệnh PL/SQL . .76
12.1.2. Khối lệnh PL/SQL. .76
12.2. LỆNH LẬP TRÌNH PL/SQLĐƠN GIẢN . .77
12.2.1. Lệnh IF . .77
12.2.2. Lệnh lặp LOOP khôngđịnh trước . .78
12.2.3. Lệnh lặp LOOP có định trước . .78
12.2.4. Lệnh lặp WHILE . .78
12.2.5. Lệnh GOTO, nhảy vô điều kiện . .78
12.3. GIỚI THIỆU CURSOR . .79
12.4. CÁC KIỂU DỮ LIỆU THÔNG DỤNG. .81
12.4.1. Kiểu dữ liệu T able . .81
12.4.2. Kiểu dữ liệu Record . .81
12.4.3. Sao kiểu dữ liệu một dòng . .82
12.4.4. Sao kiểu dữ liệu của một cột . .82
12.4.5. Lệnh SELECT . INTO. .82
12.5. BÀI TẬP. .83
CHƯƠNG 13. GIỚI THIỆU PROCEDURE BUILDER . .84
13.1. CÁC THÀNH PHẦN TRONG PROCEDURE BUILDER . .84
13.1.1. Object Navigator . .84
13.1.2. ProgramUnit Editor. .85
13.1.3. Store Program Unit Editor . .85
13.1.4. Database Trigger Edditor . .85
13.2. CÁC HÀM, THỦ TỤC . .86
13.2.1. Tạo hàm, thủ tục trên Client . .86
13.2.2. Tạo hàm, thủ tục trên Server . .86
13.2.3. Dò lỗi đối với các hàm, thủ tục . .87
CHƯƠNG 14. GIỚI THIỆU CÁC THỦ TỤC, HÀM VÀ P ACKAGE . .88
14.1. THỦ TỤC . .88
14.1.1. Tạo thủ tục . .88
14.1.2. Huỷbỏ thủ tục . .89
14.1.3. Các bước lưu giữ một thủ tục . .89
14.2. HÀM . .89
14.2.1. Tạo hàm. .90
14.2.2. Thực hiện một hàm . .90
14.2.3. Lợi ích của việc sử dụng hàm . .91
14.2.4. Một số hạn chế khi sử dụng hàm trong câu lệnh SQL . .91
14.2.5. Huỷbỏ hàm. .91
14.2.6. Hàm và thủ tục . .92
14.3. P ACKAGE. .92
14.3.1. Cấu trúc của package . .92
14.3.2. Tạo package . .93
14.3.3. Huỷpackage . .95
14.3.4. Lợi ích của việc sử dụng package . .95
14.3.5. Một số package chuẩn của Oracle . .96
CHƯƠNG 15. DA T ABASE TRIGGER . .97
15.1. TẠO TRIGGER . .97
15.1.1. Phân loại trigger . .97
15.1.2. Lệnh tạo trigger . .98
15.1.3. Sử dụng Procedure builder để tạo trigger . .99
15.2. QUẢN LÝ TRIGGER . .100
15.2.1. Phân biệt database trigger . .100
15.2.2. Thay đổi trạng thái của database trigger . .101
15.2.3. Huỷbỏ trigger . .101
15.2.4. Lưu ý khi sử dụng trigger . .102
PHỤ LỤC . .103
A -T ÀI LIỆU THAM KHẢO . .103
B - DANH MỤC CÁC HÌNH VẼ. .103



Để tải bản Đầy Đủ của tài liệu, xin Trả lời bài viết này, Mods sẽ gửi Link download cho bạn sớm nhất qua hòm tin nhắn.
Ai cần download tài liệu gì mà không tìm thấy ở đây, thì đăng yêu cầu down tại đây nhé:
Nhận download tài liệu miễn phí

Tóm tắt nội dung tài liệu:


CLARK MANAGER
JONES MANAGER
Trong mệnh đề HAVING
Tìm những phòng có mức lương trung bình lớn hơn phòng 30
SELECT DEPTNO, AVG(SAL) FROM EMP
HAVING AVG(SAL) > (SELECT AVG(SAL) FROM EMP WHERE DEPTNO =30)
GROUP BY DEPTNO;
DEPTNO AVG(SAL)
10 2916.66667
20 2175
5.2.2. Toán tử SOME/ANY/ALL/NOT IN/EXITS
Tên toán tử
NOT IN
ANY và SOME
ALL
EXISTS
Ví dụ:
Diễn giải
Không thuộc
So sánh một giá trị với mỗi giá trị trong một danh sách hay trong kết quả trả về
của câu hỏi con, phải sau toán tử =
So sánh một giá trị với mọi giá trị trong danh sách hay trong kết quả trả về của
câu hỏi con.
Trả về TRUE nếu có tồn tại.
SELECT * FROM emp
WHERE sal = ANY (SELECT sal FROM emp WHERE deptno=30);
SELECT * FROM emp
WHERE sal >= ALL (select distinct sal
From emp
Where deptno =30)
Order by sal desc;
SELECT ENAME, SAL, JOB, DEPTNO
FROM EMP
WHERE SAL > SOME (SELECT DISTINCT SAL
FROM EMP
WHERE DEPTNO =30)
Trang 43
Oracle cơ bản - SQL và PL/SQL
ORDER BY SAL DESC;
Tìm những người có nhân viên
SELECT EMPNO, ENAME, JOB, DEPTNO
FROM EMP E
WHERE EXISTS (SELECT EMPNO FROM EMP WHERE EMP.MGR = E.EMPNO);
5.3.CẤU TRÚC HÌNH CÂY
5.3.1. Cấu trúc hình cây trong 1 table
Trong một table của CSDL Oracle có thể hiện cấu trúc hình cây. Ví dụ trong bảng EMP cấu trúc thể hiện cấp
độ quản lý.
Root node: là node cấp cao nhất
Child node: là node con hay không phải là root node Parent
node: là node có node con
Leaf node: là node không có node con
Level (cấp)
Level là một cột giả chứa cấp độ trong cấu trúc hình cây. Ví dụ.
SELECT LEVEL, DEPTNO, EMPNO, ENAME, JOB, SAL
FROM EMP
CONNECT BY PRIOR EMPNO = MGR
START WITH MGR is NULL;
LEVEL DEPTNO EMPNO ENAME JOB SAL
1 10 7839 KING PRESIDENT 5000
2 30 7698 BLAKE MANAGER 2850
3 30 7654 MARTIN SALESMAN 1250
3 30 7499 ALLEN SALESMAN 1600
3 30 7844 TURNER SALESMAN 1500
3 30 7900 JAMES CLERK 950
3 30 7521 WARD SALESMAN 1250
2 10 7782 CLARK MANAGER 2450
3 10 7934 MILLER CLERK 1300
2 20 7566 JONES MANAGER 2975
3 20 7902 FORD ANALYST 3000
4 20 7369 SMITH CLERK 800
3 20 7788 SCOTT SALEMAN 3300
4 20 7876 ADAMS CLERK 1100
5.3.2. Kỹ thuật thực hiện
Có thể định nghĩa quan hệ thừa kế trong câu hỏi bằng mệnh đề STAR WITH và CONNECT BY trong câu
lênh SELECT, mỗi mầu tin là một node trong cây phân cấp. Cột giả LEVEL cho biết cấp của mẫu tin hay cấp
của node trong quan hệ thừa kế.
Cú pháp:
SELECT [DISTINCT/ALL] [expr [c_ias]]
FROM [table/view/snapshot] [t_alias]
[WHERE condition]
[START WITH condition CONNECT BY PRIOR condition]
[GROUP BY expr] [HAVING condition]
[UNION/UNION ALL/INTERSET/MINUS select command]
Trang 44
Oracle cơ bản - SQL và PL/SQL
[ORDER BY expr/position [DESC/ASC]]
Với:
START WITH Đặc tả điểm đầu của hình cây. Không thể để column
giả level ở mệnh để này.
CONNECT BY Chỉ column trong mối liên hệ tình cây.
PRIOR Định hướng cấu trúc. Nếu prior xuất hiện trước mgr,
Mgr sẽ được tìm trước sau đó đến empno, đây là hình
cây hướng lên. Nếu prior xuất hiện trước empno,
empno sẽ được tìm trước sau đó đến empno, đây là
hình cây hướng xuống.
Ví dụ:
SELECT LEVEL, DEPTNO, EMPNO, ENAME, JOB, SAL
FROM EMP
CONNECT BY PRIOR MGR = EMPNO
START WITH empno = 7876;
LEVEL DEPTNO EMPNO ENAME JOB SAL
1 20 7876 ADAMS CLERK 1100
2 20 7788 SCOTT SALEMAN 3300
3 20 7566 JONES MANAGER 2975
4 10 7839 KING PRESIDENT 5000
5.3.3. Mệnh đề WHERE trong cấu trúc hình cây
Mệnh đề WHERE và CONNECT BY có thể được dùng đồng thời trong cấu trúc hình cây. Nếu
mệnh đề WHERE loại trừ một số row của cấu trúc hình cây thì chỉ những row đó được loại
trừ. Nếu điều kiện đặt trong mệnh đề CONNECT BY thì toàn bộ nhánh của row đó bị loại trừ.
Ví dụ 1:
SELECT LEVEL, DEPTNO, EMPNO, ENAME, JOB, SAL
FROM EMP WHERE ENAME != ‘SCOTT’
CONNECT BY PRIOR EMPNO = MGR
START WITH MGR IS NULL;
LEVEL DEPTNO EMPNO ENAME JOB SAL
1 10 7839 KING PRESIDENT 5000
2 30 7698 BLAKE MANAGER 2850
3 30 7654 MARTIN SALESMAN 1250
3 30 7499 ALLEN SALESMAN 1600
3 30 7844 TURNER SALESMAN 1500
3 30 7900 JAMES CLERK 950
3 30 7521 WARD SALESMAN 1250
2 10 7782 CLARK MANAGER 2450
3 10 7934 MILLER CLERK 1300
2 20 7566 JONES MANAGER 2975
3 20 7902 FORD ANALYST 3000
4 20 7369 SMITH CLERK 800
4 20 7876 ADAMS CLERK 1100
Ví dụ 2:
SELECT LEVEL, DEPTNO, EMPNO, ENAME, JOB, SAL
FROM EMP
CONNECT BY PRIOR EMPNO = MGR AND ENAME != ‘SCOTT’
Trang 45
Oracle cơ bản - SQL và PL/SQL
START WITH MGR IS NULL;
LEVEL DEPTNO EMPNO ENAME JOB SAL
1 10 7839 KING PRESIDENT 5000
2 30 7698 BLAKE MANAGER 2850
3 30 7654 MARTIN SALESMAN 1250
3 30 7499 ALLEN SALESMAN 1600
3 30 7844 TURNER SALESMAN 1500
3 30 7900 JAMES CLERK 950
3 30 7521 WARD SALESMAN 1250
2 10 7782 CLARK MANAGER 2450
3 10 7934 MILLER CLERK 1300
2 20 7566 JONES MANAGER 2975
3 20 7902 FORD ANALYST 3000
4 20 7369 SMITH CLERK 800
5.4.BÀI TẬP
1. Hiển thị toàn bộ tên nhân viên và tên phòng ban làm việc sắp xếp theo tên phòng
ban.
2. Hiển thị tên nhân viên, vị trí địa lý, tên phòng với điều kiện lương >1500.
ENAME LOC DNAME
KING NEW YORK ACCOUNTING
BLAKE CHICAGO SALES
CLARK NEW YORK ACCOUNTING
JONES DALLAS RESEARCH
ALLEN CHICAGO SALES
FORD DALLAS RESEARCH
SCOTT DALLAS RESEARCH
3. Hiển thị tên nhân viên, nghề nghiệp, lương và mức lương.
ENAME JOB SAL GRADE
JAMES CLERK 950 1
SMITH CLERK 800 1
ADAMS CLERK 1100 1
MARTIN SALESMAN 1250 2
WARD SALESMAN 1250 2
MILLER CLERK 1300 2
ALLEN SALESMAN 1600 3
TURNER SALESMAN 1500 3
BLAKE MANAGER 2850 4
CLARK MANAGER 2450 4
JONES MANAGER 2975 4
FORD ANALYST 3000 4
SCOTT ANALYST 3000 4
KING PRESIDENT 5000 5
4. Hiển thị tên nhân viên, nghề nghiệp, lương và mức lương, với điều kiện mức
lương=3.
ENAME JOB SAL GRADE
ALLEN SALESMAN 1600 3
TURNER SALESMAN 1500 3
Trang 46
Oracle cơ bản - SQL và PL/SQL
5. Hiển thị những nhân viên tại DALLAS
ENAME LOC SAL
JONES DALLAS 2975
FORD DALLAS 3000
SMITH DALLAS 800
SCOTT DALLAS 3000
ADAMS DALLAS 1100
6. Hiển thị tên nhân viên , nghề nghiệp, lương, mức lương, tên phòng làm việc trừ nhân
viên có nghề là cleck và sắp xếp theo chiều giảm.
ENAME JOB SAL GRADE DNAME
MARTIN SALESMAN 1250 2 SALES
WARD SALESMAN 1250 2 SALES
ALLEN SALESMAN 1600 3 SALES
TURNER SALESMAN 1500 3 SALES
BLAKE MANAGER 2850 4 SALES
CLARK MANAGER 2450 4 ACCOUNTING
JONES MANAGER 2975 4 RESEARCH
FORD ANALYST 3000 4 RESEARCH
SCOTT ANALYST 3000 4 RESEARCH
KING PRESIDENT 5000 5 ACCOUNTING
7. Hiển thị chi tiết về những nhân viên kiếm được 36000 $ 1 năm hay nghề là cleck.
(gồm các trường tên, nghề, thu nhập, mã phòng, tên phòng, mức lương)
ENAME JOB ANUAL_SAL DNAME GRADE
JAMES CLERK 11400 SALES 1
SMITH CLERK 9600 RESEARCH 1
ADAMS CLERK 13200 RESEARCH 1
MILLER CLERK 15600 ACCOUNTING 2
FORD ANALYST 36000 RESEARCH 4
SCOTT ANALYST 36000 RESEARCH 4
8. Hiển thị những phòng không có nhân viên nào làm việc.
DEPTNO DNAME LOC
40 OPERATIONS BOSTON
9. Hiển thị mã nhân viên, tên nhân viên, mã người quản lý, tên người quản lý
EMP_NAME EMP_SAL MGR_NAME MGR_SAL
BLAKE 2850 KING 5000
CLARK 2450 KING 5000
JONES 2975 KING 5000
MARTIN 1250 BLAKE 2850
ALLEN 1600 BLAKE 2850
TURNER 1500 BLAKE 2850
JAMES 950 BLAKE 2850
WARD 1250 BLAKE 2850
FORD 3000 JONES 2975
SMITH 800 FORD 3000
SCOTT 3000 JONES 2975
ADAMS 1100 SCOTT 3000
MILLER 1300 CLARK 2450
Trang 47
Oracle cơ bản - SQL và PL/SQL
10. Như câu 9 hiển thị thêm thông tin về ông KING.
EMP_NAME EMP_SAL MGR_NAME MGR_SAL
KING 5000
BLAKE 2850 KING 5000
CLARK 2450 KING 5000
JONES 2975 KING 5000
MARTIN 1250 BLAKE 2850
ALLEN 1600 BLAKE 2850
TURNER 1500 BLAKE 2850
JAMES 950 BLAKE 2850
WARD 1250 BLAKE 2850
FORD 3000 JONES 2975
SMITH 800 FORD 3000
SCOTT 3000 JONES 2975
ADAMS 1100 SCOTT 3000
MILLER 1300 CLARK 2450
11. Hiển thị nghề nghiệp được tuyển dụng vào năm 1981 và không được tuyển dụng vào
năm 1994.
12. Tìm những nhân viên gia nhập công ty trước giám
 

Các chủ đề có liên quan khác

Top