1. Trang chủ
  2. » Giáo Dục - Đào Tạo

B i gi ng c ng ngh oracle

203 58 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 203
Dung lượng 9,11 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

- 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 Applicati

Trang 1

TS TR NăV NăD NGă(CH BIÊN)

BÀI GI NG:

CÔNG NGH ORACLE

(H c ph n: 03 tín ch )

Trang 3

L IăM ă U

Hi n nay, h qu n tr c s d li u đ c s d ng ph bi n trên th gi i và t i

Vi t Nam là: Oracle, Microsoft SQL-Server và IBM-DB2 v.v Trong đó, Oracle

th ng đ c các doanh nghi p đang phát tri n và doanh nghi p l n s d ng, đ c bi t

là các ngân hàng và các t p đoàn tài chính, b o hi m, thu ,… n i mà ngoài t c đ x

lý thì yêu c u b o m t, an toàn d li u luôn đ c đ t lên hàng đ u

Oracle không ch có m t h qu n tr CSDL m nh m mà còn cung c p m t h

th ng ph n m m và các gi i pháp toàn di n cho phép gi i quy t h u h t các bài toán

c a doanh nghi p

Bài gi ng “Công ngh Oracle” là tài li u đ c biên so n đ ph c v cho vi c

gi ng d y, h c t p c a gi ng viên, sinh viên ngành Công ngh thông tin Tài li u cung

c p nh ng ki n th c c s v h qu n tr c s d li u Oracle và xây d ng ng d ng

v i các công c c a Oracle

Bài gi ng “Công ngh Oracle” đ c biên so n 03 tín ch theo đ c ng h c

ph n “Công ngh Oracle” do TS Tr n V n D ng làm ch biên và đ c trình bày trong

M c dù đã h t s c c g ng, song do biên so n l n đ u, bài gi ng không tránh

kh i nh ng thi u sót Kính mong đ ng nghi p và b n đ c đóng góp ý ki n đ bài gi ng

đ c hoàn thi n h n

Xin chân thành c m n /

Nhóm tác gi

Trang 4

M ă U

GI IăTHI UăCHUNGăV ăCÔNGăNGH ăORACLE

Công ngh Oracle là 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 v i c s d li u

- 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

- 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 2008: Phiên b n 11g (Release 1&2)

Trang 5

- Có th th a mãn yêu c u khai thác đ ng th i c a nhi u ng i s d ng hay nhi u

ch ng trình ng d ng v i m c đích khác nhau

 H qu n tr CSDL là gì?

H qu n tr c s d li u (database management system - DBMS) là m t h

th ng ph n m m nh m cung c p cho ng i s d ng m t môi tr ng thích h p, hi u

qu đ khai thác CSDL theo các khía c nh l u tr , s a đ i và truy v n thông tin M t

s h qu n tr CSDL th ng g p: MS Access, MS SQL Server20xx, MySQL, Oracle, DB2, LDAP…

H qu n tr CSDL Oracle (g i t t là Oracle) là m t trong nh ng h qu n tr c

s d li u quan h m nh m nh t th gi i c thi t k đ tri n khai cho m i môi

tr ng doanh nghi p Vi c cài đ t, qu n lý r t d dàng, cung c p nhi u công c giúp phát tri n các ng d ng m t cách hoàn thi n và nhanh chóng Oracle phù h p cho m i

lo i d li u, các ng d ng và các môi tr ng khác nhau nh windows và linux K t n i

ng d ng v i công ngh Web đ c tích h p trong Oracle Web Server

H n hai ph n ba trong s 500 t p đoàn công ty l n nh t th gi i (Fortune 500)

s d ng Oracle Vi t Nam h u h t các đ n v l n thu c các ngành ngân hàng, kho

b c, thu , b o hi m, b u đi n, hàng không, d u khí,… đ u s d ng h qu n tr CSDL Oracle

 Các đ c đi m c a Oracle

- Tính an toàn d li u cao

- C ch quy n h n rõ ràng, n đ nh

- D cài đ t, d tri n khai, b o trì và nâng c p lên phiên b n m i

- Tích h p thêm PL/SQL, là m t ngôn ng l p trình th t c, thu n l i đ vi t các Trigger, StoreProcedure, Package

- Kh n ng x lý d li u r t l n, có th lên đ n hàng tr m terabyte (1 terabyte ~ 1,000 gigabyte ~ 1,000,000,000 kilobyte) mà v n đ m b o t c đ x lý d li u r t cao

- Kh n ng b o m t r t cao, Oracle đ t đ b o m t c p c2 theo tiêu chu n b o m t

c a b qu c phòng m và công ngh Oracle v n đ c hình thành t yêu c u đ t hàng

c a các c quan an ninh FBI và CIA

- T ng thích v i nhi u platform (Unix, Linux, Solaris, Windows v.v…)

 M t vài đi m so sánh Oracle v i SQL Server

B ng 1.M t vài so sánh Oracle và SQL Server

PA-Ch y đ c trên h u h t các

ki n trúc ph n c ng

Trang 6

Operating system Windows Multi-platform (Windows,

linux,unix, ) Programming

