Bài giảng CƠ SỞ DỮ LIỆU NÂNG CAO

Chương 3: Cơ bản về Oracle

1

Số tc: 2; LT: 20; Btập: 10 GV: Nguyễn Thị Mỹ Dung Khối lớp: Đại học L2

NỘI DUNG MÔN HỌC

1

Chương 1. Tổng quan CSDL phân tán (4)

Chương 2. Tổng quan CSDL hướng đối tượng

2

3

Chương 3. Cơ bản về Oracle (4)

4

Chương 4: Lập trình PL/SQL (4)

5

Chương 5: Procedure, Function (4)

6

Chương 6: Thiết kế đối tượng (6)

7 Chương 7: Truy vấn trong CSDL HĐT (4)

Chương 3: Cơ bản về Oracle

2

Chương 3: Cơ bản về ORACLE

Chương 3: Cơ bản về Oracle

3

I. Các kiểu dữ liệu trong Oracle II. Các hàm thông dụng III. Thiết kế, xoá, sửa bảng IV. Bài tập thực hành

I. Các kiểu dữ liệu

Kiểu Diễn giải

VARCHAR2 Dùng để khai báo chuỗi ký tự với

chiều dài thay đổi (2000 byte)

VARCHAR Tương tự VARCHAR2 (Oracle khuyên

NUMBER

INTEGER

DATE

Chương 3: Cơ bản về Oracle

4

nên dùng Varchar2) Dùng để chứa các mục tin dạng số dương, số âm, số với dấu chấm động. Number(p, s); Number(p), Number Dùng để khai báo kiểu chuỗi ký tự với độ dài biến đổi, (2Gb) Dùng để chứa dữ liệu ngày, thời gian

Các kiểu dữ liệu (tt)

Kiểu

CHAR

FLOAT LONG

Chương 3: Cơ bản về Oracle

5

Diễn giải Dùng để khai báo chuỗi ký tự với chiều dài cố định (255 byte) Dùng để khai báo kiểu dấu chấm động Dùng để khai báo kiểu chuỗi ký tự với độ dài biến đổi (2GB). Thường để chứa văn bản.

II. Các hàm thông dụng

1. LENGTH (): Trả về chiều dài chuỗi

Select LENGTH ('lop DHCNTT') LEN

From Dual -- len = 10

2. INSTR(, ,

,)

 Tìm vị trí chuỗi b trong chuỗi a bắt đầu từ vị trí n,

lần xuất hiện thứ m.

 n<0: tìm từ phải sang trái

Select INSTR ('CORORATE FLOOR','OR',3,2)

From Dual -- vị trí 13

Chương 3: Cơ bản về Oracle

6

Các hàm xử lý dữ liệu (tt)

3. SUBSTR (, , )

 Cắt lấy chuỗi con của chuỗi a, lấy từ vị trí n về phải m ký tự, nếu không chỉ m thì lấy cho đến cuối chuỗi .

 n<0: vị trí cắt đếm từ phải sang trái

Select SUBSTR('ORACLE',1,3) Substring From Dual --ORA 4. CONCAT (,): Nối 2 chuỗi a, b Select CONCAT ('Lop DHCNTT',' Khoa SP Toan-

Tin') Substring

From Dual -- Lop DHCNTT Khoa SP Toan-Tin

Chương 3: Cơ bản về Oracle

7

Các hàm xử lý dữ liệu (tt)

5. SUBOWER/UPPER/INITCAPSTR ()  Chuyển chuỗi thành chuỗi viết thường /hoa /ký

tự đầu các từ viết hoa.

6. LTRIM/RTRIM(, )  Loại bỏ chuỗi b ở bên trái/ phải chuỗi a

Chương 3: Cơ bản về Oracle

8

Select LTRIM(‘khoa su pham toan - tin’, ’khoa’) From Dual; -- su pham toan - tin Select RTRIM(‘LAST WORDx’, ’xy’) FROM Dual; -- LAST WORD

Các hàm xử lý dữ liệu (tt)

7. REPLACE (chuỗi a, chuỗi b [,chuỗi c])  Thay tất cả các chuỗi b có trong chuỗi a bằng

chuỗi c

‘SALESPERSON’)

