SlideShare a Scribd company logo
1
HỆ QUẢN TRỊ CSDL ORACLE
2
1. Giới thiệu Oracle, các phiên bản.
2. Công cụ SQL*Plus
3. Công cụ iSQLPlus
4. Công cụ OEM
5. Ngôn ngữ SQL (Các lệnh định nghĩa dữ liệu,
thao tác dữ liệu, truy vấn dữ liệu, điều khiển
dữ liệu, phân quyền users, roles).
6. Các lệnh giao tác
7. Sequences, Views, Indexes, Synnonym
8. Oracle data dictionary
Giới thiệu các công cụ SQL*Plus,
iSQLPlus, OEM và Ngôn ngữ truy vấn SQL
3
 Oracle là tên của một hãng phần mềm, một hệ quản trị cơ sở dữ
liệu phổ biến trên thế giới . Hãng Oracle ra đời đầu những năm
70 của thế kỷ 20 tại Mỹ.
 Tập hợp các sản phẩm phần mềm phục vụ cho mục đích xây
dựng và quản lý hệ thống thông tin, các ứng dụng giao tiếp cơ sở
dữ liệu bên dưới.
 Là hệ quản trị cơ sở dữ liệu quan hệ (RDBMS) mang tính mềm
dẻo, linh động, thích ứng cao với các quy mô xử lý giao dịch, an
toàn hệ thống. Cung cấp các công cụ xây dựng và quản lý cơ sở
dữ liệu.
 Tích hợp Web: kết nối ứng dụng với công nghệ Web được tích
hợp trong Oracle WebServer.
1. Giới thiệu Oracle (1)
4
 Phiên bản 1 phát hành năm 1977.
 Phiên bản 2 phát hành năm 1979.
 Phiên bản 3 phát hành năm 1983.
 Phiên bản 4 phát hành năm 1984.
 Phiên bản 5 phát hành năm 1985 (SQLNet: hệ thống khách/chủ (client/server)).
 Phiên bản 6 phát hành năm 1988 (Sequence, thao tác ghi trễ).
 Oracle7 được phát hành năm 1992 (SQL*DBA).
 Năm 1999 Oracle giới thiệu Oracle8i (i:internet).
 Năm 2001-2002: 2 phiên bản Oracle9i (Release 1&2).
 Năm 2004-2005: 2 phiên bản Oracle10g (g:Grid) (Release 1&2).
 Năm 2007-2009: phiên bản Oracle11g (Release 1&2).
 http://www.oracle.com/technology/software/products/database/in
dex.html
1. Giới thiệu Oracle (1) – Các phiên bản
1. Giới thiệu Oracle (1) – Các phiên bản
5
- Database Server (Server quản lý cơ sở dữ liệu)
- Công cụ thao tác cơ sở dữ liệu: SQL*Plus
- Công cụ phát triển ứng dụng: Oracle Developer Suite
(Form, Report,..),Oracle JDeveloper,...
- Phân tích dữ liệu: Oracle Discoverer, Oracle Express,
Oracle Warehouse Builder,...
- Oracle Application Server (OAS)
- Ứng dụng đóng gói: Oracle Human Resource, Oracle
Financial Applications,…
- Oracle Email, Oracle Calendar, Oracle Web
Conferencing,...
1. Giới thiệu Oracle (2) – Các sản phẩm
6
Lưu ý: trong Window7 -> click phải chuột vào menu SQL Plus ->
run as Administrator (lệnh Edit buffer mới thực hiện
được)
2. Công cụ SQL*Plus (1) – Giao diện
7
2. Công cụ SQL*Plus (2) – Giao diện
8
 Ngôn ngữ SQL: ngôn ngữ chuẩn để truy vấn và
thao tác trên CSDL quan hệ, dùng trong Oralce
khi cần truy xuất CSDL.
 Ngôn ngữ PL/SQL: ngôn ngữ thủ tục của Oracle
dùng để xây dựng các ứng dụng, kết hợp SQL
để truy xuất dữ liệu.
 Công cụ SQL*Plus: sản phẩm của Oracle, là môi
trường để thực hiện các lệnh SQL và PL/SQL.
 SQL*Plus còn có các lệnh riêng để điều khiển
cách xử lý của SQL*Plus, định dạng dữ liệu xuất.
2. Công cụ SQL*Plus (3)
9
Lệnh Mục đích
CLEAR BUFFER Xóa tất cả dòng lệnh từ SQL Buffer (file
“afdeit.buf”)
DEL Xóa dòng lệnh hiện hành trong Buffer
LIST Liệt kê tất cả các hàng trong SQL Buffer
LIST n Liệt kê hàng thứ n trong SQL Buffer
LIST m n Liệt kê các hàng trong phạm vi từ m đến n
RUN (chạy trong Buffer (file
“afdeit.buf”))
Hiển thị câu SQL và thực thi lệnh SQL hiện hành
/ Chỉ thực thi lệnh SQL hiện hành trong Buffer, ko in
ra
SAVE filename Lưu nội dung hiện hành của SQL Buffer vào
filename
GET filename Xuất nội dung của filename
START filename Thực thi lệnh trong filename
EDIT filename Soạn thảo nội dung filename
2. Công cụ SQL*Plus (4) – Các lệnh thường dùng
10
3. Công cụ iSQLPlus (1) – Thực thi lệnh SQL,PL/SQL trên web
11
3. Công cụ iSQLPlus (2) – Thực thi lệnh SQL,PL/SQL trên web
12
4. Công cụ Oracle Enterprise Manager
- (OEM) quản trị Oracle qua web (1)
13
4. Công cụ Oracle Enterprise Manager
- (OEM) quản trị Oracle qua web (2)
14
* Các loại biến trong SQL*Plus: 2 kiểu biến
 Biến thay thế &: dấu & đặt trước biến. Biến được nhập
giá trị lúc thực thi câu SQL. Kết quả câu SQL tùy thuộc
vào giá trị nhập cho biến.
- Ví dụ: SELECT MaNV, HoNV, TenNV
FROM NhanVien
WHERE MaPhong=&DEPT_NUMBER;
Khi chạy lệnh SQL trong môi trường SQL*Plus sẽ hiện
ra dòng chữ -> nhập giá trị vào (VD:5).
SQL>Enter value for DEPT_NUMBER:5
- Lưu ý: biến kiểu chuỗi, kiểu ngày đặt trong cặp dấu ‘ ’
SỬ DỤNG BIẾN THAY THẾ &, &&
15
 Biến thay thế &&: dấu && đặt trước biến. Giá trị
nhập vào được lưu trữ cho những lần sau.
- Ví dụ: SELECT MaNV, HoNV, TenNV
FROM NhanVien
WHERE MaPhong=&&DEPTNO;
Khi chạy lệnh SQL trong môi trường SQL*Plus sẽ
hiện ra dòng chữ -> nhập giá trị vào (VD:5).
SQL>Enter value for DEPTNO:5
Ghi chú: Lần sau chạy câu lệnh, giá trị này được nhớ.
SỬ DỤNG BIẾN THAY THẾ &, &&
16
 Là ngôn ngữ chuẩn để truy vấn và thao tác
trên CSDL quan hệ
 Là ngôn ngữ phi thủ tục
 Khởi nguồn của SQL là SEQUEL - Structured
English Query Language, năm 1974)
 Các chuẩn SQL
 SQL89 (SQL1)
 SQL92 (SQL2)
 SQL99 (SQL3)
5. Ngôn ngữ SQL (1) – Giới thiệu
5. Ngôn ngữ SQL (1) – Giới thiệu
17
 Ngôn ngữ định nghĩa dữ liệu (DDL): tạo table (bảng),
view (khung nhìn), sửa cấu trúc table và thêm, xóa
RBTV, xóa table, xóa view, đổi tên table
 Ngôn ngữ thao tác dữ liệu: thêm, xóa, sửa dữ liệu, và
truy vấn dữ liệu.
 Ngôn ngữ điều khiển dữ liệu: tạo quyền hạn, xóa
quyền, làm cho hiệu lực/mất hiệu lực quyền, tạo
người dùng, đổi mật khẩu, xóa người dùng, cấ́p
quyền và thu hồi quyền sử dụng trên cơ sở dữ liệu.
 Ngoài ra còn có các lệnh điều khiển giao tác.
 Lệnh thao tác trên các thành phần CSDL khác:
Synonym, Index và Sequence
5. Ngôn ngữ SQL (2) – Phân loại
18
 Ngôn ngữ định nghĩa dữ liệu (DDL– Data
Definition Language)
 Bao gồm:
 Lệnh tạo table, tạo view (CREATE...)
 Lệnh sửa cấu trúc table, thêm, xóa ràng
buộc toàn vẹn trên table (ALTER...)
 Lệnh xóa table, xóa view (DROP...)
 Đổi tên table (RENAME…)
5. Ngôn ngữ SQL (3) – Ngôn ngữ định nghĩa dữ liệu
19
 Ngôn ngữ thao tác dữ liệu (DML – Data
Manipulation Language)
 Bao gồm:
 Lệnh thêm dữ liệu (INSERT...)
 Lệnh sửa dữ liệu (UPDATE...)
 Lệnh xóa dữ liệu (DELETE...)
 Truy vấn dữ liệu (SELECT...)
5. Ngôn ngữ SQL (4) – Ngôn ngữ thao tác dữ liệu
20
 Ngôn ngữ điều khiển dữ liệu (DCL – Data Control
Language). Bao gồm:
 Lệnh tạo quyền hạn (Create Role…)
 Lệnh thiết lập, đổi hay bỏ mật khẩu của role (Alter
Role…)
 Lệnh xóa quyền hạn (Drop Role…)
 Lệnh tạo người dùng, đổi mật khẩu và xóa người
dùng (Create User…, Alter User…, Drop User…)
 Lệnh cấp quyền cho người sử dụng cơ sở dữ liệu
(GRANT...)
 Lệnh thu hồi quyền hạn của người sử dụng cơ sở
dữ liệu (REVOKE...)
5. Ngôn ngữ SQL (5) – Ngôn ngữ điều khiển dữ liệu
21
 Lệnh điều khiển giao tác bao gồm:
 Lệnh COMMIT, lệnh ROLLBACK, lệnh SAVEPOINT,
lệnh AUTOCOMMIT
 Các đối tượng khác:
 SYNONYM: tạo một Synonym (Create Synonym…),
xóa Synnonym (Drop Synonym…)
 INDEX: tạo chỉ mục cho table (Create Index…) , bảo
đảm giá trị duy nhất trong cột, thường là giá trị
Primary key.
 SEQUENCE: tạo giá trị SEQUENCE cho cột (Create
Sequence…).
5. Lệnh điều khiển giao tác + các đối tượng khác
22
 Cú pháp
CREATE TABLE <tên_table>
(
tên_cột1 kiểu_dữ_liệu [not null],
tên_cột2 kiểu_dữ_liệu [not null],
…
tên_cộtn kiểu_dữ_liệu [not null],
khai báo khóa chính, khóa ngoại, ràng buộc toàn
vẹn
)
Ngôn ngữ định nghĩa dữ
liệu
Tạo table, view (1)
23
 Cú pháp