Trên m i máy có nhi u Instances, s l ng ph thu c vào t ng OS

Login Name/ DB

username

M i Login name có th

"map" t i nhi u DB Username trong các Database, LoginName và

DB Name không nh t thi t cùng tên vd: LoginName là

SA đ c map t i DB Username tên là DBO trong

t t c các Database

Không có s phân bi t LoginName/DB Name Khi t o

1 user, thì đó là v a là LoginName v a là Db Username

Database/

Schema (*)

M i Instance có nhi u Database, và m i Database

có nhi u schema Có th phân quy n cho DB Username trên schema

M i Instance xem nh ch có 1 Database !!! Trong Database

có nhi u DB Username, t ng

ng m i DB Username có 1 và

ch 1 schema cùng tên v i user Vì v y, trong Oracle không có khái ni m phân quy n trên schema (ch có phân quy n cho t ng Objects trên schema đó)

Giao di n

qu n tr CSDL m c

đinh

D s d ng (SQL Server Managerment Studio)

N ng n , khó s d ng OEM (Oracle enterprise manager)

Command

line

Giao di n dòng l nh dài dòng và ph c t p, khó dùng

Giao di n dòng l nh d s

d ng, đa s là Create/Alter/Drop Nh vi c phân quy n ch c n

Grant/revoke

(*) Schema: User có th làm vi c trong ph m vi cho phép c a mình mà Oracle

g i là "khung c nh" (Schema) c a user, hay còn g i là l c đ CSDL c a user M i

l c đ CSDL là t p h p các đ i t ng nh là table, view, trigger, function, procedure,… Ng i dùng đ c c p quy n trên l c đ nào thì ch có th tác đ ng lên các đ i t ng trong l c đ đó

Trong Oracle m i database có nhi u schema, t ng ng v i m i schema s có

m t và ch m t user trùng tên v i schema đó

Trang 7

VD: Trong Oracle m c đ nh có 2 user là SYSTEM và SCOTT, t ng ng là 2 schema cùng tên SYSTEM là user có quy n cao nh t trong h th ng, ng i dùng khi

đ ng nh p vào SYSTEM có th tác đ ng đ n b t kì đ i t ng trên b t k schema nào Còn khi đ ng nh p vào SCOTT thì ch có th tác đ ng trên schema SCOTT

 Cài đ t Oracle 10G trên windows

B c 1 Thay đ i thu c tính file setup.exe nh hình d i bao g m:

- Run this program in compatibility mode for: Windows XP

- Run this program as an administrator

Hình 1. Thay đ i thu c tính file setup

Trang 8

B c 2 M file cài đ t setup.exe

Hình 2.Giao di n cài đ t đ u tiên

Confirm Password: Nh p l i m t kh u đã nh p trong m c Database Password

B c 3 Nh p m t kh u cho database (Ghi nh m t kh u này!) Sau đó

b m next

M t kh u khuy n ngh : abc123

Trang 9

Hình 3.Giao di n nh p m t kh u

B c 4 B m next liên t c cho đ n khi hi n lên hình d i thì b m Install

Hình 4.Các thành ph n s cài đ t

Trang 10

Quá trình t đ ng cài đ t b t đ u Th i gian ch kho ng 15-20 phút

Hình 5.Quá trình cài đ t b t đ u

 M t s l uăỦăquanătr ng

 Ki m tra service m i khi làm vi c v i Oracle

C n nh : M i khi kh i đ ng máy, đ làm vi c đ c v i CSDL Oracle, ta ti n

hành các công vi c sau:

a Ki m tra các services c a Oracle xem đã tr ng thái started ch a N u

ch a thì start lên xem các services trong window, vào start, gõ services

Hình 6.Các service c a Oracle

Trang 11

L i khuyên: nên thi t l p các service c a Oracle ch đ kh i đ ng là Manual

thay vì Automatic đ gi m th i gian kh i đ ng windows Khi c n làm vi c v i Oracle,

ta ti n hành kh i đ ng l n l t 2 service là OraclServiceORCL và OracleOraDb10g_home1TNSListener

Ch kho ng 1 phút đ các ti n trình kh i đ ng hoàn t t

b ng nh p vào sqlplus v i quy n sysdba:

+ Start\cmd (Run as administrator)

+ Gõ l nh: sqlplus sys/abc123 as sysdba (abc123 là m t kh u database lúc cài đ t)

o N u tr ng thái là Connected to: … thì đã có th làm vi c đ c v i CSDL

Trang 12

Hình 9.Kh i đ ng instance

 T t service không c n thi t

t ng t c cho h th ng, ta chuy n Startup Type c a service có tên b t đ u là OracleDBConsole sang tr ng thái Disabled

 PL/SQL Developer

Khác v i SQL Server ho c MySQL có gói download mà khi cài đ t xong nó có

s n công c tr c quan đ làm vi c Còn v i Oracle, m c đ nh đ làm vi c v i CSDL

ta s d ng Oracle Enterprise Manager (OEM) thông qua trình duy t web, nh ng công

c này khá n ng n và c ng k nh khi ch y trên các máy tính đ bàn ho c xách tay Vì

