Oracle PLSQL - TV

download Oracle PLSQL - TV

of 104

Transcript of Oracle PLSQL - TV

  • 8/7/2019 Oracle PLSQL - TV

    1/104

    SQL v PL/SQLC bn

  • 8/7/2019 Oracle PLSQL - TV

    2/104

    Oracle c b n - SQL v P L/SQL

    MC LC

    MC LC ... ...1

    CHNG 1. GII THIU CHUNG ... ...51.1. NGN NG SQL ... ..5

    1.1.1. Lch s pht trin ca ngn ng SQL ... .51.1.2. Chun SQL ... ..5

    1.2. CC KHI NIM C BN TRONG C S D LIU ... ...51.2.1. Cc thnh phn logic trong database... ..51.2.2. Cc i tng trong database ... ...61.2.3. Cc nhm lnh SQL c bn ... .6

    1.3. C S D LIU THC HNH... ..71.3.1. M hnh d liu ... ..71.3.2. Cu trc bng d liu ... .7

    CHNG 2. LNH TRUY VN C BN ... .92.1. CU LNH TRUY VN ... ..9

    2.1.1. Quy tc vit lnh ... ...92.1.2. Cu lnh truy vn c bn ... ..92.1.3. Cc thnh phn khc ca mnh SELECT ... ..92.1.4. Phn bit gi tr d liu tr v ... ..102.1.5. Gi tr NULL ... ..11

    2.2. SQL*PLUS, CNG C TNG TC LNH SQL VI DATABASE ... ...112.2.1. Cu lnh tng tc ca SQL*Plus ... .112.2.2. Phn nhm cu lnh trong SQL*Plus... ...122.2.3. Chi tit cc lnh SQL*Plus c bn ... .13

    2.3. BI TP ... ..15

    CHNG 3. TRUY VN D LIU C IU KIN ... ..173.1. CC GII HN TRONG TRUY VN D LIU ... ...17

    3.1.1. Mnh WHERE... ...173.1.2. Cc ton t s dng trong mnh WHERE ... ..183.1.3. V d s dng cc ton t iu kin ... .19

    3.2. SP XP D LIU TR V... ..203.2.1. Mnh ORDER BY ... ...203.2.2. Sp xp nhiu ct d liu tr v... ..20

    3.3. BI TP ... ..21

    CHNG 4. CC HM SQL ... ...234.1. TNG QUAN V HM SQL... ..23

    4.1.1. Cu trc hm SQL ... .234.1.2. Phn loi hm SQL ... ...23

    4.2. HM SQL THAO TC TRN TNG DNG D LIU... .244.2.1. Cc hm thao tc trn kiu d liu s... ..244.2.2. Cc hm thao tc trn kiu d liu k t... .264.2.3. Cc hm thao tc trn kiu d liu thi gian... .304.2.4. Cc hm chuyn i kiu ... ...32

    4.3. HM THAO TC TRN TP HP ... ...344.3.1. Cc hm tc ng trn nhm ... ...344.3.2. Mnh GROUP BY ... ...35

    4.4. MT S HM MI B SUNG TRONG Oracle9i ... ..364.4.1. Hm NULLIF ... .364.4.2. Hm COALSCE ... ..364.4.3. Cu lnh case ... ..36

    Trang 1

  • 8/7/2019 Oracle PLSQL - TV

    3/104

    Oracle c b n - SQL v P L/SQL

    4.5. BI TP ... ..364.5.1. Hm trn tng dng d liu ... ..364.5.2. Hm trn nhm d liu ... ...39

    CHNG 5. LNH TRUY VN D LIU M RNG... .405.1. KT HP D LIU T NHIU BNG ... ...40

    5.1.1. Mi lin kt tng ng ... ..405.1.2. Mi lin kt khng tng ng ... .40

    5.1.3. Mi lin kt cng ... .405.1.4. Lin kt ca bng vi chnh n (t thn)... .415.1.5. Cch biu din kt ni mi trong Oracle 9i ... ...415.1.6. Cc ton t tp hp ... ..42

    5.2. LNH TRUY VN LNG ... ...435.2.1. Cu lnh SELECT lng nhau. .. ...435.2.2. Ton t SOME/ANY/ALL/NOT IN/EXITS ... ..43

    5.3. CU TRC HNH CY ... .445.3.1. Cu trc hnh cy trong 1 table ... ...445.3.2. K thut thc hin ... ..445.3.3. Mnh WHERE trong cu trc hnh cy... ..45

    5.4. BI TP ... ..46

    CHNG 6. BIN RUNTIME ... ...506.1. D LIU THAY TH TRONG CU LNH ... .506.2. LNH DEFINE ... ..506.3. LNH ACCEPT ... ...516.4. BI TP ... ..51

    CHNG 7. TABLE V CC LNH SQL V TABLE... ...527.1. LNH TO TABLE... 52

    7.1.1. C php to bng ... 527.1.2. Tnh ton kch thc table (tham kho) ... 53

    7.2. MT S QUY TC KHI TO TABLE ... 547.2.1. Quy tc t tn Object ... 547.2.2. Quy tc khi tham chiu n Object ... 54

    7.3. Cc Kiu d liu c bn... 557.3.1. Kiu CHAR ... 557.3.2. Kiu VARCHAR2 ... 557.3.3. Kiu VARCHAR ... 567.3.4. Kiu NUMBER ... 567.3.5. Kiu FLOAT ... 567.3.6. Kiu LONG ... 567.3.7. Kiu DATE ... 577.3.8. Kiu RAW v kiu LONG RAW... 587.3.9. Kiu ROWID ... 587.3.10. Kiu MLSLABEL ... 587.3.11. Chuyn i kiu ... 58

    7.4. RNG BUC D LIU TRONG TABLE ... 597.4.1. NULL/NOT NULL ... 597.4.2. UNIQUE ... 59

    7.4.3. PRIMARY KEY ... 597.4.4. FOREIGN KEY ( Referential ) ... 607.4.5. CHECK ... 60

    7.5. LNH DDL CAN THIP TI TABLE ... 607.5.1. Chnh sa cu trc table ... 607.5.2. Cc lnh DDL khc ... 617.5.3. Ch dn cho table ... 617.5.4. Thay i tn object... 627.5.5. Xa d liu ca table ... 62

    Trang 2

  • 8/7/2019 Oracle PLSQL - TV

    4/104

    Oracle c b n - SQL v P L/SQL

    7.6. THNG TIN V TABLE TRONG T IN D LIU... ...627.7. BI TP ... ..63

    CHNG 8. CC LNH THAO TC DLIU... ..648.1. THAO TC D LIU TRONG TABLE ... .64

    8.1.1. Thm mi dng d liu ... ...648.1.2. Cp nht dng d liu ... .658.1.3. Lnh Merge... ...65

    8.1.4. Xa dng d liu... .668.1.5. Li rng buc d liu ... ...668.2. LNH IU KHIN GIAO DCH... ..668.3. BI TP ... ..67

    CHNG 9. SEQUENCE V INDEX... ...689.1. SEQUENCE... ...68

    9.1.1. To Sequence... ..689.1.2. Thay i v hu sequence ... .69

    9.2. INDEX... ...699.2.1. To index ... ...699.2.2. S dng index... ..69

    9.3. BI TP ... ..70

    CHNG 10. VIEWS ... ...7110.1. VIEWS ... ...71

    10.1.1. To view ... ..7110.1.2. Xa cc view ... ..71

    10.2. BI TP ... ...72

    CHNG 11. QUYN V BO MT ... ..7311.1. QUYN - PRIVILEGE ... .7311.2. ROLE... ..7411.3. SYNONYM... ...74

    CHNG 12. GII THIU NGN NG PL/SQL... ..7612.1. TNG QUAN V PL/SQL ... ...76

    12.1.1. C php lnh PL/SQL ... ...7612.1.2. Khi lnh PL/SQL ... ...76

    12.2. LNH LP TRNH PL/SQL N GIN ... ...7712.2.1. Lnh IF... ..7712.2.2. Lnh lp LOOP khng nh trc ... ...7812.2.3. Lnh lp LOOP c nh trc ... ...7812.2.4. Lnh lp WHILE ... ...7812.2.5. Lnh GOTO, nhy v iu kin ... .78

    12.3. GII THIU CURSOR ... ...7912.4. CC KIU D LIU THNG DNG... ..81

    12.4.1. Kiu d liu Table ... ...8112.4.2. Kiu d liu Record ... ...8112.4.3. Sao kiu d liu mt dng ... ..8212.4.4. Sao kiu d liu ca mt ct ... ..8212.4.5. Lnh SELECT... INTO... ...82

    12.5. BI TP ... ...83

    CHNG 13. GII THIU PROCEDURE BUILDER ... ..8413.1. CC THNH PHN TRONG PROCEDURE BUILDER ... ...84

    13.1.1. Object Navigator ... ..8413.1.2. Program Unit Editor... .8513.1.3. Store Program Unit Editor ... ...85

    Trang 3

  • 8/7/2019 Oracle PLSQL - TV

    5/104

    Oracle c b n - SQL v P L/SQL

    13.1.4. Database Trigger Edditor ... .8513.2. CC HM, TH TC ... .86

    13.2.1. To hm, th tc trn Client ... ...8613.2.2. To hm, th tc trn Server ... .8613.2.3. D li i vi cc hm, th tc ... ..87

    CHNG 14. GII THIU CC TH TC, HM V PACKAGE ... ...8814.1. TH TC ... ..88

    14.1.1. To th tc ... ..8814.1.2. Hu b th tc ... ...8914.1.3. Cc bc lu gi mt th tc ... ...89

    14.2. HM ... ...8914.2.1. To hm... ...9014.2.2. Thc hin mt hm ... .9014.2.3. Li ch ca vic s dng hm ... ...9114.2.4. Mt s hn ch khi s dng hm trong cu lnh SQL ... ..9114.2.5. Hu b hm... .9114.2.6. Hm v th tc ... ..92

    14.3. PACKAGE... ...9214.3.1. Cu trc ca package ... ...9214.3.2. To package ... ..9314.3.3. Hu package ... ..95

    14.3.4. Li ch ca vic s dng package ... ..9514.3.5. Mt s package chun ca Oracle ... ..96

    CHNG 15. DATABASE TRIGGER ... .9715.1. TO TRIGGER ... ..97

    15.1.1. Phn loi trigger ... ...9715.1.2. Lnh to trigger ... .9815.1.3. S dng Procedure builder to trigger ... ...99

    15.2. QUN L TRIGGER ... ...10015.2.1. Phn bit database trigger ... ...10015.2.2. Thay i trng thi ca database trigger ... ...10115.2.3. Hu b trigger ... .10115.2.4. Lu khi s dng trigger ... ..102

    PH LC ... ...103A - TI LIU THAM KHO ... .103B - DANH MC CC HNH V ... ..103

    Trang 4

  • 8/7/2019 Oracle PLSQL - TV

    6/104

  • 8/7/2019 Oracle PLSQL - TV

    7/104

    Oracle c b n - SQL v P L/SQL

    Primary Key nht thit phi c s liu.

    Foreign Key L mt column hoc mt tp cc columns c tham chiu ti chnhbng hoc mt bng khc.

    Foreign Key xc nh mi quan h gia cc bng.

    Constraints L cc rng buc i vi d liu trong cc bng thuc database. Vd: Foreign Key, Primary Key...

    V d: minh ho cc thnh phn logic trong database

    EMPEMPNO ENAME EMP DEPTDEPTNO

    7369 SMITH 20

    Row 7499 ALLEN 30

    7521 WARD 30

    7566 JONES 20

    7654 MARTIN 307698 BLAKE 30

    DEPT

    DEPTNO DNAME

    10 ACCOUNTING

    20 RESEARCH

    30 SALES

    40 OPERATIONS

    Foreignkey7782 CLARK 10 Primary key

    Column

    Hnh v 1. Minh ho cc thnh phn logic trong database

    1.2.2. Cc i tng trong database

    i tng Din giiTable Cu trc lu tr c bn nht trong CSDL quan h (RDBMS), gm

    row v column

    View L cu trc logic hin th d liu t 1 hoc nhiu bng

    Sequence Lt sinh gi tr cho cc primary key

    Index Tng tnh thc thi cho cu lnh truy vn

    Synonym Tn tng ng ca i tng

    Program unit Tp hp cc cu lnh thc hin c vit bi ngn ng SQL vPL/SQL, bao gm Procedure, function, package...

    1.2.3. Cc nhm lnh SQL c bn

    Tn lnh

    SELECT

    INSERT

    UPDATE

    DELETE

    Din gii

    L lnh thng dng nht, dng ly, xem d liu trong CSDL.

    L 3 lnh dng nhp thm nhng row mi, thay i ni dungd liu trn cc row hay xo cc row trong table. Nhng lnh nyc gi l cc lnh thao tc d liu DML (Data ManipulationLanguage)

    Trang 6

  • 8/7/2019 Oracle PLSQL - TV

    8/104

    Oracle c b n - SQL v P L/SQL

    CREATE

    ALTER

    DROP

    RENAME

    TRUNCATE

    COMMIT

    ROLLBACK

    SAVE POINT

    GRANT

    REVOKE

    L 3 lnh dng thit lp, thay i hay xo b cu trc d liunh l table, view, index. Nhng lnh ny c gi l cc lnh nh ngha dliu DDL (Data Definition Language)

    Qun l vic thay i d liu bng cc lnh DML. Vic thay i d liu cth c nhm li thnh cc transaction.

    2 lnh ny dng gn hoc hu cc quyn truy nhp vo CSDL Oracle vcc cu trc bn trong n. Nhng lnhny c gi l cc lnh iu khin dliu DCL (Data Control Language)

    1.3.C S D LIU THC HNH

    1.3.1. M hnh d liu

    DEPT EMP

    SALGRADE

    DUMMY BONUS

    Hnh v 2. M hnh d liu thc hnh

    1.3.2. Cu trc bng d liu

    Bng DEPT

    Tn ct Kiu iu kin Din gii

    DEPTNO NUMBER(2) PRIMARY KEY M phng ban

    DNAME VARCHAR2(14) Tn phng ban

    LOC VARCHAR2(13) a ch

    Bng SALGRADE

    Tn ct Kiu iu kin Din gii

    GRADE NUMBER PRIMARY KEY Mc lng

    LOSAL NUMBER Gi tr thp nht

    HISAL NUMBER Gi tr cao nht

    Trang 7

    Ct

  • 8/7/2019 Oracle PLSQL - TV

    9/104

    Oracle c b n - SQL v P L/SQL

    Bng EMP

    Tn ct Kiu iu kin

    EMPNO NUMBER(4) PRIMARY KEY

    ENAME VARCHAR2(10)

    JOB VARCHAR2 (9)

    MGR NUMBER(4) FOREIGN KEY

    (EMP.EMPNO)

    HIREDATE DATE

    SAL NUMBER(7,2)

    COMM NUMBER(7,2)

    DEPTNO NUMBER(2) NOT FOREIGN KEY

    NULL, (DEPT.DEPTNO)

    Din gii

    M nhn vin

    Tn nhn vin

    Ngh nghip

    M ngi qun l

    Ngy gia nhp cng ty

    Lng

    Thng

    M phng ban

    Trang 8

  • 8/7/2019 Oracle PLSQL - TV

    10/104

    Oracle c b n - SQL v P L/SQL

    Chng 2. LNH TRUY VN C BN

    2.1.CU LNH TRUY VN

    2.1.1. Quy tc vit lnh

    Cc cu lnh truy vn c biu din theo cc quy tc sau:

    Cc lnh trong cu lnh SQL thuc loi khng phn bit ch vit hoa hay thng. Nidung ca mt cu lnh SQL c th c tri di trn nhiu dng.Cc t kho khng c phpvit tt hay phn cch trn nhiu dng Cc mnh thng thng c t trn nhiu dngkhc nhau r rng trong vic th hin cu lnh, ta nn s dng cc du TAB khi vit lnh Ta cth s dng cc k t c bit nh: +, -, \, *,... biu din gi tr trong cu

    lnh.

    Lnh kt thc bi du chm phy (;).

    2.1.2. Cu lnh truy vn c bn

    C php:SELECT [DISTINCT ] {*, column [alias],...}

    FROM table;

    Vi:

    SELECT Hin th ni dung ca mt hay nhiu ctDISTINCT Phn bit ni dung gia cc dng d liu tr v

    Ly tt cc cc ct trong bngcolumn Tn ct d liu cn tr valias Phn tiu ca ct d liu tr vFROM table Tn bng cha d liu truy vn

    V d:

    SELECT

    FROM emp;

    Cu trc ca lnh truy vn gm c hai phn:

    Mnh chn la bao gm Lnh SELECT v t n ct d liu tr v

    Mnh biu din ni cha bao gm FROM v tn bng.

    2.1.3. Cc thnh phn khc ca mnh SELECT Trong mnh SELECT

    cn c th a vo cc thnh phn khc:

    Biu thc ton hc

    Column aliasCc column c ghp chui

    Literal

    Biu thc ton hc

    Trong mnh SELECT biu thc ton hc c th cc gi tr (column hoc hng s), cc ton t, cc hm.Cc ton t c dng l (+), (-), (*), (/). u tin ca cc ton t ging trong phn s hc.

    V d:

    Trang 9

    B

  • 8/7/2019 Oracle PLSQL - TV

    11/104

    Oracle c b n - SQL v P L/SQL

    SELECT ename, sal *12, comm FROM emp;

    SELECT ename, (sal+250)*12 FROM emp;

    Tiu ca ct (column alias)

    Trong mnh SELECT, column alias l phn nhn hin th ca column khi ly s liu ra. Trong columnalias khng c c du cch v vit cch sau tn column mt du cch. Column alias c chp nhn cdu cch khi c t trong du nhy kp ().

    V d: (ANUAL chnh l column alias)

    SELECT ename, SAL*12 ANUAL, comm

    FROM emp;

    Ghp tip cc ct d liu

    Ton t ghp tip chui (||) cho php ghp tip d liu trong cc ct khc nhau ca c ng mt dng d liuvi nhau thnh mt chui. Ta c th c nhiu ton t ghp chui trong cng mt column alias.

    V d:

    SELECT empno||ename EMPLOYEE

    FROM emp;

    Ghp tip chui k t

    Trong mnh SELECT, ta c th thc hin ghp tip bt k k t no, biu thc hay s no m khng phil column hoc column alias.

    V d:

    SELECT empno || ename || WORK IN DEPARTMENT

    || deptno Employee Detail

    FROM emp;

    2.1.4. Phn bit gi tr d liu tr v

    Trong thc t nhiu khi gi tr d liu trn cc dng d liu kt xut trng nhau. Gy nhiu bt tin. cth ly c ch cc dng d liu phn bit vi nhau. Ta s dng mnh DISTINCT trong cu lnh truyvn.

    V d:

    SQL> SELECT deoptno FROM dept;

    DEPTNO

    10

    30

    10

    20

    14 rows selected.

    SQL> SELECT DISTINCT deoptno FROM dept;

    DEPTNO

    10

    30

    20

    3 rows selected.

    Trang 10

  • 8/7/2019 Oracle PLSQL - TV

    12/104

    Oracle c b n - SQL v P L/SQL

    2.1.5. Gi tr NULL

    Ct c gi tr rng (NULL) l ct cha c gn gi tr, ni cch khc n cha c khi to gi tr. Cc ctvi bt c kiu d liu no cng c th c tr NULL, tr khi c n l kha hay c rng buc ton vn NOTNULL. Trong biu thc c bt k gi tr NULL no kt qu cng l NULL.

    V d:

    SELECT ename, sal*12 + comm ANUAL_SAL

    FROM emp;

    NULL trong cc hm ca SQL

    Trong cc hm lm vic vi tng ct hay hm v hng (scalar function). Cc hm loi ny tr v tr nullkhi c tham s NULL, tr hm NVL v TRANSLATE c th tr v gi tr thc.

    C php ca hm NVL:

    NVL (DATECOLUMN,01-01-2001)

    NVL(NUMBERCOLUMN, 9)

    NVL(CHARCOLUMN,STRING)

    NVL(comm,0) tr v tr 0 khi comm l null

    SELECT ename, sal*12 + NVL(comm,0) ANUAL_SAL FROM emp;

    Trong cc hm lm vic vi nhm cc ct (group function): Hu ht cc hm lm vic trn nhm b qua trnull, v d nh khi s dng hm AVG tnh trung bnh cho mt ct c cc gi tr 1000, NULL, NULL,NULL, 2000. Khi trung bnh c tnh l (1000+2000)/2=1500, nh vy tr null b b qua chkhng phi xem l tr 0.

    NULL trong cc biu thc so snh, iu kin

    kim tra c phi NULL hay khng dng cc ton t IS NULL hoc IS NOT NULL. Nu trong biuthc so snh c tr null tham gia v kt qu ca biu thc ph thuc vo tr null th kt qu l khng xc

    nh, tuy nhin trong biu thcDECODE

    , hai gi tr null c xem l bng nhau trong php so snh.Oracle xem cc biu thc vi kt qu khng xc nh tng ng vi FALSE. (V d: comm = NULL)c kt qu khng xc nh v do biu thc so snh xem nh cho kt qu FALSE. T rong cu lnh saukhng c mu tinno c chn

    SELECT * FROM emp WHERE comm=NULL;

    Nu mun chn cc nhn vin c comm l NULL th phi dng ton t IS NULL

    SELECT * FROM emp WHERE comm IS NULL;

    2.2.SQL*PLUS, CNG C TNG TC LNH SQL VI DATABASE

    2.2.1. Cu lnh tng tc ca SQL*Plus

    Oracle h tr cng c SQL*Plus cho php ngi s dng c th tng tc trc tip vi Oracle Server thngqua cc cu lnh SQL v PL/SQL.

    Theo ngi s dng c th tng tc vi Oracle Server thng qua hai loi cu lnh:

    Cu lnh SQL

    Cu lnh ca bn thn chng trnh SQL*Plus

    Trang 11

  • 8/7/2019 Oracle PLSQL - TV

    13/104

    Oracle c b n - SQL v P L/SQL

    Hnh v 3. Cu lnh ca SQL*Plus

    Khc bit gia lnh SQL v SQL*Plus

    SQL

    L ng n ng giao tip vi Oracle Servertrong vic truy xut d liu

    Cu lnh da trn b k t chun ASCII

    Thao t c t rn cc d liu c trong cc bng

    c nh ngha trong databaseCu lnh c np vo b nh m trnmt hoc nhiu dng

    Cu lnh khng c vit tt

    SQL*Plus

    Nhn dng lnh SQL v gi lnh lnServer

    Tu thuc vo tng phin bn ca Oracle Khng

    thao tc vi d liu trong database

    Cu lnh c ti trc tip khng thng qua bm

    Cu lnh c th vit tt

    C s dng k t kt thc lnh khi thc hin Khng i hi phi c k t kt thc lnh

    S dng cc hm trong vic nh dng d S dng cc lnh nh dng d liu caliu chnh SQL*Plus

    2.2.2. Phn nhm cu lnh trong SQL*Plus

    Cc lnh SQL*Plus c th phn thnh nhm chnh sau:

    Nhm lnh Din gii

    Mi trng Tc ng v gy nh hng ti mi trng lm vic ca SQL*Plustrong phin lm vic hin ti.

    nh dng d liu nh dng li d liu tr v t server

    Thao tc file Lu gi, np v chy cc file scrips

    Thc hin lnh Gi cc lnh SQL c trong b m ln server

    Son tho Sa i li lnh SQL c trong b m

    Trang 12

  • 8/7/2019 Oracle PLSQL - TV

    14/104

    Oracle c b n - SQL v P L/SQL

    Tng tc Cho php ngi dng c th to cc bin s dng trong cu lnhSQL v thao tc vi cc bin nh: nhp d liu, kt xut d liu.

    Cc lnh khc Cc lnh khc cho php kt ni ti c s d liu v hin th cc ctd liu theo nh nh dng.

    2.2.3. Chi tit cc lnh SQL*Plus c bn

    Kt ni ti CSDL

    C php:

    Conn[ect] /[@];

    Vi:

    user_name Tn truy nhppassword Mt khu truy nhpdatabase Tn database truy nhp

    V d:

    Conn Tester/tester@DB1;

    Hin th cu trc bng d liu

    C php:

    Desc[ribe] ;

    Vi:

    table_name Tn bng cn hin th cu trc

    V d:

    Desc Dept;

    Name Null? Type

    DEPTNO NOT NULL NUMBER(2)

    DNAME VARCHAR2(14)LOC VARCHAR2(13)

    Lnh son tho

    Tn lnh Din giiA[PPEND] text a thm on text vo dng hin tiC[HANGE] /old/new Chuyn on text c thnh on text mi trong dng hin

    tiC[HANGE] /text/ Xo on text trong dng hin tiCL[EAR] BUFF[ER] Xo tt c cc dng trong SQL buffer

    DEL Xo dng hin tiDEL n Xo dng nDEL m n Xo dng t m n nI[NPUT] Thm mt s dng nht nhI[NPUT] text Thm dng c cha textL[IST] Lit k ton b cc dng trong SQL buffer

    Trang 13

  • 8/7/2019 Oracle PLSQL - TV

    15/104

    Oracle c b n - SQL v P L/SQL

    L[IST] n

    L[IST] m n

    R[UN]

    N

    N text

    0 text

    Lnh thao tc file

    Tn lnhSAVE filename [.ext]

    [REP[LACE]|APP[END]]

    GET filename [.ext]

    STA[RT] filename [.ext]

    @ filename [.ext]

    ED[IT]

    ED[IT]filename [.ext ]

    SPO[OL] filename [.ext ]

    [OFF|OUT]

    EXIT

    Lnh nh dng ct d liuC php:

    Lit k dng n

    Lit k dng m n n

    Hin th v chy lnh trong buffer

    Nhy n dng n

    Thay dng n bi on text

    Chn 1 dng trc dng 1

    Din gii

    Ghi ni dung bufer thnh file. APPEND ghi thm vo file.REPLACE chn ln ni dung file c.

    Ghi ni dung file vo buffer. Mc nh phn ui l .sql Chy cc

    lnh trong file

    Ging lnh Start

    Son tho ni dung bufffer c tn l afiedt.buf chy ni dung

    buffer dng lnh /

    Son tho ni dung file

    Ct kt qu hin th trn mn hnh ra file. Vd:SPOOL result.sql

    SPOOL OFF

    Thot khi SQL*Plus

    COLUMN [{column | alias} [option]]

    Tn lnh Din giiCLE[AR] Xo nh dng ca columnFOR[MAT] format Chuyn nh dng ca ct d liuHEA[DING] text t nhn co columnJUS[TIFY] align Cn tri - left , phi - right, gia - center cho nhnNOPRI[NT]

    n columnNUL[L] text Hin th text nu gi tr ca column l NULLPRI[NT} Hin th columnTRU[NCATED] Xo chui ti cui dng u tin khi hin thWRA[PPED] Ph cui chui ca dng tip theo

    V d 1: Chnh nh dng v nhn ca column

    Trang 14

  • 8/7/2019 Oracle PLSQL - TV

    16/104

    Oracle c b n - SQL v P L/SQL

    COLUMN ename HEADING Employee|Name FORMAT A15

    COLUMN sal JUSTIFY LEFT FORMAT $ 99,990.00 COLUMN

    hiredate FORMAT A9 NULL Not hired

    V d 2: Hin th nh dng hin ti ca column

    COLUMN

    COLUMN ename

    V d 3: Xo nh dng hin ti ca column

    COLUMN ename CLEAR

    CLEAR COLUMN

    Cc loi nh dng

    nh dng Din gii V d Kt qu

    An Hin th di nht n k t dng cho cc columndng k t hoc dng ngy

    9 Hin th s, khng bao gm s 0 999999 1234

    0 Hin th c s 0 099999 01234

    $Hin thi $ $9999 $1234

    L Hin th k t L L9999 L1234

    Hin th du thp phn 9999.99 1234.00

    , Hin th du phn chia hng nghn 9,999 1,234

    2.3.BI TP

    1. Chn ton b thng tin trong bng SALGRADEGRADE LOSAL HISAL

    1 700 12002 1201 1400

    3 1401 2000

    4 2001 3000

    5 3001 9999

    2. Chn ton b thng tin trong bng EMPEMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO

    7839 KING PRESIDENT 17-11-1981 5000 10

    7698 BLAKE MANAGER 7839 01-05-1981 2850 30

    7782 CLARK MANAGER 7839 09-06-1981 2450 10

    7566 JONES MANAGER 7839 02-04-1981 2975 20

    7654 MARTIN SALESMAN 7698 28-09-1981 1250 1400 30

    7499 ALLEN SALESMAN 7698 20-02-1981 1600 300 307844 TURNER SALESMAN 7698 08-09-1981 1500 0 30

    7900 JAMES CLERK 7698 03-12-1981 950 30

    7521 WARD SALESMAN 7698 22-02-1981 1250 500 30

    7902 FORD ANALYST 7566 03-12-1981 3000 20

    7369 SMITH CLERK 7902 17-12-1980 800 20

    7788 SCOTT ANALYST 7566 09-12-1982 3000 20

    7876 ADAMS CLERK 7788 12-01-1983 1100 20

    7934 MILLER CLERK 7782 23-01-1982 1300 10

    Trang 15

  • 8/7/2019 Oracle PLSQL - TV

    17/104

    Oracle c b n - SQL v P L/SQL

    3. Hin th mi loi ngh nghipJOB

    ANALYST

    CLERK

    MANAGER

    PRESIDENT

    SALESMAN

    4. Hin th tn nhn vin v thu nhp trong mt nm (REMUNERATION)ENAME REMUNERATION

    KING 60000

    BLAKE 34200

    CLARK 29400

    JONES 35700

    MARTIN 16400

    ALLEN 19500

    TURNER 18000

    JAMES 11400

    WARD 15500

    FORD 36000

    SMITH 9600SCOTT 36000

    ADAMS 13200

    MILLER 15600

    14 rows selected.

    5. Hin t h theo ni dung di y Who,what and when

    KING HAS HELP THE POSITION OF PRESIDENT IN DEPT 10 SINCE 17-11-1981 BLAKE

    HAS HELP THE POSITION OF MANAGER IN DEPT 30 SINCE 01-05-1981 CLARK HAS

    HELP THE POSITION OF MANAGER IN DEPT 10 SINCE 09-06-1981 JONES HAS HELP

    THE POSITION OF MANAGER IN DEPT 20 SINCE 02-04-1981 MARTIN HAS HELP THE

    POSITION OF SALESMAN IN DEPT 30 SINCE 28-09-1981 ALLEN HAS HELP THEPOSITION OF SALESMAN IN DEPT 30 SINCE 20-02-1981 TURNER HAS HELP THE

    POSITION OF SALESMAN IN DEPT 30 SINCE 08-09-1981 JAMES HAS HELP THE

    POSITION OF CLERK IN DEPT 30 SINCE 03-12-1981 WARD HAS HELP THE POSITION

    OF SALESMAN IN DEPT 30 SINCE 22-02-1981 FORD HAS HELP THE POSITION OF

    ANALYST IN DEPT 20 SINCE 03-12-1981

    SMITH HAS HELP THE POSITION OF CLERK IN DEPT 20 SINCE 17-12-1980

    SCOTT HAS HELP THE POSITION OF ANALYST IN DEPT 20 SINCE 09-12-1982

    ADAMS HAS HELP THE POSITION OF CLERK IN DEPT 20 SINCE 12-01-1983

    MILLER HAS HELP THE POSITION OF CLERK IN DEPT 10 SINCE 23-01-1982

    14 rows selected.

    6. Hin th cu trc bng emp;

    7. Thay i nhn v nh dng hin th ca ct sal v hiredate trong bng emp;

    Trang 16

  • 8/7/2019 Oracle PLSQL - TV

    18/104

    Oracle c b n - SQL v P L/SQL

    Chng 3. TRUY VN D LIU C IU KIN

    3.1.CC GII HN TRONG TRUY VN D LIU

    Trong phn ln cc trng hp ly d liu t database, ta ch cn ly mt phn d liu ch khng cn ly ttc. hn ch cc d liu tr v khng cn thit, ta c th s dng mnh iu kin trong cu lnh truyvn.

    Hnh v 4. Hn ch d liu tr v

    3.1.1. Mnh WHERE

    C php:

    SELECT [DISTINCT ] {*, column [alias],...}

    FROM table

    [WHERE condition (s)];

    Vi:

    column tn ct d liu tr valias tiu ca ct d liu tr vtable tn bng truy vn d liucondition mnh iu kin lc d liu tr v

    Mnh WHEREdng t iu kin cho ton b cu lnh truy vn. Trong mnh WHERE c th c cc

    thnh phn:

    Tn column

    Ton t so snh

    Tn column, hng s hoc danh sch cc gi tr

    V d:

    SELECT DEPTNO, JOB, ENAME, SAL

    FROM EMP

    WHERE SAL BETWEEN 1000 AND 2000 ;

    Trang 17

  • 8/7/2019 Oracle PLSQL - TV

    19/104

  • 8/7/2019 Oracle PLSQL - TV

    20/104

    Oracle c b n - SQL v P L/SQL

    Cc ton t logic

    Ton t Din giiNOT Ph nh mnh AND Yu cu d liu phi tho mn c 2 iu kinOR Cho php d liu tho mn 1 trong 2 iu kin

    Cp u tin khi thc hin i vi cc loi ton t

    Cp u tin

    1

    2

    3

    4

    Cc ton t so snhNOT

    AND

    OR

    Ton t

    3.1.3. V d s dng cc ton t iu kin

    [NOT] BETWEEN x AND y

    V d chn nhn vin c lng nm trong khong 2000 v 3000

    SELECT * FROM emp WHERE sal BETEEN 2000 AND 3000;

    IN (danh sch)

    Chn nhn vin c lng bng mt trong 2 gi tr 1400 hoc 3000

    SELECT * FROM emp WHERE sal IN (1400, 3000);

    Tm tn phng ban nu phng c nhn vin lm vic.

    SELECT dname FROM dept WHERE EXISTS

    (SELECT * FROM emp WHERE dept.deptno = emp.deptno);

    x [NOT] LIKE y

    Tm nhn vin c tn bt u bng chui SMITH

    SELECT * FROM emp WHERE

    ename LIKE 'SMITH_';

    chn nhng nhn vin c tn bt u bng 'SM'

    SELECT * FROM emp WHERE ename LIKE 'SM%';

    tm nhng nhn vin c tn c chui 'A_B'

    SELECT ename FROM emp WHERE ename LIKE '%A\_B%'; ESCAPE '\'

    V k hiu "_" dng i din cho mt k t bt k nn nu khng c mnh ESCAPE, cu lnh trn stm tt c cc nhn vin tn AAB, ABB, ACB, v.v...

    Nu mun k hiu "_" mang ngha nguyn thy, tc l khng cn i din cho k t bt k na, ta t du"\" trc k hiu. ng thi khai bo thm mnh ESCAPE "\"

    Trang 19

  • 8/7/2019 Oracle PLSQL - TV

    21/104

    Oracle c b n - SQL v P L/SQL

    Ta cng c th dng mt k t bt k thay cho "\". Chng hn mnh sau c cng kt qu vi mnh trn

    SELECT ename FROM emp WHERE ename LIKE '%A^_B%'; ESCAPE '^';

    Ta gi cc k t nh "\" hay "^" ni trn l cc k t ESCAPE.

    IS [NOT] NULLV d:

    SELECT * FROM emp WHERE comm IS NULL ;

    3.2.SP XP D LIU TR V

    3.2.1. Mnh ORDER BY

    C php:

    SELECT [DISTINCT ] {*, column [alias],...}

    FROM table;

    [WHERE condition]

    [ ORDER BY e xpr / pos i t i on [ DESC/ ASC] ] ;

    Mnh ORDER BYdng sp xp s liu c hin th v phi t v tr sau cng ca cu lnh truyvn.

    V d:

    SELECT ENAME, JOB, SAL*12, DEPTNO

    FROM EMP

    ORDER BY ENAME;

    Mnh ORDER BY mc nh sp xp theo th t tng dn ASC[ENDING]

    S thp trc

    Ngy nh trc

    K t theo bng ch ci

    sp xp theo th t ngc li (gim dn) t t kho DESC[ENDING] sau column cn sp th t.

    Vi d:

    SELECT ENAME, JOB, HIREDATE

    FROM EMP

    ORDER BY HIREDATE DESC ;

    3.2.2. Sp xp nhiu ct d liu tr v

    Mnh Order cn c th sp xp nhiu column. Cc column cn sp xp c vit th t sau mnh ORDER BY v cch bi du phy (,). Column no gn mnh ORDER BYhn c mc u tin khi spxp cao hn. Ch nh cch thc sp xp ASC/DESC c vit sau column cch bi mt du cch.

    V d:

    SELECT DEPTNO, JOB, ENAME, SAL

    Trang 20

  • 8/7/2019 Oracle PLSQL - TV

    22/104

    Oracle c b n - SQL v P L/SQL

    FROM EMP

    ORDER BY DEPTNO, SAL DESC ;

    Order gi tr NULL

    Ring i vi gi tr NULL, nu sp xp theo th t ASCENDING s nm cc v tr cui cng.

    Ch : C th ch nh sp xp theo th t cc column trong mnh SELECT.

    V d:

    SELECT DEPTNO, JOB, ENAME, SAL

    FROM EMP

    ORDER BY 2;

    3.3.BI TP

    1. Chn nhn vin trong bng EMP c mc lng t 1000 n 2000 (chn cc trngENAME, DEPTNO, SAL).

    ENAME DEPTNO SAL

    ALLEN 30 1600

    WARD 30 1250

    MARTIN 30 1250

    TURNER 30 1500

    ADAMS 20 1100

    MILLER 10 1300

    2. Hin th m phng ban, tn phng ban, sp xp theo th t tn phng ban.DEPTNO DNAME

    10 ACCOUNTING

    40 OPERATIONS20 RESEARCH

    30 SALES

    3. Hin th danh sch nhng nhn vin lm ti phng 10 v 20 theo th t A,B,CEMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO

    7876 ADAMS CLERK 7788 12-01-1983 1100 20

    7782 CLARK MANAGER 7839 09-06-1981 2450 10

    7902 FORD ANALYST 7566 03-12-1981 3000 20

    7566 JONES MANAGER 7839 02-04-1981 2975 20

    7839 KING PRESIDENT 17-11-1981 5000 10

    7934 MILLER CLERK 7782 23-01-1982 1300 10

    7788 SCOTT ANALYST 7566 09-12-1982 3000 20

    7369 SMITH CLERK 7902 17-12-1980 800 20

    4. Hin th tn v ngh nghip nhng nhn vin lm ngh th k (cleck) ti phng 20.ENAME JOB

    SMITH CLERK

    ADAMS CLERK

    Trang 21

  • 8/7/2019 Oracle PLSQL - TV

    23/104

    Oracle c b n - SQL v P L/SQL

    5. Hin th tt c nhng nhn vin m tn c cc k t TH v LL.ENAME

    SMITH

    ALLEN

    MILLER

    6. Hin th tn nhn vin, ngh nghip, lng ca nhng nhn vin c gim c qunl.ENAME JOB SAL

    SMITH CLERK 800

    ALLEN SALESMAN 1600

    WARD SALESMAN 1250

    JONES MANAGER 2975

    MARTIN SALESMAN 1250

    BLAKE MANAGER 2850

    CLARK MANAGER 2450

    SCOTT ANALYST 3000

    TURNER SALESMAN 1500

    ADAMS CLERK 1100

    JAMES CLERK 950

    FORD ANALYST 3000

    MILLER CLERK 1300

    13 rows selected.

    7. Hin th tn nhn vin, m phng ban, ngy gia nhp cng ty sao cho gia nhp cngty trong nm 1983.ENAME DEPTNO HIREDATE

    ADAMS 20 12-JAN-83

    8. Hin th tn nhn vin, lng mt nm (ANUAL_SAL

    ), thng sao cho lng lnhn thng v ngh nghip l SALEMAN, sp theo th t lng gim dn v tn tngdn.ANUAL_SAL COMM

    19200 300

    18000 0

    15000 500

    Trang 22

  • 8/7/2019 Oracle PLSQL - TV

    24/104

    Oracle c b n - SQL v P L/SQL

    Chng 4. CC HM SQL

    4.1.TNG QUAN V HM SQL

    4.1.1. Cu trc hm SQL

    Hm SQL l mt c im lm tng kh nng s dng cu lnh SQL. Hm SQL c th nhn nhiu tham s

    vo v tr v ch mt gi tr.

    Hnh v 5. Cu trc hm SQL

    Hm SQL c mt s c im sau:

    Thc hin vic tnh ton ngay trn d liu

    C th thao tc, thay i ngay trn tng mc d liu tr vHoc cng cth thao tc trn nhm cc d liu tr v

    C th nh dng li cc d liu tr v c kiu s, hay kiu thi gian Cth chuyn i kiu d liu tr v

    4.1.2. Phn loi hm SQL

    Hm SQL c th phn ra lm hai loi:

    Hm tc ng trn tng dng d liu : G i tr tr v tng ng vi tng d liu uvo ti mi dng d liu.

    Hm tc ng trn nhm cc dng d liu: Gi tr tr v tng ng vi cc php thaotc trn nhm d liu tr v.

    Trang 23

  • 8/7/2019 Oracle PLSQL - TV

    25/104

    Oracle c b n - SQL v P L/SQL

    Hnh v 6. Phn loi hm SQL

    4.2.HM S QL THAO TC TRN TNG DNG D LIU

    4.2.1. Cc hm thao tc trn kiu d liu s

    u vo v u ra l cc gi tr kiu s

    Mt s hm SQL hay dng

    Hm SQL Din giiROUND(n[,m]) Cho gi tr lm trn ca n (n cp m, mc nhin m=0)TRUNC(n[,m]) Cho gi tr n ly m ch s tnh t chm thp phn

    CEIL(n) Cho s nguyn nh nht ln hn hoc bng nFLOOR(n) Cho s nguyn ln nht bng hoc nh hn nPOWER(m,n) Cho ly tha bc n ca mEXP(n) Cho gi tr ca enSQRT(n) Cho cn bc 2 ca n, n>=0SIGN(n) Cho du ca n.

    n0 c SIGN(n)= 1ABS(n) Cho gi tr tuyt iMOD(m,n) Cho phn d ca php chia m cho n

    Mt s hm kiu s tham kho khc

    Hm SQL

    LOG(m,n)

    SIN(n)

    Din gii

    Cho logarit c s m ca n

    Tr v cosin ca n (n tnh bng radian)

    Trang 24

    khngtrn

  • 8/7/2019 Oracle PLSQL - TV

    26/104

    Oracle c b n - SQL v P L/SQL

    COS(n)

    TAN(n)

    V d hm ROUND(n[,m])

    Cho c osin ca n (n tnh bng radian) Tr v

    cotang ca n (n tnh bng radian)

    SELECT ROUND(4.923,1),

    ROUND(4.923),

    ROUND(4.923,-1),

    ROUND(4.923,2)

    FROM DUMMY;

    ROUND(4.923,1) ROUND(4.923) ROUND(4.923,-1) ROUND(4.923,2)

    4.9 5 0 4.92

    V d hm TRUNC(n[,m])

    SELECT TRUNC (4.923,1),

    TRUNC (4.923),

    TRUNC (4.923,-1),

    TRUNC (4.923,2)FROM DUMMY;

    TRUNC(4.923,1) TRUNC(4.923) TRUNC(4.923,-1) TRUNC(4.923,2)

    4.9 4 0 4.92

    V d hm CEIL(n)

    SELECT CEIL (SAL), CEIL(99.9),CEIL(101.76), CEIL(-11.1)

    FROM EMP

    WHERE SAL BETWEEN 3000 AND 5000;

    CEIL(SAL) CEIL(99.9) CEIL(101.76) CEIL(-11.1)

    5000 100 102 -11

    3000 100 102 -11

    3000 100 102 -11

    V d hm FLOOR(n)

    SELECT FLOOR (SAL), FLOOR (99.9), FLOOR (101.76), FLOOR (-11.1)

    FROM EMP

    WHERE SAL BETWEEN 3000 AND 5000;

    FLOOR(SAL) FLOOR(99.9) FLOOR(101.76) FLOOR(-11.1)

    5000 99 101 -123000 99 101 -12

    3000 99 101 -12

    V d hm POWER(m,n)

    SELECT SAL, POWER(SAL,2), POWER(SAL,3), POWER(50,5)

    FROM EMP

    WHERE DEPTNO =10;

    SAL POWER(SAL,2) POWER(SAL,3) POWER(50,5)

    Trang 25

  • 8/7/2019 Oracle PLSQL - TV

    27/104

    Oracle c b n - SQL v P L/SQL

    5000 25000000 1.2500E+11 312500000

    2450 6002500 1.4706E+10 312500000

    1300 1690000 2197000000 312500000

    V d hm EXP(n)

    SELECT EXP(4) FROM DUMMY;

    EXP(4)

    54.59815

    V d hm SQRT(n)

    SELECT SAL, SQRT(SAL), SQRT(40), SQRT (COMM)

    FROM EMP

    WHERE DEPTNO =10;

    SAL SQRT(SAL) SQRT(40) SQRT(COMM)

    5000 70.7106781 6.32455532

    2450 49.4974747 6.32455532

    1300 36.0555128 6.32455532

    V d hm SIGN(n)

    SELECT SAL-NVL(COMM,0), SIGN(SAL-NVL(COMM,0)),

    NVL(COMM,0)-SAL, SIGN(NVL(COMM,0)-SAL)

    FROM EMP

    WHERE DEPTNO =30

    SAL-NVL(COMM,0)SIGN(SAL-NVL(COMM,0))NVL(COMM,0)-SAL SIGN(NVL(COMM,0)

    SAL)

    2850 1 -2850 -1

    -150 -1 150 1

    1300 1 -1300 -1

    1500 1 -1500 -1

    950 1 -950 -1

    750 1 -750 -1

    4.2.2. Cc hm thao tc trn kiu d liu k t

    Hm SQL thao tc trn kiu d liu l k t

    Hm SQL

    CONCAT(char1, char2)

    INITCAP(char)

    LOWER(char)

    LPAD(char1, n [,char2])

    Din gii

    Cho kt hp ca 2 chui k t, tng t nh sdng ton t ||

    Cho chui vi k t u cc t l k thoa

    Cho chui k t vit thng (khng vithoa)

    Cho chui k t c chiu di bng n. Nu chuichar1 ngn hn n th thm vo bn tri chuichar2cho n k t. Nu chui char1di hn nth gi li n

    Trang 26

  • 8/7/2019 Oracle PLSQL - TV

    28/104

    Oracle c b n - SQL v P L/SQL

    k t tnh t tri sang

    LTRIM(char1, n [,char2])

    NLS_INITCAP(char)

    REPLACE(char,search_string[,replacem

    ent_string])

    RPAD(char1, n [,char2])

    RTRIM(char1, n [,char2])

    SOUNDEX(char)

    SUBSTR(char, m [,n])

    TRANSLATE(char, from, to)

    UPPER(char)

    ASCII(char)

    INSTR(char1, char2 [,n[,m]])

    LENGTH(char)

    V d hm LOWER(char)

    B cc k t trng bn tri

    Cho chui vi k t u cc t l ch hoa, ccch cn li l ch thng

    Thay tt c cc chui search_string c trongchui char bng chui

    replacement_string.Ging LPAD(char1, n [,char2])nhngcn phi.

    B cc k t trng bn phi

    Cho chui ng m ca char.

    Cho chui con ca chui char ly t v tr m vphi n k t, nu khng ch n th ly cho ncui chui

    Cho chui trong mi k t trong chuifrom thay bng k t tng ng trongchui to, nhng k t trong chui fromkhng c tng ng trong chui to s bloi b.

    Cho chui ch hoa ca chui char

    Cho k t ASCII ca byte u tin ca chui

    char

    Tm v tr chui char2 trong chuichar1 bt u t v tr n, ln xut hinth m.

    Cho chiu di ca chui char

    SELECT LOWER(DNAME), LOWER(SQL COURSE) FROM DEPT;

    LOWER(DNAME) LOWER('SQL

    accounting sql course

    research sql course

    sales sql course

    operations sql course

    V d hm UPPER(char)SELECT ENAME FROM EMP WHERE ENAME = UPPER(Smith);

    ENAME

    SMITH

    V d hm INITCAP(char)

    SELECT INITCAP(DNAME), INITCAP(LOC) FROM DEPT;

    INITCAP(DNAME) INITCAP(LOC)

    Trang 27

  • 8/7/2019 Oracle PLSQL - TV

    29/104

    Oracle c b n - SQL v PL/SQL

    Accounting New York

    Research Dallas

    Sales Chicago

    Operations Boston

    V d hm CONCAT(char1, char2)

    SELECT CONCAT(ENAME, JOB) JOB FROM EMP WHERE EMPNO = 7900;

    JOB

    JAMES CLERK

    V d hm LPAD(char1, n [,char2])

    SELECT LPAD(DNAME,20,*), LPAD(DNAME,20), LPAD(DEptno,20, )

    FROM DEPT;

    LPAD(DNAME,20,'*') LPAD(DNAME,20) LPAD(DEPTNO,20,'')

    ***ACCOUNTING ACCOUNTING 10

    ***RESEARCH RESEARCH 20***SALES SALES 30

    ***OPERATIONS OPERATIONS 40

    V d hm RPAD(char1, n [,char2])

    SELECT RPAD(DNAME,20,*), RPAD(DNAME,20), RPAD(DEptno,20, )

    FROM DEPT;

    RPAD(DNAME,20,'*') RPAD(DNAME,20) RPAD(DEPTNO,20,'')

    ACCOUNTING *** ACCOUNTING 10

    RESEARCH *** RESEARCH 20

    SALES *** SALES 30

    OPERATIONS *** OPERATIONS 40

    V d hm SUBSTR(char, m [,n])

    SELECT SUBSTR(ORACLE,2,4), SUBSTR(DNAME,2), SUBSTR(DNAME,3,5)

    FROM DEPT;

    SUBS SUBSTR(DNAME, SUBST

    RACL CCOUNTING COUNT

    RACL ESEARCH SEARC

    RACL ALES LES

    RACL PERATIONS ERATI

    V d hm INSTR(char1, char2 [,n[,m]])

    SELECT DNAME, INSTR(DNAME, A), INSTR(DNAME,ES),

    INSTR(DNAME,C,1,2)

    FROM DEPT;

    DNAME INSTR(DNAME,'A') INSTR(DNAME,'ES')

    INSTR(DNAME,'C',1,2)

    ACCOUNTING 1 0 3

    Trang 28

  • 8/7/2019 Oracle PLSQL - TV

    30/104

  • 8/7/2019 Oracle PLSQL - TV

    31/104

    Oracle c b n - SQL v P L/SQL

    KING KING PRESIDENT PTESIDENT

    CLARK FLARK MANAGER MINIGET

    MILLER MILLER CLERK CLETK

    V d hm REPLACE(char,search_string[,replacement_string])

    SELECT JOB, REPLACE(JOB, SALESMAN, SALESPERSON), ENAME,

    REPLACE(ENAME, CO,PR)FROM EMP

    WHERE DEPTNO =30 OR DEPTNO =20;

    JOB REPLACE(JOB,'SALESMAN', ENAME REPLACE(ENAME,'CO','

    MANAGER MANAGER BLAKE BLAKE

    MANAGER MANAGER JONES JONES

    SALESMAN SALESPERSON MARTIN MARTIN

    SALESMAN SALESPERSON ALLEN ALLEN

    SALESMAN SALESPERSON TURNER TURNER

    CLERK CLERK JAMES JAMES

    SALESMAN SALESPERSON WARD WARD

    ANALYST ANALYST FORD FORD

    CLERK CLERK SMITH SMITH

    ANALYST ANALYST SCOTT SPRTTCLERK CLERK ADAMS ADAMS

    V d cc hm lng nhau:

    SELECT DNAME, LENGHT(DNAME), LENGHT(TRANSLATE,DNAME, AS,A))

    FROM DEPT;

    DNAME LENGTH(DNAME) LENGTH(TRANSLATE(DNAME,'AS','A'))

    ACCOUNTING 14 14

    RESEARCH 14 13

    SALES 14 12

    OPERATIONS 14 13

    4.2.3. Cc hm thao tc trn kiu d liu thi gian Hm SQL

    thao tc trn kiu d liu l thi gian.

    Hm SQL

    MONTH_BETWEEN(d1, d2)

    ADD_MONTHS(d,n)

    NEXT_DAY(d, char )

    LAST_DAY(d)

    Din gii

    Cho bit s thng gia ngy d1 v d2. Cho ngy d

    thm n thng.

    Cho ngy t ip theo ngy d c th ch bi char. Cho

    ngy cui cng trong thng ch bi d.

    V d hm MONTH_BETWEEN(d1, d2)

    SELECT MONTHS_BETWEEN( SYSDATE, HIREDATE),

    MONTHS_BETWEEN('01-01-2000','05-10-2000')

    FROM EMP

    WHERE MONTHS_BETWEEN( SYSDATE,HIREDATE)>240;

    MONTHS_BETWEEN(SYSDATE,HIREDATE) TWEEN('01-01-2000','05-10-2000')

    Trang 30

  • 8/7/2019 Oracle PLSQL - TV

    32/104

    Oracle c b n - SQL v P L/SQL

    241.271055 -9.1290323

    241.206539 -9.1290323

    243.367829 -9.1290323

    V d hm ADD_MONTHS(d,n)

    SELECT HIREDATE, ADD_MONTHS(HIRE,3), ADD_MONTHS(HIREDATE,-3)

    FROM EMP

    WHERE DEPTNO=20;

    HIREDATE ADD_MONTHS ADD_MONTHS

    02-04-1981 02-07-1981 02-01-1981

    03-12-1981 03-03-1982 03-09-1981

    17-12-1980 17-03-1981 17-09-1980

    09-12-1982 09-03-1983 09-09-1982

    12-01-1983 12-04-1983 12-10-1982

    V d hm NEXT_DAY(d, char )

    SELECT HIREDATE, NEXT_DAY(HIREDATE,FRIDAY), NEXT_DAY(HIREDATE,6)

    FROM EMPWHERE DEPTNO = 10;

    HIREDATE NEXT_DAY(H NEXT_DAY(H

    17-11-1981 20-11-1981 20-11-1981

    09-06-1981 12-06-1981 12-06-1981

    23-01-1982 29-01-1982 29-01-1982

    V d hm LAST_DAY(d)

    SELECT SYSDATE, LAST_DAY(SYSDATE), HIREDATE, LAST_DAY(HIREDATE),

    LAST_DAY(15-01-2001)

    FROM EMP

    WHERE DEPTNO =20;

    SYSDATE LAST_DAY(S HIREDATE LAST_DAY(H LAST_DAY('

    28-03-2001 31-03-2001 02-04-1981 30-04-1981 31-01-2001 28-

    03-2001 31-03-2001 03-12-1981 31-12-1981 31-01-2001 28-03-

    2001 31-03-2001 17-12-1980 31-12-1980 31-01-2001 28-03-

    2001 31-03-2001 09-12-1982 31-12-1982 31-01-2001 28-03-

    2001 31-03-2001 12-01-1983 31-01-1983 31-01-2001

    Mt s hm khc c th p dng cho kiu ngy

    Hm SQLROUND(date1)

    ROUND(date1,MONTH)

    ROUND(date1,YEAR)

    TRUNC(date1, MONTH)

    TRUNC(date1, YEAR)

    Din gii

    Tr v ngy date 1 ti thi im gia tra 12:00 AM

    Nu date 1 nm trong na thng u tr v ngy u tin ca thng,ngc li s tr v ngy u tin ca thng sau.

    Nu date 1 nm trong na nm u tr v ngy u tinca thng, ngc li s tr v ngy u tin ca nmsau.

    Tr v ngy u tin ca thng cha date1 Tr v ngy u tin ca

    nm cha date1

    Trang 31

  • 8/7/2019 Oracle PLSQL - TV

    33/104

    Oracle c b n - SQL v P L/SQL

    4.2.4. Cc hm chuyn i kiu

    Hm SQLTO_CHAR(number|date,

    fmt)

    TO_NUMBER(char)

    TO_DATE(chsr,fmt)

    DECODE(EXPR, SEARCH1,

    RESULT1, SEARCH2,

    RESULT2, DEFAULT):

    NVL(COL|VALUE, VAL)

    Greatest(col|value1,

    col|value2)

    V d:

    Din gii

    Chuyn kiu s v ngy v kiu k t.

    Chuyn k t c ni dung s sang s

    Chuyn k t sang kiu ngy vi nh dng t trong

    fmt.So snh biu thc expr vi gi tr search nu ng tr v gi trresult nu khng tr v gi tr default.

    Chuyn gi tr COL|VALUE thnh val nu null. Tr gi tr

    ln nht trong dy gi tr.

    SELECT To_char (sysdate, day, ddth month yyyy) from dummy;

    SELECT EMPNO, ENAME, HIREDATE

    FROM EMP

    WHERE HIREDATE = TO_DATE (June 4, 1984, month dd, yyyy);

    INSERT INTO EMP (EMPNO, DEPTNO, HIREDATE

    VALUES (777, 20, TO_DATE(19-08-2000, DD-MM-YYYY);

    SELECT ENAME, JOB,

    DECODE (JOB, CLERK,WWORKER,MANAGER,BOSS,UNDEFINED)

    DECODED_JOB

    FROM EMP;

    SELECT GREATEST(1000,2000), GREATEST(SAL,COMM) FROM EMP

    WHERE DEPTNO = 10;

    Cc khun dng ngy

    Hm SQL Din gii

    SCC hoc CC Th k; S ch ngy BC

    YYYY hoc SYYYY Nm; S ch ngy BC

    YYY, YY, Y Ch nm vi 3,2,1 k t s

    IYYY, IYY, IY, I Ch nm theo chun ISO

    SYEAR, YEAR Ch nm theo cch pht m ca ngi anh;

    Q Qu trong nm

    MM Gi tr thng vi 2 s (01-12)MONTH Tn y ca thng theo ting anh, di 9

    MON Thng vi 3 k t vin tt (JAN, FEB...)

    WW, W Tun trong nm hoc trong thng

    DDD, DD, D Ngy trong nm, thng hoc tun

    DAY Ch th trong tun

    DY Ch th trong tun vi 3 k t vit tt

    Trang 32

  • 8/7/2019 Oracle PLSQL - TV

    34/104

    Oracle c b n - SQL v P L/SQL

    J

    AM, PM

    HH, HH12 HH24

    MI

    SS

    SSSSS

    / . , -

    char

    TH

    SP

    SPTH, THSP

    RR

    Nm

    Nm hin t

    Mt s khun dng s

    K t

    Ngy Julian; bt u t ngy 31/12/4713 trc cngnguyn

    Ch nh sng, chiu

    Ch gi trong ngy (1-12) hoc (0-23)

    Pht (0-59)

    Giy (0-59)

    S giy n na m (0-86399)

    c t ng thm khi t trong khun dng

    on k t t trong nhy p c t ng thm khit trong khun dng

    Thm phn th t (1st, 2nd, 4th )

    Pht m s ( FOUR vi DDSP)

    Pht m v chuyn sang dng th t ( First, second, ...)

    Ngy chuyn giao thin nin k vi cc nm

  • 8/7/2019 Oracle PLSQL - TV

    35/104

    Oracle c b n - SQL v P L/SQL

    4.3.HM THAO TC TRN TP HP

    4.3.1. Cc hm tc ng trn nhm

    Cc hm tc ng trn nhm cc dng d liu hay tc ng ln mt tp hp cc cc dng d liu bao gm:

    Hm SQL

    AVG([DISTINCT/ALL] n)

    COUNT([DISTINCT/ALL] expr)

    MAX([DISTINCT/ALL] expr)

    MIN([DISTINCT/ALL] expr)

    STDDVE([DISTINCT/ALL] n)

    SUM([DISTINCT/ALL] n)

    VARIANCE([DISTINCT/ALL] n)

    Din gii

    Gi tr trung bnh ca n,khng k tr null S

    row c expr khc null

    Gi tr ln nht ca expr

    Gi tr nh nht ca expr

    Phng sai ca n khng k tr null Tng ca

    ca n khng k tr null Variance ca n khng

    k tr null

    Ch : Tt c cc hm trn nhm mu tin u b qua gi tr NULL tr hm COUNT. Dng hm NVL chuyn i v tnh gi tr NULL.

    C 2 cch dng cc cc hm ny

    Tc ng trn ton b cc dng d liu ca cu lnh truy vnTc ng t rn mt nhm d liu cng tnh cht ca cu lnh truy vn. Cng tnh cht

    c ch bi mnh :[GROUP BY expr]

    [HAVING condition]

    V d: Tc ng trn ton b cc dng d liu ca cu lnh truy vn:

    Tnh mc lng trung bnh ca ton b nhn vin

    Select AVG(SAL)

    FROM EMP;

    Tnh mc lng thp nht ca nhn vin lm ngh CLERKSelect MIN(SAL)

    FROM EMP

    WHERE JOB =CLERK:

    V d: Tc ng trn mt nhm d liu cng tnh cht ca cu lnh truy vn.

    Tnh mc lng trung bnh ca tng loi ngh nghip

    SELECT JOB, AVG(SAL)

    FROM EMP

    GROUP BY JOB;

    Ch : C h c cng t trong mnh SELECT cc hm nhm hoc cc column t trong mnh GROUP BY.

    V d:

    ng: SELECT MAX(SAL), JOBFROM EMP

    GROUP BY JOB;

    Trang 34

  • 8/7/2019 Oracle PLSQL - TV

    36/104

    Oracle c b n - SQL v P L/SQL

    Sai: SELECT MAX(SAL), JOB

    FROM EMP;

    4.3.2. Mnh GROUP BY

    C php:

    SELECT [DISTINCT ] {*, column [alias],...}

    FROM table;[WHERE condition]

    [ GROUP B Y e xpr ][ HAVI NG c ond i t i on][ORDER BY expr/position [DESC/ASC]]

    Mnh GROUP BY s nhm cc dng d liu c cng gi tr ca expr. V d:

    GROUP BY JOB ngha l s nhm cc ngh ging nhau.

    Mnh HAVING l t iu kin ca nhm d liu. Mnh ny khc mnh WHERE ch mnh WHEREt iu kin cho ton b cu lnh SELECT.

    V d:

    SELECT JOB, MAX(SAL)

    FROM EMP

    WHERE JOB !=MANAGER

    GROUP BY JOB;

    JOB MAX(SAL)

    ANALYST 3000

    CLERK 1300

    PRESIDENT 5000

    SALESMAN 1600

    SELECT JOB, MAX(SAL)

    FROM EMP

    GROUP BY JOB

    HAVING COUNT(*)>3;

    JOB MAX(SAL)

    CLERK 1300

    SALESMAN 1600

    SELECT JOB, MAX(SAL)

    FROM EMP

    HAVING MAX(SAL)>=3000

    GROUP BY JOB;

    JOB MAX(SAL)

    ANALYST 3000

    PRESIDENT 5000

    Trang 35

  • 8/7/2019 Oracle PLSQL - TV

    37/104

    Oracle c b n - SQL v P L/SQL

    4.4.MT S HM MI B S UNG TRONG Ora cle9i

    4.4.1. Hm NULLIF

    C php:

    NULLIF(expr1, expr2)

    Hm tr v gi tr NULL nu biu thc th nht bng biu thc th 2. Trong trng hp ngc li, n tr v

    gi tr ca biu thc th nht.

    4.4.2. Hm COALSCE

    C php:

    COALESCE(expr1, expr2, expr3, ...)

    Tr v gi tr ca tham s u tin khc null

    4.4.3. Cu lnh case

    V d:

    Case cu lnhSELECT ENAME, EXTRACT(YEAR FROM HIREDATE) AS YEAR_OF_HIRE,

    (CASE EXTRACT(YEAR FROM HIREDATE)

    WHEN 2002 THEN 'NEW HIRE'

    WHEN 1997 THEN 'FIVE YEARS SERVICE'

    WHEN 1992 THEN 'TEN YEARS SERVICE'

    ELSE 'NO AWARD THIS YEAR'

    END ) AS AWARD

    FROM EMP;

    CASE biu thcSELECT ENAME, SAL,

    (CASE

    WHEN JOB = DBA THEN SAL * 1.5

    WHEN HIREDATE < SYSDATE - TO_YMINTERVAL(05-00) THEN SAL* 1.25

    WHEN DEPTNO IN (40,30,10) THEN SAL * 1.1

    ELSE SAL * .9

    END ) AS NEW_SAL

    FROM EMP;

    4.5.BI TP

    4.5.1. Hm trn tng dng d liu1. Lit k tn nhn vin, m phng ban v lng nhn vin c tng 15% (PCTSAL).

    DEPTNO ENAME PCTSAL

    10 KING 5000

    30 BLAKE 2850

    10 CLARK 2450

    20 JONES 2975

    Trang 36

  • 8/7/2019 Oracle PLSQL - TV

    38/104

    Oracle c b n - SQL v P L/SQL

    30 MARTIN 1250

    30 ALLEN 1600

    30 TURNER 1500

    30 JAMES 950

    30 WARD 1250

    20 FORD 3000

    20 SMITH 800

    20 SCOTT 3000

    20 ADAMS 1100

    10 MILLER 1300

    2. Vit cu lnh hin th nh sau:EMPLOYEE_AND_JOB

    KING*** *PRESIDENT

    BLAKE*** **MANAGER

    CLARK*** **MANAGER

    JONES*** **MANAGER

    MARTIN******SALESMAN

    ALLEN*** *SALESMAN

    TURNER******SALESMAN

    JAMES*** *CLERK

    WARD*** **SALESMANFORD*** ***ANALYST

    SMITH*** *CLERK

    SCOTT*** **ANALYST

    ADAMS*** *CLERK

    MILLER*** ***CLERK

    3. Vit cu lnh hin th nh sau:EMPLOYEE

    KING (President)

    BLAKE (Manager)

    CLARK (Manager)

    JONES (Manager)MARTIN (Salesman)

    ALLEN (Salesman)

    TURNER (Salesman)

    JAMES (Clerk)

    WARD (Salesman)

    FORD (Analyst)

    SMITH (Clerk)

    SCOTT (Analyst)

    ADAMS (Clerk)

    MILLER (Clerk)

    4. Vit cu lnh hin th nh sau:

    ENAME DEPTNO JOB

    BLAKE 30 Manager

    MARTIN 30 Salesperson

    ALLEN 30 Salesperson

    TURNER 30 Salesperson

    JAMES 30 Clerk

    WARD 30 Salesperson

    Trang 37

  • 8/7/2019 Oracle PLSQL - TV

    39/104

    Oracle c b n - SQL v P L/SQL

    5. T m ngy th 6 u tin cch 2 thng so vi ngy hin ti hin th ngy di dng 09February 1990.

    6. Tm th ng itn v tn nhn vin, ngy gia nhp cng ty ca nhn vin phng s 20,sao cho hin th nh sau:ENAME DATE_HIRED

    JONES april,SECOND 1981FORD december,THIRD 1981

    SMITH december,SEVENTEENTH 1980

    SCOTT december,NINTH 1982

    ADAMS january,TWELFTH 1983

    7. Hin th tn nhn vin, ngy gia nhp cng ty, ngy xt nng lng (sau ngy gianhp cng ty 1 nm), sp xp theo th t ngy xt nng lng.ENAME HIREDATE REVIEW

    SMITH 17-12-1980 17-12-1981

    ALLEN 20-02-1981 20-02-1982

    WARD 22-02-1981 22-02-1982

    JONES 02-04-1981 02-04-1982BLAKE 01-05-1981 01-05-1982

    CLARK 09-06-1981 09-06-1982

    TURNER 08-09-1981 08-09-1982

    MARTIN 28-09-1981 28-09-1982

    KING 17-11-1981 17-11-1982

    JAMES 03-12-1981 03-12-1982

    FORD 03-12-1981 03-12-1982

    MILLER 23-01-1982 23-01-1983

    SCOTT 09-12-1982 09-12-1983

    ADAMS 12-01-1983 12-01-1984

    8. Hin th tn nhn vin v lng di dngENAME SALARY

    ADAMS BELOW 1500

    ALLEN 1600

    BLAKE 2850

    CLARK 2450

    FORD 3000

    JAMES BELOW 1500

    JONES 2975

    KING 5000

    MARTIN BELOW 1500

    MILLER BELOW 1500

    SCOTT 3000

    SMITH BELOW 1500

    TURNER On Target

    WARD BELOW 1500

    9. Cho bit th ca ngy hin ti

    10. a chui di dng nn/nn, kim tra nu khng khun dng tr li l YES, ngc lil NO. Kim tra vi cc chui 12/34, 01/1a, 99\88VALUE VALID?

    Trang 38

  • 8/7/2019 Oracle PLSQL - TV

    40/104

    Oracle c b n - SQL v P L/SQL

    12/34 YES

    11. H in th tn nhn vin, ngy gia nhp cng ty, ngy lnh lng sao cho ngy lnhlng phi vo th 6, nhn vin ch c nhn lng sau t nht 15 ngy lm vic ticng ty, sp xp theo th t ngy gia nhp cng ty.

    4.5.2. Hm trn nhm d liu1. Tm lng thp nht, ln nht v lng trung bnh ca tt c cc nhn vin

    2. Tm lng nh nht v ln ca mi loi ngh nghip

    3. Tm xem c bao nhiu gim c trong danh sch nhn vin.

    4. Tm tt c cc phng ban m s nhn vin trong phng >3

    5. T m r a mc lng nh nht ca mi nhn vin lm vic cho mt gim c no sp xp theo th t tng dn ca mc lng.

    Trang 39

  • 8/7/2019 Oracle PLSQL - TV

    41/104

    Oracle c b n - SQL v P L/SQL

    Chng 5. LNH TRUY VN D LIU M RNG

    5.1.KT HP D LIU T NHIU BNG

    5.1.1. Mi lin kt tng ng

    Mi lin kt tng ng c th hin trong mnh WHERE.

    lin kt trong mnh WHERE phi ch r tn ca cc column v mnh c t tng ng.

    V d:

    emp.deptno =dept.deptno

    Cc column trng tn phi c ch r column nm bng no thng qua tn hoc qua alias. Tn trngny c th t trong cc mnh khc nh SELECT, ORDER BY..

    V d:

    SELECT DEPT.DEPTNO, ENAME,JOB, DNAME

    FROM EMP, DEPT

    WHERE EMP.DEPTNO = DEPT.DEPTNOORDER BY DEPT.DEPTNO;

    SELECT A.DEPTNO, A.ENAME, A.JOB, B.DNAME

    FROM EMP A, DEPT B

    WHERE A.DEPTNO = B.DEPTNO

    ORDER BY A.DEPTNO;

    5.1.2. Mi lin kt khng tng ng

    Mi lin kt tng ng c th hin trong mnh WHERE.

    lin kt trong mnh WHERE phi ch r tn ca cc column v mnh c t khng tng ng.

    V d:WHERE E.SAL BETWEEN S. LOSAL AND S.HISAL

    Cc column trng tn phi c ch r column nm bng no thng qua tn hoc qua alias. Tn trngny c th t trong cc mnh khc nh SELECT, ORDER BY..

    V d:

    SELECT E.ENAME,E.JOB, S.GRADE

    FROM EMP E, SALGRADE S

    WHERE E.SAL BETWEEN S. LOSAL AND S.HISAL;

    Ch : iu kin lin kt ng l s c c b ng - 1 = s cc iu kin lin k t

    5.1.3. Mi lin kt cng

    Mi lin kt cng tr v c cc gi tr NULL trong biu thc iu kin. Du (+) v no tnh thm cc gitr NULL v .

    Mt cu lnh select ch t c 1 mi lin kt cng, du (+) t bn phi column lin kt

    Trang 40

  • 8/7/2019 Oracle PLSQL - TV

    42/104

    Oracle c b n - SQL v P L/SQL

    Trong mnh WHERE ca mi lin kt cng khng c dng ton t IN hoc OR ni cc iu kin linkt khc.

    V d:

    SELECT E.ENAME, D.DEPTNO, D.DNAME

    FROM EMP E, DEPT D

    WHERE E.DEPTNO (+)=D.DEPTNO

    AND D.DEPTNO IN (30, 40);

    ENAME DEPTNO DNAME

    BLAKE 30 SALES

    MARTIN 30 SALES

    ALLEN 30 SALES

    TURNER 30 SALES

    JAMES 30 SALES

    WARD 30 SALES

    40 OPERATIONS

    5.1.4. Lin kt ca bng vi chnh n (t thn)

    C th lin kt bng vi chnh n bng cch t alias.

    V du:

    Select e.ename emp_name, e.sal emp_sal,

    m.ename mgr_name, m.sal mgr_sal

    from emp e, emp m

    where e.mgr = m.empno

    and e.sal

  • 8/7/2019 Oracle PLSQL - TV

    43/104

    Oracle c b n - SQL v P L/SQL

    SELECT E.ENAME, D.DNAME

    FROM EMP E JOIN DEPT D USING (DEPTNO);

    Mnh ON (Ch r tn ct tham gia t rong ph p kt ni)

    SELECT E.ENAME, D.DNAME

    FROM EMP E JOIN DEPT D ON (E.DEPTNO = D.DEPTNO);

    Kt ni tri LEFT O UTERJ OI N

    SELECT E.ENAME, D.DNAME

    FROM EMP E LEFT OUTER JOIN DEPT D ON (E.DEPTNO = D.DEPTNO);

    Kt ni tri RI GHT OUT ER J OI N

    SELECT E.ENAME, D.DNAME

    FROM EMP E RIGHT OUTER JOIN DEPT D ON (E.DEPTNO= D.DEPTNO);

    Kt ni FULL OUTER J OI N (All records from both tablesIdentical to a union of left outer join and rightouter join)

    SELECT E.ENAME, D.DNAME

    FROM EMP E FULL OUTER JOIN DEPT D ON (E.DEPTNO = D.DEPTNO);

    5.1.6. Cc ton t tp hp

    Tn ton t

    UNION

    Din gii

    Kt hp kt qu ca nhiu cu hi vi nhau, ch gi li mt i din cho cc mu tin

    trng nhau.UNION ALL Kt hp kt qu ca nhiu cu hi vi nhau, cc mu tin trng nhau

    cng c lp li

    INTERSET

    MINUS

    V d:

    Ly phn giao cc kt qu ca nhiu cu hi

    Ly kt qu c trong cu hi th nht m khng c trong cu hi th hai (cu hi sauton t MINUS)

    Select job from emp where deptno = 10Union

    Select job from emp where deptno = 30;

    JOB

    CLERK

    MANAGER

    PRESIDENT

    SALESMAN

    Trang 42

  • 8/7/2019 Oracle PLSQL - TV

    44/104

    Oracle c b n - SQL v P L/SQL

    5.2.LNH TRUY VN LNG5.2.1. Cu lnh SELECT lng nhau.

    Trong mnh WHERE

    Tm nhng nhn vin lm cng ngh vi BLAKE

    select ename, job

    from emp

    where job = (select job from emp where ename = BLAKE);

    ENAME JOB

    BLAKE MANAGER

    CLARK MANAGER

    JONES MANAGER

    Trong mnh HAVING

    Tm nhng phng c mc lng trung bnh ln hn phng 30

    SELECT DEPTNO, AVG(SAL) FROM EMPHAVING AVG(SAL) > (SELECT AVG(SAL) FROM EMP WHERE DEPTNO =30)

    GROUP BY DEPTNO;

    DEPTNO AVG(SAL)

    10 2916.66667

    20 2175

    5.2.2. Ton t SOME/ANY/ALL/NOT IN/EXITS

    Tn ton t

    NOT IN

    ANY v SOME

    ALL

    EXISTS

    V d:

    Din gii

    Khng thuc

    So snh mt gi tr vi mi gi tr trong mt danh sch hay trong kt qu tr vca cu hi con, phi sau ton t =

    So snh mt gi tr vi mi gi tr trong danh sch hay trong kt qu tr v cacu hi con.

    Tr v TRUE nu c tn ti.

    SELECT * FROM emp

    WHERE sal = ANY (SELECT sal FROM emp WHERE deptno=30);

    SELECT * FROM emp

    WHERE sal >= ALL (select distinct sal

    From emp

    Where deptno =30)

    Order by sal desc;

    SELECT ENAME, SAL, JOB, DEPTNO

    FROM EMP

    WHERE SAL > SOME (SELECT DISTINCT SAL

    FROM EMP

    WHERE DEPTNO =30)

    Trang 43

  • 8/7/2019 Oracle PLSQL - TV

    45/104

    Oracle c bn - SQL v P L/SQL

    ORDER BY SAL DESC;

    Tm nhng ngi c nhn vin

    SELECT EMPNO, ENAME, JOB, DEPTNO

    FROM EMP E

    WHERE EXISTS (SELECT EMPNO FROM EMP WHERE EMP.MGR = E.EMPNO);

    5.3.CU TRC HNH CY

    5.3.1. Cu trc hnh cy trong 1 table

    Trong mt table ca CSDL Oracle c th hin cu trc hnh cy. V d trong bng EMP cu trc th hin cp qun l.

    Root node: l node cp cao nht

    Child node: l node con hay khng phi l root node Parentnode: l node c node con

    Leaf node: l node khng c node con

    Level (cp)

    Level l mt ct gi cha cp trong cu trc hnh cy. V d.

    SELECT LEVEL, DEPTNO, EMPNO, ENAME, JOB, SAL

    FROM EMP

    CONNECT BY PRIOR EMPNO = MGR

    START WITH MGR is NULL;

    LEVEL DEPTNO EMPNO ENAME JOB SAL

    1 10 7839 KING PRESIDENT 5000

    2 30 7698 BLAKE MANAGER 2850

    3 30 7654 MARTIN SALESMAN 1250

    3 30 7499 ALLEN SALESMAN 16003 30 7844 TURNER SALESMAN 1500

    3 30 7900 JAMES CLERK 950

    3 30 7521 WARD SALESMAN 1250

    2 10 7782 CLARK MANAGER 2450

    3 10 7934 MILLER CLERK 1300

    2 20 7566 JONES MANAGER 2975

    3 20 7902 FORD ANALYST 3000

    4 20 7369 SMITH CLERK 800

    3 20 7788 SCOTT SALEMAN 3300

    4 20 7876 ADAMS CLERK 1100

    5.3.2. K thut thc hin

    C th nh ngha quan h tha k trong cu hi bng mnh STAR WITH v CONNECT BY trong culnh SELECT, mi mu tin l mt node trong cy phn cp. Ct gi LEVEL cho bit cp ca mu tin hay cpca node trong quan h tha k.

    C php:

    SELECT [DISTINCT/ALL] [expr [c_ias]]

    FROM [table/view/snapshot] [t_alias]

    [WHERE condition]

    [ START WI TH c ondi t i on C ONNECT B Y P RI OR c ondi t i on][GROUP BY expr] [HAVING condition]

    [UNION/UNION ALL/INTERSET/MINUS select command]

    Trang 44

  • 8/7/2019 Oracle PLSQL - TV

    46/104

    Oracle c bn - SQL v P L/SQL

    [ORDER BY expr/position [DESC/ASC]]

    Vi:

    START WITH c t im u ca hnh cy. Khng th columngi level mnh ny.

    CONNECT BY Ch column trong mi lin h tnh cy.PRIOR nh hng cu trc. Nu prior xut hin trc mgr,

    Mgr s c tm trc sau n empno, y l hnhcy hng ln. Nu prior xut hin trc empno,empno s c tm trc sau n empno, y lhnh cy hng xung.

    V d:

    SELECT LEVEL, DEPTNO, EMPNO, ENAME, JOB, SAL

    FROM EMP

    CONNECT B Y P RI OR MGR = E MPNOSTART WITH empno = 7876;

    LEVEL DEPTNO EMPNO ENAME JOB SAL

    1 20 7876 ADAMS CLERK 11002 20 7788 SCOTT SALEMAN 3300

    3 20 7566 JONES MANAGER 2975

    4 10 7839 KING PRESIDENT 5000

    5.3.3. Mnh WHERE trong cu trc hnh cy

    Mnh WHERE v CONNECT BY c th c dng ng thi trong cu trc hnh cy. Nu

    mnh WHERE loi tr mt s row ca cu trc hnh cy th ch nhng row c loi

    tr. Nu iu kin t trong mnh CONNECT BY th to n b nhn h ca row b loi tr.

    V d 1:

    SELECT LEVEL, DEPTNO, EMPNO, ENAME, JOB, SAL

    FROM EMP WHERE ENAME != SCOTTCONNECT BY PRIOR EMPNO = MGR

    START WITH MGR IS NULL;

    LEVEL DEPTNO EMPNO ENAME JOB SAL

    1 10 7839 KING PRESIDENT 5000

    2 30 7698 BLAKE MANAGER 2850

    3 30 7654 MARTIN SALESMAN 1250

    3 30 7499 ALLEN SALESMAN 1600

    3 30 7844 TURNER SALESMAN 1500

    3 30 7900 JAMES CLERK 950

    3 30 7521 WARD SALESMAN 1250

    2 10 7782 CLARK MANAGER 2450

    3 10 7934 MILLER CLERK 1300

    2 20 7566 JONES MANAGER 2975

    3 20 7902 FORD ANALYST 3000

    4 20 7369 SMITH CLERK 800

    4 20 7876 ADAMS CLERK 1100

    V d 2:

    SELECT LEVEL, DEPTNO, EMPNO, ENAME, JOB, SAL

    FROM EMP

    CONNECT BY PRIOR EMPNO = MGR AND ENAME != SCOTT

    Trang 45

  • 8/7/2019 Oracle PLSQL - TV

    47/104

    Oracle c b n - SQL v P L/SQL

    START WITH MGR IS NULL;

    LEVEL DEPTNO EMPNO ENAME JOB SAL

    1 10 7839 KING PRESIDENT 5000

    2 30 7698 BLAKE MANAGER 2850

    3 30 7654 MARTIN SALESMAN 1250

    3 30 7499 ALLEN SALESMAN 1600

    3 30 7844 TURNER SALESMAN 1500

    3 30 7900 JAMES CLERK 9503 30 7521 WARD SALESMAN 1250

    2 10 7782 CLARK MANAGER 2450

    3 10 7934 MILLER CLERK 1300

    2 20 7566 JONES MANAGER 2975

    3 20 7902 FORD ANALYST 3000

    4 20 7369 SMITH CLERK 800

    5.4.BI TP

    1. Hin th ton b tn nhn vin v tn phng ban lm vic sp xp theo tn phngban.

    2. Hin th tn nhn vin, v tr a l, tn phng vi iu kin lng >1500.ENAME LOC DNAME

    KING NEW YORK ACCOUNTING

    BLAKE CHICAGO SALES

    CLARK NEW YORK ACCOUNTING

    JONES DALLAS RESEARCH

    ALLEN CHICAGO SALES

    FORD DALLAS RESEARCH

    SCOTT DALLAS RESEARCH

    3. Hin th tn nhn vin, ngh nghip, lng v mc lng.ENAME JOB SAL GRADE

    JAMES CLERK 950 1

    SMITH CLERK 800 1

    ADAMS CLERK 1100 1

    MARTIN SALESMAN 1250 2

    WARD SALESMAN 1250 2

    MILLER CLERK 1300 2

    ALLEN SALESMAN 1600 3

    TURNER SALESMAN 1500 3

    BLAKE MANAGER 2850 4

    CLARK MANAGER 2450 4

    JONES MANAGER 2975 4

    FORD ANALYST 3000 4

    SCOTT ANALYST 3000 4KING PRESIDENT 5000 5

    4. Hin th tn nhn vin, ngh nghip, lng v mc lng, vi iu kin mclng=3.ENAME JOB SAL GRADE

    ALLEN SALESMAN 1600 3

    TURNER SALESMAN 1500 3

    Trang 46

  • 8/7/2019 Oracle PLSQL - TV

    48/104

    Oracle c b n - SQL v P L/SQL

    5. Hin th nhng nhn vin ti DALLASENAME LOC SAL

    JONES DALLAS 2975

    FORD DALLAS 3000

    SMITH DALLAS 800

    SCOTT DALLAS 3000

    ADAMS DALLAS 1100

    6. Hin th tn nhn vin , ngh nghip, lng, mc lng, tn phng lm vic tr nhnvin c ngh l cleck v sp xp theo chiu gim. ENAME JOB SAL GRADE DNAME

    MARTIN SALESMAN 1250 2 SALES

    WARD SALESMAN 1250 2 SALES

    ALLEN SALESMAN 1600 3 SALES

    TURNER SALESMAN 1500 3 SALES

    BLAKE MANAGER 2850 4 SALES

    CLARK MANAGER 2450 4 ACCOUNTING

    JONES MANAGER 2975 4 RESEARCH

    FORD ANALYST 3000 4 RESEARCHSCOTT ANALYST 3000 4 RESEARCH

    KING PRESIDENT 5000 5 ACCOUNTING

    7. Hin th chi tit v nhng nhn vin kim c 36000 $ 1 nm hoc ngh l cleck.(gm cc trng tn, ngh, thu nhp, m phng, tn phng, mc lng)ENAME JOB ANUAL_SAL DNAME GRADE

    JAMES CLERK 11400 SALES 1

    SMITH CLERK 9600 RESEARCH 1

    ADAMS CLERK 13200 RESEARCH 1

    MILLER CLERK 15600 ACCOUNTING 2

    FORD ANALYST 36000 RESEARCH 4

    SCOTT ANALYST 36000 RESEARCH 4

    8. Hin th nhng phng khng c nhn vin no lm vic.DEPTNO DNAME LOC

    40 OPERATIONS BOSTON

    9. Hin th m nhn vin, tn nhn vin, m ngi qun l, tn ngi qun lEMP_NAME EMP_SAL MGR_NAME MGR_SAL

    BLAKE 2850 KING 5000

    CLARK 2450 KING 5000

    JONES 2975 KING 5000MARTIN 1250 BLAKE 2850

    ALLEN 1600 BLAKE 2850

    TURNER 1500 BLAKE 2850

    JAMES 950 BLAKE 2850

    WARD 1250 BLAKE 2850

    FORD 3000 JONES 2975

    SMITH 800 FORD 3000

    SCOTT 3000 JONES 2975

    ADAMS 1100 SCOTT 3000

    MILLER 1300 CLARK 2450

    Trang 47

  • 8/7/2019 Oracle PLSQL - TV

    49/104

    Oracle c b n - SQL v P L/SQL

    10. Nh cu 9 hin th thm thng tin v ng KING.EMP_NAME EMP_SAL MGR_NAME MGR_SAL

    KING 5000

    BLAKE 2850 KING 5000

    CLARK 2450 KING 5000

    JONES 2975 KING 5000

    MARTIN 1250 BLAKE 2850ALLEN 1600 BLAKE 2850

    TURNER 1500 BLAKE 2850

    JAMES 950 BLAKE 2850

    WARD 1250 BLAKE 2850

    FORD 3000 JONES 2975

    SMITH 800 FORD 3000

    SCOTT 3000 JONES 2975

    ADAMS 1100 SCOTT 3000

    MILLER 1300 CLARK 2450

    11. H in th ngh nghip c tuyn dng vo nm 1981 v khng c tuyn dng vonm 1994.

    12. Tm nhng nhn vin gia nhp cng ty trc gim c ca h.

    13. Tm tt c cc nhn vin, ngy gia nhp cng ty, tn nhn vin, tn ngi gim cv ngy gia nhp cng ty ca ngi gim c y.EMP_NAME EMP_SAL MGR_NAME MGR_SAL

    BLAKE 2850 BLAKE 2850

    MARTIN 1250 BLAKE 2850

    ALLEN 1600 BLAKE 2850

    TURNER 1500 BLAKE 2850

    JAMES 950 BLAKE 2850

    WARD 1250 BLAKE 2850CLARK 2450 CLARK 2450

    MILLER 1300 CLARK 2450

    JONES 2975 JONES 2975

    FORD 3000 JONES 2975

    SMITH 800 JONES 2975

    SCOTT 3300 JONES 2975

    ADAMS 1100 JONES 2975

    13 rows selected.

    14. Tm nhng nhn vin kim c lng cao nht trong mi loi ngh nghip.JOB MAX(SAL)

    ANALYST 3000CLERK 1300

    MANAGER 2975

    PRESIDENT 5000

    SALESMAN 1600

    15. Tm mc lng cao nht trong mi phng ban, sp xp theo th t phng ban.ENAME JOB DEPTNO SAL

    KING PRESIDENT 10 5000

    Trang 48

  • 8/7/2019 Oracle PLSQL - TV

    50/104

    Oracle c b n - SQL v P L/SQL

    SCOTT SALEMAN 20 3300

    BLAKE MANAGER 30 2850

    16. Tm nhn vin gia nhp vo phng ban sm nhtENAME HIREDATE DEPTNO

    CLARK 09-06-1981 10

    SMITH 17-12-1980 20

    ALLEN 20-02-1981 30

    17. Hin th nhng nhn vin c mc lng ln hn lng TB ca phng ban m h lmvic.

    EMPNO ENAME SAL DEPTNO

    7839 KING 5000 10

    7566 JONES 2975 20

    7902 FORD 3000 20

    7788 SCOTT 3300 20

    7698 BLAKE 2850 30

    7499 ALLEN 1600 30

    18. Hin th tn nhn vin, m nhn vin, m gim c, tn gim c, phng ban lmvic ca gim c, mc lng ca gim c.

    EMP_NUMBER EMP_NAME EMP_SAL MGR_NUMBER MGR_NAME MGR_DEPT MGR_GRADE

    7698 BLAKE 2850 7698 BLAKE 30 4

    7654 MARTIN 1250 7698 BLAKE 30 4

    7499 ALLEN 1600 7698 BLAKE 30 4

    7844 TURNER 1500 7698 BLAKE 30 4

    7900 JAMES 950 7698 BLAKE 30 4

    7521 WARD 1250 7698 BLAKE 30 4

    7782 CLARK 2450 7782 CLARK 10 4

    7934 MILLER 1300 7782 CLARK 10 4

    7566 JONES 2975 7566 JONES 20 4

    7902 FORD 3000 7566 JONES 20 47369 SMITH 800 7566 JONES 20 4

    7788 SCOTT 3300 7566 JONES 20 4

    7876 ADAMS 1100 7566 JONES 20 4

    13 rows selected.

    Trang 49

  • 8/7/2019 Oracle PLSQL - TV

    51/104

    Oracle c bn - SQL v P L/SQL

    Chng 6. BIN RUNTIME

    6.1.D LIU THAY TH TRONG CU LNH

    Dng (&) ch phn thay th trong cu lnh.

    Nu dng (&&) ch bin thay th th sau cu lnh bin thay th vn cn tn ti V d 1:

    SELECT * FROM emp

    WHERE &Condition

    Enter value for condition: sal > 1000

    Khi ny cu lnh trn tng ng vi:

    SELECT * FROM emp

    WHERE sal > 1000

    V du 2:

    Select ename, deptno, jobFrom emp

    Where deptno = &&depno_please;

    6.2.LNH DEFINE

    Khai bo v gn tr cho cc bin, v d khai bo bin condition c gi tr 'sal > 1000'

    DEFINE condition = 'sal > 1000'

    Khi cu lnh sau khng yu cu nhp vo gi tr cho codition

    SELECT * FROM empWHERE &Condition

    loi b bin ra khi b nh dng lnh UNDEFINE. V d:

    UNDEFINE condition

    lit k cc bin khai bo dng lnh DEFINE m khng ch bin, v d

    DEFINE

    DEFINE CONDITION = 'SAL > 1000'

    V d:

    DEFINE REM=SAL*12+NVL(COMM,0)

    SELECT ENAME, JOB, &REM

    FROM EKP ORDER BY & REM;

    Trang 50

  • 8/7/2019 Oracle PLSQL - TV

    52/104

    Oracle cbn - SQL v P L/SQL

    6.3.LNH ACCEP T

    Khai bo v gn tr cho bin vi dng hin th

    ACCEPT variable [NUMBER/CHAR] [PROMPT/NOPROMPT 'text'] HIDE

    V d:

    ACCEPT Salary NUMBER PROMPT 'Salary figure: 'Salary figure : 3000

    T kho hide cho php che chui nhp liu, hay dng khi nhp password.

    ACCEPT password CHAR PROMPT 'Enter password: ' HIDE

    Password : ***

    6.4.BI TP

    1. Hin th tn nhn vin, ngy gia nhp cng ty vi iu kin ngy gia nhp cng tynm trong khong hai bin runtime c nhp v o t bn phm (&first_date,&last_date).

    2. Hin th tn nhn vin, ngh nghip, lng, m gim c, m phng ban vi iukin ngh nghip bng mt bin c nhp vo t bn phm. (&job)

    3. nh ngha mt bin tnh thu nhp mt nm ca nhn vin. D ng bin ny tmnhng nhn vin c thu nhp ln hn hoc bng $30000.

    4. nh ngha mt bin l khong thi gian nhn vin lm trong cng ty. Hin th tn

    nhn vin v q ung thi gian nhn vin lm vic vi iu kin nhn vin l mtbin c nhp vo t bn phm.ENAME LENGTH OF SERVICE

    KING 19 YEAR 4 MONTHS

    Trang 51

  • 8/7/2019 Oracle PLSQL - TV

    53/104

    Oracle c b n - SQL v P L/SQL

    Chng 7. TABLE V CC LNH SQL V TABLE

    7.1.LNH TO TABLE

    7.1.1. C php to bng

    to mt bng mi dng lnh CREATE TABLE. C

    php:

    CREATE TABLE tablename

    (column [datatype][DEFAULT expr][column_constraint]..)

    [PCTFREE integer][PCTUSED integer]

    [INITRANS integer][MAXTRANS integer]

    [TABLESPACE tablespace]

    [STORAGE storage_clause]

    [AS subquery]

    Vi:

    tablename Tn table cn tocolumn Tn column trong table

    [datatype] Kiu d liu ca column[DEFAULT expr] Gi tr mc nh ca column trong trng hp

    NULL l expr

    [column_constraint] Rng buc ca bn thn column[table_constraint] Rng buc ca ton bng[PCTFREE integer] Phn trm khng gian cn trng[PCTUSED integer] Phn trm khng gian s dng[INITRANS integer] S bn ghi khi to[MAXTRANS integer] S bn ghi ln nht[TABLESPACE tablespace]

    Ch nh TABLESAPCE cho bng[STORAGE storage_clause]

    Ghi mnh lu tr, n v mc nh l KB trong cc cc chn la l: INITIAL - dung lng khito; NEXT - dung lng tng tip theo; MINEXTENTS

    - % m rng nh nht;MAXEXTENTS- % m rng ln nht; PCTINCREASE - Tc tng hng nm.

    [AS subquery] To bng c cu trc ging mnh truy vn

    V d 1:

    CREATE TABLE EMP

    EMPNO NUMBER NOT NULL CONSTRAINT PK_EMP PRIMARY KEY,

    ENAME VARCHAR2(10) CONSTRAINT NN_ENAME NOT NULL

    CONSTRAINT UPPER_ENAME CHECK (ENAME=UPPER(ENAME)),

    JOB VARCHAR2(9),

    MGR NUMBER CONSTRAINT FK_MGR REFERENCES

    SCOTT.EMP(EMPNO),

    HIREDATE DATE DEFAULT SYSDATE, SALNUMBER(10,2) CONSTRAINT CK_SAL

    CHECK(SAL>500),

    COMM NUMBER(9,0) DEFAULT NULL,

    DEPTNO NUMBER(2) CONSTRAINT NN_DEPTNO NOT NULL

    CONSTRAINT FK_DEPTNO REFERENCES SCOTT.DEPT(DEPTNO))

    PCTFREE 5 PCTUSED 75

    V du 2:

    CREATE TABLE SALGRADE1

    Trang 52

  • 8/7/2019 Oracle PLSQL - TV

    54/104

    Oracle c bn - SQL v P L/SQL

    (GRADE NUMBER CONSTRAINT PK_SALGRADE PRIMARY KEY,

    LOSAL NUMBER,

    HISAL NUMBER)

    TABLESPACE USER

    STORAGE (INITIAL 6144 NEXT 6144

    MINEXTENTS 1 MAXEXTENTS 5 PCTINCREASE 5)

    V d 3:CREATE TABLE DEPT10

    AS

    SELECT EMPNO, ENAME, JOB, SAL

    FROM EMP WHERE DEPTNO =10;

    V d 4:

    CREATE TABLE EMP_SAL (NAME, SALARY,GRADE)AS

    SELECT ENAME, SAL, GRADE

    FROM EMP, SALGARDE

    WHERE EMP.SAL BETWEEN LOSAL AND HISAL ;

    to mt table mi, chng ta cn phi chun b mt s thng tin sau:

    Table phi c chun ha.

    Nhng column m cho php null nn nh ngha sau tit kim ni lu tr. Gp cctable li nu c th.

    Ch nh cc thng s pcfree v pctused C thch nh 2 thng s initstran, maxtransC th chnh tablespace cho table

    C th c lng kch thc table, v cc thng s cho storage.

    7.1.2. Tnh ton kch thc table (tham kho)

    1. Tnh ton khong a cn thit cho data block header. Tnh theo

    cng thc sau:

    BLOCK HEADER = (FIXED HEADER + VARIABLE TRANSACTION HEADER) +

    (TABLE DIRECTORY + ROW DIRECTORY)

    Trong :

    fixed header = 57 bytes

    variable transaction header = 23*gi tr ca thng s instranstable directory =4

    row directory = 2* s lng row trong block.

    2. Tnh ton khong a trng cha d liu ca data block. Tnh theo cng thc sau:Khong a trng cha data =(block size -total block header) -(block size -(fixed header+ variable transaction

    header))*(pctree/100)

    C th bit block size bng cch dng lnh

    show parameters db_block_size.

    Trang 53

  • 8/7/2019 Oracle PLSQL - TV

    55/104

    Oracle c b n - SQL v P L/SQL

    3. Tnh ton khong a trng kt hp bng gi tr ca mi row.

    4. Tnh ton kch thc trung bnh ca row:Kch thc trung bnh ca row = row header +A+B+CA = Tng chiu di ca cc ct 250 byteC = Khong a trng kt hp

    5. Quyt nh s row trung bnh cho mt block:avg rows /block = available space/average row size

    6. Tnh ton s lng blockBlock = s row / s row trung bnh cho mt block

    7.2.MT S QUY TC KHI TO TABLE

    7.2.1. Quy tc t tn ObjectTn d i t 1 n 30 k t, ngoi tr tn CSDL khng qu 8 k t v tn lin kt c

    th di n 128 k tTn khng cha du nhy (")Khng phn bit ch hoa ch thng

    Tn phi bt u bng k t ch trong b k t ca CSDL

    Tn ch c th cha k t s trong tp k t ca CSDL. C th dng cc k t _, $, #.Oracle khng khuyn khch dng cc k t $ v #.

    Tn khng c trng vi cc t dng bi O racle (xemphu lc 1) Tnkhng c cch khong trng

    Tn c t h t trong cp du nhy kp, khi tn c th bao gm cc k t bt k,c th bao gm khong trng, c th dng cc t kha ca Oracle, phn bit chhoa ch thng.

    Tn phi duy nht trong "khng gian tn" nht nh. Cc object thuc cng khnggian tn phi c tn khc nhau.

    Cc b danh ca ct, b danh bng, tn ngi s dng, mt khu mc d khng phi l cc object hoc ccthnh phn con ca object nhng cng phi c t tn theo cc quy tc trn, ngoi tr

    B danh ct, b danh bng ch tn ti khi thc hin cc lnh SQL v khng c lu tr trong CSDL, do vykhng p dng quy tc 9 v khng gian tn.

    Mt khu khng thuc v khng gian tn no v do cng khng p dng quy tc 9. Nn t tn

    theo mt quy tc t tn thng nht

    7.2.2. Quy tc khi tham chiu n Object C php chungkhi tham chiu n cc object

    S chung khi tham chiu cc object hoc thnh phn ca cc object

    Schema.Object.Part.@dblink

    Trong :

    object Tn object

    Trang 54

  • 8/7/2019 Oracle PLSQL - TV

    56/104

    Oracle c b n - SQL v P L/SQL

    schema Schema cha objectpart Thnh phn ca objectdblink Tn CSDL cha object

    Oracle gii quyt vic tham chiu cc Object

    Khi tham chiu n mt object trong cu lnh SQL, Oracle phn tch cu lnh v v xc nh cc objecttrong khng gian tn. Sau khi xc nh cc object, Oracle thc hin cc thao tc m cu lnh quy nh trnobject. Nu tn object truy cp khng thuc khng gian tn th cu lnh khng c thc hi n v c thngbo li.

    Cu lnh sau thm mt mu tin vo bng DEPT

    INSERT INTO Dept VALUES (50, 'SUPPOR', 'PARIS')

    Theo ng cnh ca cu lnh, Oracle xc nh bng DEPT c th l:

    Mt table trong schema ca bn

    Mt view trong schema ca bn

    ng ngha ring cho table hoc viewng ngha chung cho table hoc view

    Tham chiu n cc object khng thuc quyn s hu

    tham chiu n cc object khng thuc schema hin thi, phi ch ra tn ca schema cha object muntruy cp

    schema.object

    V d: xa table EMP trong schema SCOTT

    DROP TABLE scott.emp

    Tham chiu cc object t xa

    truy cp n mt CSDL xa, sau tn object phi ch ra tn lin kt CSDL (database link) ca CSDL chaobject mun truy cp. Database link l mt schema object, Oracle dng thm nhp v truy xut CSDL txa.

    7.3.Cc Kiu d liu c bn

    7.3.1. Kiu CHAR

    Kiu CHARdng khai bo mt chui c chiu di c nh, khi khai bo bin hoc ct kiu CHAR vichiu di ch nh th tt c cc mc tin ca bin hay ct ny u c cng chiu di c ch nh. Cc mctin ngn hn Oracle s t ng thm vo cc khong trng cho chiu di. Oracle khng cho php gn mctin di hn chiu di ch nh i vi kiu CHAR. Chiu di ti a cho php ca kiu CHAR l 255 byte

    7.3.2. Kiu VARCHAR2

    Kiu VARCHAR2dng khai bo chui k t vi chiu di thay i. Khi khai bo mt bin hoc ct kiuVARCHAR2 phi ch ra chiu di ti a, cc mc tin cha trong bin hay ct kiu VARCHAR2 c chiu dithc s l chiu di ca mc tin. Oracle khng cho php gn

    Trang 55

  • 8/7/2019 Oracle PLSQL - TV

    57/104

    Oracle c b n - SQL v P L/SQL

    mc tin di hn chiu di ti a ch nh i vi kiu VARCHAR2. Chiu di ti a kiu VARCHAR2 l 2000byte.

    7.3.3. Kiu VARCHAR

    Hin ti Oracle xem kiu VARCHAR2 v VARCHAR l nh nhau, tuy nhin Oracle khuyn nndng VARCHAR2. O racle d nh trong tng lai dng kiu VARCHAR cha cc chui vi

    chiu di bin i, nhng trong php so snh s c ch nh theo nhiu ng ngha khcnhau.

    7.3.4. Kiu NUMBER

    Kiu s ca Oracle dng cha cc mc tin dng s dng, s m, s vi du chm ng.

    NUMBER(p, s)

    p S ch s trc du chm thp phn (precision), p t 1n 38 ch s

    s S cc ch s tnh t du chm thp phn v bn phi(scale), s t -84 n 127

    NUMBER(p) S c du chm thp phn c nh vi precision bng p vscale bng 0

    NUMBER S vi du chm ng vi precision bng 38. Nh rngscale khng c p dng cho s vi du chm ng.

    V d sau cho thy cch thc Oracle lu tr d liu kiu s ty theo cch nh precision vscale khc nhau.

    D liu thc Kiu Gi tr lu tr7456123.89 NUMBER 7456123.89

    7456123.89 NUMBER(9) 74561237456123.89 NUMBER(9,2) 7456123.89

    7456123.89 NUMBER(9,1) 7456123.8

    7456123.89 NUMBER(6) Khng hp l7456123.8 NUMBER(15,1) 7456123.8

    7456123.89 NUMBER(7,-2) 7456100

    7456123.89 NUMBER(-7,2) Khng hp l

    7.3.5. Kiu FLOAT

    Dng khai bo kiu s du chm ng, vi chnh xc thp phn 38 hay chnh xc nh phn l 126.

    FLOAT(b) Khai bo kiu du chm ng vi chnh xc nh phn l b, b t 1 n 126. C th chuyn t chnh xc nh phn sang chnh xc thp phn bng cch nhn chnh xc nh phn vi 0.30103

    7.3.6. Kiu LONG

    Dng khai bo kiu chui k t vi di bin i, chiu di ti a ca kiu LONG l 2 gigabyte. KiuLONGthng c dng cha cc vn bn.

    C mt s hn ch khi dng kiu LONG

    Trang 56

  • 8/7/2019 Oracle PLSQL - TV

    58/104

    Oracle c b n - SQL v P L/SQL

    Mt table khng th cha nhiu hn mt ct kiu LONG

    D liu kiu LONG khng t h tham gia vo cc rng buc ton vn, ngoi tr kim traNULL v khc NULL

    Khng th index mt ct kiu LONG

    Khng th truyn tham s kiu LONG cho hm hoc th tc Cc

    hm khng th tr v d liu kiu LONG

    Trong c u lnh SQL c truy cp cc ct kiu LONG, t h vic cp nht hoc kha ccbng ch cho php trong cng mt CSDL

    Ngoi r a, cc ct kiu LONG khng c tham gia trong cc thnh phn sau ca cu lnhSQL

    Cc mnh WHERE, GROUP BY, ORDER BY, CONNECT BY hoc vi tc tDISTINCT trong cu lnh SELECT

    Cc hm s dng trong cu lnh SQL nh SUBSTR, INSTR

    Trong danh sch la chn ca cu lnh SELECT c s dng mnh GROUP BYTrong

    danh sch la chn ca cu hi con, cu hi c s dng cc ton t tp hp Trong danh sch la

    chn ca cu lnh CREATE TABLE AS SELECT

    7.3.7. Kiu DATE

    Dng cha d liu ngy v thi gian. Mc d kiu ngy v thi gian c th c cha trong kiu CHARv NUMBER.

    Vi gi tr kiu DATE, nhng thng tin c lu tr gm th k, nm, thng, ngy, gi, pht, giy. Oraclekhng cho php gn gi tr kiu ngy trc tip, gn gi tr kiu ngy, bn phi dng TO_DATE chuyngi tr kiu chui k t hoc kiu s.

    Nu gn mt gi tr kiu ngy m khng ch thi gian th thi gian mc nh l 12 gi m, Nu gn gi trkiu ngy m khng ch ra ngy, th ngy mc nh l ngy u ca thng. Hm SYSDATE cho bit ngy vthi gian h thng.

    Tnh ton i vi kiu ngy

    i vi d liu kiu ngy, bn c th thc hin cc php ton cng v tr. V d:

    SYSDATE+1 ngy hm sau

    SYSDATE-7 cch y mt tunSYSDATE+(10/1440) mi pht sau

    Ngy Julian: L gi tr s cho bit s ngy k t ngy 1 thng ging nm 4712 trc cng nguyn.

    V d:

    SELECT TO_CHAR (TO_DATE('01-01-1992', 'MM-DD-YYYY'), 'J') JULIAN

    FROM DUAL;

    Kt qu:

    JULIAN

    2448623

    Trang 57

  • 8/7/2019 Oracle PLSQL - TV

    59/104

    Oracle c b n - SQL v P L/SQL

    7.3.8. Kiu RAW v kiu LONG RAW

    Kiu RAW v LONG RAWdng cha cc chui byte, cc d liu nh phn nh hnh nh, m thanh. Cc dliu kiu RAW ch c th gn hoc truy cp ch khng c thc hin cc thao tc nh i vi chui k t.

    Kiu RAW ging nh kiu VARCHAR2 v kiu LONG RAW ging kiu LONG, ch khc nhau ch Oracle tng chuyn i cc gi tr kiu CHAR, VARCHAR2 v LONG gia tp hp k t ca CSDL v tp k t cacc ng dng.

    7.3.9. Kiu ROWID

    Mi mu tin trong CSDL c mt a ch c kiu ROWID. ROWID bao gm cc thnh phn:

    block.row.file.

    Vi

    block Chui h hexa cho bit block cha rowrow Chui h hexa cho bit row trong blockfile Chui h hexa cho bit database file cha block

    V d:

    0000000F.0000.0002

    Row u tin trong block 15 ca data file th hai.

    7.3.10. Kiu MLSLABEL

    Kiu MLSLABEL dng cha label dng nhphn m Oracle dng m bo hot ng ca bn thn hthng.

    7.3.11. Chuyn i kiu

    Chuyn i mc nh

    Ni chung mt biu thc khng th gm cc gi tr thuc nhiu kiu khc nhau, tuy nhin Oracle cho phpchuyn i gi cc kiu d liu. Oracle t ng chuyn kiu ca d liu trong mt s trng hp sau

    Khi INSERT hoc UPDATE gn gi t r cho ct c kiu khc, Oracle s t ng chuyngi tr sang kiu ca ct.

    Khi s dng cc hm hoc cc ton t m cc tham s c kiu khng tng thch thOracle s t ng chuyn kiu.

    Khi s dng ton t so snh m cc gi tr c cc kiu khc nhau, Oracle s t ngchuyn kiu.

    V d 1:

    SELECT ename FROM emp WHERE hiredate = '12-MAR-1993'

    Oracle t ng chuyn chui '12-MAR-1993' sang kiu DATE trong php so snh

    V d 2:

    SELECT ename FROM emp WHERE ROWID = '00002514.0001.0001'

    Trang 58

  • 8/7/2019 Oracle PLSQL - TV

    60/104

    Oracle c b n - SQL v P L/SQL

    Oracle t ng chuyn chui '00002514.0001.0001' sang kiu ROWID trong p hp s osnh

    Ngi s dng t chuyn i

    Oracle cung cp cc hm chuyn i kiu, v d

    TO_NUMBER Chuyn sang kiu s

    TO_CHAR Chuyn sang kiu k t

    TO_DATE Chuyn sang kiu ngy

    (xem phn tra cu cc hm v th tc)

    7.4.RNG BUC D LIU TRONG TABLE

    Cc dng constraint gm:

    NULL/NOTNULLUNIQUE

    PRIMARYKEY

    FOREIGNKEY (Referential Key)

    CHECK

    7.4.1.NULL/NOT NULL

    L rng buc column trng hoc khng trng.

    V d mnh rng buc:

    CREATE TABLE DEPT (DEPTNO NUMBER(2) NOT NUL L, DNAME CHAR(14),

    LOC CHAR(13),

    CONSTRAINT DEPT_PRIMARY_KEY PRIMARY KEY (DEPTNO));

    7.4.2. UNIQUE

    Ch ra rng buc duy nht, cc gi tr ca column ch trong mnh UNIQUE trong cc row

    ca table phi c gi tr khc bit. Gi tr null l cho php nu UNIQUE da trn mt ct.

    V d:

    CREATE TABLE DEPT (

    DEPTNO NUMBER(2),DNAME CHAR(14),

    LOC CHAR(13),

    CONSTRAINT UNQ_DEPT_LOC UNIQUE(DNAME, LOC));

    7.4.3. PRIMARY KEY

    Ch ra rng buc duy nht (ging UNIQUE), t uy nh in kh o l dng kho UNIQUE cp caonht. Mt table ch c th c mt PRIMARY KEY. Cc g i t r trong PRIMARY KEY phi NOTNULL.

    Trang 59

  • 8/7/2019 Oracle PLSQL - TV

    61/104

    Oracle c b n - SQL v P L/SQL

    C php khi t CONSTRAINT mc TABLE[CONSTRAINT constraint_name] PRIMARY KEY (column,

    Column..)

    C php khi t CONSTRAINT mc COLUMN[CONSTRAINT constraint_name] PRIMARY KEY

    7.4.4. FOREIGN KEY ( Referential )Ch ra mi lin h rng buc tham chiu gia table ny vi table khc, hoc trong chnh 1 table. N ch rami lin h cha-con v ch rng buc gia FOREIGN KEY bng ny vi PRIMARY KEY hoc UNIQUEKey ca bng khc. V d quan h gia DEPT v EMPthng qua trng DEPTNO.

    T kho ON DELETE CASCADEc h nh trong dng kho ny ch khi d liu cha b xo (trongbng DEPT) th d liu con cng t ng b xo theo (trong bng EMP).

    7.4.5. CHECK

    Rng buc kim tra gi tr.

    V d:

    CREATE TABLE EMP

    (EMPNO NUMBER NOT NULL CONSTRAINT PK_EMP PRIMARY KEY,

    ENAME VARCHAR2(10) CONSTRAINT NN_ENAME NOT NULL

    CONSTRAINT UPPER_ENAME CHECK (ENAME =

    UPPER(ENAME)),

    JOB VARCHAR2(9),

    MGR NUMBER CONSTRAINT FK_MGR REFERENCES

    SCOTT.EMP(EMPNO),

    HIREDATE DATE DEFAULT SYSDATE, SAL

    NUMBER(10,2) CONSTRAINT CK_SAL

    CHECK(SAL>500),

    COMM NUMBER(9,0) DEFAULT NULL,

    DEPTNO NUMBER(2) CONSTRAINT NN_DEPTNO NOT NULL

    CONSTRAINT FK_DEPTNO REFERENCES SCOTT.DEPT(DEPTNO);

    7.5.LNH DDL CAN THIP TI TABLE

    7.5.1. Chnh sa cu trc table

    Dng lnh ALTER TABLE chnh sa cu trc bng. C

    php:

    ALTER TABLE tablename [ADD/MODIFY/DROP options

    ([column [column constraint) [ENABLE clause]

    [DISABLE clause]

    Trong :

    ADD Thm column hay constraint.

    MODIFY Sa i kiu cc columnDROP B constraint.ENABLE/DISABLE Che khut hoc a vo s dng cc CONSTRAINT m

    khng xa hn

    Ch :

    Trang 60

  • 8/7/2019 Oracle PLSQL - TV

    62/104

    Oracle c b n - SQL v P L/SQL

    Kh dng mnh MODIFY khng t h chuyn tnh cht ca COLUMN c ni dung lNULL chuyn thnh NOT NULL;

    Khng t h a thm mt ct NOT NUL nu table c s liu. Phi thm ct NULL,in y s liu, sau chuyn thnh NOT NULL.

    Khng th chuyn i kiu khc nhau nu column cha s liu Khng th dng mnh MODIFY nh ngha cc CONSTRAINT tr rng buc

    NULL/NOT NULL. Mun sa CONSTRAINT cn xo chng sau ADD thm vo.

    V d 1:

    ALTER TABLE emp ADD (spouse_name CHAR(10);

    V d 2:

    ALTER TABLE emp MODIFY (ename CHAR(25);

    V d 3:

    ALTER TABLE emp DROP CONSTRAINT emp_mgr;

    ALTER TABLE DROP PRIMARY KEY;

    V d 4:

    ALTER TABLE dept DISABLE CONSTRAINT dept_prim;

    7.5.2. Cc lnh DDL khc

    Xa table

    Dng lnh DROP TABLE xo bng.

    C php:

    DROP TABLE table_name [CASCADE CONSTRAINTS]

    Trong :

    CASCADE CONSTRAINTS xa tt c cc rng buc ton vn lin quann table b xa.

    V d:

    DROP TALE emp

    Khi drop table th:

    Xa tt c d liu

    View v synonymlin quan vn cn nhng khng c gi tr Ccgiao dch cha gii quyt xong s c commit Ch ngi to ratable hay DBA mi c th xa table

    7.5.3. Ch dn cho table

    Dng lnh COMMENT ch thch.

    V d:

    Trang 61

  • 8/7/2019 Oracle PLSQL - TV

    63/104

    Oracle c b n - SQL v P L/SQL

    COMMENT ON TABLE EMP IS THONG TIN NHAN VIEN;

    COMMENT ON COLUMN EMP.EMPNO IS MA SO NHAN VIEN;

    7.5.4. Thay i tn object

    Dng lnh RENAME thay i tn object.

    C php:

    RENAME old TO new

    Trong :

    old Tn cnew Tn mi

    V d:

    RENAME emp TO employee

    7.5.5. Xa d liu ca table

    Dng lnh TRUNCATE TABLE xa d liu ca table, xa tt c cc row trong table. C php:TRUNCATE TABLE table_name [REUSE STORAGE]

    Trong :

    REUSE STORAGE gi li khung cha, ch xa d liu

    7.6.THNG TIN V TABLE TRONG T IN D LIU

    Trung tm ca c s d liu Oracle l data dictionary. Data dictionary t ng c to ra khi c s d liuOracle c to. Oracle cp nht ln data dictionary bng cc lnh DDL (Data Define Language). Cc table

    ca t in d liu c to ra bng lnh CREATE DATABASE v ch c to t userSYS. Cc view trongt in d liu chc cc thng tin di dng d nhn hn bng.

    C cc dng view l:

    USER_xxx: l nhng i tng thuc user. V d cc bng c to bi user

    ALL_xxx: l tt c cc i tng m user c quyn truy nhp

    DBA_xxx: tt c cc i tng trong database

    V$: Cc thc thi ca Server.

    Ngoi ra cn c cc view quan trng khc l:

    DICTIONARY: Thng tin v ton b cc table, view, snapshot trong t in d liu

    TABLE_PRIVILEGES: Thng tin v vic gn quyn trn cc i tng IND: ng ngha

    ca USER_INDEX.

    Mun hin th ton b thng tin v cc table, view, snapshot trong t in d liu dng lnh

    SELECT * FROM DICTIONARY;

    Trang 62

  • 8/7/2019 Oracle PLSQL - TV

    64/104

    Oracle c b n - SQL v P L/SQL

    Hin th cu ca USER_OBJECT

    DESCRIBE USER_OBJECT;

    Hin th tt c cc bng m user s hu:

    SELECT OBJECT_NAME

    FROM USER_OBJECT

    WHERE OBJECT_TYPE = TABLE;

    SELECT * FROM TAB;

    SELECT TABLE_NAME FROM USER_TABLE;

    Hin th tt c cc loi i tng trong t in d liu:

    SELECT DISTINCT OBJECT_TYPE

    FROM USER_OBJECTS;

    7.7.BI TP1. To bng PROJECT vi cc column c ch ra di y, PROJID l promary key, v

    P_END_DATE > P_START_DATE.Column name Data Type Size.

    PROJID NUMBER 4

    P_DESC VARCHAR2 20

    P_START_DATE DATE

    P_END_DATE DATE

    BUDGET_AMOUNT NUMBER 7,2

    MAX_NO_STAFF NUMBER 2

    2. To bng ASSIGNMENTS vi cc column c ch ra di y,ng thi ctPROJID l foreign key ti bng PROJECT, ct EMPNO l foreign key ti bng EMP.

    Column name Data Type Size.

    PROJID NUMBER 4 NOT NULL

    EMPNO NUMBER 4 NOT NULL

    A_START_DATE DATE

    A_END_DATE DATE

    BILL_AMOUNT NUMBER 4,2

    ASSIGN_TYPE VARCHAR2 2

    3. T hm c olumn COMMENTS kiu LONG vo bng PROJECTS. T hm c olumn HOURS kiuNUMBER vo bng ASSIGNMENTS.

    4. S dng view USER_OBJECTS hin th tt c cc i tng user s hu.

    5. Thm r ng buc duy nht ( UNIQUE) c ho 2 c olumn PROJECT_ID v EMPNO ca bngASSIGNMENTS.

    6. Xem cc thng tin v cc rng buc trong USER_CONSTRAINTS.

    7. Xem trong USER hin ti c tt c bao nhiu bng.

    Trang 63

  • 8/7/2019 Oracle PLSQL - TV

    65/104

    Oracle c b n - SQL v P L/SQL

    Chng 8. CC LNH THAO TC D LIU

    8.1.THAO TC D LIU TRONG TABLE

    8.1.1. Thm mi dng d liu

    chn mt row vo table dng lnh INSERT. C

    php:

    INSERT INTO tablename ([column, column, ...])

    VALUES (value, value ...);

    V d:

    INSERT INTO dept (depno, dname, loc)

    VALUES (50, 'MARKETING', 'SAN JOSE')

    Chp d liu t table khc

    INSERT INTO table [(column, column...)]

    SELECT select_list

    FROM table(s)

    V d:

    INSERT INTO emp_tmp (ename, sal)

    SELECT ename, sal FROM emp WHERE sal > 1000

    Bt u t phin bn Oracle 9i, ta c th thm mi dng d liu v t gi tr mc nh thng qua t khoDEFALT

    V d:

    INSERT INTO EMP (EMPNO, ENAME, DEPTNO)

    VALUES (8000,MIKE,DEFAULT);

    Oracle 9i cn cho php thc hin lnh INSERTtrn ng thi nhiu table khc nhau, ch s dng mt culnh DML.

    V d:

    Lnh INSERT khng iu kin (UNCONDITIONAL)

    INSERT ALL

    INTO T1 (C1, C2, ...) VALUES (C1, C2, ...)

    INTO T2 (C1, C2, ...) VALUES (C1, C2, ...)

    SELECT C1, C2, ... FROM T9;

    Lnh INSERT khng iu kin (CONDITIONAL)

    INSERT [ALL|FIRST]

    WHEN c1 = 1 THEN INTO T1 (C1, C2, ...) VALUES (C1, C2, ...)

    WHEN c1 = 2 THEN INTO T2 (C1, C2, ...) VALUES (C1, C2, ...)

    WHEN c2 = 3 THEN INTO T3 (C1, C2, ...) VALUES (C1, C2, ...)

    SELECT C1, C2, ... FROM T9;

    Trang 64

  • 8/7/2019 Oracle PLSQL - TV

    66/104

    Oracle c b n - SQL v P L/SQL

    FIRST: insert cho cu lnh u tin c gi tr iu kin ng

    ALL: insert cho mi cu lnh c gi tr iu kin l ng

    8.1.2. Cp nht dng d liu

    chnh sa d liu dng lnh UPDATE.

    C php:

    UPDATE table [alias]

    SET column [,column...] = [expr, subquery]

    [WHERE condition]

    V d 1:

    UPDATE emp

    SET job = 'SALEMAN', hiredate = sysdate, sal = sal * 1.1

    WHERE ename = 'SCOTT';

    V d 2:

    UPDATE emp

    SET comm = (SELECT comm FROM commission C

    WHERE C.empno = emp.empno)

    WHERE empno IN (SELECT empno FROM commission);

    V d 3:

    UPDATE emp a

    SET deptno =

    (SELECT deptno FROM dept

    WHERE loc = 'BOSTON'),

    (sal, comm) = (SELECT

    1.1*AVG(sal),1.5*AVG(comm)

    FROM emp b

    WHERE a.deptno = b.deptno)

    WHERE deptno IN

    (SELECT deptno FROM dept

    WHERE loc = 'DALLAS' OR loc = 'DETROIT');

    Ta cng c th s dng mnh DEFAULT trong cu lnh cp nht d liu V d:

    UPDATE EMP SET COMM = DEFAULT;

    Ch thch:

    - Cp nht cc nhn vin Dallas hoc Detroit- Thay DEPTNO ca cc nhn vin ny bng DEPTNO ca Boston - Thay lngmi nhn vin bng lng trung bnh ca b phn * 1.1 - Thay commission cami nhn vin bng commission trung bnh ca b

    phn * 1.5

    8.1.3. Lnh Merge

    Lnh MERGE l mt c im rt hay ca Oracle 9i. N cn c gi l lnh UPSERT, tc l c kh nngva thc hin vic Update, va thc hin lnh Insert tu vo bn ghi ch c tn ti hay khng.

    C php:

    MERGE INTO T1

    Trang 65

  • 8/7/2019 Oracle PLSQL - TV

    67/104

    Oracle c b n - SQL v P L/SQL

    USING T2 ON (T1.C9=T2.C9)

    WHEN MATCHED THEN UPDATE SET T1.C1=T2.C2, T1.C2=T2.C2 ...

    WHEN NOT MATCHED THEN INSERT (