CREATE [OR REPLACE] [FORCE] VIEW
<tên_view> [tên-cột1, cột2,…]
AS
SELECT …
[Điều kiện] [Ràng buộc]
- Ghi chú: tùy chọn Replace sẽ xóa view và tạo
view mới nếu view đã tồn tại rồi.
Ngôn ngữ định nghĩa dữ
liệu
Tạo table, view (2)
24
Loại dữ liệu Mô tả
VARCHAR2(n) Dữ liệu kiểu ký tự, n<=4000
CHAR(n) Dữ liệu kiểu ký tự, kích thước cố đinh, n<=2000
NUMBER Kiểu số nguyên, số ký số tối đa là 38 ký số
NUMBER(p) Kiểu số nguyên, với số ký số tối đa là p
NUMBER(p,s) Kiểu số thực, tối đa p ký số, s số thập phân. p 38, -84
≤ ≤
s 127.Ví dụ: số 7456123, khai báo kiểu number (7, -2)
≤
= 7456100
DATE Kiểu ngày, lưu ngày từ 1/1/4712 BC -> 31/12/9999
LONG Kiểu ký tự
RAW Chuỗi nhị phân dài tối đa 2000 bytes
LONG RAW Chuỗi nhị phân dài tối đa 2GB
BLOB (Bynary Large Object) có độ dài 4GB
≤
CLOB (Character Large Object) có độ dài 4GB
≤
BFILE Chứa con trỏ chỉ đến một tập tin nhị phân ở ngoài DB
Ngôn ngữ định nghĩa dữ
liệu
Tạo table, view - Kiểu dữ liệu (3)
25
Cho lược đồ CSDL “quản lý đề án cty” như sau
NHANVIEN (MaNV, HoNV, TenLot, TenNV, Phai, Luong,
Phong, NgaySinh, DiaChi, Ma_NQL)
PHONGBAN (MaPHG, TenPHG, TrPHG, NG_NhanChuc)
DEAN (MaDA, TenDA, DDIEM_DA, Phong)
PHANCONG (MaNV, MaDA, ThoiGian)
DIADIEM_PHG (MaPHG, DIADIEM)
THANNHAN (MaNV, TenTN, Phai, NGSinh,QuanHe)
Ngôn ngữ định nghĩa dữ
liệu
Tạo table, view (4)
26
MANV HOTEN NTNS PHAI MA_NQL MaPH LUONG
001 Vuong Ngoc Quyen 22/10/1957 Nu QL 3.000.000
002 Nguyen Thanh Tung 09/01/1955 Nam 001 NC 2.500.000
003 Le Thi Nhan 18/12/1960 Nu 001 DH 2.500.000
004 Dinh Ba Tien 09/01/1968 Nam 002 NC 2.200.000
005 Bui Thuy Vu 19/07/1972 Nam 003 DH 2.200.000
006 Nguyen Manh Hung 15/09/1973 Nam 002 NC 2.000.000
007 Tran Thanh Tam 31/07/1975 Nu 002 NC 2.200.000
008 Tran Hong Minh 04/07/1976 Nu 004 NC 1.800.000
MADA TENDA PHONG NamThucHien
TH001 Tin hoc hoa 1 NC 2002
TH002 Tin hoc hoa 2 NC 2003
DT001 Dao tao 1 DH 2004
DT002 Dao tao 2 DH 2004
MAPH TENPH TRPH
QL Quan Ly 001
DH Dieu Hanh 003
NC Nghien Cuu 002
MANV MADA THOIGIAN
001 TH001 30,0
001 TH002 12,5
002 TH001 10,0
002 TH002 10,0
002 DT001 10,0
002 DT002 10,0
003 TH001 37,5
004 DT001 22,5
004 DT002 10,0
006 DT001 30,5
007 TH001 20,0
007 TH002 10,0
008 DT002 12,5
PHANCONG
NHANVIEN
DEAN
PHONGBAN
27
 Ví dụ: câu lệnh để tạo một table nhân viên
CREATE TABLE NHANVIEN
( MANV varchar2(10) NOT NULL,
HONV varchar2(50) NOT NULL, TENLOT varchar2(50) NOT
NULL,
TENNV varchar2(50) NOT NULL, NGAYSINH date,
PHAI varchar2(3) NOT NULL, DIACHI varchar2(100),
MA_NQL varchar2(10),
PHONG varchar2(10),
LUONG number,
CONSTRAINT PK_NV PRIMARY KEY (MANV),
CONSTRAINT FK_NV_PB FOREIGN KEY (PHONG) REFERENCES
PHONGBAN (MAPHG) )
Ngôn ngữ định nghĩa dữ
liệu
Tạo table, view (5)
28
 Ví dụ: câu lệnh để tạo một view chứa họ
tên nhân viên phòng số 5 và tên phòng
ban họ trực thuộc
CREATE VIEW TrucThuoc
AS SELECT MANV, HONV, TENNV, TENPHG FROM
NhanVien nv, PhongBan p WHERE nv.PHONG =
p.MAPHG AND p.nv.PHONG = 5
Ngôn ngữ định nghĩa dữ
liệu
Tạo table, view (6)
29
 Thêm thuộc tính
ALTER TABLE tên_table ADD tên_cột
kiểu_dữ_liệu
 Ví dụ: thêm cột Ghi_chú vào table nhân viên
ALTER TABLE NHANVIEN ADD GHI_CHU
varchar2(20)
 Sửa kiểu dữ liệu thuộc tính
ALTER TABLE tên_table MODIFY tên_cột
kiểu_dữ_liệu_mới
Ngôn ngữ định nghĩa dữ
liệu
Sửa cấu trúc table (7)
30
 Ví dụ: sửa kiểu dữ liệu của cột Ghi chú
ALTER TABLE NHANVIEN MODIFY GHI_CHU
varchar2(30)
 Xóa thuộc tính
ALTER TABLE tên_bảng DROP COLUMN tên_cột
 Ví dụ: xóa cột Ghi_chú từ bảng nhân viên
ALTER TABLE NHANVIEN DROP COLUMN
GHI_CHU
Ngôn ngữ định nghĩa dữ
liệu
Sửa cấu trúc table (8)
31
 Thêm ràng buộc toàn vẹn
ALTER TABLE <tên_bảng>
ADD CONSTRAINT
<tên_ràng_buộc>
UNIQUE tên_cột
PRIMARY KEY (têncột1,2,.)
FOREIGN KEY (tên_cột)
REFERENCES tên_bảng
(cột_là_khóa_chính)
CHECK (tên_cột điều_kiện)
Ngôn ngữ định nghĩa dữ
liệu
Sửa cấu trúc table (9)
32
 Ví dụ
 ALTER TABLE NHANVIEN ADD CONSTRAINT PK_NV PRIMARY
KEY (MANV)
 ALTER TABLE NHANVIEN ADD CONSTRAINT FK_NV_PB FOREIGN