v y ta s d ng công c có tên PL/SQL Developer đ làm vi c v i Oracle

Hình 10. Ảiao di n đ ng nh p khi kh i đ ng ch ng trình

Thông tin đ ng nh p bao g m:

Username: tên schema/tên user (tên ng i dùng)

Password: m t kh u t ng ng

Database: tên c s d li u

Connect as: lo i quy n k t n i đ n database {Normal, SYSDBA, SYSOPER}

Trang 13

Chú ý: Ph i ch y PL/SQL Developer v i quy n admin, n u không khi đ ng

nh p s x y ra l i nh 11

Hình 11. L i khi đ ng nh p

Hình 12. Ảiao di n làm vi c khi đ ng nh p thành công

Khi đ ng nh p thành công, trên thanh tiêu đ c a ng d ng s hi n tên user và tên database hi n đang đ c s d ng Ví d Hình 12 là: system@orcl t c là đã đ ng

nh p vào user system c a c s d li u có tên orcl

 Phiên làm vi c

V i m i m t c a s làm vi c c a PL/SQL Developer s ch làm vi c

v i m t schema (hay còn g i là m t user) c a m t database trong m t th i

đi m

M t phiên làm vi c trong PL/SQL Developer s b t đ u khi m t user

đ ng nh p thành công và k t thúc khi m t trong các s ki n sau x y ra:

- M t user khác đ ng nh p

Trang 14

T o m t c a s SQL Window đ vi t và th c thi các câu l nh SQL

VD: Truy v n t t c thông tin trong b ng emp c a user scott

Select * from scott.emp;

Hình 14. Ví d v th c thi câu l nh SQL

Trang 15

 Các l iăth ng g păkhiăđ ngănh p

* ORA-12541: TNS:no listener

Nguyên nhân: service OracleOraDb10g_home1TNSListener ch a đ c start

Kh c ph c: start service này lên Ch kho ng 1 phút

* ORA-12514: TNS:listener does not currently know of service requested in

connect descriptor

Nguyên nhân: listener không tìm th y service c a database ho c instance ch a

đ c startup

Kh c ph c: start service OracleServiceORCL, ch kho ng 1 phút đ kh i đ ng

h t các ti n trình N u v n không đ c thì đ ng nh p vào sqlplus v i quy n sysdba và startup database

 Bài t p th c hành

Bài 1 Làm vi c v i CSDL thông qua PL/SQL Developer

a ng nh p vào user system

b Truy v n tên các b ng đ c t o trong user scott b ng câu l nh:

HD: select table_name from dba_tables where owner='SCOTT';

c Truy v n thông tin trong b ng DEPT và EMP c a user scott

HD: select * from scott.dept; select * from scott.emp;

d Hi n th tên các nhân viên trong phòng ban có mã là 30

HD: select ename from scott.emp where deptno=30;

e ng nh p vào user scott v i m t kh u là 123456 và đ a ra nh n xét

f ng nh p l i vào user system và ti n hành đ i m t kh u c a scott thành tiger

và m khóa nó

HD: alteruser scott identifiedby tiger accountunlock;

g ng nh p l i vào user scott v i m t kh u đã thay đ i câu f và th c hi n các truy v n câu c,d

h T o m t c a s Diagram Window và kéo 2 b ng EMP và DEPT vào c a s Diagram đ xem mô hình k t n i gi a các 2 b ng

Trang 17

Ch ngă1 NGÔN NG PL/SQL

1.1 M T S KHÁI NI MăC ăB N

1.1.1 Các khái ni m trong c s d li u

- Table là c u trúc l u tr c b n nh t trong CSDL quan h (RDBMS), nó bao

g m 1 ho c nhi u column và 0 ho c nhi u row

- Column hi n th m t lo i d li u trong b ng, ví d tên phòng ban trong b ng phòng ban Ng i ta th hi n nó thông qua tên column và gi s li u d i các ki u và kích c nh t đ nh

- Row là t h p nh ng giá tr c a Column trong b ng M t row còn có th đ c

g i là 1 b n ghi (record)

- Field là giao c a column và row Field chính là n i ch a d li u N u không có

d li u trong field ng i ta nói field có giá tr là null

- Primary Key là m t column ho c m t t p các column xác đ nh tính duy nh t c a các row trong b ng Ví d mã phòng ban Primary Key nh t thi t ph i có s li u

- Foreign Key là m t column ho c m t t p các column tham chi u m t b ng khác

ho c t i chính b ng đó Foreign Key xác đ nh m i quan h gi a các b ng

- Constraint là các ràng bu c d li u, ví d Foreign Key, Primary Key

Ví d :

Hình 15.Minh h a các khái ni m trong CSDL

M t s đ i t ng khác trong CSDL:

- View là c u trúc logic hi n th d li u t m t ho c nhi u b ng

- Sequence dùng đ sinh t đ ng các giá tr s t ng d n, th ng dùng cho vi c khóa chính t đ ng t ng Index t ng tính th c thi c a câu truy v n

Trang 18

COMMIT,

ROLLBACK,

SAVEPOINT