SELECT JOB, REPLACE (JOB, ‘SALESMAN’, FROM EMP WHERE DEPTNO =30 OR DEPTNO =20;

Chương 3: Cơ bản về Oracle

9

Các hàm xử lý dữ liệu (tt)

8. SYSDATE(chuỗi a, chuỗi b [,chuỗi c])  Hàm lấy ngày tháng hiện hành của hệ thống SELECT SYSDATE FROM DUAL 9. EXTRACT (YEAR|MONTH|DAY FROM

ngày>) Tách lấy năm|tháng|ngày của

Select EXTRACT(Month FROM DATE

‘2001-05-07’)

FROM Dual;

-- 5

Select EXTRACT(DAY FROM Sysdate)

FROM Dual;

Chương 3: Cơ bản về Oracle

10

Các hàm xử lý dữ liệu (tt)

(DATE ‘1981-01-02’, DATE ‘1980-01-02’)

Chương 3: Cơ bản về Oracle

11

10. MONTHS_BETWEEN(, )  Cho biết số tháng giữa Select MONTHS_BETWEEN FROM Dual --12 11. ADD_MONTHS (, n) Thêm n tháng vào Select ADD_MONTHS (DATE ’1981-01-02’, 2) FROM Dual; --3

Các hàm xử lý dữ liệu (tt)

12. NEXT_DAY(, )  Cho biết sau là ngày nào Select NEXT_DAY(DATE ‘2015-04-10’, 'friday') FROM Dual; --17-04-2015 13. LAST_DAY () Cho biết ngày cuối cùng trong tháng chỉ bởi Select LAST_DAY (DATE ‘2015-04-10’)

FROM Dual; --30-04-2015

Chương 3: Cơ bản về Oracle

12

Các hàm xử lý dữ liệu (tt)

14. TO_CHAR(): Chuyển số sang chuỗi TO_CHAR(, ):Chuyển

ngày sang chuỗi theo định dạng

Select TO_CHAR(DATE'2011-09-20', 'DD-MM-YYYY') -- ‘20-09-2011’ FROM Dual; 16. TO_NUMBER(): Chuyển chuỗi

ký số sang dạng số

Chương 3: Cơ bản về Oracle

13

Select TO_NUMBER('123')+TO_NUMBER('34') => 157 FROM Dual;

Các hàm xử lý dữ liệu (tt)

17. TO_DATE(,

định dạng>)

Chuyển chuỗi ngày sang dạng ngày theo định

dạng

Select TO_DATE(’10-04-2015’,’DD-MM-YYYY’) FROM Dual;

-- 10-04-2015

Chương 3: Cơ bản về Oracle

14

Các hàm xử lý dữ liệu (tt)

[WHEN < biểuthứcđk2> THEN [ELSE ]

18. Lựa chọn Case CASE WHEN THEN END Đánh giá danh sách các điều kiện và trả về giá trị phù

hợp

WHEN extract(day from sysdate)>15 THEN ‘Cuoi thang’ ELSE ‘Dau thang’ END

Select CASE From Dual;

Chương 3: Cơ bản về Oracle

15

III. Thiết kế, xoá, sửa bảng

1. Tạo bảng CREATE [GLOBAL TEMPORARY] TABLE

Table_name

( Column_name Datatype [CONSTRAINT constraint_def DEFAULT default_exp] [, column_name type [CONSTRAINT constraint_def DEFAULT default_exp]...] [,table_constraint [,…]] )

Chương 3: Cơ bản về Oracle

16

Tạo bảng (tt)

Trong đó:

– Global Temporary: nếu có từ khóa này

bảng được tạo sẽ là bảng tạm

– Table_name: tên bảng do người dùng

đặt

– Column_name: tên cột trong bảng – Datatype: kiểu dữ liệu của cột – Constraint: từ khóa cho phép tạo ràng

buộc trên cột

CREATE [GLOBAL TEMPORARY] TABLE ( column_name datatype [CONSTRAINT constraint_def DEFAULT default_exp] [, column_name type [CONSTRAINT constraint_def DEFAULT default_exp]...] [,table_constraint [,…]] )

– Contraint_def: ràng buộc của cột – Default: từ khóa cho phép xác định giá

trị mặc định cho cột

– Default_exp: dữ liệu của cột nhận giá trị default_exp nếu người dùng không nhập dữ liệu vào cột

– Table_constraint: ràng buộc của toàn

bảng dữ liệu

Chương 3: Cơ bản về Oracle

17

Tạo bảng (tt)

CREATE TABLE SINHVIEN ( MASV CHAR(10) PRIMARY KEY, HOTENSV VARCHAR2(40), NAMSINH INT, QUEQUAN VARCHAR2(40), HOCLUC FLOAT ) CREATE TABLE DETAI( MADT CHAR(10) PRIMARY KEY, TENDT VARCHAR2(40), CHUNHIEM VARCHAR2(40), KINHPHI NUMBER )

Chương 3: Cơ bản về Oracle

18

Tạo bảng (tt)

(MASV) REFERENCES SINHVIEN (MASV),

(MADT) REFERENCES DETAI(MADT)

Chương 3: Cơ bản về Oracle

19

CREATE TABLE SVDT ( MASV CHAR(10) NOT NULL, MADT CHAR(10) NOT NULL, NOIA_D CHAR(40), KETQUA FLOAT, PRIMARY KEY (MASV, MADT), CONSTRAINT SVDT_SV FOREIGN KEY CONSTRAINT SVDT_DT FOREIGN KEY )

Thiết kế, xoá, sửa bảng (tt)

Kiểu ràng buộc

Diễn giải

NULL/NOT NULL

CHECK (Criteria)

Cho phép/không cho phép cột chứa giá trị rỗng Giá trị nhập vào cột phải thỏa Criteria

UNIQUE

Giá trị nhập vào cột phải là duy nhất

Ràng buộc khóa chính cho cột

PRIMARY KEY

Ràng buộc khóa ngoại cho cột sẽ tham chiếu tới Column_name đã tồn tại trong bảng Table_name.

REFERENCES (Column_name1)

Chương 3: Cơ bản về Oracle

20

Mô tả: CONSTRAINT []

Thao tác CSDL (tt)

2. Sửa bảng

Thêm cột: ALTER TABLE ADD

[]

Xóa cột: ALTER TABLE

DROP COLUMN

Thay đổi kiểu dữ liệu cột: ALTER TABLE MODIFY

Chương 3: Cơ bản về Oracle

21

Sửa bảng (tt)

Thêm RBTV: ALTER TABLE ADD

CONSTRAINT , CONSTRAINT , … Xóa RBTV:

ALTER TABLE DROP

MAHG CHAR(10), TENHANG CHAR(50), DVT CHAR(5)

Ví dụ: )

CREATE TABLE HANGHOA(

Chương 3: Cơ bản về Oracle

22

Sửa bảng (tt)

 Thêm thuộc tính bảng:

ALTER TABLE HANGHOA ADD

DONGIA FLOAT

 Mở rộng kiểu dữ liệu cho thuộc tính bảng:

ALTER TABLE HANGHOA

MODIFY DONGIA LONG

 Xóa thuộc tính bảng:

Chương 3: Cơ bản về Oracle

23

ALTER TABLE HANGHOA DROP COLUMN DVT

Sửa bảng (tt)

REFERENCES KHOA(MAKHOA)

ALTER TABLE HANGHOA ADD CONSTRAINT fk_HH

PRIMIRY KEY (MAHG)

 Xóa ràng buộc toàn vẹn trong bảng

ALTER TABLE SINHVIEN DROP CONSTRAINT fk_sv

Chương 3: Cơ bản về Oracle

24

 Thay đổi RBTV: ALTER TABLE SINHVIEN ADD CONSTRAINT fk_sv FOREIGN KEY (MAKHOA)

Thiết kế, xoá, sửa bảng (tt)

[CASCADE CONSTRAINT]

3. Xoá bảng DROP TABLE CASCADE CONSTRAINT sẽ xóa luôn tất cả các

ràng buộc toàn vẹn liên quan đến bảng cần xóa.

CASCADE CONSTRAINT

Chương 3: Cơ bản về Oracle

25

DROP TABLE HANGHOA

IV. Bài tập

Cho CSDL như sau:  DONVI (MADV, TENDV)  CANBO (MACB, HOTENCB, MADV)  CHUCVU (MACV, TENCV, HESO)  GIUCHUCVU (MACB, MACV, NGAYBD, NGAYKT)

Yêu cầu: 1. Tạo bảng và tạo RBTV cho các bảng. 2. Nhập dữ liệu cho bảng như sau: TENDV

DONVI MADV

DV0001 Phong giam doc DV0002 Phong to chuc

Chương 3: Cơ bản về Oracle

26

Bài tập (tt)

CHUCVU MACV

TENCV

HESO 3.5 3.0

CV0001 Giam doc CV0002 Truong phong

CV0003 Pho phong CV0004 Ke toan truong

2.7 2.7

CANBO MACB HOTENCB

MADV DV0001

CB0001 Nguyen Van A

CB0002 Le Thi B DV0001 DV0001 CB0003 Tran Van C CB0004 Bach Tuan Kiet DV0002

CB0005 Thai Binh An DV0001 CB0006 Dang Van Khang DV0002

Chương 3: Cơ bản về Oracle

27

Bài tập (tt)

GIUCHUCVU MACB MACV NGAYBD NGAYKT

CB0001 CV0001 01-JAN-15 CB0003 CV0002 01-JAN-15 01-DEC-15

CB0004 CV0002 01-JAN-16

3. Tìm thông tin CB giữ chức vụ từ năm 2015 4. Tìm thông tin CB giữ chức vụ dưới 1 năm 5. Tìm thông tin CB vẫn còn giữ chức vụ.

Chương 3: Cơ bản về Oracle

28

Tổng kết chương

Chương 3: Cơ bản về Oracle

29

- Giới thiệu Oracle - Các kiểu dữ liệu trong Oracle - Cách thiết kế bảng, sửa, xoá bảng - Nhập và xem dữ liệu bảng