KEY (PHONG) REFERENCES PHONGBAN(MAPHG)
 ALTER TABLE NHANVIEN ADD CONSTRAINT CHK CHECK ( PHAI
IN (‘Nam') OR (‘Nu’))
 ALTER TABLE NHANKHAU ADD CONSTRAINT UQ_NK UNIQUE
(CMND)
Ngôn ngữ định nghĩa dữ liệu
Sửa cấu trúc bảng (10)
33
 Xóa ràng buộc toàn vẹn
ALTER TABLE tên_bảng DROP
CONSTRAINT tên_ràng_buộc
 Ví dụ
ALTER TABLE NHANVIEN DROP
CONSTRAINT FK_NV_PB
Ngôn ngữ định nghĩa dữ liệu
Sửa cấu trúc bảng (11)
34
 Cú pháp xóa table
DROP TABLE tên_table
 Cú pháp xóa view
DROP VIEW tên_view
o Ví dụ: xóa bảng (table) nhân viên
DROP TABLE NHANVIEN
o Ví dụ: xóa khung nhìn (view) TrucThuoc
DROP VIEW TrucThuoc
Ngôn ngữ định nghĩa dữ liệu
Xóa table, xóa view (12)
35
 Cú pháp
INSERT INTO tên_bảng VALUES (giá_trị_1,
giá_trị_2,…, giá_trị_n)
INSERT INTO tên_bảng (cột1, cột2) VALUES
(giá_trị_1, giá_trị_2)
 Ví dụ
INSERT INTO NHANVIEN VALUES (‘001’, ‘Vuong’,
‘Ngoc’, ‘Quyen’,
To_Date(’31/01/1977’,’dd/mm/yyyy’), ’450
Trung Vuong, Ha Hoi’, ‘QL’)
Ngôn ngữ thao tác dữ liệu
Thêm dữ liệu vào bảng (1)
36
 Cú pháp
UPDATE tên_bảng SET cột_1 = giá_trị_1,
cột_2 = giá_trị_2 [WHERE điều_kiện]
 Ví dụ: Sửa họ nhân viên có mã số ‘001’
thành ‘Nguyen’
UPDATE NHANVIEN SET HONV = ‘Nguyen’
WHERE MANV=‘001’
Ngôn ngữ thao tác dữ liệu
Sửa dữ liệu của bảng (2)
37
 Cú pháp
 Ví dụ: Sửa họ tên của nhân viên có mã số
‘001’ thành ‘Nguyen Thanh Tung’ và ngày
sinh mới là 1/1/1978
UPDATE NHANVIEN SET HONV = ‘Nguyen’,
TENLOT = ‘Thanh’, TENNV = Tung’,
NGAYSINH=To_date(‘1/1/1978’, ‘dd-mm-
yyyy’) WHERE MANV=‘001’
Ngôn ngữ thao tác dữ liệu
Sửa dữ liệu của bảng (3)
38
 Cú pháp
DELETE FROM tên_bảng [WHERE điều_kiện]
 Ví dụ: xóa nhân viên có mã số ‘001’
DELETE FROM NHANVIEN
WHERE MANV=‘001’
 Ví dụ: xóa toàn bộ nhân viên
DELETE FROM NHANVIEN
Ngôn ngữ thao tác dữ liệu
Xóa dữ liệu trong bảng (4)
39
 Câu truy vấn tổng quát
SELECT [DISTINCT] tên_cột | hàm
FROM bảng
[WHERE điều_kiện]
[GROUP BY cột]
[HAVING điều_kiện]
[ORDER BY cột ASC | DESC]
Ngôn ngữ thao tác dữ liệu
Truy vấn dữ liệu – lệnh SELECT (5)
40
 Toán tử so sánh
=
>
<
>=
<=
<>
 Toán tử logic: AND, OR, NOT
 Phép toán: +, - ,* , /
Ngôn ngữ thao tác dữ liệu
Toán tử truy vấn (6)
41
 Các toán tử so sánh khác
 BETWEEN - định nghĩa một đoạn giá trị liên tục
 IS NULL - kiểm tra giá trị thuộc tính có null hay
không
 LIKE – kiểm tra chuỗi ký tự tương tự
 IN – kiểm tra giá trị thuộc tính có thuộc tập hợp các
giá trị đã định nghĩa hay không
 EXISTS – mang giá trị TRUE nếu mệnh đề so sánh trả
về ít nhất một bộ (record), FALSE nếu ngược lại
Ngôn ngữ thao tác dữ liệu
Toán tử truy vấn (7)
42
 Toán tử BETWEEN
 Ví dụ: Tìm nhân viên sinh vào khoảng 1965 và
1977. Tìm nhân viên có lương không nằm trong
khoảng 100000 đến 300000
 SELECT * FROM NHANVIEN WHERE
To_number(To_char(NGAYSINH,’yyyy’)) BETWEEN 1965
AND 1977
 SELECT n.MANV, n.TENNV, p.TENPHG
FROM NHANVIEN n, PHONGBAN p
WHERE n.PHONG=p.MAPHG
AND n.LUONG NOT BETWEEN 100000 AND 300000;
Ngôn ngữ thao tác dữ liệu
Toán tử truy vấn (8)
43
 Toán tử IS NULL
 Ví dụ: tìm những nhân viên có người quản lý, tìm
những học viên chưa đóng tiền học phí.
a. SELECT * FROM NHANVIEN
WHERE MA_NQL IS NOT NULL
b. SELECT h.MAHV,h.HOTEN,h.DIACHI
FROM HOCVIEN h, BIENLAI b
WHERE h.MAHV=b.MAHV AND b.TIENNOP IS NULL
Ngôn ngữ thao tác dữ liệu
Toán tử truy vấn (9)
44
 Toán tử LIKE
 So sánh chuỗi tương đối
 Cú pháp: s LIKE p, p có thể chứa % hoặc _
 % : thay thế một chuỗi ký tự bất kỳ
 _ : thay thế một ký tự bất kỳ
 Ví dụ SELECT * FROM NHANVIEN
WHERE HONV LIKE ‘Nguyen%’
Ngôn ngữ thao tác dữ liệu
Toán tử truy vấn (10)
45
 Toán tử IN
 Ví dụ
a. SELECT * FROM NHANVIEN
WHERE PHONG IN (‘NC’,’QL’,’DH’)
b. SELECT MANV, TENNV, DIACHI
FROM NHANVIEN
WHERE MANV NOT IN (SELECT MANV
FROM PHANCONG)
Ngôn ngữ thao tác dữ liệu
Toán tử truy vấn (11)
46
 Toán tử EXISTS
 Ví dụ: tìm nhân viên làm việc cho tất cả
các đề án
SELECT * FROM NHANVIEN n WHERE NOT
EXISTS
(SELECT * FROM DEAN d WHERE NOT
EXISTS
(SELECT * FROM PHANCONG p WHERE
n.MANV=p.MANV AND d.MADA=p.MADA))
Ngôn ngữ truy vấn dữ liệu
Toán tử truy vấn (12)
47
 Mệnh đề GROUP BY
 Chia các dòng thành các nhóm nhỏ dựa trên
tập thuộc tính chia nhóm.
 Tất cả các thành viên của nhóm đều thỏa
các thuộc tính này.
 Thực hiện các phép toán trên nhóm như:
Count (thực hiện phép đếm), Sum (tính tổng),
Min(lấy giá trị nhỏ nhất), Max(lấy giá trị lớn
nhất), AVG (lấy giá trị trung bình).
Ngôn ngữ truy vấn dữ liệu
Mệnh đề GROUP BY (13)
48
Ngôn ngữ truy vấn dữ liệu
Mệnh đề GROUP BY (14)
nhóm
Các thuộc tính GROUP BY: Q
a
a
b
b
c
c
c
c
c
d
d
d
Chia các dòng thành các
nhóm dựa trên tập thuộc
tính chia nhóm
Q Count(S)
Q S
a
b
c
d
2
2
5
3
10
2
9
5
10
8
6
4
10
16
Câu SQL:
Select Q, count(S)
From NV
Group by Q
Quan hệ NV
18
50
Tương tự cho các
hàm SUM, MIN,
MAX, AVG
49
 Các hàm SQL cơ bản
 COUNT: Đếm số bộ dữ liệu của thuộc tính
 MIN: Tính giá trị nhỏ nhất
 MAX: Tính giá trị lớn nhất
 AVG: Tính giá trị trung bình
 SUM: Tính tổng giá trị các bộ dữ liệu
Ngôn ngữ truy vấn dữ liệu
Mệnh đề GROUP BY (15)
50
 Ví dụ: tìm tổng lương, lương lớn nhất, lương ít nhất
và lương trung bình của các nhân viên
SELECT SUM(LUONG), MAX(LUONG), MIN(LUONG),
AVG(LUONG) FROM NHANVIEN ;
 Ví dụ: tìm tổng lương, lương lớn nhất, lương ít nhất
và lương trung bình của các nhân viên phòng
“Nghiên cứu”
SELECT SUM(LUONG), MAX(LUONG), MIN(LUONG),
AVG(LUONG) from NHANVIEN , PHONGBAN WHERE
MAPHG=PHONG AND TENPHG='Nghien cuu';
 Ví dụ: cho biết số lượng nhân viên
SELECT COUNT(*) FROM NHANVIEN;
Ngôn ngữ truy vấn dữ liệu
Mệnh đề GROUP BY (16)
51
 Ví dụ
SELECT n.MANV, n.TENNV, n.PHONG,
MIN(p.THOIGIAN) thap_nhat,
MAX (p.THOIGIAN) cao_nhat, AVG(p.THOIGIAN)
trung_binh,
SUM (p.THOIGIAN) tong_so_gio
FROM NHANVIEN n, PHANCONG p
WHERE n.MANV=p.MANV
GROUP BY n.MANV, n.TENNV, n.PHONG
Ngôn ngữ truy vấn dữ liệu
Mệnh đề GROUP BY (17)
52
 Mệnh đề HAVING
Lọc kết quả theo điều kiện, sau
khi đã gom nhóm
 Điều kiện của HAVING là điều kiện
các hàm tính toán trên nhóm (Count,
Sum, Min, Max, AVG) và các thuộc
tính trong danh sách GROUP BY.
Ngôn ngữ truy vấn dữ liệu
Mệnh đề HAVING (18)
53
 Ví dụ: cho biết tên từng phòng ban và tổng số
nhân viên, mức lương trung bình của phòng trên
2000000
SELECT p.TENPHG, COUNT(*) so_luong_nv,
AVG(n.LUONG) luong_tb
FROM NHANVIEN n, PHONGBAN p
WHERE n.PHONG = p.MAPHG
GROUP BY p.TENPHG
HAVING AVG(n.LUONG) > 2000000
Ngôn ngữ truy vấn dữ liệu
Mệnh đề HAVING (19)
54
 Ví dụ
 Liệt kê nhân viên có số giờ làm việc nhiều nhất
trong công ty.
SELECT n.MANV, n.TENNV, SUM (p.THOIGIAN)
FROM NHANVIEN n, PHANCONG p
WHERE n.MANV = p.MANV
GROUP BY n.MANV, n.HOTEN
HAVING SUM (p.THOIGIAN) >= ALL (SELECT SUM(THOIGIAN)
FROM PHANCONG GROUP BY (MANV)
Ngôn ngữ truy vấn dữ liệu
Mệnh đề HAVING (20)
55
Ngôn ngữ điều khiển dữ liệu (DCL)
Giới thiệu System và Object Privileges (1)
 Ngôn ngữ điều khiển dữ liệu Data Control Language (DCL) được dùng để cấp phát, thu hồi
quyền trên các đối tượng như: tables, views, sequences, synonyms, procedures đến các
user và role.
 Lệnh DCL bao gồm 2 lệnh:
- GRANT :Use to grant privileges on tables, view, procedure to other users or roles.
- REVOKE :Use to take back privileges granted to other users and roles.
 Phân loại quyền: có 2 loại

System Privileges

Object privileges
 System Privileges thường được cấp bởi DBA đến các users. Ví dụ một số quyền hệ thống:
CREATE SESSION, CREATE TABLE, CREATE USER,…. System privileges grants cover many
areas of access in a broad brush, với những quyền tương tự như select any table. Ví dụ:
grant create any cluster to customer_role;
grant select any table to fred;
grant create tablespace to dba_role;
 Object privileges là các quyền trên các object như: tables, views, synonyms, procedure.
Những quyền này được cấp bởi người sở hữu object.
56
Ngôn ngữ điều khiển dữ liệu
57
Ngôn ngữ điều khiển dữ liệu
Object Privileges (2)
58
 Một User muốn tạo được schema riêng cho mình cần
phải có 2 quyền hệ thống thích hợp là CONNECT đến cơ
sở dữ liệu và quyền RESOURCE (tài nguyên).
 Object Privileges: có 8 quyền có thể gán cho User và Role, 8
quyền bao gồm: SELECT, INSERT, UPDATE, DELETE, ALTER,
INDEX, REFERENCES, ALL.
 Role: là tên của một tập hợp các quyền hệ thống nhằm
quản lý các quyền cho các ứng dụng cơ sở dữ liệu hoặc
nhóm người dùng (User Group).
 Một User có thể truy xuất đến nhiều Role và ngược lại.
 Có vài Role được định nghĩa trước như DBA chứa tất cả các
quyền của hệ thống.
Ngôn ngữ điều khiển dữ liệu
Giới thiệu Object Privileges (3)
59
 Cú pháp
CREATE ROLE <role-name> NOT IDENTIFIED | IDENTIFIED BY
<password>
Trong đó:
- NOT IDENTIFIED: không đặt password cho role.
- IDENTIFIED BY password: user phải nhập password để làm cho role
có hiệu lực.
Lưu ý: ký tự đầu tiên của password không được là số hoặc ký tự đặc
biệt
 Ví dụ: tạo một role QuanTriSV với password là QT987654
CREATE ROLE QuanTriSV IDENTIFIED BY QT987654
Ngôn ngữ điều khiển dữ liệu
Tạo Role (nhóm quyền) (4)
60
 Thiết lập/thay đổi/bỏ mật khẩu cho quyền
Cú pháp: ALTER ROLE <role-name> NOT IDENTIFIED |
IDENTIFIED BY <password>
Ví dụ: đổi password mới cho role QuanTriSV là
QT123456789
ALTER ROLE QuanTriSV IDENTIFIED BY QT123456789
 Xóa quyền
Cú pháp: DROP ROLE <role-name>
Ví dụ: xóa quyền QuanTriSV
DROP ROLE QuanTriSV
 Gán quyền select/update/delete,.. đến public
grant select on TênUser.TênTable to public
Ngôn ngữ điều khiển dữ liệu
Thiết lập/thay đổi/bỏ mật khẩu cho Role + xóa Role (5)
61
 Cú pháp
CREATE USER <user-name> NOT IDENTIFIED | IDENTIFIED BY
<password> default tablespace USERS
Trong đó:
- NOT IDENTIFIED: không đặt password cho user.
- IDENTIFIED BY password: user phải nhập password mới có thể đăng nhập
hệ thống.

Ví dụ: tạo một user Phuong với password là P987654
CREATE USER Phuong IDENTIFIED BY P987654
CREATE USER Phuong1 IDENTIFIED BY P987654 default tablespace TEMP
CREATE USER Phuong1 IDENTIFIED BY P987654 default tablespace USERS
Ngôn ngữ điều khiển dữ liệu
Tạo người dùng (6)
62
 Thiết lập/thay đổi/bỏ mật khẩu cho người dùng
Cú pháp: ALTER USER <User-name> NOT IDENTIFIED |
IDENTIFIED BY <password>
Ví dụ: thay đổi password mới cho user Phuong là
P123456789
ALTER USER Phuong IDENTIFIED BY P123456789
 Xóa người dùng
Cú pháp: DROP USER <User-name>
Ví dụ: xóa người dùng Phuong
DROP USER Phuong
Ngôn ngữ điều khiển dữ liệu
Thiết lập/thay đổi/bỏ mật khẩu cho người dùng + xóa người dùng (7)
63
 Cú pháp cấp phát quyền cho người dùng
GRANT privil1, privil2,…/ALL ON <Tênđốitượng>
TO User1, User2,… [WITH GRANT OPTION]
 Cú pháp cấp phát quyền cho Role
GRANT privil1, privil2,…/ALL ON <Tênđốitượng>
TO Role1, Role2,… [WITH GRANT OPTION]
Trong đó:
- <Tênđốitượng> : có thể là tên của một Table, View,
Sequence, Synonym, Procedure, Function, Package.
- privil1, privil1,..là 1 trong 8 quyền hệ thống nêu trên để cấp
quyền trên table hay view.
Ngôn ngữ điều khiển dữ liệu
Cấp phát quyền (8)
64
 Ban quyền truy xuất đến tất cả User, Role bằng lệnh
GRANT privil1, privil2,…/ALL ON <Tênđốitượng>
TO PUBLIC
Ví dụ: grant select on TênUser.TênTable to public
 Ví dụ 1: cấp phát quyền cho user Phuong
GRANT INSERT, UPDATE ON
TênUserTạoTableNhanVien.NHANVIEN TO Phuong
 Ví dụ 2: cấp phát quyền cho role QuanTriSV
GRANT ALL ON TênUserTạoTableNhanVien.NHANVIEN TO
QuanTriSV WITH GRANT ADMIN
Ngôn ngữ điều khiển dữ liệu
Cấp phát quyền (9)
65
 Gán quyền Role cho User
(User được cấp phát quyền Role)
GRANT tên-Role TO tên-User [WITH GRANT OPTION]
 Ví dụ : cấp phát role QuanTriSV cho user Phuong
GRANT QuanTriSV TO Phuong
 Ví dụ 2: cấp phát role QuanTriSV cho user Phuong
GRANT QuanTriSV TO Phuong WITH GRANT ADMIN
Ngôn ngữ điều khiển dữ liệu
Cấp phát quyền (10)
66
 Cú pháp rút lại (hủy bỏ) các quyền đã cấp phát
REVOKE privil1, privil2,…/Role1, Role2,… ON
<Tên-table>/<Tên-view>
FROM User1, User2,…/Role1, Role2,…
 Ví dụ
- REVOKE UPDATE, DELETE ON NHANVIEN FROM Phuong
- REVOKE ALL ON NHANVIEN FROM QuanTriSV
Ngôn ngữ điều khiển dữ liệu
Thu hồi quyền (11)
67
-- This will grant read only access on all
your objects to another schema
begin
for x in (select object_name from
user_objects)
loop
execute immediate 'grant select on
'|| x.object_name || ' to &schema';
end loop;
end;
Ngôn ngữ điều khiển dữ liệu
VD đoạn PL/SQL cấp quyền (12)
68
 To see which table privileges are granted by you to other users.
SELECT * FROM USER_TAB_PRIVS_MADE
 To see which table privileges are granted to you by other users
SELECT * FROM USER_TAB_PRIVS_RECD;
 To see which column level privileges are granted by you to other
users.
SELECT * FROM USER_COL_PRIVS_MADE
 To see which column level privileges are granted to you by other users
SELECT * FROM USER_COL_PRIVS_RECD;
 To see which privileges are granted to roles
SELECT * FROM USER_ROLE_PRIVS;
Ngôn ngữ điều khiển dữ liệu
Tuy vấn xem thông tin quyền (13)
69
GIAO TÁC : một Transaction là một giao tác trên CSDL bao
gồm chuỗi các thay đổi (hành động) trên một hay nhiều
table. Điều khiển Transaction bằng các lệnh sau.
 Lệnh COMMIT (hoàn tất giao tác)
Cú pháp: COMMIT
 Lệnh ROLLBACK (phục hồi ngược lại chuỗi hành động đã
thực hiện trước đó).
Cú pháp: ROLLBACK [TO SAVEPOINT name]
 Lệnh SavePoint
Cú pháp: SAVEPOINT tên-SavePoint
 Chế độ AutoCommit (AUTOCOMMIT ON/OFF )
6. CÁC LỆNH GIAO TÁC (1) – TRANSACTION
70
 Ví dụ: minh họa cách dùng các lệnh SavePoint, RollBack, Commit
begin
insert into student values(1,'Nguyen Van A');
savepoint A;
insert into student values(2,'Nguyen Van B');
savepoint B;
insert into student values(3,'Nguyen Van C');
savepoint C;
insert into student values(4,'Nguyen Van D');
savepoint A; // savepoint A trước đó ko đc hiểu nữa
insert into student values(5,'Nguyen Van E');
savepoint D;
end;
 select * from student; -> kết quả 5 sinh viên
 rollback to savepoint A; //thải hồi lệnh ngược đến savepoint A
 select * from student; -> kết quả 4 sinh viên
6. CÁC LỆNH GIAO TÁC (2) – TRANSACTION
71
BEGIN
FOR IX IN 9..12 LOOP

IF IX = 9 THEN

INSERT INTO NUMBERS VALUES (IX);

ELSIF IX = 11 THEN

DELETE FROM NUMBERS;

END IF;

IF IX = 11 THEN

ROLLBACK;

ELSE

COMMIT;

END IF;
END LOOP;
COMMIT;
END;
Giá trị nào được thêm vào bảng NUMBERS?
Test trường hợp khác sử dụng lệnh drop table,
lệnh DROP có được Rollback??
6. CÁC LỆNH GIAO TÁC (3) – TRANSACTION
72
 Synonym:
Là tên đặt cho một đối tượng cụ thể nào đó. Thường dùng
synonym để tạo ra những đối tượng dùng chung.
 Ví dụ:
Một người dùng muốn sử dụng một bảng được sở hữu bởi
người dùng khác thay vì gọi “tên_người_dùng.tên_bảng”
thì user đó tạo ra một synonym cho bảng đó với một tên
dễ nhớ nào đó, tên thật của đối tượng được che dấu đi.
 Các thao tác trên Synonym: tạo Synonym, xóa Synonym.
7. CÁC ĐỐI TƯỢNG KHÁC – Synonym (1)
73
 Tạo Synonym:
Cú pháp:
CREATE SYNONYM tênSynonym FOR tênUser.tênTable|
tênView
Ví dụ:
CREATE SYNONYM nv FOR phuong.NHANVIEN;
 Xóa Synonym:
Cú pháp:
DROP SYNONYM tên-synonym;
Ví dụ:
DROP SYNONYM nv;
7. CÁC ĐỐI TƯỢNG KHÁC – Synonym (2)
74
 Index (tạo chỉ mục): sử dụng Oracle Index nhằm
- Tăng tốc độ xây dựng lại các dòng theo một khóa đặc biệt.
- Bảo đảm giá trị duy nhất trong cột, thường là giá trị primary
key.
 Tạo Index
Cú pháp: CREATE [UNIQUE] INDEX index_name ON table
(column1 [, <column2>] , …)
Ví dụ:
CREATE UNIQUE INDEX i_cmnd ON NHAN_KHAU(SO_CMND);
7. CÁC ĐỐI TƯỢNG KHÁC – Index (1)
75
 Phân loại index:
- UNIQUE: Bảo đảm giá trị trong các cột là duy nhất.
(no two rows of a table have duplicate values in the key
column (or columns) )
- NONUNIQUE: (là default) kết quả truy vấn có thể nhanh
nhất (do not impose this restriction on the column values)
* Nếu là Single colum thì chỉ một cột tồn tại index.
* Nếu là Concatenated Index: Trên 16 cột có thể chỉ ra
trong index (giới hạn 30).
7. CÁC ĐỐI TƯỢNG KHÁC – Index (2)
76
(concatenated index also is called Composite Index -
index that you create on multiple columns in a table )
 Xóa index
Cú pháp: DROP INDEX index_name;
Ví dụ: DROP INDEX i_cmnd;
CREATE INDEX VP_INDEX
ON
VENDOR_PARTS(VEND_ID
,PART_NO);
7. CÁC ĐỐI TƯỢNG KHÁC – Index (3)
77
 Sequence (giá trị được tạo tự động)
Sequence là đối tượng tạo ra một dãy số liên tiếp một cách tự
động, thường hay sử dụng trong câu lệnh INSERT để nhập dữ
liệu cho bảng (ví dụ mã khách hàng tăng tự động).
 Tạo Sequence
Cú pháp:
CREATE SEQUENCE sequence_name
[INCREMENT BY n]
[START WITH n]
[MAXVALUE n | NOMAXVALUE]
[MINVALUE n | NOMINVALUE]
[CYCLE | NOCYCLE]
[CACHE n | NOCACHE]
[ORDER | NOORDER]
7. CÁC ĐỐI TƯỢNG KHÁC – Sequence (1)
78
 Ví dụ
CREATE SEQUENCE s_nv
MINVALUE 1
MAXVALUE 9999999
INCREMENT BY 1
START WITH 100
NOCACHE
NOORDER
NOCYCLE;
 Sử dụng Sequence
Giá trị hiện hành và kế tiếp của dãy sequence được lưu trong hai cột:
- Giá trị hiện hành của sequence: tên_sequence.CURRVAL
- Giá trị kế tiếp của sequence: tên_sequence.NEXTVAL
7. CÁC ĐỐI TƯỢNG KHÁC – Sequence (2)
79
Hai cột trên trong Oracle được gọi là pseudo column (cột ảo), người
dùng chỉ được truy xuất, không được cập nhật dữ liệu trong các cột
này.
Oracle có các cột ảo như: ROWID (mã dòng), ROWNUM (số thứ tự
dòng), SYSDATE (ngày hiện hành của hệ thống),…
 Ví dụ
Truy cập giá trị tiếp theo của sequence s_nv bằng lệnh:
SELECT s_nv.nextval from DUAL; (bảng DUALlà tạm trong Oracle)
Truy vấn giá trị hiện tại của sequence s_nv (nếu ko gọi s_nv.nextval
một lần khi login vào session của mình trước, xem lỗi ở slide kế tiếp):
SELECT s_nv.currval from DUAL;
Sử dụng sequence trong một câu insert:
INSERT INTO NHANVIEN (MA_NV, HO_TEN) VALUES (s_nv.nextval,
‘Nguyen van A’); /* s_nv là sequence đã tạo trước. */
7. CÁC ĐỐI TƯỢNG KHÁC – Sequence (3)
80
 ORA-08002: sequence string.CURRVAL is not yet
defined in this session
 Cause: sequence CURRVAL has been selected
before sequence NEXTVAL
Action: select NEXTVAL from the sequence
before selecting CURRVAL
 Link xem các loại lỗi (Oracle Error Code
Collections): http://www.ora-code.com/
7. CÁC ĐỐI TƯỢNG KHÁC
– Lỗi truy xuất CURRVAL nếu chưa khởi tạo giá trị Sequence (4)
81
 Sửa Sequence (tạo lại các thông số)
ALTER SEQUENCE tên-sequence
[INCREMENT BY n]
[START WITH n]
[MAXVALUE n | NOMAXVALUE]
[MINVALUE n | NOMINVALUE]
[CYCLE | NOCYCLE]
[CACHE n | NOCACHE]
[ORDER | NOORDER]
 Xóa Sequence
Cú pháp DROP SEQUENCE tên-sequence
Ví dụ: DROP SEQUENCE s_nv
7. CÁC ĐỐI TƯỢNG KHÁC – Sequence (5)
82
MỘT SỐ VIEW TỪ ĐIỂN THƯỜNG DÙNG
 USER_TABLES : xem các table người dùng đã tạo
 USER_VIEWS : xem các view người dùng đã tạo
 USER_INDEXES : xem các index người dùng tạo
 USER_SEQUENCES : xem các sequence người dùng tạo
 USER_FUNCTIONS : xem các function người dùng tạo
 USER_PROCEDURES : xem các procedure người dùng
tạo
 USER_TRIGGERS : xem các trigger người dùng đã tạo
 user_sys_privs: xem quyền của user hiện hành
 …..
8. TỪ ĐIỂN DỮ LIỆU – Oracle data dictionary
83
MỘT SỐ HÀM THƯỜNG DÙNG TRONG ORACLE
 HỌC VIÊN XEM FILE WORD ĐI KÈM

More Related Content

PDF
Giao-Trinh-Oracle-SQL-PLSQL-Co-Ban.pdf
PDF
Sinh vienit.net --sinhvienit.net-giao-trinh-oracle-sql-plsql-co-ban
PDF
Co sodulieu sql_dht_loi
DOC
Giao trinh oracle_sql_plsql_co_ban
PPTX
ORACLE_ch2_SQL.pptx
PDF
Bài 3: Ngôn ngữ truy vân có cấu trúc (SQL) - Giáo trình FPT
PDF
Com201 slide 3
PPT
nngu sql
Giao-Trinh-Oracle-SQL-PLSQL-Co-Ban.pdf
Sinh vienit.net --sinhvienit.net-giao-trinh-oracle-sql-plsql-co-ban
Co sodulieu sql_dht_loi
Giao trinh oracle_sql_plsql_co_ban
ORACLE_ch2_SQL.pptx
Bài 3: Ngôn ngữ truy vân có cấu trúc (SQL) - Giáo trình FPT
Com201 slide 3
nngu sql

Similar to 2_Co ban ve SQL oracle trên oracle sql.ppt (20)

PDF
môn học cơ sở dữ liệu trong sql học viện PTIT
PDF
UEB Chuong 3.SV hoc di hoc di hoc di di di
PDF
Hanh trangviet.ucoz.net giao trinh sql server 2005
DOC
Giao trinh oracle_sql_plsql_co_ban
DOC
Giao trinh oracle
DOC
Giao trinh oracle[bookbooming.com]
PDF
1.1_Noi dung Chuong 1aaaaaaaaaaaaaaaa.pdf
PDF
Bai giang hệ quản trị cơ sở dữ liệu
PDF
Cau lenh truy_van_sql
PDF
Cau lenh truy_van_sql
PDF
Cau lenh truy_van_sql
 
PDF
Giáo trình sql
PDF
Sql dai hoc hue
PDF
[T2 vn] giao trinh sql
PDF
Baigiangsql
PDF
Baigiangsql
PDF
Bài 4: NGÔN NGỮ TRUY VẤN CÓ CẤU TRÚC (SQL)
PDF
Com201 slide 4
PDF
00 overview of_sql_server
PPT
Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 1
môn học cơ sở dữ liệu trong sql học viện PTIT
UEB Chuong 3.SV hoc di hoc di hoc di di di
Hanh trangviet.ucoz.net giao trinh sql server 2005
Giao trinh oracle_sql_plsql_co_ban
Giao trinh oracle
Giao trinh oracle[bookbooming.com]
1.1_Noi dung Chuong 1aaaaaaaaaaaaaaaa.pdf
Bai giang hệ quản trị cơ sở dữ liệu
Cau lenh truy_van_sql
Cau lenh truy_van_sql
Cau lenh truy_van_sql
 
Giáo trình sql
Sql dai hoc hue
[T2 vn] giao trinh sql
Baigiangsql
Baigiangsql
Bài 4: NGÔN NGỮ TRUY VẤN CÓ CẤU TRÚC (SQL)
Com201 slide 4
00 overview of_sql_server
Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 1
Ad

More from hoangdinhhanh88 (20)

PPTX
5-Tạo CSDL oracle trên windows server.pptx
PPT
3_Kien truc oracle cấu hình trên windows.ppt
PPT
3_Kien truc oracle cấu hình trên windows.ppt
PPTX
0_Gioi thieu mon hoc về oracle thực hành trên win.pptx
PPTX
1-Giới thiệu-cài đặt oracle chạy trên windows.pptx
PDF
lecture05_System Design Performance Considerations.pdf
PDF
lecture04_Overview of a Cloud architecture.pdf
PDF
lecture03_The Cloud and Data Center .pdf
PDF
lecture02_Cloud Computer Basicsrwrwrwrwr
PDF
lecture01_Introduction to CloudComputing.pdf
PDF
Slide 01 - Cloud Computing Introduction (1).pdf
PDF
AN AUTOMATED APPROACH TO CLOUD STORAGE SERVICE SELECTION.pdf
PDF
A FILE STORAGE SERVICE ON A CLOUD COMPUTING ENVIRONMENT FOR DIGITAL.pdf
PPT
linux-lecture3.ppt
PPT
Chapter 9 TCP IP Reference Model.ppt
PPTX
RemoteAdmin.pptx
PPTX
Disks.pptx
PPTX
Backups.pptx
PPTX
7_Chapter 7_Email.pptx
PPT
3_CHAP~2.PPT
5-Tạo CSDL oracle trên windows server.pptx
3_Kien truc oracle cấu hình trên windows.ppt
3_Kien truc oracle cấu hình trên windows.ppt
0_Gioi thieu mon hoc về oracle thực hành trên win.pptx
1-Giới thiệu-cài đặt oracle chạy trên windows.pptx
lecture05_System Design Performance Considerations.pdf
lecture04_Overview of a Cloud architecture.pdf
lecture03_The Cloud and Data Center .pdf
lecture02_Cloud Computer Basicsrwrwrwrwr
lecture01_Introduction to CloudComputing.pdf
Slide 01 - Cloud Computing Introduction (1).pdf
AN AUTOMATED APPROACH TO CLOUD STORAGE SERVICE SELECTION.pdf
A FILE STORAGE SERVICE ON A CLOUD COMPUTING ENVIRONMENT FOR DIGITAL.pdf
linux-lecture3.ppt
Chapter 9 TCP IP Reference Model.ppt
RemoteAdmin.pptx
Disks.pptx
Backups.pptx
7_Chapter 7_Email.pptx
3_CHAP~2.PPT
Ad

Recently uploaded (7)

PPTX
PRESENTATION ABOUT DATA WAREHOUSE (1).pptx
PPTX
CÁC HẠN CHẾ CỦA MÔ HÌNH AI NỀN CÁC HẠN CHẾ CỦA MÔ HÌNH AI NỀN
PDF
BÁO CÁO THỰC TẬP CTY TNHH VIET NAM VICERA
PPTX
KỸ THUẬT GỢI Ý NÂNG CAO KỸ THUẬT GỢI Ý NÂNG CAO
PPT
Tham Khao bài giảng trí tuệ nhân tại.ppt
PPTX
PRESENTATION ABOUT MICROSOFT FABRIC.pptx
PPTX
chuong2TTHCMupdate14tdddddddđ7n2024.pptx
PRESENTATION ABOUT DATA WAREHOUSE (1).pptx
CÁC HẠN CHẾ CỦA MÔ HÌNH AI NỀN CÁC HẠN CHẾ CỦA MÔ HÌNH AI NỀN
BÁO CÁO THỰC TẬP CTY TNHH VIET NAM VICERA
KỸ THUẬT GỢI Ý NÂNG CAO KỸ THUẬT GỢI Ý NÂNG CAO
Tham Khao bài giảng trí tuệ nhân tại.ppt
PRESENTATION ABOUT MICROSOFT FABRIC.pptx
chuong2TTHCMupdate14tdddddddđ7n2024.pptx

2_Co ban ve SQL oracle trên oracle sql.ppt

  • 1. 1 HỆ QUẢN TRỊ CSDL ORACLE
  • 2. 2 1. Giới thiệu Oracle, các phiên bản. 2. Công cụ SQL*Plus 3. Công cụ iSQLPlus 4. Công cụ OEM 5. Ngôn ngữ SQL (Các lệnh định nghĩa dữ liệu, thao tác dữ liệu, truy vấn dữ liệu, điều khiển dữ liệu, phân quyền users, roles). 6. Các lệnh giao tác 7. Sequences, Views, Indexes, Synnonym 8. Oracle data dictionary Giới thiệu các công cụ SQL*Plus, iSQLPlus, OEM và Ngôn ngữ truy vấn SQL
  • 3. 3  Oracle là tên của một hãng phần mềm, một hệ quản trị cơ sở dữ liệu phổ biến trên thế giới . Hãng Oracle ra đời đầu những năm 70 của thế kỷ 20 tại Mỹ.  Tập hợp các sản phẩm phần mềm phục vụ cho mục đích xây dựng và quản lý hệ thống thông tin, các ứng dụng giao tiếp cơ sở dữ liệu bên dưới.  Là hệ quản trị cơ sở dữ liệu quan hệ (RDBMS) mang tính mềm dẻo, linh động, thích ứng cao với các quy mô xử lý giao dịch, an toàn hệ thống. Cung cấp các công cụ xây dựng và quản lý cơ sở dữ liệu.  Tích hợp Web: kết nối ứng dụng với công nghệ Web được tích hợp trong Oracle WebServer. 1. Giới thiệu Oracle (1)
  • 4. 4  Phiên bản 1 phát hành năm 1977.  Phiên bản 2 phát hành năm 1979.  Phiên bản 3 phát hành năm 1983.  Phiên bản 4 phát hành năm 1984.  Phiên bản 5 phát hành năm 1985 (SQLNet: hệ thống khách/chủ (client/server)).  Phiên bản 6 phát hành năm 1988 (Sequence, thao tác ghi trễ).  Oracle7 được phát hành năm 1992 (SQL*DBA).  Năm 1999 Oracle giới thiệu Oracle8i (i:internet).  Năm 2001-2002: 2 phiên bản Oracle9i (Release 1&2).  Năm 2004-2005: 2 phiên bản Oracle10g (g:Grid) (Release 1&2).  Năm 2007-2009: phiên bản Oracle11g (Release 1&2).  http://www.oracle.com/technology/software/products/database/in dex.html 1. Giới thiệu Oracle (1) – Các phiên bản 1. Giới thiệu Oracle (1) – Các phiên bản
  • 5. 5 - Database Server (Server quản lý cơ sở dữ liệu) - Công cụ thao tác cơ sở dữ liệu: SQL*Plus - Công cụ phát triển ứng dụng: Oracle Developer Suite (Form, Report,..),Oracle JDeveloper,... - Phân tích dữ liệu: Oracle Discoverer, Oracle Express, Oracle Warehouse Builder,... - Oracle Application Server (OAS) - Ứng dụng đóng gói: Oracle Human Resource, Oracle Financial Applications,… - Oracle Email, Oracle Calendar, Oracle Web Conferencing,... 1. Giới thiệu Oracle (2) – Các sản phẩm
  • 6. 6 Lưu ý: trong Window7 -> click phải chuột vào menu SQL Plus -> run as Administrator (lệnh Edit buffer mới thực hiện được) 2. Công cụ SQL*Plus (1) – Giao diện
  • 7. 7 2. Công cụ SQL*Plus (2) – Giao diện
  • 8. 8  Ngôn ngữ SQL: ngôn ngữ chuẩn để truy vấn và thao tác trên CSDL quan hệ, dùng trong Oralce khi cần truy xuất CSDL.  Ngôn ngữ PL/SQL: ngôn ngữ thủ tục của Oracle dùng để xây dựng các ứng dụng, kết hợp SQL để truy xuất dữ liệu.  Công cụ SQL*Plus: sản phẩm của Oracle, là môi trường để thực hiện các lệnh SQL và PL/SQL.  SQL*Plus còn có các lệnh riêng để điều khiển cách xử lý của SQL*Plus, định dạng dữ liệu xuất. 2. Công cụ SQL*Plus (3)
  • 9. 9 Lệnh Mục đích CLEAR BUFFER Xóa tất cả dòng lệnh từ SQL Buffer (file “afdeit.buf”) DEL Xóa dòng lệnh hiện hành trong Buffer LIST Liệt kê tất cả các hàng trong SQL Buffer LIST n Liệt kê hàng thứ n trong SQL Buffer LIST m n Liệt kê các hàng trong phạm vi từ m đến n RUN (chạy trong Buffer (file “afdeit.buf”)) Hiển thị câu SQL và thực thi lệnh SQL hiện hành / Chỉ thực thi lệnh SQL hiện hành trong Buffer, ko in ra SAVE filename Lưu nội dung hiện hành của SQL Buffer vào filename GET filename Xuất nội dung của filename START filename Thực thi lệnh trong filename EDIT filename Soạn thảo nội dung filename 2. Công cụ SQL*Plus (4) – Các lệnh thường dùng
  • 10. 10 3. Công cụ iSQLPlus (1) – Thực thi lệnh SQL,PL/SQL trên web
  • 11. 11 3. Công cụ iSQLPlus (2) – Thực thi lệnh SQL,PL/SQL trên web
  • 12. 12 4. Công cụ Oracle Enterprise Manager - (OEM) quản trị Oracle qua web (1)
  • 13. 13 4. Công cụ Oracle Enterprise Manager - (OEM) quản trị Oracle qua web (2)
  • 14. 14 * Các loại biến trong SQL*Plus: 2 kiểu biến  Biến thay thế &: dấu & đặt trước biến. Biến được nhập giá trị lúc thực thi câu SQL. Kết quả câu SQL tùy thuộc vào giá trị nhập cho biến. - Ví dụ: SELECT MaNV, HoNV, TenNV FROM NhanVien WHERE MaPhong=&DEPT_NUMBER; Khi chạy lệnh SQL trong môi trường SQL*Plus sẽ hiện ra dòng chữ -> nhập giá trị vào (VD:5). SQL>Enter value for DEPT_NUMBER:5 - Lưu ý: biến kiểu chuỗi, kiểu ngày đặt trong cặp dấu ‘ ’ SỬ DỤNG BIẾN THAY THẾ &, &&
  • 15. 15  Biến thay thế &&: dấu && đặt trước biến. Giá trị nhập vào được lưu trữ cho những lần sau. - Ví dụ: SELECT MaNV, HoNV, TenNV FROM NhanVien WHERE MaPhong=&&DEPTNO; Khi chạy lệnh SQL trong môi trường SQL*Plus sẽ hiện ra dòng chữ -> nhập giá trị vào (VD:5). SQL>Enter value for DEPTNO:5 Ghi chú: Lần sau chạy câu lệnh, giá trị này được nhớ. SỬ DỤNG BIẾN THAY THẾ &, &&
  • 16. 16  Là ngôn ngữ chuẩn để truy vấn và thao tác trên CSDL quan hệ  Là ngôn ngữ phi thủ tục  Khởi nguồn của SQL là SEQUEL - Structured English Query Language, năm 1974)  Các chuẩn SQL  SQL89 (SQL1)  SQL92 (SQL2)  SQL99 (SQL3) 5. Ngôn ngữ SQL (1) – Giới thiệu 5. Ngôn ngữ SQL (1) – Giới thiệu
  • 17. 17  Ngôn ngữ định nghĩa dữ liệu (DDL): tạo table (bảng), view (khung nhìn), sửa cấu trúc table và thêm, xóa RBTV, xóa table, xóa view, đổi tên table  Ngôn ngữ thao tác dữ liệu: thêm, xóa, sửa dữ liệu, và truy vấn dữ liệu.  Ngôn ngữ điều khiển dữ liệu: tạo quyền hạn, xóa quyền, làm cho hiệu lực/mất hiệu lực quyền, tạo người dùng, đổi mật khẩu, xóa người dùng, cấ́p quyền và thu hồi quyền sử dụng trên cơ sở dữ liệu.  Ngoài ra còn có các lệnh điều khiển giao tác.  Lệnh thao tác trên các thành phần CSDL khác: Synonym, Index và Sequence 5. Ngôn ngữ SQL (2) – Phân loại
  • 18. 18  Ngôn ngữ định nghĩa dữ liệu (DDL– Data Definition Language)  Bao gồm:  Lệnh tạo table, tạo view (CREATE...)  Lệnh sửa cấu trúc table, thêm, xóa ràng buộc toàn vẹn trên table (ALTER...)  Lệnh xóa table, xóa view (DROP...)  Đổi tên table (RENAME…) 5. Ngôn ngữ SQL (3) – Ngôn ngữ định nghĩa dữ liệu
  • 19. 19  Ngôn ngữ thao tác dữ liệu (DML – Data Manipulation Language)  Bao gồm:  Lệnh thêm dữ liệu (INSERT...)  Lệnh sửa dữ liệu (UPDATE...)  Lệnh xóa dữ liệu (DELETE...)  Truy vấn dữ liệu (SELECT...) 5. Ngôn ngữ SQL (4) – Ngôn ngữ thao tác dữ liệu
  • 20. 20  Ngôn ngữ điều khiển dữ liệu (DCL – Data Control Language). Bao gồm:  Lệnh tạo quyền hạn (Create Role…)  Lệnh thiết lập, đổi hay bỏ mật khẩu của role (Alter Role…)  Lệnh xóa quyền hạn (Drop Role…)  Lệnh tạo người dùng, đổi mật khẩu và xóa người dùng (Create User…, Alter User…, Drop User…)  Lệnh cấp quyền cho người sử dụng cơ sở dữ liệu (GRANT...)  Lệnh thu hồi quyền hạn của người sử dụng cơ sở dữ liệu (REVOKE...) 5. Ngôn ngữ SQL (5) – Ngôn ngữ điều khiển dữ liệu
  • 21. 21  Lệnh điều khiển giao tác bao gồm:  Lệnh COMMIT, lệnh ROLLBACK, lệnh SAVEPOINT, lệnh AUTOCOMMIT  Các đối tượng khác:  SYNONYM: tạo một Synonym (Create Synonym…), xóa Synnonym (Drop Synonym…)  INDEX: tạo chỉ mục cho table (Create Index…) , bảo đảm giá trị duy nhất trong cột, thường là giá trị Primary key.  SEQUENCE: tạo giá trị SEQUENCE cho cột (Create Sequence…). 5. Lệnh điều khiển giao tác + các đối tượng khác
  • 22. 22  Cú pháp CREATE TABLE <tên_table> ( tên_cột1 kiểu_dữ_liệu [not null], tên_cột2 kiểu_dữ_liệu [not null], … tên_cộtn kiểu_dữ_liệu [not null], khai báo khóa chính, khóa ngoại, ràng buộc toàn vẹn ) Ngôn ngữ định nghĩa dữ liệu Tạo table, view (1)
  • 23. 23  Cú pháp CREATE [OR REPLACE] [FORCE] VIEW <tên_view> [tên-cột1, cột2,…] AS SELECT … [Điều kiện] [Ràng buộc] - Ghi chú: tùy chọn Replace sẽ xóa view và tạo view mới nếu view đã tồn tại rồi. Ngôn ngữ định nghĩa dữ liệu Tạo table, view (2)
  • 24. 24 Loại dữ liệu Mô tả VARCHAR2(n) Dữ liệu kiểu ký tự, n<=4000 CHAR(n) Dữ liệu kiểu ký tự, kích thước cố đinh, n<=2000 NUMBER Kiểu số nguyên, số ký số tối đa là 38 ký số NUMBER(p) Kiểu số nguyên, với số ký số tối đa là p NUMBER(p,s) Kiểu số thực, tối đa p ký số, s số thập phân. p 38, -84 ≤ ≤ s 127.Ví dụ: số 7456123, khai báo kiểu number (7, -2) ≤ = 7456100 DATE Kiểu ngày, lưu ngày từ 1/1/4712 BC -> 31/12/9999 LONG Kiểu ký tự RAW Chuỗi nhị phân dài tối đa 2000 bytes LONG RAW Chuỗi nhị phân dài tối đa 2GB BLOB (Bynary Large Object) có độ dài 4GB ≤ CLOB (Character Large Object) có độ dài 4GB ≤ BFILE Chứa con trỏ chỉ đến một tập tin nhị phân ở ngoài DB Ngôn ngữ định nghĩa dữ liệu Tạo table, view - Kiểu dữ liệu (3)
  • 25. 25 Cho lược đồ CSDL “quản lý đề án cty” như sau NHANVIEN (MaNV, HoNV, TenLot, TenNV, Phai, Luong, Phong, NgaySinh, DiaChi, Ma_NQL) PHONGBAN (MaPHG, TenPHG, TrPHG, NG_NhanChuc) DEAN (MaDA, TenDA, DDIEM_DA, Phong) PHANCONG (MaNV, MaDA, ThoiGian) DIADIEM_PHG (MaPHG, DIADIEM) THANNHAN (MaNV, TenTN, Phai, NGSinh,QuanHe) Ngôn ngữ định nghĩa dữ liệu Tạo table, view (4)
  • 26. 26 MANV HOTEN NTNS PHAI MA_NQL MaPH LUONG 001 Vuong Ngoc Quyen 22/10/1957 Nu QL 3.000.000 002 Nguyen Thanh Tung 09/01/1955 Nam 001 NC 2.500.000 003 Le Thi Nhan 18/12/1960 Nu 001 DH 2.500.000 004 Dinh Ba Tien 09/01/1968 Nam 002 NC 2.200.000 005 Bui Thuy Vu 19/07/1972 Nam 003 DH 2.200.000 006 Nguyen Manh Hung 15/09/1973 Nam 002 NC 2.000.000 007 Tran Thanh Tam 31/07/1975 Nu 002 NC 2.200.000 008 Tran Hong Minh 04/07/1976 Nu 004 NC 1.800.000 MADA TENDA PHONG NamThucHien TH001 Tin hoc hoa 1 NC 2002 TH002 Tin hoc hoa 2 NC 2003 DT001 Dao tao 1 DH 2004 DT002 Dao tao 2 DH 2004 MAPH TENPH TRPH QL Quan Ly 001 DH Dieu Hanh 003 NC Nghien Cuu 002 MANV MADA THOIGIAN 001 TH001 30,0 001 TH002 12,5 002 TH001 10,0 002 TH002 10,0 002 DT001 10,0 002 DT002 10,0 003 TH001 37,5 004 DT001 22,5 004 DT002 10,0 006 DT001 30,5 007 TH001 20,0 007 TH002 10,0 008 DT002 12,5 PHANCONG NHANVIEN DEAN PHONGBAN
  • 27. 27  Ví dụ: câu lệnh để tạo một table nhân viên CREATE TABLE NHANVIEN ( MANV varchar2(10) NOT NULL, HONV varchar2(50) NOT NULL, TENLOT varchar2(50) NOT NULL, TENNV varchar2(50) NOT NULL, NGAYSINH date, PHAI varchar2(3) NOT NULL, DIACHI varchar2(100), MA_NQL varchar2(10), PHONG varchar2(10), LUONG number, CONSTRAINT PK_NV PRIMARY KEY (MANV), CONSTRAINT FK_NV_PB FOREIGN KEY (PHONG) REFERENCES PHONGBAN (MAPHG) ) Ngôn ngữ định nghĩa dữ liệu Tạo table, view (5)
  • 28. 28  Ví dụ: câu lệnh để tạo một view chứa họ tên nhân viên phòng số 5 và tên phòng ban họ trực thuộc CREATE VIEW TrucThuoc AS SELECT MANV, HONV, TENNV, TENPHG FROM NhanVien nv, PhongBan p WHERE nv.PHONG = p.MAPHG AND p.nv.PHONG = 5 Ngôn ngữ định nghĩa dữ liệu Tạo table, view (6)
  • 29. 29  Thêm thuộc tính ALTER TABLE tên_table ADD tên_cột kiểu_dữ_liệu  Ví dụ: thêm cột Ghi_chú vào table nhân viên ALTER TABLE NHANVIEN ADD GHI_CHU varchar2(20)  Sửa kiểu dữ liệu thuộc tính ALTER TABLE tên_table MODIFY tên_cột kiểu_dữ_liệu_mới Ngôn ngữ định nghĩa dữ liệu Sửa cấu trúc table (7)
  • 30. 30  Ví dụ: sửa kiểu dữ liệu của cột Ghi chú ALTER TABLE NHANVIEN MODIFY GHI_CHU varchar2(30)  Xóa thuộc tính ALTER TABLE tên_bảng DROP COLUMN tên_cột  Ví dụ: xóa cột Ghi_chú từ bảng nhân viên ALTER TABLE NHANVIEN DROP COLUMN GHI_CHU Ngôn ngữ định nghĩa dữ liệu Sửa cấu trúc table (8)
  • 31. 31  Thêm ràng buộc toàn vẹn ALTER TABLE <tên_bảng> ADD CONSTRAINT <tên_ràng_buộc> UNIQUE tên_cột PRIMARY KEY (têncột1,2,.) FOREIGN KEY (tên_cột) REFERENCES tên_bảng (cột_là_khóa_chính) CHECK (tên_cột điều_kiện) Ngôn ngữ định nghĩa dữ liệu Sửa cấu trúc table (9)
  • 32. 32  Ví dụ  ALTER TABLE NHANVIEN ADD CONSTRAINT PK_NV PRIMARY KEY (MANV)  ALTER TABLE NHANVIEN ADD CONSTRAINT FK_NV_PB FOREIGN KEY (PHONG) REFERENCES PHONGBAN(MAPHG)  ALTER TABLE NHANVIEN ADD CONSTRAINT CHK CHECK ( PHAI IN (‘Nam') OR (‘Nu’))  ALTER TABLE NHANKHAU ADD CONSTRAINT UQ_NK UNIQUE (CMND) Ngôn ngữ định nghĩa dữ liệu Sửa cấu trúc bảng (10)
  • 33. 33  Xóa ràng buộc toàn vẹn ALTER TABLE tên_bảng DROP CONSTRAINT tên_ràng_buộc  Ví dụ ALTER TABLE NHANVIEN DROP CONSTRAINT FK_NV_PB Ngôn ngữ định nghĩa dữ liệu Sửa cấu trúc bảng (11)
  • 34. 34  Cú pháp xóa table DROP TABLE tên_table  Cú pháp xóa view DROP VIEW tên_view o Ví dụ: xóa bảng (table) nhân viên DROP TABLE NHANVIEN o Ví dụ: xóa khung nhìn (view) TrucThuoc DROP VIEW TrucThuoc Ngôn ngữ định nghĩa dữ liệu Xóa table, xóa view (12)
  • 35. 35  Cú pháp INSERT INTO tên_bảng VALUES (giá_trị_1, giá_trị_2,…, giá_trị_n) INSERT INTO tên_bảng (cột1, cột2) VALUES (giá_trị_1, giá_trị_2)  Ví dụ INSERT INTO NHANVIEN VALUES (‘001’, ‘Vuong’, ‘Ngoc’, ‘Quyen’, To_Date(’31/01/1977’,’dd/mm/yyyy’), ’450 Trung Vuong, Ha Hoi’, ‘QL’) Ngôn ngữ thao tác dữ liệu Thêm dữ liệu vào bảng (1)
  • 36. 36  Cú pháp UPDATE tên_bảng SET cột_1 = giá_trị_1, cột_2 = giá_trị_2 [WHERE điều_kiện]  Ví dụ: Sửa họ nhân viên có mã số ‘001’ thành ‘Nguyen’ UPDATE NHANVIEN SET HONV = ‘Nguyen’ WHERE MANV=‘001’ Ngôn ngữ thao tác dữ liệu Sửa dữ liệu của bảng (2)
  • 37. 37  Cú pháp  Ví dụ: Sửa họ tên của nhân viên có mã số ‘001’ thành ‘Nguyen Thanh Tung’ và ngày sinh mới là 1/1/1978 UPDATE NHANVIEN SET HONV = ‘Nguyen’, TENLOT = ‘Thanh’, TENNV = Tung’, NGAYSINH=To_date(‘1/1/1978’, ‘dd-mm- yyyy’) WHERE MANV=‘001’ Ngôn ngữ thao tác dữ liệu Sửa dữ liệu của bảng (3)
  • 38. 38  Cú pháp DELETE FROM tên_bảng [WHERE điều_kiện]  Ví dụ: xóa nhân viên có mã số ‘001’ DELETE FROM NHANVIEN WHERE MANV=‘001’  Ví dụ: xóa toàn bộ nhân viên DELETE FROM NHANVIEN Ngôn ngữ thao tác dữ liệu Xóa dữ liệu trong bảng (4)
  • 39. 39  Câu truy vấn tổng quát SELECT [DISTINCT] tên_cột | hàm FROM bảng [WHERE điều_kiện] [GROUP BY cột] [HAVING điều_kiện] [ORDER BY cột ASC | DESC] Ngôn ngữ thao tác dữ liệu Truy vấn dữ liệu – lệnh SELECT (5)
  • 40. 40  Toán tử so sánh = > < >= <= <>  Toán tử logic: AND, OR, NOT  Phép toán: +, - ,* , / Ngôn ngữ thao tác dữ liệu Toán tử truy vấn (6)
  • 41. 41  Các toán tử so sánh khác  BETWEEN - định nghĩa một đoạn giá trị liên tục  IS NULL - kiểm tra giá trị thuộc tính có null hay không  LIKE – kiểm tra chuỗi ký tự tương tự  IN – kiểm tra giá trị thuộc tính có thuộc tập hợp các giá trị đã định nghĩa hay không  EXISTS – mang giá trị TRUE nếu mệnh đề so sánh trả về ít nhất một bộ (record), FALSE nếu ngược lại Ngôn ngữ thao tác dữ liệu Toán tử truy vấn (7)
  • 42. 42  Toán tử BETWEEN  Ví dụ: Tìm nhân viên sinh vào khoảng 1965 và 1977. Tìm nhân viên có lương không nằm trong khoảng 100000 đến 300000  SELECT * FROM NHANVIEN WHERE To_number(To_char(NGAYSINH,’yyyy’)) BETWEEN 1965 AND 1977  SELECT n.MANV, n.TENNV, p.TENPHG FROM NHANVIEN n, PHONGBAN p WHERE n.PHONG=p.MAPHG AND n.LUONG NOT BETWEEN 100000 AND 300000; Ngôn ngữ thao tác dữ liệu Toán tử truy vấn (8)
  • 43. 43  Toán tử IS NULL  Ví dụ: tìm những nhân viên có người quản lý, tìm những học viên chưa đóng tiền học phí. a. SELECT * FROM NHANVIEN WHERE MA_NQL IS NOT NULL b. SELECT h.MAHV,h.HOTEN,h.DIACHI FROM HOCVIEN h, BIENLAI b WHERE h.MAHV=b.MAHV AND b.TIENNOP IS NULL Ngôn ngữ thao tác dữ liệu Toán tử truy vấn (9)
  • 44. 44  Toán tử LIKE  So sánh chuỗi tương đối  Cú pháp: s LIKE p, p có thể chứa % hoặc _  % : thay thế một chuỗi ký tự bất kỳ  _ : thay thế một ký tự bất kỳ  Ví dụ SELECT * FROM NHANVIEN WHERE HONV LIKE ‘Nguyen%’ Ngôn ngữ thao tác dữ liệu Toán tử truy vấn (10)
  • 45. 45  Toán tử IN  Ví dụ a. SELECT * FROM NHANVIEN WHERE PHONG IN (‘NC’,’QL’,’DH’) b. SELECT MANV, TENNV, DIACHI FROM NHANVIEN WHERE MANV NOT IN (SELECT MANV FROM PHANCONG) Ngôn ngữ thao tác dữ liệu Toán tử truy vấn (11)
  • 46. 46  Toán tử EXISTS  Ví dụ: tìm nhân viên làm việc cho tất cả các đề án SELECT * FROM NHANVIEN n WHERE NOT EXISTS (SELECT * FROM DEAN d WHERE NOT EXISTS (SELECT * FROM PHANCONG p WHERE n.MANV=p.MANV AND d.MADA=p.MADA)) Ngôn ngữ truy vấn dữ liệu Toán tử truy vấn (12)
  • 47. 47  Mệnh đề GROUP BY  Chia các dòng thành các nhóm nhỏ dựa trên tập thuộc tính chia nhóm.  Tất cả các thành viên của nhóm đều thỏa các thuộc tính này.  Thực hiện các phép toán trên nhóm như: Count (thực hiện phép đếm), Sum (tính tổng), Min(lấy giá trị nhỏ nhất), Max(lấy giá trị lớn nhất), AVG (lấy giá trị trung bình). Ngôn ngữ truy vấn dữ liệu Mệnh đề GROUP BY (13)
  • 48. 48 Ngôn ngữ truy vấn dữ liệu Mệnh đề GROUP BY (14) nhóm Các thuộc tính GROUP BY: Q a a b b c c c c c d d d Chia các dòng thành các nhóm dựa trên tập thuộc tính chia nhóm Q Count(S) Q S a b c d 2 2 5 3 10 2 9 5 10 8 6 4 10 16 Câu SQL: Select Q, count(S) From NV Group by Q Quan hệ NV 18 50 Tương tự cho các hàm SUM, MIN, MAX, AVG
  • 49. 49  Các hàm SQL cơ bản  COUNT: Đếm số bộ dữ liệu của thuộc tính  MIN: Tính giá trị nhỏ nhất  MAX: Tính giá trị lớn nhất  AVG: Tính giá trị trung bình  SUM: Tính tổng giá trị các bộ dữ liệu Ngôn ngữ truy vấn dữ liệu Mệnh đề GROUP BY (15)
  • 50. 50  Ví dụ: tìm tổng lương, lương lớn nhất, lương ít nhất và lương trung bình của các nhân viên SELECT SUM(LUONG), MAX(LUONG), MIN(LUONG), AVG(LUONG) FROM NHANVIEN ;  Ví dụ: tìm tổng lương, lương lớn nhất, lương ít nhất và lương trung bình của các nhân viên phòng “Nghiên cứu” SELECT SUM(LUONG), MAX(LUONG), MIN(LUONG), AVG(LUONG) from NHANVIEN , PHONGBAN WHERE MAPHG=PHONG AND TENPHG='Nghien cuu';  Ví dụ: cho biết số lượng nhân viên SELECT COUNT(*) FROM NHANVIEN; Ngôn ngữ truy vấn dữ liệu Mệnh đề GROUP BY (16)
  • 51. 51  Ví dụ SELECT n.MANV, n.TENNV, n.PHONG, MIN(p.THOIGIAN) thap_nhat, MAX (p.THOIGIAN) cao_nhat, AVG(p.THOIGIAN) trung_binh, SUM (p.THOIGIAN) tong_so_gio FROM NHANVIEN n, PHANCONG p WHERE n.MANV=p.MANV GROUP BY n.MANV, n.TENNV, n.PHONG Ngôn ngữ truy vấn dữ liệu Mệnh đề GROUP BY (17)
  • 52. 52  Mệnh đề HAVING Lọc kết quả theo điều kiện, sau khi đã gom nhóm  Điều kiện của HAVING là điều kiện các hàm tính toán trên nhóm (Count, Sum, Min, Max, AVG) và các thuộc tính trong danh sách GROUP BY. Ngôn ngữ truy vấn dữ liệu Mệnh đề HAVING (18)
  • 53. 53  Ví dụ: cho biết tên từng phòng ban và tổng số nhân viên, mức lương trung bình của phòng trên 2000000 SELECT p.TENPHG, COUNT(*) so_luong_nv, AVG(n.LUONG) luong_tb FROM NHANVIEN n, PHONGBAN p WHERE n.PHONG = p.MAPHG GROUP BY p.TENPHG HAVING AVG(n.LUONG) > 2000000 Ngôn ngữ truy vấn dữ liệu Mệnh đề HAVING (19)
  • 54. 54  Ví dụ  Liệt kê nhân viên có số giờ làm việc nhiều nhất trong công ty. SELECT n.MANV, n.TENNV, SUM (p.THOIGIAN) FROM NHANVIEN n, PHANCONG p WHERE n.MANV = p.MANV GROUP BY n.MANV, n.HOTEN HAVING SUM (p.THOIGIAN) >= ALL (SELECT SUM(THOIGIAN) FROM PHANCONG GROUP BY (MANV) Ngôn ngữ truy vấn dữ liệu Mệnh đề HAVING (20)
  • 55. 55 Ngôn ngữ điều khiển dữ liệu (DCL) Giới thiệu System và Object Privileges (1)  Ngôn ngữ điều khiển dữ liệu Data Control Language (DCL) được dùng để cấp phát, thu hồi quyền trên các đối tượng như: tables, views, sequences, synonyms, procedures đến các user và role.  Lệnh DCL bao gồm 2 lệnh: - GRANT :Use to grant privileges on tables, view, procedure to other users or roles. - REVOKE :Use to take back privileges granted to other users and roles.  Phân loại quyền: có 2 loại  System Privileges  Object privileges  System Privileges thường được cấp bởi DBA đến các users. Ví dụ một số quyền hệ thống: CREATE SESSION, CREATE TABLE, CREATE USER,…. System privileges grants cover many areas of access in a broad brush, với những quyền tương tự như select any table. Ví dụ: grant create any cluster to customer_role; grant select any table to fred; grant create tablespace to dba_role;  Object privileges là các quyền trên các object như: tables, views, synonyms, procedure. Những quyền này được cấp bởi người sở hữu object.
  • 56. 56 Ngôn ngữ điều khiển dữ liệu
  • 57. 57 Ngôn ngữ điều khiển dữ liệu Object Privileges (2)
  • 58. 58  Một User muốn tạo được schema riêng cho mình cần phải có 2 quyền hệ thống thích hợp là CONNECT đến cơ sở dữ liệu và quyền RESOURCE (tài nguyên).  Object Privileges: có 8 quyền có thể gán cho User và Role, 8 quyền bao gồm: SELECT, INSERT, UPDATE, DELETE, ALTER, INDEX, REFERENCES, ALL.  Role: là tên của một tập hợp các quyền hệ thống nhằm quản lý các quyền cho các ứng dụng cơ sở dữ liệu hoặc nhóm người dùng (User Group).  Một User có thể truy xuất đến nhiều Role và ngược lại.  Có vài Role được định nghĩa trước như DBA chứa tất cả các quyền của hệ thống. Ngôn ngữ điều khiển dữ liệu Giới thiệu Object Privileges (3)
  • 59. 59  Cú pháp CREATE ROLE <role-name> NOT IDENTIFIED | IDENTIFIED BY <password> Trong đó: - NOT IDENTIFIED: không đặt password cho role. - IDENTIFIED BY password: user phải nhập password để làm cho role có hiệu lực. Lưu ý: ký tự đầu tiên của password không được là số hoặc ký tự đặc biệt  Ví dụ: tạo một role QuanTriSV với password là QT987654 CREATE ROLE QuanTriSV IDENTIFIED BY QT987654 Ngôn ngữ điều khiển dữ liệu Tạo Role (nhóm quyền) (4)
  • 60. 60  Thiết lập/thay đổi/bỏ mật khẩu cho quyền Cú pháp: ALTER ROLE <role-name> NOT IDENTIFIED | IDENTIFIED BY <password> Ví dụ: đổi password mới cho role QuanTriSV là QT123456789 ALTER ROLE QuanTriSV IDENTIFIED BY QT123456789  Xóa quyền Cú pháp: DROP ROLE <role-name> Ví dụ: xóa quyền QuanTriSV DROP ROLE QuanTriSV  Gán quyền select/update/delete,.. đến public grant select on TênUser.TênTable to public Ngôn ngữ điều khiển dữ liệu Thiết lập/thay đổi/bỏ mật khẩu cho Role + xóa Role (5)
  • 61. 61  Cú pháp CREATE USER <user-name> NOT IDENTIFIED | IDENTIFIED BY <password> default tablespace USERS Trong đó: - NOT IDENTIFIED: không đặt password cho user. - IDENTIFIED BY password: user phải nhập password mới có thể đăng nhập hệ thống.  Ví dụ: tạo một user Phuong với password là P987654 CREATE USER Phuong IDENTIFIED BY P987654 CREATE USER Phuong1 IDENTIFIED BY P987654 default tablespace TEMP CREATE USER Phuong1 IDENTIFIED BY P987654 default tablespace USERS Ngôn ngữ điều khiển dữ liệu Tạo người dùng (6)
  • 62. 62  Thiết lập/thay đổi/bỏ mật khẩu cho người dùng Cú pháp: ALTER USER <User-name> NOT IDENTIFIED | IDENTIFIED BY <password> Ví dụ: thay đổi password mới cho user Phuong là P123456789 ALTER USER Phuong IDENTIFIED BY P123456789  Xóa người dùng Cú pháp: DROP USER <User-name> Ví dụ: xóa người dùng Phuong DROP USER Phuong Ngôn ngữ điều khiển dữ liệu Thiết lập/thay đổi/bỏ mật khẩu cho người dùng + xóa người dùng (7)
  • 63. 63  Cú pháp cấp phát quyền cho người dùng GRANT privil1, privil2,…/ALL ON <Tênđốitượng> TO User1, User2,… [WITH GRANT OPTION]  Cú pháp cấp phát quyền cho Role GRANT privil1, privil2,…/ALL ON <Tênđốitượng> TO Role1, Role2,… [WITH GRANT OPTION] Trong đó: - <Tênđốitượng> : có thể là tên của một Table, View, Sequence, Synonym, Procedure, Function, Package. - privil1, privil1,..là 1 trong 8 quyền hệ thống nêu trên để cấp quyền trên table hay view. Ngôn ngữ điều khiển dữ liệu Cấp phát quyền (8)
  • 64. 64  Ban quyền truy xuất đến tất cả User, Role bằng lệnh GRANT privil1, privil2,…/ALL ON <Tênđốitượng> TO PUBLIC Ví dụ: grant select on TênUser.TênTable to public  Ví dụ 1: cấp phát quyền cho user Phuong GRANT INSERT, UPDATE ON TênUserTạoTableNhanVien.NHANVIEN TO Phuong  Ví dụ 2: cấp phát quyền cho role QuanTriSV GRANT ALL ON TênUserTạoTableNhanVien.NHANVIEN TO QuanTriSV WITH GRANT ADMIN Ngôn ngữ điều khiển dữ liệu Cấp phát quyền (9)
  • 65. 65  Gán quyền Role cho User (User được cấp phát quyền Role) GRANT tên-Role TO tên-User [WITH GRANT OPTION]  Ví dụ : cấp phát role QuanTriSV cho user Phuong GRANT QuanTriSV TO Phuong  Ví dụ 2: cấp phát role QuanTriSV cho user Phuong GRANT QuanTriSV TO Phuong WITH GRANT ADMIN Ngôn ngữ điều khiển dữ liệu Cấp phát quyền (10)
  • 66. 66  Cú pháp rút lại (hủy bỏ) các quyền đã cấp phát REVOKE privil1, privil2,…/Role1, Role2,… ON <Tên-table>/<Tên-view> FROM User1, User2,…/Role1, Role2,…  Ví dụ - REVOKE UPDATE, DELETE ON NHANVIEN FROM Phuong - REVOKE ALL ON NHANVIEN FROM QuanTriSV Ngôn ngữ điều khiển dữ liệu Thu hồi quyền (11)
  • 67. 67 -- This will grant read only access on all your objects to another schema begin for x in (select object_name from user_objects) loop execute immediate 'grant select on '|| x.object_name || ' to &schema'; end loop; end; Ngôn ngữ điều khiển dữ liệu VD đoạn PL/SQL cấp quyền (12)
  • 68. 68  To see which table privileges are granted by you to other users. SELECT * FROM USER_TAB_PRIVS_MADE  To see which table privileges are granted to you by other users SELECT * FROM USER_TAB_PRIVS_RECD;  To see which column level privileges are granted by you to other users. SELECT * FROM USER_COL_PRIVS_MADE  To see which column level privileges are granted to you by other users SELECT * FROM USER_COL_PRIVS_RECD;  To see which privileges are granted to roles SELECT * FROM USER_ROLE_PRIVS; Ngôn ngữ điều khiển dữ liệu Tuy vấn xem thông tin quyền (13)
  • 69. 69 GIAO TÁC : một Transaction là một giao tác trên CSDL bao gồm chuỗi các thay đổi (hành động) trên một hay nhiều table. Điều khiển Transaction bằng các lệnh sau.  Lệnh COMMIT (hoàn tất giao tác) Cú pháp: COMMIT  Lệnh ROLLBACK (phục hồi ngược lại chuỗi hành động đã thực hiện trước đó). Cú pháp: ROLLBACK [TO SAVEPOINT name]  Lệnh SavePoint Cú pháp: SAVEPOINT tên-SavePoint  Chế độ AutoCommit (AUTOCOMMIT ON/OFF ) 6. CÁC LỆNH GIAO TÁC (1) – TRANSACTION
  • 70. 70  Ví dụ: minh họa cách dùng các lệnh SavePoint, RollBack, Commit begin insert into student values(1,'Nguyen Van A'); savepoint A; insert into student values(2,'Nguyen Van B'); savepoint B; insert into student values(3,'Nguyen Van C'); savepoint C; insert into student values(4,'Nguyen Van D'); savepoint A; // savepoint A trước đó ko đc hiểu nữa insert into student values(5,'Nguyen Van E'); savepoint D; end;  select * from student; -> kết quả 5 sinh viên  rollback to savepoint A; //thải hồi lệnh ngược đến savepoint A  select * from student; -> kết quả 4 sinh viên 6. CÁC LỆNH GIAO TÁC (2) – TRANSACTION
  • 71. 71 BEGIN FOR IX IN 9..12 LOOP  IF IX = 9 THEN  INSERT INTO NUMBERS VALUES (IX);  ELSIF IX = 11 THEN  DELETE FROM NUMBERS;  END IF;  IF IX = 11 THEN  ROLLBACK;  ELSE  COMMIT;  END IF; END LOOP; COMMIT; END; Giá trị nào được thêm vào bảng NUMBERS? Test trường hợp khác sử dụng lệnh drop table, lệnh DROP có được Rollback?? 6. CÁC LỆNH GIAO TÁC (3) – TRANSACTION
  • 72. 72  Synonym: Là tên đặt cho một đối tượng cụ thể nào đó. Thường dùng synonym để tạo ra những đối tượng dùng chung.  Ví dụ: Một người dùng muốn sử dụng một bảng được sở hữu bởi người dùng khác thay vì gọi “tên_người_dùng.tên_bảng” thì user đó tạo ra một synonym cho bảng đó với một tên dễ nhớ nào đó, tên thật của đối tượng được che dấu đi.  Các thao tác trên Synonym: tạo Synonym, xóa Synonym. 7. CÁC ĐỐI TƯỢNG KHÁC – Synonym (1)
  • 73. 73  Tạo Synonym: Cú pháp: CREATE SYNONYM tênSynonym FOR tênUser.tênTable| tênView Ví dụ: CREATE SYNONYM nv FOR phuong.NHANVIEN;  Xóa Synonym: Cú pháp: DROP SYNONYM tên-synonym; Ví dụ: DROP SYNONYM nv; 7. CÁC ĐỐI TƯỢNG KHÁC – Synonym (2)
  • 74. 74  Index (tạo chỉ mục): sử dụng Oracle Index nhằm - Tăng tốc độ xây dựng lại các dòng theo một khóa đặc biệt. - Bảo đảm giá trị duy nhất trong cột, thường là giá trị primary key.  Tạo Index Cú pháp: CREATE [UNIQUE] INDEX index_name ON table (column1 [, <column2>] , …) Ví dụ: CREATE UNIQUE INDEX i_cmnd ON NHAN_KHAU(SO_CMND); 7. CÁC ĐỐI TƯỢNG KHÁC – Index (1)
  • 75. 75  Phân loại index: - UNIQUE: Bảo đảm giá trị trong các cột là duy nhất. (no two rows of a table have duplicate values in the key column (or columns) ) - NONUNIQUE: (là default) kết quả truy vấn có thể nhanh nhất (do not impose this restriction on the column values) * Nếu là Single colum thì chỉ một cột tồn tại index. * Nếu là Concatenated Index: Trên 16 cột có thể chỉ ra trong index (giới hạn 30). 7. CÁC ĐỐI TƯỢNG KHÁC – Index (2)
  • 76. 76 (concatenated index also is called Composite Index - index that you create on multiple columns in a table )  Xóa index Cú pháp: DROP INDEX index_name; Ví dụ: DROP INDEX i_cmnd; CREATE INDEX VP_INDEX ON VENDOR_PARTS(VEND_ID ,PART_NO); 7. CÁC ĐỐI TƯỢNG KHÁC – Index (3)
  • 77. 77  Sequence (giá trị được tạo tự động) Sequence là đối tượng tạo ra một dãy số liên tiếp một cách tự động, thường hay sử dụng trong câu lệnh INSERT để nhập dữ liệu cho bảng (ví dụ mã khách hàng tăng tự động).  Tạo Sequence Cú pháp: CREATE SEQUENCE sequence_name [INCREMENT BY n] [START WITH n] [MAXVALUE n | NOMAXVALUE] [MINVALUE n | NOMINVALUE] [CYCLE | NOCYCLE] [CACHE n | NOCACHE] [ORDER | NOORDER] 7. CÁC ĐỐI TƯỢNG KHÁC – Sequence (1)
  • 78. 78  Ví dụ CREATE SEQUENCE s_nv MINVALUE 1 MAXVALUE 9999999 INCREMENT BY 1 START WITH 100 NOCACHE NOORDER NOCYCLE;  Sử dụng Sequence Giá trị hiện hành và kế tiếp của dãy sequence được lưu trong hai cột: - Giá trị hiện hành của sequence: tên_sequence.CURRVAL - Giá trị kế tiếp của sequence: tên_sequence.NEXTVAL 7. CÁC ĐỐI TƯỢNG KHÁC – Sequence (2)
  • 79. 79 Hai cột trên trong Oracle được gọi là pseudo column (cột ảo), người dùng chỉ được truy xuất, không được cập nhật dữ liệu trong các cột này. Oracle có các cột ảo như: ROWID (mã dòng), ROWNUM (số thứ tự dòng), SYSDATE (ngày hiện hành của hệ thống),…  Ví dụ Truy cập giá trị tiếp theo của sequence s_nv bằng lệnh: SELECT s_nv.nextval from DUAL; (bảng DUALlà tạm trong Oracle) Truy vấn giá trị hiện tại của sequence s_nv (nếu ko gọi s_nv.nextval một lần khi login vào session của mình trước, xem lỗi ở slide kế tiếp): SELECT s_nv.currval from DUAL; Sử dụng sequence trong một câu insert: INSERT INTO NHANVIEN (MA_NV, HO_TEN) VALUES (s_nv.nextval, ‘Nguyen van A’); /* s_nv là sequence đã tạo trước. */ 7. CÁC ĐỐI TƯỢNG KHÁC – Sequence (3)
  • 80. 80  ORA-08002: sequence string.CURRVAL is not yet defined in this session  Cause: sequence CURRVAL has been selected before sequence NEXTVAL Action: select NEXTVAL from the sequence before selecting CURRVAL  Link xem các loại lỗi (Oracle Error Code Collections): http://www.ora-code.com/ 7. CÁC ĐỐI TƯỢNG KHÁC – Lỗi truy xuất CURRVAL nếu chưa khởi tạo giá trị Sequence (4)
  • 81. 81  Sửa Sequence (tạo lại các thông số) ALTER SEQUENCE tên-sequence [INCREMENT BY n] [START WITH n] [MAXVALUE n | NOMAXVALUE] [MINVALUE n | NOMINVALUE] [CYCLE | NOCYCLE] [CACHE n | NOCACHE] [ORDER | NOORDER]  Xóa Sequence Cú pháp DROP SEQUENCE tên-sequence Ví dụ: DROP SEQUENCE s_nv 7. CÁC ĐỐI TƯỢNG KHÁC – Sequence (5)
  • 82. 82 MỘT SỐ VIEW TỪ ĐIỂN THƯỜNG DÙNG  USER_TABLES : xem các table người dùng đã tạo  USER_VIEWS : xem các view người dùng đã tạo  USER_INDEXES : xem các index người dùng tạo  USER_SEQUENCES : xem các sequence người dùng tạo  USER_FUNCTIONS : xem các function người dùng tạo  USER_PROCEDURES : xem các procedure người dùng tạo  USER_TRIGGERS : xem các trigger người dùng đã tạo  user_sys_privs: xem quyền của user hiện hành  ….. 8. TỪ ĐIỂN DỮ LIỆU – Oracle data dictionary
  • 83. 83 MỘT SỐ HÀM THƯỜNG DÙNG TRONG ORACLE  HỌC VIÊN XEM FILE WORD ĐI KÈM