Qu n lý vi c thay đ i d li u b ng các l nh DML

GRANT, REVOKE 2 l nh này dùng đ gán ho c hu các quy n truy nh p vào

CSDL Oracle và các c u trúc b n trong nó Nh ng l nh này

đ c g i là các l nh đi u khi n d li u DCL (Data Control Language)

1.1.3 Truy v năd ăli uăc ăb n

- S ăđ ăquanăh ăc ăs ăd ăli uăth căhƠnhă(M căđ nh có s n trong user scott khi

t oăc ăs d li u)

Hình 16. S đ quan h c s d li u th c hành

Trang 19

EMP

SELECT Hi n th n i dung c a m t hay nhi u c t

DISTINCT Phân bi t n i dung gi a các dòng d li u tr v

* L y t t các các c t trong b ng

COLUMN Tên c t d li u c n tr v

Trang 20

ALIAS ph n tiêu đ c a c t d li u tr v

FROM TABLE Tên b ng ch a d li u truy v n

+ Các thành ph n khác có th đ a vào m nh đ SELECT trong câu l nh truy v n

VD: SELECT ename, sal *12, comm FROM scott.emp;

Tiêuăđ c a c t (column alias):

Trong m nh đ SELECT, column alias là ph n nhãn hi n th c a column khi l y

s li u ra Trong column alias không đ c có d u cách và vi t cách sau tên column

m t d u cách Column alias đ c ch p nh n có d u cách khi đ c đ t trong d u nháy kép (“ ”)

VD: (ANUAL chính là column alias)

SELECT ename, SAL*12 ANUAL, comm FROM scott.emp;

Ghép ti p các c t d li u:

Toán t ghép ti p chu i (||) cho phép ghép ti p d li u trong các c t khác nhau

c a cùng m t dòng d li u v i nhau thành m t chu i

Ta có th có nhi u toán t ghép chu i trong cùng m t column alias

VD: select empno||ename employee from scott.emp;

Ghép ti p chu i ký t

Trong m nh đ SELECT, ta có th th c hi n ghép ti p b t k ký t nào, bi u

th c hay s nào mà không ph i là column ho c column alias

VD: select empno || ename || 'work in department' || deptno "employee detail" from scott.emp;

Hàm:

Trong m nh đ select có th ch a các hàm có s n ho c do ng i dùng t o ra VD: select sysdate from dual; Hi n th ngày gi h th ng

Trang 21

Chú ý: DUAL là b ng gi (dummy table) trong Oracle, b ng này ch có m t

tr ng và đ c s d ng khi câu truy v n không c n thi t tham chi u đ n m t b ng

 Tên column, h ng s ho c danh sách các giá tr

VD: select deptno, job, ename, sal from scott.emp where sal between 1000 and 2000;

1.1.3.3 S p x p d li u tr v - M nh đ ORDER BY

Cú pháp:

SELECT [DISTINCT] {*, COLUMN [ALIAS], } FROM TABLE [WHERE

CONDITION] [ORDER BY EXPR/POSITION [DESC/ASC]];

M nh đ ORDER BY dùng đ s p x p s li u đ c hi n th và ph i đ t v trí sau cùng c a câu l nh truy v n

VD: select ename, job, sal*12, deptno from scott.emp orderby ename;

M nh đ ORDER BY m c đ nh s p x p theo th t t ng d n ASC[ENDING]:

s th p tr c, ngày nh tr c , ký t theo b ng ch cái

M nh đ Order còn có th s p x p nhi u column Các column c n s p x p đ c

vi t th t sau m nh đ ORDER BY và cách b i d u ph y (,) Column nào g n m nh

đ ORDER BY h n có m c đ u tiên khi s p x p cao h n Ch đ nh cách th c s p

x p ASC/DESC đ c vi t sau column cách b i m t d u cách

VD: select deptno, job, ename, sal from scott.emp orderby deptno, sal desc;

1.1.3.4 Nhóm d li u tr v - M nh đ GROUP BY [HAVING ]

Cú pháp:

SELECT [DISTINCT] {*, COLUMN [ALIAS], } FROM TABLE [WHERE

CONDITION] [GROUP BY EXPR] [HAVING CONDITION] [ORDER BY

EXPR/POSITION [DESC/ASC]];

M nh đ GROUP BY s nhóm các dòng d li u có cùng giá tr c a expr Ví d GROUP BY JOB ngh a là s nhóm các ngh gi ng nhau Th ng dùng trong các bài toán th ng kê nh tính t ng, tìm l n nh t, nh nh t, trung bình… M nh đ GROUP

Trang 22

BY ph i theo sau các đi u ki n trong m nh đ WHERE và ph i đ ng tr c m nh đ ORDER BY n u đ c s d ng

VD: Hi n th l ng l n nh t c a t ng ch c v

select job, max(sal) from scott.emp groupby job;

M nh đ HAVING là đ t đi u ki n c a nhóm d li u Có th đ t ngay tr c

ho c ngay sau m nh đ GROUP BY M nh đ này khác m nh đ WHERE ch m nh

đ WHERE đ t đi u ki n cho toàn b câu l nh SELECT

