sql và pl/sql - sinhvienit.netsinhvienit.net/forum/attachment/1072/1246136678/sinhvienit.net... ·...

Download SQL và PL/SQL - sinhvienit.netsinhvienit.net/forum/attachment/1072/1246136678/SinhVienIT.Net... · cÁc khÁi niỆm cƠ bẢn trong cƠ sỞ dỮ liỆu ... ...5 ... các nhóm

If you can't read please download the document

Upload: nguyendieu

Post on 05-Feb-2018

225 views

Category:

Documents


1 download

TRANSCRIPT

  • SQL v PL/SQL C bn

  • Oracle c bn - SQL v PL/SQL

    MC LC MC LC ... ...1

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

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

    1.2. CC KHI NIM C BN TRONG C S D LIU ... ...5 1.2.1. Cc thnh phn logic trong database... ..5 1.2.2. Cc i tng trong database ... ...6 1.2.3. Cc nhm lnh SQL c bn ... .6

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

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

    2.1.1. Quy tc vit lnh ... ...9 2.1.2. Cu lnh truy vn c bn ... ..9 2.1.3. Cc thnh phn khc ca mnh SELECT ... ..9 2.1.4. Phn bit gi tr d liu tr v ... ..10 2.1.5. Gi tr NULL ... ..11

    2.2. SQL*PLUS, CNG C TNG TC LNH SQL VI DATABASE ... ...11 2.2.1. Cu lnh tng tc ca SQL*Plus ... .11 2.2.2. Phn nhm cu lnh trong SQL*Plus... ...12 2.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 ... ..17 3.1. CC GII HN TRONG TRUY VN D LIU ... ...17

    3.1.1. Mnh WHERE... ...17 3.1.2. Cc ton t s dng trong mnh WHERE ... ..18 3.1.3. V d s dng cc ton t iu kin ... .19

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

    3.3. BI TP ... ..21

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

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

    4.2. HM SQL THAO TC TRN TNG DNG D LIU... .24 4.2.1. Cc hm thao tc trn kiu d liu s... ..24 4.2.2. Cc hm thao tc trn kiu d liu k t... .26 4.2.3. Cc hm thao tc trn kiu d liu thi gian... .30 4.2.4. Cc hm chuyn i kiu ... ...32

    4.3. HM THAO TC TRN TP HP ... ...34 4.3.1. Cc hm tc ng trn nhm ... ...34 4.3.2. Mnh GROUP BY ... ...35

    4.4. MT S HM MI B SUNG TRONG Oracle9i ... ..36 4.4.1. Hm NULLIF ... .36 4.4.2. Hm COALSCE ... ..36 4.4.3. Cu lnh case ... ..36

    Trang 1

  • Oracle c bn - SQL v PL/SQL

    4.5. BI TP ... ..36 4.5.1. Hm trn tng dng d liu ... ..36 4.5.2. Hm trn nhm d liu ... ...39

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

    5.1.1. Mi lin kt tng ng ... ..40 5.1.2. Mi lin kt khng tng ng ... .40 5.1.3. Mi lin kt cng ... .40 5.1.4. Lin kt ca bng vi chnh n (t thn)... .41 5.1.5. Cch biu din kt ni mi trong Oracle 9i ... ...41 5.1.6. Cc ton t tp hp ... ..42

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

    5.3. CU TRC HNH CY ... .44 5.3.1. Cu trc hnh cy trong 1 table ... ...44 5.3.2. K thut thc hin ... ..44 5.3.3. Mnh WHERE trong cu trc hnh cy... ..45

    5.4. BI TP ... ..46

    CHNG 6. BIN RUNTIME ... ...50 6.1. D LIU THAY TH TRONG CU LNH ... .50 6.2. LNH DEFINE ... ..50 6.3. LNH ACCEPT ... ...51 6.4. BI TP ... ..51

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

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

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

    7.3. Cc Kiu d liu c bn... 55 7.3.1. Kiu CHAR ... 55 7.3.2. Kiu VARCHAR2 ... 55 7.3.3. Kiu VARCHAR ... 56 7.3.4. Kiu NUMBER ... 56 7.3.5. Kiu FLOAT ... 56 7.3.6. Kiu LONG ... 56 7.3.7. Kiu DATE ... 57 7.3.8. Kiu RAW v kiu LONG RAW... 58 7.3.9. Kiu ROWID ... 58 7.3.10. Kiu MLSLABEL ... 58 7.3.11. Chuyn i kiu ... 58

    7.4. RNG BUC D LIU TRONG TABLE ... 59 7.4.1. NULL/NOT NULL ... 59 7.4.2. UNIQUE ... 59 7.4.3. PRIMARY KEY ... 59 7.4.4. FOREIGN KEY ( Referential ) ... 60 7.4.5. CHECK ... 60

    7.5. LNH DDL CAN THIP TI TABLE ... 60 7.5.1. Chnh sa cu trc table ... 60 7.5.2. Cc lnh DDL khc ... 61 7.5.3. Ch dn cho table ... 61 7.5.4. Thay i tn object... 62 7.5.5. Xa d liu ca table ... 62

    Trang 2

  • Oracle c bn - SQL v PL/SQL

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

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

    8.1.1. Thm mi dng d liu ... ...64 8.1.2. Cp nht dng d liu ... .65 8.1.3. Lnh Merge... ...65 8.1.4. Xa dng d liu... .66 8.1.5. Li rng buc d liu ... ...66

    8.2. LNH IU KHIN GIAO DCH... ..66 8.3. BI TP ... ..67

    CHNG 9. SEQUENCE V INDEX... ...68 9.1. SEQUENCE... ...68

    9.1.1. To Sequence... ..68 9.1.2. Thay i v hu sequence ... .69

    9.2. INDEX... ...69 9.2.1. To index ... ...69 9.2.2. S dng index... ..69

    9.3. BI TP ... ..70

    CHNG 10. VIEWS ... ...71 10.1. VIEWS ... ...71

    10.1.1. To view ... ..71 10.1.2. Xa cc view ... ..71

    10.2. BI TP ... ...72

    CHNG 11. QUYN V BO MT ... ..73 11.1. QUYN - PRIVILEGE ... .73 11.2. ROLE... ..74 11.3. SYNONYM... ...74

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

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

    12.2. LNH LP TRNH PL/SQL N GIN ... ...77 12.2.1. Lnh IF... ..77 12.2.2. Lnh lp LOOP khng nh trc ... ...78 12.2.3. Lnh lp LOOP c nh trc ... ...78 12.2.4. Lnh lp WHILE ... ...78 12.2.5. Lnh GOTO, nhy v iu kin ... .78

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

    12.4.1. Kiu d liu Table ... ...81 12.4.2. Kiu d liu Record ... ...81 12.4.3. Sao kiu d liu mt dng ... ..82 12.4.4. Sao kiu d liu ca mt ct ... ..82 12.4.5. Lnh SELECT... INTO... ...82

    12.5. BI TP ... ...83

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

    13.1.1. Object Navigator ... ..84 13.1.2. Program Unit Editor... .85 13.1.3. Store Program Unit Editor ... ...85

    Trang 3

  • Oracle c bn - SQL v PL/SQL

    13.1.4. Database Trigger Edditor ... .85 13.2. CC HM, TH TC ... .86

    13.2.1. To hm, th tc trn Client ... ...86 13.2.2. To hm, th tc trn Server ... .86 13.2.3. D li i vi cc hm, th tc ... ..87

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

    14.1.1. To th tc ... ..88 14.1.2. Hu b th tc ... ...89 14.1.3. Cc bc lu gi mt th tc ... ...89

    14.2. HM ... ...89 14.2.1. To hm... ...90 14.2.2. Thc hin mt hm ... .90 14.2.3. Li ch ca vic s dng hm ... ...91 14.2.4. Mt s hn ch khi s dng hm trong cu lnh SQL ... ..91 14.2.5. Hu b hm... .91 14.2.6. Hm v th tc ... ..92

    14.3. PACKAGE... ...92 14.3.1. Cu trc ca package ... ...92 14.3.2. To package ... ..93 14.3.3. Hu package ... ..95 14.3.4. Li ch ca vic s dng package ... ..95 14.3.5. Mt s package chun ca Oracle ... ..96

    CHNG 15. DATABASE TRIGGER ... .97 15.1. TO TRIGGER ... ..97

    15.1.1. Phn loi trigger ... ...97 15.1.2. Lnh to trigger ... .98 15.1.3. S dng Procedure builder to trigger ... ...99

    15.2. QUN L TRIGGER ... ...100 15.2.1. Phn bit database trigger ... ...100 15.2.2. Thay i trng thi ca database trigger ... ...101 15.2.3. Hu b trigger ... .101 15.2.4. Lu khi s dng trigger ... ..102

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

    Trang 4

  • Oracle c bn - SQL v PL/SQL

    Chng 1. GII THIU CHUNG

    1.1.NGN NG SQL 1.1.1. Lch s pht trin ca ngn ng SQL M hnh c s d liu (CSDL) quan h - RDBMS, do E.F Codd a ra vo u thp k 70. T n nay, n lin tc pht trin tr thnh m hnh CSDL ph bin bc nht. M hnh quan h gm cc thnh phn sau:

    Tp hp cc i tng v / hoc cc mi quan h Tp hp cc x l tc ng ti cc quan h Rng buc d liu m bo tnh chnh xc v nht qun.

    SQL (Structured Query Language, c l "sequel") l tp lnh truy xut CSDL quan h. Ngn ng SQL c IBM s dng u tin trong h qun tr CSDL System R vo gia nhng nm 70. H ngn ng SQL u tin (SEQUEL2) c IBM cng b vo thng 11 nm 1976. Nm 1979, tp on Oracle gii thiu thng phm u tin ca SQL. SQL cng c ci t trong cc h qun tr CSDL nh DB2 ca IBM v SQL/DS. Ngy nay, SQL c s dng rng ri v uc xem l ngn ng chun truy cp CSDL quan h.

    1.1.2. Chun SQL Nm 1989, vin tiu chun quc gia Hoa K (ANSI) cng nhn SQL l ngn ng chun truy cp CSDL quan h trong vn bn ANSI SQL89.

    Nm 1989, t chc tiu chun quc t (ISO) cng nhn SQL ngn ng chun truy cp CSDL quan h trong vn bn ISO 9075-1989.

    Tt c cc h qun tr CSDL ln trn th gii cho php truy cp bng SQL v hu ht theo chun ANSI.

    1.2.CC KHI NIM C BN TRONG C S D LIU 1.2.1. Cc thnh phn logic trong database

    Thnh phn Din gii

    Table Cu trc lu tr c bn nht trong CSDL quan h (RDBMS), n bao gm 1 hoc nhiu columns (ct d liu) vi 0 hoc nhiu rows (dng d liu).

    Row T hp nhng gi tr ca Column trong bng. Mt row cn c gi l 1 record (bn ghi).

    Column Quy nh mt loi d liu trong bng. V d: loi d liu tn phng ban c trong bng phng ban. Ta th hin th column ny thng qua tn column v c th km theo mt vi thng tin khc v column nh kiu d liu, di ca d liu.

    Field Giao ca column v row. Field chnh l ni cha d liu. Nu khng c d liu trong field ta ni field c gia tr l NULL.

    Primary Key L mt column hoc mt tp cc column xc nh tnh duy nht ca cc rows trong bng. V d DEPTNO l Primary Key ca bng DEPT v n c dng xc nh duy nht mt phng ban trong bng DEPT m i din l mt row d liu.

    Trang 5

  • Oracle c bn - SQL v PL/SQL

    Primary Key nht thit phi c s liu.

    Foreign Key L mt column hoc mt tp cc columns c tham chiu ti chnh bng 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. V d: Foreign Key, Primary Key...

    V d: minh ho cc thnh phn logic trong database

    EMP EMPNO ENAME EMP DEPT DEPTNO

    7369 SMITH 20

    Row 7499 ALLEN 30 7521 WARD 30 7566 JONES 20 7654 MARTIN 30 7698 BLAKE 30

    DEPT

    DEPTNO DNAME

    10 ACCOUNTING

    20 RESEARCH

    30 SALES

    40 OPERATIONS

    Foreign key 7782 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 gii

    Table 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 v PL/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 dung d liu trn cc row hay xo cc row trong table. Nhng lnh ny c gi l cc lnh thao tc d liu DML (Data Manipulation Language)

    Trang 6

  • Oracle c bn - SQL v PL/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 liu nh l table, view, index. Nhng lnh ny c gi l cc lnh nh ngha d liu DDL (Data Definition Language)

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

    2 lnh ny dng gn hoc hu cc quyn truy nhp vo CSDL Oracle v cc cu trc bn trong n. Nhng lnh ny c gi l cc lnh iu khin d liu 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

  • Oracle c bn - SQL v PL/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

  • Oracle c bn - SQL v PL/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. Ni dung ca mt cu lnh SQL c th c tri di trn nhiu dng. Cc t kho khng c php vit tt hay phn cch trn nhiu dng Cc mnh thng thng c t trn nhiu dng khc nhau r rng trong vic th hin cu lnh, ta nn s dng cc du TAB khi vit lnh Ta c th 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 ct DISTINCT Phn bit ni dung gia cc dng d liu tr v

    Ly tt cc cc ct trong bng column Tn ct d liu cn tr v alias Phn tiu ca ct d liu tr v FROM 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 tn 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 alias Cc 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

  • Oracle c bn - SQL v PL/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 column alias khng c c du cch v vit cch sau tn column mt du cch. Column alias c chp nhn c du 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 cng mt dng d liu vi 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 phi l 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. c th ly c ch cc dng d liu phn bit vi nhau. Ta s dng mnh DISTINCT trong cu lnh truy vn.

    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

  • Oracle c bn - SQL v PL/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 ct vi bt c kiu d liu no cng c th c tr NULL, tr khi c n l kha hay c rng buc ton vn NOT NULL. 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 null khi 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 tr null, 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 ch khng 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 biu thc 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 thc DECODE, 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. Trong cu lnh sau khng c mu tin no 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 thng qua 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

  • Oracle c bn - SQL v PL/SQL

    Hnh v 3. Cu lnh ca SQL*Plus

    Khc bit gia lnh SQL v SQL*Plus

    SQL

    L ngn ng giao tip vi Oracle Server trong vic truy xut d liu

    Cu lnh da trn b k t chun ASCII

    Thao tc trn cc d liu c trong cc bng c nh ngha trong database

    Cu lnh c np vo b nh m trn mt hoc nhiu dng

    Cu lnh khng c vit tt

    SQL*Plus

    Nhn dng lnh SQL v gi lnh ln Server

    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 b m

    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 ca liu 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*Plus trong 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

  • Oracle c bn - SQL v PL/SQL

    Tng tc Cho php ngi dng c th to cc bin s dng trong cu lnh SQL 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 ct d 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 nhp password Mt khu truy nhp database 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 gii A[PPEND] text a thm on text vo dng hin ti C[HANGE] /old/new Chuyn on text c thnh on text mi trong dng hin

    ti C[HANGE] /text/ Xo on text trong dng hin ti CL[EAR] BUFF[ER] Xo tt c cc dng trong SQL buffer DEL Xo dng hin ti DEL n Xo dng n DEL m n Xo dng t m n n I[NPUT] Thm mt s dng nht nh I[NPUT] text Thm dng c cha text L[IST] Lit k ton b cc dng trong SQL buffer

    Trang 13

  • Oracle c bn - SQL v PL/SQL

    L[IST] n L[IST] m n R[UN] N N text 0 text

    Lnh thao tc file

    Tn lnh SAVE 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 liu

    C 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 gii CLE[AR] Xo nh dng ca column FOR[MAT] format Chuyn nh dng ca ct d liu HEA[DING] text t nhn co column JUS[TIFY] align Cn tri - left , phi - right, gia - center cho nhn NOPRI[NT] n column NUL[L] text Hin th text nu gi tr ca column l NULL PRI[NT} Hin th column TRU[NCATED] Xo chui ti cui dng u tin khi hin th WRA[PPED] Ph cui chui ca dng tip theo

    V d 1: Chnh nh dng v nhn ca column

    Trang 14

  • Oracle c bn - SQL v PL/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 column dng 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 SALGRADE

    GRADE LOSAL HISAL

    1 700 1200 2 1201 1400 3 1401 2000 4 2001 3000 5 3001 9999

    2. Chn ton b thng tin trong bng EMP EMPNO 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 30 7844 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

  • Oracle c bn - SQL v PL/SQL

    3. Hin th mi loi ngh nghip JOB

    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 9600 SCOTT 36000 ADAMS 13200 MILLER 15600 14 rows selected.

    5. Hin th 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 THE POSITION 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

  • Oracle c bn - SQL v PL/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 tt c. hn ch cc d liu tr v khng cn thit, ta c th s dng mnh iu kin trong cu lnh truy vn.

    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 v alias tiu ca ct d liu tr v table tn bng truy vn d liu condition mnh iu kin lc d liu tr v

    Mnh WHERE dng 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

  • Oracle c bn - SQL v PL/SQL

    Truy vn d liu vi nhiu iu kin

    Mnh WHERE cho php ghp c nhiu iu kin thng qua cc ton t logic AND/OR. Ton t AND yu cu d liu phi tho mn c 2 iu kin. Ton t OR cho php d liu tho mn 1 trong 2 iu kin. V d:

    SELECT DEPTNO, JOB, ENAME, SAL FROM EMP WHERE SAL BETWEEN 1000 AND 2000 AND JOB = MANAGER;

    SELECT DEPTNO, JOB, ENAME, SAL FROM EMP WHERE SAL BETWEEN 1000 AND 2000 OR JOB = MANAGER;

    SELECT DEPTNO, JOB, EMPNO, ENAME, SAL FROM EMP WHERE SAL > 1500 AND JOB = MANAGER OR JOB =SALESMAN;

    SELECT DEPTNO, JOB, EMPNO, ENAME, SAL FROM EMP WHERE SAL > 1500 AND (JOB = MANAGER OR JOB =SALESMAN);

    3.1.2. Cc ton t s dng trong mnh WHERE Ton t so snh

    Ton t = !=, ^=, '+, > < >=

  • Oracle c bn - SQL v PL/SQL

    Cc ton t logic

    Ton t Din gii NOT Ph nh mnh AND Yu cu d liu phi tho mn c 2 iu kin OR 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 snh NOT 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 s tm 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

  • Oracle c bn - SQL v PL/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] NULL

    V 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 expr/position [DESC/ASC]];

    Mnh ORDER BY dng sp xp s liu c hin th v phi t v tr sau cng ca cu lnh truy vn.

    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 BY hn c mc u tin khi sp xp 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

  • Oracle c bn - SQL v PL/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 trng

    ENAME, 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 OPERATIONS 20 RESEARCH 30 SALES

    3. Hin th danh sch nhng nhn vin lm ti phng 10 v 20 theo th t A,B,C EMPNO 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

  • Oracle c bn - SQL v PL/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 qun l. 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 cng ty 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 ln hn thng v ngh nghip l SALEMAN, sp theo th t lng gim dn v tn tng dn. ANUAL_SAL COMM

    19200 300 18000 0 15000 500

    Trang 22

  • Oracle c bn - SQL v PL/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 v Hoc cng c th 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 C th 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: Gi tr tr v tng ng vi tng d liu u vo ti mi dng d liu.

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

    Trang 23

  • Oracle c bn - SQL v PL/SQL

    Hnh v 6. Phn loi hm SQL

    4.2.HM SQL 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 gii ROUND(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 n FLOOR(n) Cho s nguyn ln nht bng hoc nh hn n POWER(m,n) Cho ly tha bc n ca m EXP(n) Cho gi tr ca en SQRT(n) Cho cn bc 2 ca n, n>=0 SIGN(n) Cho du ca n.

    n0 c SIGN(n)= 1

    ABS(n) Cho gi tr tuyt i MOD(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

  • Oracle c bn - SQL v PL/SQL

    COS(n) TAN(n)

    V d hm ROUND(n[,m])

    Cho cosin 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 -12 3000 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

  • Oracle c bn - SQL v PL/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 s dng ton t || Cho chui vi k t u cc t l k t hoa

    Cho chui k t vit thng (khng vit hoa)

    Cho chui k t c chiu di bng n. Nu chui char1 ngn hn n th thm vo bn tri chui char2 cho n k t. Nu chui char1 di hn n th gi li n

    Trang 26

  • Oracle c bn - SQL v PL/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, cc ch cn li l ch thng

    Thay tt c cc chui search_string c trong chui char bng chui replacement_string.

    Ging LPAD(char1, n [,char2]) nhng cn 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 v phi n k t, nu khng ch n th ly cho n cui chui

    Cho chui trong mi k t trong chui from thay bng k t tng ng trong chui to, nhng k t trong chui from khng c tng ng trong chui to s b loi 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 chui char1 bt u t v tr n, ln xut hin th 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

  • Oracle c bn - 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

  • Oracle c bn - SQL v PL/SQL

    RESEARCH 5 2 0 SALES 2 4 0 OPERATIONS 5 0 0

    V d hm LTRIM(char1, n [,char2]) SELECT DNAME, LTRIM(DNAME,A), LTRIM(DNAME,AS), LTRIM(DNAME,ASOP) FROM DEPT;

    DNAME LTRIM(DNAME,'A LTRIM(DNAME,'A LTRIM(DNAME,'A

    ACCOUNTING CCOUNTING CCOUNTING CCOUNTING RESEARCH RESEARCH RESEARCH RESEARCH SALES SALES LES LES OPERATIONS OPERATIONS OPERATIONS ERATIONS

    V d hm RTRIM(char1, n [,char2]) SELECT DNAME, RTRIM(DNAME,A), RTRIM(DNAME,AS), RTRIM(DNAME,ASOP) FROM DEPT;

    DNAME RTRIM(DNAME,'A RTRIM(DNAME,'A RTRIM(DNAME,'A

    ACCOUNTING ACCOUNTING ACCOUNTING ACCOUNTING RESEARCH RESEARCH RESEARCH RESEARCH SALES SALES SALES SALES OPERATIONS OPERATIONS OPERATIONS OPERATIONS

    V d hm SOUNDEX(char) SELECT ENAME, SOUNDEX(ENAME) FROM EMP WHERE SOUNDEX(ENAME)= SOUNDEX(FRED);

    ENAME SOUN

    FORD F630

    V d hm LENGTH(char) SELECT LENGTH(SQL COURSE), LENGTH(DEPTNO), LENGTH(DNAME) FROM DEPT;

    LENGTH('SQLCOURSE') LENGTH(DEPTNO) LENGTH(DNAME)

    10 2 14 10 2 14 10 2 14 10 2 14

    V d hm TRANSLATE(char, from, to) SELECT ENAME, TRANSLATE(ENAME,'C','F'), JOB, TRANSLATE(JOB,'AR','IT') FROM EMP WHERE DEPTNO = 10;

    ENAME TRANSLATE( JOB TRANSLATE

    Trang 29

  • Oracle c bn - SQL v PL/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 SPRTT CLERK 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 tip 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

  • Oracle c bn - SQL v PL/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 EMP WHERE 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 SQL ROUND(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 tin ca thng, ngc li s tr v ngy u tin ca nm sau.

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

    nm cha date1

    Trang 31

  • Oracle c bn - SQL v PL/SQL

    4.2.4. Cc hm chuyn i kiu

    Hm SQL TO_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 tr result 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

  • Oracle c bn - SQL v PL/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 cng nguyn

    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 khi t 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

  • Trang 33

  • Oracle c bn - SQL v PL/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 vn Tc ng trn 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 CLERK Select 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 : Ch c cng t trong mnh SELECT cc hm nhm hoc cc column t trong mnh GROUP BY. V d:

    ng: SELECT MAX(SAL), JOB FROM EMP GROUP BY JOB;

    Trang 34

  • Oracle c bn - SQL v PL/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 BY expr] [HAVING condition] [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 WHERE t 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

  • Oracle c bn - SQL v PL/SQL

    4.4.MT S HM MI B SUNG TRONG Oracle9i 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 lnh SELECT 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 thc SELECT 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 liu

    1. 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

  • Oracle c bn - SQL v PL/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*** **SALESMAN FORD*** ***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

  • Oracle c bn - SQL v PL/SQL

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

    6. Tm thng 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 1981 FORD 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 gia nhp 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-1982 BLAKE 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 dng ENAME 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 li l NO. Kim tra vi cc chui 12/34, 01/1a, 99\88 VALUE VALID?

    Trang 38

  • Oracle c bn - SQL v PL/SQL

    12/34 YES

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

    4.5.2. Hm trn nhm d liu 1. 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. Tm ra 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

  • Oracle c bn - SQL v PL/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 trng ny 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.DEPTNO ORDER 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 trng ny 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 cc bng - 1 = s cc iu kin lin kt

    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 gi tr NULL v . Mt cu lnh select ch t c 1 mi lin kt cng, du (+) t bn phi column lin kt

    Trang 40

  • Oracle c bn - SQL v PL/SQL

    Trong mnh WHERE ca mi lin kt cng khng c dng ton t IN hoc OR ni cc iu kin lin kt 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

  • Oracle c bn - SQL v PL/SQL

    SELECT E.ENAME, D.DNAME FROM EMP E JOIN DEPT D USING (DEPTNO);

    Mnh ON (Ch r tn ct tham gia trong php kt ni) SELECT E.ENAME, D.DNAME FROM EMP E JOIN DEPT D ON (E.DEPTNO = D.DEPTNO);

    Kt ni tri LEFT OUTER JOIN SELECT E.ENAME, D.DNAME

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

    Kt ni tri RIGHT OUTER JOIN SELECT E.ENAME, D.DNAME

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

    Kt ni FULL OUTER JOIN (All records from both tablesIdentical to a union of left outer join and right outer 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 sau ton t MINUS)

    Select job from emp where deptno = 10 Union Select job from emp where deptno = 30;

    JOB

    CLERK MANAGER PRESIDENT SALESMAN

    Trang 42

  • Oracle c bn - SQL v PL/SQL

    5.2.LNH TRUY VN LNG 5.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 EMP HAVING AVG(SAL) > (SELECT AVG(SAL) FROM EMP WHERE DEPTNO =30) GROUP BY DEPTNO;

    DEPTNO AVG(SAL)

    10 2916.66667 20 2175

    5.2.2. 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 v ca 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 ca cu 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

  • Oracle c bn - SQL v PL/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 Parent node: 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 1600 3 30 7844 TURNER SALESMAN 1500 3 30 7900 JAMES CLERK 950 3 30 7521 WARD SALESMAN 1250 2 10 7782 CLARK MANAGER 2450 3 10 7934 MILLER CLERK 1300 2 20 7566 JONES MANAGER 2975 3 20 7902 FORD ANALYST 3000 4 20 7369 SMITH CLERK 800 3 20 7788 SCOTT SALEMAN 3300 4 20 7876 ADAMS CLERK 1100

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

    C php: SELECT [DISTINCT/ALL] [expr [c_ias]]

    FROM [table/view/snapshot] [t_alias] [WHERE condition] [START WITH condition CONNECT BY PRIOR condition] [GROUP BY expr] [HAVING condition] [UNION/UNION ALL/INTERSET/MINUS select command]

    Trang 44

  • Oracle c bn - SQL v PL/SQL

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

    START WITH c t im u ca hnh cy. Khng th column gi 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 hnh cy hng ln. Nu prior xut hin trc empno, empno s c tm trc sau n empno, y l hnh cy hng xung.

    V d: SELECT LEVEL, DEPTNO, EMPNO, ENAME, JOB, SAL

    FROM EMP CONNECT BY PRIOR MGR = EMPNO START WITH empno = 7876;

    LEVEL DEPTNO EMPNO ENAME JOB SAL

    1 20 7876 ADAMS CLERK 1100 2 20 7788 SCOTT SALEMAN 3300 3 20 7566 JONES MANAGER 2975 4 10 7839 KING PRESIDENT 5000

    5.3.3. 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 ton b nhnh ca row b loi tr. V d 1:

    SELECT LEVEL, DEPTNO, EMPNO, ENAME, JOB, SAL FROM EMP WHERE ENAME != SCOTT CONNECT BY PRIOR EMPNO = MGR START WITH MGR IS NULL;

    LEVEL DEPTNO EMPNO ENAME JOB SAL

    1 10 7839 KING PRESIDENT 5000 2 30 7698 BLAKE MANAGER 2850 3 30 7654 MARTIN SALESMAN 1250 3 30 7499 ALLEN SALESMAN 1600 3 30 7844 TURNER SALESMAN 1500 3 30 7900 JAMES CLERK 950 3 30 7521 WARD SALESMAN 1250 2 10 7782 CLARK MANAGER 2450 3 10 7934 MILLER CLERK 1300 2 20 7566 JONES MANAGER 2975 3 20 7902 FORD ANALYST 3000 4 20 7369 SMITH CLERK 800 4 20 7876 ADAMS CLERK 1100

    V d 2: SELECT LEVEL, DEPTNO, EMPNO, ENAME, JOB, SAL

    FROM EMP CONNECT BY PRIOR EMPNO = MGR AND ENAME != SCOTT

    Trang 45

  • Oracle c bn - SQL v PL/SQL

    START WITH MGR IS NULL;

    LEVEL DEPTNO EMPNO ENAME JOB SAL

    1 10 7839 KING PRESIDENT 5000 2 30 7698 BLAKE MANAGER 2850 3 30 7654 MARTIN SALESMAN 1250 3 30 7499 ALLEN SALESMAN 1600 3 30 7844 TURNER SALESMAN 1500 3 30 7900 JAMES CLERK 950 3 30 7521 WARD SALESMAN 1250 2 10 7782 CLARK MANAGER 2450 3 10 7934 MILLER CLERK 1300 2 20 7566 JONES MANAGER 2975 3 20 7902 FORD ANALYST 3000 4 20 7369 SMITH CLERK 800

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

    ban.

    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 4 KING PRESIDENT 5000 5

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

    ALLEN SALESMAN 1600 3 TURNER SALESMAN 1500 3

    Trang 46

  • Oracle c bn - SQL v PL/SQL

    5. Hin th nhng nhn vin ti DALLAS ENAME 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 nhn vin 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 RESEARCH SCOTT 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 l EMP_NAME EMP_SAL MGR_NAME MGR_SAL

    BLAKE 2850 KING 5000 CLARK 2450 KING 5000 JONES 2975 KING 5000 MARTIN 1250 BLAKE 2850 ALLEN 1600 BLAKE 2850 TURNER 1500 BLAKE 2850 JAMES 950 BLAKE 2850 WARD 1250 BLAKE 2850 FORD 3000 JONES 2975 SMITH 800 FORD 3000 SCOTT 3000 JONES 2975 ADAMS 1100 SCOTT 3000 MILLER 1300 CLARK 2450

    Trang 47

  • Oracle c bn - SQL v PL/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 2850 ALLEN 1600 BLAKE 2850 TURNER 1500 BLAKE 2850 JAMES 950 BLAKE 2850 WARD 1250 BLAKE 2850 FORD 3000 JONES 2975 SMITH 800 FORD 3000 SCOTT 3000 JONES 2975 ADAMS 1100 SCOTT 3000 MILLER 1300 CLARK 2450

    11. Hin th ngh nghip c tuyn dng vo nm 1981 v khng c tuyn dng vo nm 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 c v 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 2850 CLARK 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 3000 CLERK 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

  • Oracle c bn - SQL v PL/SQL

    SCOTT SALEMAN 20 3300 BLAKE MANAGER 30 2850

    16. Tm nhn vin gia nhp vo phng ban sm nht ENAME 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 lm vic.

    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 lm vic 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 4 7369 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

  • Oracle c bn - SQL v PL/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, job From 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 emp WHERE &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

  • Oracle c bn - SQL v PL/SQL

    6.3.LNH ACCEPT 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 ty

    nm trong khong hai bin runtime c nhp vo t bn phm (&first_date, &last_date).

    2. Hin th tn nhn vin, ngh nghip, lng, m gim c, m phng ban vi iu kin 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. Dng bin ny tm nhng 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 qung thi gian nhn vin lm vic vi iu kin nhn vin l mt bin c nhp vo t bn phm.

    ENAME LENGTH OF SERVICE

    KING 19 YEAR 4 MONTHS

    Trang 51

  • Oracle c bn - SQL v PL/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 to column 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 khi to; 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, 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)) PCTFREE 5 PCTUSED 75

    V du 2: CREATE TABLE SALGRADE1

    Trang 52

  • Oracle c bn - SQL v PL/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 cc table li nu c th. Ch nh cc thng s pcfree v pctused C th ch nh 2 thng s initstran, maxtrans C th ch nh 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 instrans table 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

  • Oracle c bn - SQL v PL/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+C A = Tng chiu di ca cc ct 250 byte C = 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 block Block = 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 Object

    Tn di 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 t

    Tn 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 Oracle (xemphu lc 1) Tn khng c cch khong trng Tn c th 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 ch hoa ch thng.

    Tn phi duy nht trong "khng gian tn" nht nh. Cc object thuc cng khng gian 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 cc thnh 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 vy khng 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 chung khi 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

  • Oracle c bn - SQL v PL/SQL

    schema Schema cha object part Thnh phn ca object dblink 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 object trong khng gian tn. Sau khi xc nh cc object, Oracle thc hin cc thao tc m cu lnh quy nh trn object. Nu tn object truy cp khng thuc khng gian tn th cu lnh khng c thc hin v c thng bo 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 view ng 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 mun truy 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 cha object mun truy cp. Database link l mt schema object, Oracle dng thm nhp v truy xut CSDL t xa.

    7.3.Cc Kiu d liu c bn 7.3.1. Kiu CHAR Kiu CHAR dng khai bo mt chui c chiu di c nh, khi khai bo bin hoc ct kiu CHAR vi chiu di ch nh th tt c cc mc tin ca bin hay ct ny u c cng chiu di c ch nh. Cc mc tin ngn hn Oracle s t ng thm vo cc khong trng cho chiu di. Oracle khng cho php gn mc tin 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 VARCHAR2 dng khai bo chui k t vi chiu di thay i. Khi khai bo mt bin hoc ct kiu VARCHAR2 phi ch ra chiu di ti a, cc mc tin cha trong bin hay ct kiu VARCHAR2 c chiu di thc s l chiu di ca mc tin. Oracle khng cho php gn

    Trang 55

  • Oracle c bn - SQL v PL/SQL

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

    7.3.3. Kiu VARCHAR Hin ti Oracle xem kiu VARCHAR2 v VARCHAR l nh nhau, tuy nhin Oracle khuyn nn dng VARCHAR2. Oracle 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 khc nhau.

    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 1

    n 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 v scale bng 0

    NUMBER S vi du chm ng vi precision bng 38. Nh rng scale 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 v scale khc nhau.

    D liu thc Kiu Gi tr lu tr 7456123.89 NUMBER 7456123.89 7456123.89 NUMBER(9) 7456123 7456123.89 NUMBER(9,2) 7456123.89 7456123.89 NUMBER(9,1) 7456123.8 7456123.89 NUMBER(6) Khng hp l 7456123.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. Kiu LONG thng c dng cha cc vn bn. C mt s hn ch khi dng kiu LONG

    Trang 56

  • Oracle c bn - SQL v PL/SQL

    Mt table khng th cha nhiu hn mt ct kiu LONG D liu kiu LONG khng th tham gia vo cc rng buc ton vn, ngoi tr kim tra

    NULL 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 cu lnh SQL c truy cp cc ct kiu LONG, th vic cp nht hoc kha cc

    bng ch cho php trong cng mt CSDL

    Ngoi ra, cc ct kiu LONG khng c tham gia trong cc thnh phn sau ca cu lnh SQL

    Cc mnh WHERE, GROUP BY, ORDER BY, CONNECT BY hoc vi tc t DISTINCT 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 BY Trong 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 CHAR v NUMBER. Vi gi tr kiu DATE, nhng thng tin c lu tr gm th k, nm, thng, ngy, gi, pht, giy. Oracle khng cho php gn gi tr kiu ngy trc tip, gn gi tr kiu ngy, bn phi dng TO_DATE chuyn gi 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 tr kiu ngy m khng ch ra ngy, th ngy mc nh l ngy u ca thng. Hm SYSDATE cho bit ngy v thi 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 tun SYSDATE+(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

  • Oracle c bn - SQL v PL/SQL

    7.3.8. Kiu RAW v kiu LONG RAW Kiu RAW v LONG RAW dng cha cc chui byte, cc d liu nh phn nh hnh nh, m thanh. Cc d liu 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 t ng chuyn i cc gi tr kiu CHAR, VARCHAR2 v LONG gia tp hp k t ca CSDL v tp k t ca cc 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 row row Chui h hexa cho bit row trong block file 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 nh phn m Oracle dng m bo hot ng ca bn thn h thng.

    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 php chuyn 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 tr cho ct c kiu khc, Oracle s t ng chuyn gi tr sang kiu ca ct.

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

    Khi s dng ton t so snh m cc gi tr c cc kiu khc nhau, Oracle s t ng chuyn 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

  • Oracle c bn - SQL v PL/SQL

    Oracle t ng chuyn chui '00002514.0001.0001' sang kiu ROWID trong php so snh

    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/NOT NULL UNIQUE PRIMARY KEY FOREIGN KEY (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 NULL, 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), tuy nhin kho l dng kho UNIQUE cp cao nht. Mt table ch c th c mt PRIMARY KEY. Cc gi tr trong PRIMARY KEY phi NOT NULL.

    Trang 59

  • Oracle c bn - SQL v PL/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 ra mi lin h cha-con v ch rng buc gia FOREIGN KEY bng ny vi PRIMARY KEY hoc UNIQUE Key ca bng khc. V d quan h gia DEPT v EMP thng qua trng DEPTNO. T kho ON DELETE CASCADE c h nh trong dng kho ny ch khi d liu cha b xo (trong bng 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 column DROP B constraint. ENABLE/DISABLE Che khut hoc a vo s dng cc CONSTRAINT m

    khng xa hn Ch :

    Trang 60

  • Oracle c bn - SQL v PL/SQL

    Kh dng mnh MODIFY khng th chuyn tnh cht ca COLUMN c ni dung l NULL chuyn thnh NOT NULL;

    Khng th 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 quan n 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 Cc giao dch cha gii quyt xong s c commit Ch ngi to ra table hay DBA mi c th xa table

    7.5.3. Ch dn cho table Dng lnh COMMENT ch thch. V d:

    Trang 61

  • Oracle c bn - SQL v PL/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 c new 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 liu Oracle 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 user SYS. Cc view trong t 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

  • Oracle c bn - SQL v PL/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 TP 1. 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 ct PROJID 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. Thm column COMMENTS kiu LONG vo bng PROJECTS. Thm column HOURS kiu NUMBER vo bng ASSIGNMENTS.

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

    5. Thm rng buc duy nht (UNIQUE) cho 2 column PROJECT_ID v EMPNO ca bng ASSIGNMENTS.

    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

  • Oracle c bn - SQL v PL/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 kho DEFALT V d:

    INSERT INTO EMP (EMPNO, ENAME, DEPTNO) VALUES (8000,MIKE,DEFAULT);

    Oracle 9i cn cho php thc hin lnh INSERT trn ng thi nhiu table khc nhau, ch s dng mt cu lnh 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

  • Oracle c bn - SQL v PL/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 lng mi nhn vin bng lng trung bnh ca b phn * 1.1 - Thay commission ca mi 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 nng va 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

  • Oracle c bn - SQL v PL/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 (C1,C2, ...) VALUES (C1,C2,

    ...); 8.1.4. Xa dng d liu xa dng dng lnh DELETE. C php:

    DELETE FROM table [WHERE condition] V d:

    DELETE FROM emp WHERE deptno = 10;

    8.1.5. Li rng buc d liu Thng thng khi thc hin cc lnh thao tc d liu hay gp phi cc li rng buc ton vn d liu. Cc li ny xut hin khi c cc rng buc trc m d liu nhp vo, chnh sa hay khi xo i khng m bo cc iu kin ton vn. M li: ORA_02292: INTEGRITY CONSTRAINT. Sau bo tn ca Constraint b li.

    8.2.LNH IU KHIN GIAO DCH Mt cu lnh SQL c th gm

    Lnh DML thao tc d liu Lnh DDL nh ngha d liu Lnh DCL iu khin truy nhp d liu

    Mt giao dch bt u khi mt lnh SQL c thc hin Mt giao

    dch kt thc mt trong cc trng hp sau:

    COMMIT hoc ROLLBACK Cc lnh DDL v DCL thc hin (t ng commit) Li, thot khi SQL*Plus, h thng b down.

    C php:

    Kt thc giao dch hin ti, thc hin cc chuyn i d liu COMMIT

    Xc nh im savepoint ca giao dch SAVEPOINT name

    Quay li d liu im SAVEPOINT hoc ton b giao dch. ROLLBACK [TO SAVEPOINT name]

    Trang 66

  • Oracle c bn - SQL v PL/SQL

    T ng COMMIT khi thc hin cc lnh Insert, update, delete. SET AUTO[COMMIT] ON/OFF

    V d: INSERT INTO DEPT VALUES (50,TESTING,LAS VEGAS);

    SAVEPOINT INSERT_DONE;

    UPDATE DEPT SET DNAME = MARKETING;

    ROLLBACK TO INSERT_DONE ;

    UPDATE DEPT SET DNAME = MARKETING WHERE DNAME =SALES;

    COMMIT;

    8.3.BI TP 1. Thm d liu vo bng PROJECTS.

    PROJID 1 2 P_DESC WRITE C030 COURSE PROOF READ NOTES P_START_DATE 02-JAN-88 01-JAN-89 P_END_DATE 07-JAN-88 10-JAN-89 BUDGET_AMOUNT 500 600 MAX_NO_STAFF 1 1

    2. Thm d liu vo bng ASSIGNMENTS. PROJID 1 1 2 EMPNO 7369 7902 7844 A_START_DATE 01-JAN-88 04-JAN-88 01-JAN-89 A_END_DATE 03-JAN-88 07-JAN-88 10-JAN-89 BILL_RATE 50.00 55.00 45.50 ASSIGN_TYPE WR WR PF HOURS 15 20 30

    3. Cp nht trng ASIGNMENT_TYPE t WT thnh WR.

    4. Nhp thm s liu vo bng ASSIGNMENTS.

    Trang 67

  • Oracle c bn - SQL v PL/SQL

    Chng 9. SEQUENCE V INDEX

    9.1.SEQUENCE 9.1.1. To Sequence Sequence l danh sch tun t ca con s, v c to bi Oracle sever. Sequence dng