VD: select job, max(sal) from scott.emp groupby job having

max(sal)>=3000; Hi n th l ng l n nh t t 3000 tr lên c a t ng ch c v

VD: Li t kê các nhân viên có dname=RESEARCH

Cách 1: select emp.*, dname from scott.emp,scott.dept where emp.deptno = dept.deptno and dname='RESEARCH';

Cách 2: select emp.*, dname from scott.emp inner join scott.dept on

emp.deptno=dept.deptno where dname='RESEARCH'; Có th b t khóa inner

 K t n i trái(ph i) OUTER JOIN (LEFT ho c RIGHT):

N u b ng A LEFT OUTER JOIN v i b ng B thì k t qu g m các b n ghi có trong b ng A, v i các b n ghi không có m t trong b ng B thì các c t t B đ c đi n NULL Các b n ghi ch có trong B mà không có trong A s không đ c tr v VD: select e.ename, d.deptno, d.dname from scott.dept d leftjoin scott.emp e on

d.deptno = e.deptno;

 Liên k t c a b ng v i chính nó (t thân)

Có th liên k t b ng v i chính nó b ng cách đ t alias

VD: Hi n th thông tin bao g m tên nhân viên, l ng nhân viên, tên ng i qu n lý

c a nhân viên đó, l ng ng i qu n lý đó v i đi u ki n l ng c a nhân viên l n h n

l ng ng i qu n lý nhân viên đó

Select e.ename ten_nhan_vien, e.sal luong, m.ename ten_quan_ly, m.sal

luong_quan_ly from scott.emp e, scott.emp m where e.mgr = m.empno and e.sal >

m.sal;

Hình 17. K t qu tr v câu l nh truy v n

Trang 23

1.1.4.2 L nh truy v n l ng nhau

 Câu l nh SELECT l ng nhau

+ Trong m nh đ WHERE

VD: Tìm nh ng nhân viên làm cùng ngh v i BLAKE

Select ename, job from scott.emp where job = (select job from scott.emp where

ename = 'BLAKE');

+ Trong m nh đ HAVING

VD: Tìm nh ng phòng có m c l ng trung bình l n h n phòng 30

Select dept.deptno, dname, avg(sal) from scott.emp, scott.dept where

emp.deptno = dept.deptno groupby dept.deptno, dname havingavg(sal) > (select

avg(sal) from scott.emp where deptno = 30);

 Toán t SOME/ANY/ALL/NOT IN/EXITS

B ng 4.Mô t các toán t c b n

NOT IN / IN Không thu c / Thu c

ANY và SOME So sánh m t giá tr v i m i giá tr trong k t qu tr v c a câu truy

v n con Tr v đúng khi phép so sánh v i b t k giá tr nào là đúng

ALL 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 đúng khi phép so sánh v i t t c các giá tr đ u đúng

EXISTS Tr v TRUE n u có t n t i

VD: Hi n th các nhân viên có l ng l n h n các nhân viên phòng 30

Select * from scott.emp where sal >= all (selectdistinct sal from scott.emp

where deptno = 30) orderby sal desc;

1.1.4.3 Các hàm x lý d li u

 Các hàm x lý chu i, ký t

+ CHR(number_code) : tr v ký t theo mã ký t , trong đó: number_code là

mã ký t trong b ng mã ASCII

VD: select CHR(116) from dual; => ‘t’

+ LENGTH(<chu i>): tr v đ dài chu i, n u chu i là tr ng ho c là NULL,

thì hàm s tr v NULL

VD: select length('ORACLE') from dual; => 6

Trang 24

+ LOWER( string1 ): chuy n đ i t t c các ký t trong chu i string1 thành ký

t th ng

VD: selectLOWER('ORACLE') from dual; => oracle

+ UPPER(string1): ng c l i c a LOWER

+ INSTR(<chu i a>,<chu i con b>,<v trí x>[,<i>]): Tr v v trí xu t hi n

l n th i c a chu i con b trong chu i a, b t đ u tìm t v trí x N u x < 0 thì tìm t

ph i sang trái

VD: SELECT INSTR('CORPORATE FLOOR', 'OR', , ) FROM DUAL; (=>14)

+ SUBSTR(<chu i a>,<v trí b t đ u x> [s ký t y,]): L y y ký t b t đ u t

v trí x c a chu i a N u x < 0 thì tìm t ph i sang trái N u không có y s l y đ n

+ LTRIM (<chu i a>,<chu i b>) (hay RTRIM, TRIM): C t kh i chu i a t

bên trái (hay t bên ph i, hay c hai bên) nh ng ky t có trong chu i b

VD: SELECT LTRIM('xyxXxyLAST WORD','xy') FROM DUAL;

+ MOD(a,b): L y ph n d c a a chia cho b

VD: SELECTMOD(11,4) "Modulus" FROM DUAL;

Trang 25

+ EXTRACT(YEAR | MONTH | DAY FROM <ngày> ): Tr v thành ph n, ngày, tháng, ho c n m c a m t d li u ki u date

VD: SELECT EXTRACT(YEARFROMDATE'1998-03-07') FROM DUAL; (=>1998)

+ ADD_MONTHS(<ngày x>,<s tháng n>): Tr v ngày m i sau khi c ng n

tháng vào ngày x

VD: SELECT add_months(sysdate, ) FROM DUAL;

+ MONTHS_BETWEEN(<ngày 1>,<ngày 2>): S tháng gi a 2 ngày

+ SYSDATE: Tr v ngày tháng hi n t i

 Các hàm chuy n đ i ki u:

+ TO_NUMBER (<chu i s >):Chuy n ký t có n i dung s sang s

+ TO_CHAR(<value>[, format_mask]): chuy n đ i m t giá tr s ho c ngày tháng sang chu i Trong đó, value là giá tr c n chuy n, format_mask là đ nh d ng s

select TO_CHAR(sysdate, 'yyyy/mm/dd') from dual;

+ TO_DATE( <value> [, format_mask]): chuy n đ i m t giá tr s ho c ngày

SELECT To_date ('30/4/2016', 'dd/MM/yyyy')-to_date('1/1/2016',

'dd/MM/yyyy') from dual;

K t qu : 120

Select extract(dayfromsysdate) from dual;

K t qu : 7

Trang 26

MONTH Tên đ y đ c a tháng theo ti ng anh, đ dài 9

MON Tháng v i 3 ký t viên t t (JAN, FEB )

CREATE TABLE TABLE_NAME (COLUMN DATATYPE [DEFAULT

EXPR] [COLUMN_CONSTRAINT], , [TABLE_CONSTRAINT])

[TABLESPACE TABLESPACE_NAME] [AS SUBQUERY]

Trong đó:

COLUMN DATATYPE Tên column trong table Ki u d li u c a

column DEFAULT EXPR Giá tr m c đ nh c a column trong tru ng

h p NULL là expr COLUMN_CONSTRAINT Ràng bu c c a b n thân column, m t c t có

th có nhi u ràng bu c, m i ràng bu c c a

m t c t phân cách nhau b i d u cách

TABLE_CONSTRAINT ràng bu c c a toàn b ng, m i ràng bu c cách

nhau b i d u ph y (,) TABLESPACE

TABLESPACE_NAME

TABLESAPCE l u tr b ng đ c t o

AS SUBQUERY t o b ng có c u trúc gi ng m nh đ truy v n Các ví d t o b ng d i đây đ c th c hi n trong schema scott

Trang 27

VD1:

createtable empdemo(empno numbernotnullconstraint pk_empdeno primarykey,ename varchar2(10) constraint nn_ename notnullconstraint upper_ename check(ename = upper(ename)),job varchar2(9),

hiredate datedefaultsysdate,

sal number(10,2) constraint ck_sal check(sal>500),

deptno number(2) constraint nn_deptno notnullconstraint fk_deptno2

references dept(deptno));

VD2: createtable dept10 as select empno, ename, job, sal from emp where deptno = 10;

1.1.5.2 M t s quy t c khi t o table

a Các quy t c đ t tên object

(1) Tên dài t 1 đ n 30 ký t , ngo i tr tên CSDL không quá 8 ký t và tên liên

k t có th dài đ n 128 ký t

(2) Tên không ch a d u nháy (")

(3) Không phân bi t ch hoa ch th ng

(4) Tên ph i b t đ u b ng ký t ch trong b ký t c a CSDL

(5) Tên ch có th ch a ký t s trong t p ký t c a CSDL Có th dùng các ký

t _, $, # ORACLE không khuy n khích dùng các ký t $ và #

(6) Tên không đ c trùng v i các t đã dùng b i ORACLE

(7) Tên không đ c cách kho ng tr ng

(8) Tên có th đ t trong c p d u nháy kép, khi đó tên có th bao g m các ký t

b t k , có th bao g m kho ng tr ng, có th dùng các t khóa c a ORACLE, phân bi t ch hoa ch th ng

(9) Tên ph i duy nh t trong "không gian tên" nh t đ nh Các object thu c cùng không gian tên ph i có tên khác nhau

b Quy t c khi tham chi u đ n Object

S đ chung khi tham chi u các object ho c thành ph n c a các object:

Schema.Object.Part.@dblink

Trong đó:

object: Tên object

schema: Schema ch a object

part: Thành ph n c a object

dblink: Tên CSDL ch a object

Trang 28

Tham chi u đ n các object không thu c quy n s h u:

tham chi u đ n các object không thu c schema hi n th i, ph i ch ra tên

c a schema ch a object mu n truy c p: schema.object

Ví d : xóa table EMP trong schema SCOTT:

DROP TABLE scott.emp

Tham chi u các object t xa

truy c p đ n m t CSDL xa, sau tên object ph i ch ra tên liên k t CSDL (database link) c a CSDL ch a object mu n truy c p Database link là m t schema object, Oracle dùng đ thâm nh p và truy xu t CSDL t xa

1.1.5.3 Các ki u d li u c b n

 CHAR: ki u CHAR dùng đ khai báo m t chu i có chi u dài c đ nh, khi khai

báo bi n ho c c t ki u CHAR v i chi u dài ch đ nh thì t t c các m c tin c a bi n hay

c t này đ u có cùng chi u dài đ c ch đ nh Các m c tin ng n h n Oracle s t đ ng thêm vào các kho ng tr ng cho đ chi u dài Oracle không cho phép gán m c tin dài

h n chi u dài ch đ nh đ i v i ki u CHAR Chi u dài t i đa cho phép c a ki u CHAR

là 255 byte

 VARCHAR2: ki u VARCHAR2 dùng đ khai báo chu i ký t v i chi u dài

thay đ i Khi khai báo m t bi n ho c c t ki u VARCHAR2 ph i ch ra chi u dài t i

đa, các m c tin ch a trong bi n hay c t ki u VARCHAR2 có chi u dài th c s là chi u dài c a m c tin Oracle không cho phép gán m c tin dài h n chi u dài t i đa ch đ nh

đ i v i ki u VARCHAR2 Chi u dài t i đa ki u VARCHAR2 là 2000 byte

 NUMBER: ki u s c a ORACLE 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)

Trong đó:

p: s ch s tr c d u ch m th p phân (precision), p t 1 đ n 38 ch s

s: s các ch s tính t d u ch m th p phân v bên ph i (scale)

NUMBER(p): s có d u ch m th p phân c đ nh v i precision b ng p và scale

b ng 0

NUMBER: s v i d u ch m đ ng v i precision b ng 38 Nh r ng scale không đ c áp d ng cho s v i d u ch m đ ng

DATE: Dùng đ ch a d li u ngày và th i gian M c dù ki u ngày và th i gian

có th đ c ch a trong ki u CHAR và NUMBER

V i giá tr ki u DATE, nh ng thông tin đ c l u tr g m th k , n m, tháng, ngày, gi , phút, giây Oracle không cho phép gán giá tr ki u ngày tr c ti p, đ gán giá

tr ki u ngày, b n ph i dùng TO_DATE đ chuy n giá tr ki u chu i ký t ho c ki u

s N u gán m t giá tr ki u ngày mà không ch th i gian thì th i gian m c đ nh là 12

Trang 29

gi đêm N u gán giá tr ki u ngày mà không ch ra ngày, thì ngày m c đ nh là ngày

đ u c a tháng Hàm SYSDATE cho bi t ngày và th i gian h th ng

Ch ra ràng bu c duy nh t, các giá tr c a column ch trong m nh đ

UNIQUE trong các row c a table ph i có giá tr khác bi t Giá tr null là cho phép nêu UNIQUE d a trên m t c t

Ví d : create table dept ( deptno number(2), dname char(14), loc char(13),

constraint unq_dept_loc unique(dname, loc));

c PRIMARY KEY

Ch ra ràng bu c duy nh t (gi ng UNIQUE), tuy nhiên khoá là d ng khoá UNIQUE c p cao nh t M t table ch có th có m t PRIMARY KEY Các giá tr trong PRIMARY KEY ph i NOT NULL

Cú pháp khi đ t CONSTRAINT m c TABLE:

[CONSTRAINT constraint_name] PRIMARY KEY (column,

column )

Cú pháp khi đ t CONSTRAINT m c COLUMN:

Trang 30

[CONSTRAINT constraint_name] PRIMARY KEY

d FOREIGN KEY

Ch ra m i liên h ràng bu c tham chi u gi a table này v i table khác, ho c trong chính 1 table Nó ch ra m i liên h cha-con và ch ràng bu c gi a FOREIGN KEY b ng này v i PRIMARY KEY ho c UNIQUE Key c a b ng khác Ví d quan

h gi a DEPT và EMP thông qua tr ng DEPTNO

T khoá ON DELETE CASCADE đ c ch đ nh trong d ng khoá này đ ch khi d li u cha b xoá (trong b ng DEPT) thì d li u con c ng t đ ng b xoá theo (trong b ng EMP)

e CHECK

Ràng bu c ki m tra giá tr

Ví d : createtable emp_test (empno numberprimarykey, ename varchar2(10)

constraint nn_ename constraint upper_ename check (ename = upper(ename)),

hiredate datedefaultsysdate,sal number(10,2) constraint ck_sal check (sal> 500 );

1.1.5.5 Ch nh s a c u trúc table

Cú pháp:

ALTER TABLE tablename [ADD/MODIFY/DROP options ([column [column

constraint) [ENABLE clause] [DISABLE clause]

- Khí dùng m nh đ MODIFY không th chuy n tính ch t c a COLUMN có n i dung là NULL chuy n thành NOT NULL;

- Không th đ a thêm m t c t NOT NULL n u table đã có s li u Ph i thêm c t NULL, đi n đ y s li u, sau đó chuy n thành NOT NULL

- Không th chuy n đ i ki u khác nhau n u column đã ch a s li u

- Không th dùng m nh đ MODIFY đ đ nh ngh a các CONSTRAINT tr ràng bu c NULL/NOT NULL Mu n s a CONSTRAINT c n xoá chúng sau đó ADD thêm vào

Ví d 1: Thêm m t column có tên là short_name vào b ng emp:

altertable emp add short_name char(10);

Ví d 2: Ch nh s a ki u d li u c a c t short_name t char(10) sang nvarchar2(25) altertable emp modify short_name nvarchar2(25);

Trang 31

Ví d 3: Thêm 1 ràng bu c unique: altertable emp addconstraint unq_name

Cú pháp: DROP TABLE table_name [CASCADE CONSTRAINTS]

Trong đó: CASCADE CONSTRAINTS xóa t t c các ràng bu c toàn v n liên

quan đ n table b xóa

Khi drop table thì:

- Xóa t t c d li u

- View và synonymliên quan v n còn nh ng không có giá tr

- Các giao d ch ch a gi i quy t xong s đ c commit

- Ch ng i t o ra table hay DBA m i có th xóa table

 Chú thích cho table

Dùng l nh COMMENT đ chú thích

Ví d : COMMENT ON TABLE EMP IS ‘ THONG TIN NHAN VIEN’; COMMENT ON COLUMN EMP.EMPNO IS ‘ MA SO NHAN VIEN’;

 Thay đ i tên object

Dùng l nh RENAME đ thay đ i tên object

Cú pháp: RENAME old TO new

Trong đó: old Tên c new Tên m i

Ví d : RENAME emp TO employee

và các l nh giao tác

Trang 32

- PL/SQL cho phép s d ng t t c l nh thao tác d li u g m INSERT, DELETE, UPDATE và SELECT, COMMIT, ROLLBACK, SAVEPOINT, c u trúc đi u khi n

nh vòng l p (for, while, loop), r nhánh (if),…mà v i SQL chúng ta không làm đ c

- PL/SQL h tr c l p trình h ng th t c và h ng đ i t ng

- M c tiêu chính c a PL/SQL là đ :

+ T ng thêm s c m nh c a ngôn ng SQL,

+ X lý k t qu c a câu l nh truy v n trên t ng dòng (dùng cursor),

+ Phát tri n các ch ng trình ng d ng trên CSDL d ng module,

+ Tái s d ng nh ng đo n code (dùng procedure),

+ Gi m chi phí trong vi c b o trì và thay đ i ng d ng

1.1.6.2 C u trúc PL/SQL

Ngôn ng PL/SQL t ch c các l nh theo t ng kh i l nh M t kh i l nh PL/SQL

c ng có th có các kh i l nh con khác trong nó

C u trúc đ y đ c a m t kh i l nh PL/SQL bao g m:

DECLARE /* Ph n khai báo - Không b t bu c */

Khai báo các bi n s d ng trong ph n thân

Trang 34

dbms_output.put_line('Outer Variable num2: ' || num2);

dbms_output.put_line('Inner Variable num1: ' || num1);

dbms_output.put_line('Inner Variable num2: ' || num2);

END;

END;

=> K t qu :

Outer Variable num1: 95

Outer Variable num2: 85

Inner Variable num1: 195

Inner Variable num2: 185

 Gán giá tr tr v c a câu l nh truy v n cho các bi n:

S d ng m nh đ SELECT INTO c a SQL đ gán giá tr cho các bi n V i

m i tr ng giá tr tr v trong SELECT ph i có m t bi n cùng ki u d li u v i

tr ng đó trong INTO

VD:

DECLARE

v_empno integer := 7788;

v_ename emp.ename%type;/*Khai báo bi n v_ename có ki u d li u gi ng

c a c t ename trong b ng emp.*/

v_hiredate emp.hiredate%type;

v_sal emp.sal%type;

BEGIN

SELECT ename,hiredate,sal INTO v_ename, v_hiredate, v_sal

FROM emp WHERE empno = v_empno;

dbms_output.put_line

('Employer ' ||v_ename || ' - Hiredate: ' || v_hiredate || ' - Sal: ' || v_sal);

Trang 35

END;

K t qu : Employer SCOTT - Hiredate: 19-APR-87 - Sal: 3000

uătiênăc a toán t : ** (phép l y th a), NOT, *, /, +, -, || (phép n i

chu i), =, <>, <=, >=, IS NULL, LIKE, BETWEEN, IN, AND, OR

Trang 36

1.1.6.4 Các c u trúc đi u khi n trong PL/SQL

Hình 18. S đ t ng quát các c u tŕc đi u khi n

Trang 37

DBMS_OUTPUT.PUT_LINE('condition true'); END IF;

DBMS_OUTPUT.PUT_LINE(NO || ' IS ODD'); END IF;

Trang 38

Ví d :

Trang 39

đ c s th c hi n và b qua các tr ng h p bên d i, khi t t c các m nh đ WHEN

bi u th c đi u ki n đ u sai thì đo n l nh trong m nh đ ELSE s đ c th c hi n

Ví d :

DECLARE

a number := 3;

Trang 40

́ ngh a: o n l nh Statements s đ c th c hi n l p đi l p l i cho đ n khi

đi u ki n thoát condition là đúng thì thoát kh i vòng l p

EXIT WHEN đ c dùng đ ch đ nh đi u ki n thoát kh i vòng l p cho t t c các

Ngày đăng: 03/11/2019, 10:14

w