SlideShare une entreprise Scribd logo
1  sur  78
Télécharger pour lire hors ligne
www.nhipsongcongnghe.net
C«ng ty cæ phÇn ®Çu t− ph¸t triÓn c«ng nghÖ - FPT
Gi¸o tr×nh SQL vµ PL/SQL
§µo t¹o c¬ b¶n: SQL vµ PL/SQL Trang 2
C«ng ty cæ phÇn ®Çu t− ph¸t triÓn c«ng nghÖ - Fpt
Hµ Néi, th¸ng 11 n¨m 2002.
§µo t¹o Oracle c¬ b¶n
Gi¸o tr×nh SQL vµ PL/SQL
C«ng ty cæ phÇn ®Çu t− ph¸t triÓn c«ng nghÖ - FPT
Gi¸o tr×nh SQL vµ PL/SQL
§µo t¹o c¬ b¶n: SQL vµ PL/SQL Trang 3
Môc lôc
Môc lôc .................................................................................................................................................3
1 Giíi thiÖu.......................................................................................................................................6
1.1 Môc tiªu kho¸ häc ..............................................................................................................................6
1.2 Khëi ®éng vµ tho¸t khái Oracle.........................................................................................................6
1.2.1 T¹i Server (Window NT) .........................................................................................6
1.2.2 T¹i Client (Window 9x)............................................................................................6
1.3 Giíi thiÖu ng«n ng÷ SQL ...................................................................................................................7
1.3.1 LÞch sö ph¸t triÓn cña ng«n ng÷ SQL .....................................................................7
1.3.2 ChuÈn SQL .............................................................................................................7
1.4 C¸c kh¸i niÖm trong CSDL.................................................................................................................7
1.5 Danh s¸ch rót gän c¸c ®èi t−îng CSDL ...........................................................................................8
1.6 C¸c lÖnh SQL ......................................................................................................................................8
1.7 Giíi thiÖu vÒ vÝ dô thùc hµnh.............................................................................................................9
1.7.1 M« h×nh quan hÖ d÷ liÖu..........................................................................................9
1.7.2 M« t¶ d÷ liÖu............................................................................................................9
2 LÖnh truy vÊn c¬ b¶n ...........................................................................................................10
2.1 LÖnh truy vÊn c¬ b¶n........................................................................................................................10
2.2 C¸c thµnh phÇn kh¸c cña mÖnh ®Ò SELECT..................................................................................10
2.3 Gi¸ trÞ Null..........................................................................................................................................11
2.4 Läc d÷ liÖu tõ c¸c row cã cïng gi¸ trÞ.............................................................................................11
2.5 HiÓn thÞ cÊu tróc b¶ng......................................................................................................................12
2.6 C¸c lÖnh cña c«ng cô SQL*Plus......................................................................................................12
2.6.1 C¸c lÖnh so¹n th¶o ...............................................................................................12
2.6.2 C¸c lÖnh vÒ file......................................................................................................13
2.6.3 C¸c lÖnh vÒ column...............................................................................................13
2.7 Bµi tËp................................................................................................................................................14
3 Truy vÊn d÷ liÖu cã ®iÒu kiÖn ............................................................................................16
3.1 MÖnh ®Ò ORDER BY .........................................................................................................................16
3.2 MÖnh ®Ò WHERE...............................................................................................................................16
3.3 C¸c to¸n tö ........................................................................................................................................17
3.4 Bµi tËp................................................................................................................................................19
4 C¸c hµm ¸p dông cho 1 dßng d÷ liÖu..............................................................................20
4.1 C¸c hµm sè........................................................................................................................................20
4.2 C¸c hµm ký tù ...................................................................................................................................22
4.3 C¸c hµm ngµy ...................................................................................................................................26
4.4 C¸c hµm chuyÓn ®æi kiÓu.................................................................................................................28
4.5 Bµi tËp................................................................................................................................................29
5 BiÕn runtime..............................................................................................................................31
5.1 Bµi tËp................................................................................................................................................32
6 C¸c hµm nhãm ¸p dông cho lín h¬n hoÆc b»ng 1 dßng d÷ liÖu ........................32
6.1 C¸c hµm t¸c ®éng trªn nhãm ..........................................................................................................32
6.2 MÖnh ®Ò GROUP BY.........................................................................................................................34
6.3 Bµi tËp................................................................................................................................................35
7 HiÓn thÞ néi dung d÷ liÖu tõ nhiÒu b¶ng........................................................................35
7.1 Mèi liªn kÕt t−¬ng ®−¬ng .................................................................................................................35
C«ng ty cæ phÇn ®Çu t− ph¸t triÓn c«ng nghÖ - FPT
Gi¸o tr×nh SQL vµ PL/SQL
§µo t¹o c¬ b¶n: SQL vµ PL/SQL Trang 4
7.2 Mèi liªn kÕt kh«ng t−¬ng ®−¬ng......................................................................................................35
7.3 Mèi liªn kÕt céng...............................................................................................................................36
7.4 Liªn kÕt cña b¶ng víi chÝnh nã .......................................................................................................36
7.5 C¸c to¸n tö tËp hîp ..........................................................................................................................36
7.6 Bµi tËp................................................................................................................................................37
8 C¸c lÖnh truy vÊn lång nhau...........................................................................................39
8.1 C©u lÖnh SELECT lång nhau. ..........................................................................................................39
8.2 Bµi tËp................................................................................................................................................40
9 CÊu tróc h×nh c©y...................................................................................................................40
9.1 CÊu tróc h×nh c©y trong 1 table .......................................................................................................40
9.2 Kü thuËt thùc hiÖn ............................................................................................................................41
9.3 Bµi tËp................................................................................................................................................42
10 Tæng kÕt vÒ lÖnh select .....................................................................................................44
11 T¹o table ...................................................................................................................................44
11.1 LÖnh t¹o b¶ng ...................................................................................................................................44
11.2 C¸c quy t¾c ®Æt tªn object ...............................................................................................................46
11.3 C¸c quy t¾c khi tham chiÕu ®Õn object...........................................................................................47
11.4 KiÓu d÷ liÖu vµ ®iÒu kiÖn..................................................................................................................47
11.4.1 CHAR ....................................................................................................................47
11.4.2 VARCHAR2...........................................................................................................48
11.4.3 VARCHAR.............................................................................................................48
11.4.4 NUMBER...............................................................................................................48
11.4.5 FLOAT...................................................................................................................48
11.4.6 LONG ....................................................................................................................49
11.4.7 DATE.....................................................................................................................49
11.4.8 RAW vµ LONG RAW ............................................................................................50
11.4.9 ROWID..................................................................................................................50
11.4.10 MLSLABEL............................................................................................................50
11.4.11 ChuyÓn ®æi kiÓu ....................................................................................................50
11.5 Constraint..........................................................................................................................................51
11.6 Bµi tËp................................................................................................................................................52
12 c¸c lÖnh DDL kh¸c vµ d÷ liÖu trong tõ ®iÓn d÷ liÖu...............................................52
12.1 ChØnh söa cÊu tróc table ..................................................................................................................52
12.2 C¸c lÖnh DDL kh¸c ...........................................................................................................................53
12.2.1 Xãa table ...............................................................................................................53
12.2.2 Gi¶i thÝch b¶ng ......................................................................................................53
12.2.3 Thay ®æi tªn object................................................................................................53
12.2.4 Xãa d÷ liÖu cña table.............................................................................................53
12.3 D÷ liÖu trong tõ ®iÓn d÷ liÖu ............................................................................................................54
12.4 Bµi tËp................................................................................................................................................54
13 C¸c lÖnh Thao t¸c d÷ liÖu kh¸c ......................................................................................55
13.1 ChÌn mét row vµo table ...................................................................................................................55
13.2 ChØnh söa d÷ liÖu..............................................................................................................................55
13.3 Xãa dßng ...........................................................................................................................................55
13.4 Lçi rµng buéc d÷ liÖu .......................................................................................................................56
13.5 LÖnh ®iÒu khiÓn giao dÞch................................................................................................................56
13.6 Bµi tËp................................................................................................................................................57
14 Sequence vµ index..................................................................................................................57
C«ng ty cæ phÇn ®Çu t− ph¸t triÓn c«ng nghÖ - FPT
Gi¸o tr×nh SQL vµ PL/SQL
§µo t¹o c¬ b¶n: SQL vµ PL/SQL Trang 5
14.1 Sequence...........................................................................................................................................57
14.1.1 T¹o Sequence.......................................................................................................57
14.1.2 Xo¸ vµ söa sequence ...........................................................................................58
14.2 Index ..................................................................................................................................................58
14.3 Bµi tËp................................................................................................................................................59
15 T¹o view ......................................................................................................................................59
15.1 View....................................................................................................................................................59
15.2 Bµi tËp................................................................................................................................................61
16 QuyÒn vµ b¶o mËt ...................................................................................................................61
16.1 QuyÒn - PRIVILEGE ..........................................................................................................................61
16.2 ROLE..................................................................................................................................................62
16.3 Synonym............................................................................................................................................63
17 tæng quan vÒ pl/sql vµ procedure builder...............................................................63
17.1 Có ph¸p lÖnh PL/SQL.......................................................................................................................63
17.2 PL/SQL block ....................................................................................................................................63
17.3 Giíi thiÖu Procedure builder............................................................................................................64
18 có ph¸p lËp tr×nh ...................................................................................................................66
18.1 IF ........................................................................................................................................................66
18.2 LOOP vµ EXIT....................................................................................................................................66
18.3 FOR....................................................................................................................................................67
18.4 WHILE................................................................................................................................................67
18.5 GOTO.................................................................................................................................................67
19 cursor ........................................................................................................................................68
19.1 §Þnh nghÜa .........................................................................................................................................68
19.2 KiÓu d÷ liÖu Table vµ Record...........................................................................................................69
19.3 Sao kiÓu d÷ liÖu ................................................................................................................................70
19.4 C©u lÖnh SELECT... INTO... trong PL/SQL......................................................................................70
19.5 Bµi tËp................................................................................................................................................70
20 procedure vµ funtion..........................................................................................................71
20.1 Procedure..........................................................................................................................................71
20.2 Function.............................................................................................................................................72
20.3 Bµi tËp................................................................................................................................................73
21 pakage.........................................................................................................................................73
21.1 Package .............................................................................................................................................73
22 database trigger ..................................................................................................................74
22.1 Database Trigger...............................................................................................................................74
22.2 Bµi tËp................................................................................................................................................75
23 error handing.........................................................................................................................76
23.1 Bµi tËp................................................................................................................................................78
C«ng ty cæ phÇn ®Çu t− ph¸t triÓn c«ng nghÖ - FPT
Gi¸o tr×nh SQL vµ PL/SQL
§µo t¹o c¬ b¶n: SQL vµ PL/SQL Trang 6
1 Giíi thiÖu
1.1 Môc tiªu kho¸ häc
KÕt thóc kho¸ häc häc viªn ph¶i n¾m ®−îc
• HiÓu ®−îc ph−¬ng ph¸p, c¸c thµnh phÇn, thuËt ng÷ vµ thao t¸c trong CSDL quan hÖ
• T¹o ®−îc c¸c cÊu tróc d÷ liÖu nh− table, view dïng SQL
• Ghi, ®äc, vµ cËp nhËt d÷ liÖu trong CSDL
• X©y dùng c¸c PL/SQL block dïng Procedure Builder
1.2 Khëi ®éng vµ tho¸t khái Oracle
1.2.1 T¹i Server (Window NT)
SQLDBA cung cÊp c¸c dÞch vô qu¶n trÞ hÖ thèng, nh−: t¹o lËp CSDL, më - ®ãng CSDL, t¹o vµ qu¶n lý c¸c
USER ... C¸c b−íc ®Ó khëi ®éng t¹i Server nh− sau:
• Khëi ®éng m¸y chñ
• BËt dÞch vô OracleServiceXXX (trong ®ã XXX lµ tªn cña CSDL) b»ng c¸ch nhÊn vµo Start -> Program -
> Service -> OracleServiceXXX -> NhÊn chuét ph¶i -> NhÊn Start. Chó ý chØ bËt dÞch vô nµy khi ng−êi
cµi ®Æt kh«ng ®Ó chÕ ®é tù ®éng hay khi dÞch vô nµy ch−a ®−îc bËt.
• BËt dÞch vô OracleXXXTNSLÝstener (trong ®ã XXX lµ tªn cña Database Home) b»ng c¸ch nhÊn vµo
Start -> Program -> Service -> OracleXXXTNSLÝstener -> NhÊn chuét ph¶i -> NhÊn Start. Chó ý chØ bËt
dÞch vô nµy khi ng−êi cµi ®Æt kh«ng ®Ó chÕ ®é tù ®éng hay khi dÞch vô nµy ch−a ®−îc bËt.
• Khi bËt xong CSDL ®· s½n sµng ®Ó lµm viÖc
§Ó ®ãng CSDL cÇn lµm theo c¸c b−íc ng−îc l¹i:
• T¾t dÞch vô OracleXXXTNSLÝstener (trong ®ã XXX lµ tªn cña Database Home) b»ng c¸ch nhÊn vµo
Start -> Program -> Service -> OracleXXXTNSLÝstener -> NhÊn chuét ph¶i -> NhÊn Stop.
• T¾t dÞch vô OracleServiceXXX (trong ®ã XXX lµ tªn cña CSDL) b»ng c¸ch nhÊn vµo Start -> Program -
> Service -> OracleServiceXXX -> NhÊn chuét ph¶i -> NhÊn Stop.
• Shutdown m¸y chñ.
1.2.2 T¹i Client (Window 9x)
C¸c øng dông cña oracle ch¹y trong m«i tr−êng Windows víi giao diÖn graphic, c¸c øng dông th−êng dïng
cã SQL*Plus, Oracle Form, Oracle Report, Oracle Designer ... ViÖc ch¹y c¸c øng dông nµy hoµn toµn gièng
nh− viÖc ch¹y c¸c øng dông th«ng th−êng trong m«i tr−êng windows.
§Ó lµm viÖc víi c¸c øng dông truy cËp CSDL Oracle, ng−êi sö dông (NSD) ph¶i connect vµo CSDL. Cã hai
c¸ch ®Ó connect.
Connect NSD/password, vÝ dô NSD tªn Scott cã password lµ tiger th×
Connect Scott/tiger
Ph¸t lÖnh connect víi tªn NSD, khi ®ã Oracle sÏ hái password
Connect Scott
Enter password: *****
C«ng ty cæ phÇn ®Çu t− ph¸t triÓn c«ng nghÖ - FPT
Gi¸o tr×nh SQL vµ PL/SQL
§µo t¹o c¬ b¶n: SQL vµ PL/SQL Trang 7
NSD cã thÓ lµm viÖc trong ph¹m vi cho phÐp cña m×nh mµ Oracle gäi lµ "khung c¶nh" (Schema) cña NSD.
Mçi khung c¶nh chøa nhiÒu ®èi t−îng c¸c lo¹i, NSD chØ cã thÓ t¸c ®éng lªn c¸c ®èi t−îng trong khung c¶nh
cña m×nh.
Trong c¸c øng dông ®Òu cã chøc n¨ng tho¸t vµ tù ®éng disconnect.
§Ó thùc hµnh phÇn SQL vµ PL/SQL gäi øng dông SQL* Plus.
1.3 Giíi thiÖu ng«n ng÷ SQL
1.3.1 LÞch sö ph¸t triÓn cña ng«n ng÷ SQL
M« h×nh c¬ së d÷ liÖu (CSDL) quan hÖ do E.F Codd ®−a ra vµo ®Çu thËp kû 70, tõ ®ã ®Õn nay nã liªn tôc
ph¸t triÓn trë thµnh m« h×nh CSDL phæ biÕn bËc nhÊt (RDBMS). M« h×nh quan hÖ gåm c¸c thµnh phÇn sau:
• TËp hîp c¸c ®èi t−îng vµ/hoÆc c¸c mèi quan hÖ
• TËp hîp c¸c xö lý t¸c ®éng tíi c¸c quan hÖ
• Rµng buéc d÷ liÖu ®¶m b¶o tÝnh chÝnh x¸c vµ nhÊt qu¸n.
SQL (Structured Query Language, ®äc lµ "sequel") lµ tËp lÖnh truy xuÊt CSDL quan hÖ. Ng«n ng÷ SQL ®−îc
IBM sö dông ®Çu tiªn trong hÖ qu¶n trÞ CSDL System R vµo gi÷a nh÷ng n¨m 70, hÖ ng«n ng÷ SQL ®Çu tiªn
(SEQUEL2) ®−îc IBM c«ng bè vµo th¸ng 11 n¨m 1976. N¨m 1979, tËp ®oµn ORACLE giíi thiÖu th−¬ng
phÈm ®Çu tiªn cña SQL, SQL còng ®−îc cµi ®Æt trong c¸c hÖ qu¶n trÞ CSDL nh− DB2 cña IBM vµ SQL/DS.
Ngµy nay, SQL ®−îc sö dông réng r·i vµ ®uîc xem lµ ng«n ng÷ chuÈn ®Ó truy cËp CSDL quan hÖ.
1.3.2 ChuÈn SQL
N¨m 1989, viÖn tiªu chuÈn quèc gia Hoa kú (ANSI) c«ng nhËn SQL lµ ng«n ng÷ chuÈn ®Ó truy cËp CSDL
quan hÖ trong v¨n b¶n ANSI SQL89.
N¨m 1989, tæ chøc tiªu chuÈn quèc tÕ (ISO) c«ng nhËn SQL ng«n ng÷ chuÈn ®Ó truy cËp CSDL quan hÖ
trong v¨n b¶n ISO 9075-1989.
TÊt c¶ c¸c hÖ qu¶n trÞ CSDL lín trªn thÕ giíi cho phÐp truy cËp b»ng SQL vµ hÇu hÕt theo chuÈn ANSI.
1.4 C¸c kh¸i niÖm trong CSDL
Table lµ cÊu tróc l−u tr÷ c¬ b¶n nhÊt trong CSDL quan hÖ (RDBMS), nã bao gåm 1 hoÆc nhiÒu
column vµ 0 hoÆc nhiÒu row.
Row lµ tæ hîp nh÷ng gi¸ trÞ cña Column trong b¶ng. Mét row cßn cã thÓ ®−îc gäi lµ 1 record.
Column hiÓn thÞ mét lo¹i d÷ liÖu trong b¶ng, vÝ dô tªn phßng ban trong b¶ng phßng ban. Ng−êi ta thÓ
hiÖn nã th«ng qua tªn column vµ gi÷ sè liÖu d−íi c¸c kiÓu vµ kÝch cì nhÊt ®Þnh.
Field lµ giao cña column vµ row. Field chÝnh lµ n¬i chøa d÷ liÖu. NÕu kh«ng cã d÷ liÖu trong field
ng−êi ta nãi field cã gia trÞ lµ null.
Primary Key lµ mét column hoÆc mét tËp c¸c column x¸c ®Þnh tÝnh duy nhÊt cña c¸c row ë trong b¶ng. VÝ dô
m· phßng ban. Primary Key nhÊt thiÕt ph¶i cã sè liÖu.
Foreign Key lµ mét column hoÆc mét tËp c¸c column tham chiÕu tíi chÝnh b¶ng ®ã hoÆc mét b¶ng kh¸c.
Foreign Key x¸c ®Þnh mèi quan hÖ gi÷a c¸c b¶ng.
Constraint lµ c¸c rµng buéc d÷ liÖu, vÝ dô Foreign Key, Primary Key...
C«ng ty cæ phÇn ®Çu t− ph¸t triÓn c«ng nghÖ - FPT
Gi¸o tr×nh SQL vµ PL/SQL
§µo t¹o c¬ b¶n: SQL vµ PL/SQL Trang 8
VÝ dô:
10
CLARK
7782
30
BLAKE
7698
30
MARTIN
7654
20
JONES
7566
30
WARD
7521
30
ALLEN
7499
20
SMITH
7369
DEPTNO
DEPT
EMP
ENAME
EMPNO
OPERATIONS
40
SALES
30
RESEARCH
20
ACCOUNTING
10
DNAME
DEPTNO
DEPT
EMP
Primary key
Foreign key
Column
Row
1.5 Danh s¸ch rót gän c¸c ®èi t−îng CSDL
Table lµ cÊu tróc l−u tr÷ c¬ b¶n nhÊt trong CSDL quan hÖ (RDBMS), gåm row vµ column
View lµ cÊu tróc logic hiÓn thÞ d÷ liÖu tõ 1 hoÆc nhiÒu b¶ng
Sequence kÕt sinh gi¸ trÞ cho c¸c primary key
Index t¨ng tÝnh thùc thi cña c¸u truy vÊn
Synonym tªn t−¬ng ®−¬ng cña ®èi t−îng
Program unit gåm Procedure, function, package...
1.6 C¸c lÖnh SQL
LÖnh M« t¶
SELECT
Lµ lÖnh th«ng dông nhÊt, dïng ®Ó lÊy, xem d÷ liÖu trong CSDL.
INSERT
UPDATE
DELETE
Lµ 3 lÖnh dïng ®Ó nhËp thªm nh÷ng row míi, thay ®æi néi dung d÷ liÖu trªn c¸c row
hay xo¸ c¸c row trong table. Nh÷ng lÖnh nµy ®−îc gäi lµ c¸c lÖnh thao t¸c d÷ liÖu
DML (Data Manipulation Language)
CREATE
ALTER
DROP
RENAME
TRUNCATE
Lµ 3 lÖnh dïng ®Ó thiÕt lËp, thay ®æi hay xo¸ bá cÊu tróc d÷ liÖu nh− lµ table, view,
index. Nh÷ng lÖnh nµy ®−îc gäi lµ c¸c lÖnh ®Þnh nghÜa d÷ liÖu DDL (Data Definition
Language)
COMMIT
ROLLBACK
SAVE POINT
Qu¶n lý viÖc thay ®æi d÷ liÖu b»ng c¸c lÖnh DML. ViÖc thay ®æi d÷ liÖu cã thÓ ®−îc
nhãm l¹i thµnh c¸c transaction.
GRANT
REVOKE
2 lÖnh nµy dïng ®Ó g¸n hoÆc huû c¸c quyÒn truy nhËp vµo CSDL Oracle vµ c¸c cÊu
tróc bªn trong nã. Nh÷ng lÖnh nµy ®−îc gäi lµ c¸c lÖnh ®iÒu khiÓn d÷ liÖu DCL (Data
C«ng ty cæ phÇn ®Çu t− ph¸t triÓn c«ng nghÖ - FPT
Gi¸o tr×nh SQL vµ PL/SQL
§µo t¹o c¬ b¶n: SQL vµ PL/SQL Trang 9
Control Language)
1.7 Giíi thiÖu vÒ vÝ dô thùc hµnh
1.7.1 M« h×nh quan hÖ d÷ liÖu
EMP
DEPT
BONUS
SALGRADE
DUMMY
1.7.2 M« t¶ d÷ liÖu
Tªn KiÓu Kho¸ Gi¶i thÝch
DEPT
DEPTNO NUMBER(2) NOT NULL PK M· phßng ban
DNAME CHAR(14) Tªn phßng ban
LOC CHAR(13) §Þa chØ
SALGRADE
GRADE NUMBER PK Møc l¬ng
LOSAL NUMBER Gi¸ trÞ thÊp
HISAL NUMBER Gi¸ trÞ cao
EMP
EMPNO NUMBER(4) NOT NULL, PK M· nh©n viªn
ENAME CHAR(10), Tªn nh©n viªn
JOB CHAR(9), NghÒ nghiÖp
MGR NUMBER(4) FK (EMP.EMPNO) M· ng−êi qu¶n lý
HIREDATE DATE Ngµy gia nhËp c«ng ty
SAL NUMBER(7,2) L−¬ng
COMM NUMBER(7,2) Th−ëng
DEPTNO NUMBER(2) NOT NULL, FK (DEPT.DEPTNO) M· phßng ban
C«ng ty cæ phÇn ®Çu t− ph¸t triÓn c«ng nghÖ - FPT
Gi¸o tr×nh SQL vµ PL/SQL
§µo t¹o c¬ b¶n: SQL vµ PL/SQL Trang 10
2 LÖnh truy vÊn c¬ b¶n
2.1 LÖnh truy vÊn c¬ b¶n
SELECT [DISTINCT ] {*, column [alias],...}
FROM table;
• SELECT tr¶ lêi c©u hái lÊy d÷ liÖu nµo? (column, biÓu thøc...), trong mÖnh ®Ò SELECT cÇn cã Ýt nhÊt
1 column.
• FROM tr¶ lêi c©u hái lÊy d÷ liÖu ë ®Çu? (table, view...)
• DISTINCT chØ ®Þnh hiÓn thÞ 1 lÇn c¸c d÷ liÖu trïng nhau.
• * thay cho viÖc chØ tªn tÊt c¶ c¸c column
• alias ®−a ra nh·n cña column hiÓn thÞ d÷ liÖu.
Vd:
SELECT * FROM emp;
SELECT empno, ename, deptno, mgr FROM emp;
SELECT DISTINCT job nghenghiep FROM emp;
2.2 C¸c thµnh phÇn kh¸c cña mÖnh ®Ò SELECT
Trong mÖnh ®Ò SELECT cßn cã thÓ ®−a vµo c¸c thµnh phÇn kh¸c:
• BiÓu thøc to¸n häc
• Column alias
• C¸c column ®−îc ghÐp chuçi
• Literal
BiÓu thøc to¸n häc
Trong mÖnh ®Ò SELECT biÓu thøc to¸n häc cã thÓ c¸c gi¸ trÞ (column hoÆc hµng sè), c¸c to¸n tö, c¸c hµm.
C¸c to¸n tö ®−îc dïng lµ (+), (-), (*), (/). §é −u tiªn cña c¸c to¸n tö gièng trong phÇn sè häc. Vd:
SELECT ename, sal *12, comm FROM emp;
SELECT ename, (sal+250)*12 FROM emp;
Column alias
Trong mÖnh ®Ò SELECT, column alias lµ phÇn nh·n hiÓn thÞ cña column khi lÊy sè liÖu ra. Trong column
alias kh«ng ®−îc cã dÊu c¸ch vµ viÕt c¸ch sau tªn column mét dÊu c¸ch. Column alias ®−îc chÊp nhËn cã
dÊu c¸ch khi ®−îc ®Æt trong dÊu nh¸y kÐp (“ “).
Vd: (ANUAL chÝnh lµ column alias)
SELECT ename, SAL*12 ANUAL, comm FROM emp;
C¸c column ®−îc ghÐp chuçi
To¸n tö ghÐp chuçi (||) cho phÐp c¸c column ®−îc nèi víi nhau thµnh d¹ng chuçi. Cã thÓ cã nhiÒu to¸n tö
ghÐp chuçi trong cïng mét column alias. Vd:
SELECT empno||ename EMPLOYEE FROM emp;
SELECT ename || ' co luong la ' || (sal+250)*12 as "mieu ta" FROM emp;
Chuçi ®Æt trong nh¸y ®¬n, bÝ danh ®Æt trong nh¸y kÐp
C«ng ty cæ phÇn ®Çu t− ph¸t triÓn c«ng nghÖ - FPT
Gi¸o tr×nh SQL vµ PL/SQL
§µo t¹o c¬ b¶n: SQL vµ PL/SQL Trang 11
Literal
Trong mÖnh ®Ò SELECT, literal lµ bÊt kú ký tù nµo, biÓu thøc, hay sè nµp mµ kh«ng ph¶i lµ column hoÆc
column alias. Vd:
SELECT empno||ename EMPLOYEE, ‘WORK IN DEPARTMENT’, deptno FROM emp;
2.3 Gi¸ trÞ Null
Cét cã gi¸ trÞ rçng (NULL) lµ cét ch−a ®−îc g¸n gi¸ trÞ, nãi c¸ch kh¸c nã ch−a ®−îc khëi t¹o gi¸ trÞ. C¸c cét
víi bÊt cø kiÓu d÷ liÖu nµo còng cã thÓ cã trÞ NULL, trõ khi ®−îc nã lµ khãa hay cã rµng buéc toµn vÑn NOT
NULL. Trong biÓu thøc cã bÊt kú gi¸ trÞ NULL nµo kÕt qu¶ còng lµ NULL. Vd:
SELECT ename, sal*12 + comm ANUAL_SAL FROM emp;
NULL trong c¸c hµm cña SQL
- Trong c¸c hµm lµm viÖc víi tõng cét hay hµm v« h−íng (scalar function)
C¸c hµm lo¹i nµy tr¶ vÒ trÞ null khi cã tham sè null, trõ hµm NVL vµ TRANSLATE cã thÓ tr¶ vÒ gi¸ trÞ thùc.
Có ph¸p cña hµm NVL
NVL (DATECOLUMN,’01-01-2001’)
NVL(NUMBERCOLUMN, 9)
NVL(CHARCOLUMN,’STRING’)
VÝ dô: NVL(comm,0) tr¶ vÒ trÞ 0 khi comm lµ null
SELECT ename, sal*12 + NVL(comm,0) ANUAL_SAL FROM emp;
- Trong c¸c hµm lµm viÖc víi nhãm c¸c cét (group function)
HÇu hÕt c¸c hµm lµm viÖc trªn nhãm bá qua trÞ null, vÝ dô nh− khi sö dông hµm AVG ®Ó tÝnh trung b×nh cho
mét cét cã c¸c gi¸ trÞ 1000, null, null, null, 2000 khi ®ã trung b×nh ®−îc tÝnh lµ (1000+2000)/2=1500, nh− vËy
trÞ null bÞ bá qua chø kh«ng ph¶i xem lµ trÞ 0.
NULL trong c¸c biÓu thøc so s¸nh, ®iÒu kiÖn
§Ó kiÓm tra cã ph¶i null hay kh«ng dïng c¸c to¸n tö IS NULL hoÆc IS NOT NULL. NÕu trong biÓu thøc so
s¸nh cã trÞ null tham gia vµ kÕt qu¶ cña biÓu thøc phô thuéc vµo trÞ null th× kÕt qu¶ lµ kh«ng x¸c ®Þnh, tuy
nhiªn trong biÓu thøc DECODE, hai gi¸ trÞ null ®−îc xem lµ b»ng nhau trong phÐp so s¸nh.
ORACLE xem c¸c biÓu thøc víi kÕt qu¶ kh«ng x¸c ®Þnh t−¬ng ®−¬ng víi FALSE, vÝ dô comm = NULL cã kÕt
qu¶ kh«ng x¸c ®Þnh vµ do ®ã biÓu thøc so s¸nh xem nh− cho kÕt qu¶ FALSE. Trong c©u lÖnh sau kh«ng cã
mÉu tin nµo ®−îc chän
SELECT * FROM emp WHERE comm=NULL;
NÕu muèn chän c¸c nh©n viªn cã comm lµ NULL th× ph¶i dïng to¸n tö IS NULL
SELECT * FROM emp WHERE comm IS NULL;
2.4 Läc d÷ liÖu tõ c¸c row cã cïng gi¸ trÞ
Mét c©u lÖnh truy vÊn cã thÓ tr¶ vÒ c¸c row cã cïng gÝa trÞ. Vd:
SELECT JOB FROM EMP;
SELECT DEPTNO FROM EMP;
SELECT JOB, DEPTNO FROM EMP;
C«ng ty cæ phÇn ®Çu t− ph¸t triÓn c«ng nghÖ - FPT
Gi¸o tr×nh SQL vµ PL/SQL
§µo t¹o c¬ b¶n: SQL vµ PL/SQL Trang 12
§Ó läc lÊy mét gi¸ trÞ duy nhÊt ng−êi ta dïng mÖnh ®Ò DISTINCT. MÖnh ®Ò nµy ph¶i ®−îc ®Æt tr−íc tÊt c¶
c¸c column, sau mÖnh ®Ò SELECT. Vd:
SELECT DISTINCT JOB FROM EMP;
SELECT DISTINCT DEPTNO FROM EMP;
SELECT DISTINCT JOB, DEPTNO FROM EMP;
2.5 HiÓn thÞ cÊu tróc b¶ng
Có ph¸p
DESC[RIBE] table_name
(lÖnh nµy chØ ch¹y ®−îc trªn sqlplus, kh«ng ch¹y ®−îc trªn PL/SQL Develop)
VÝ dô:
DESC emp;
Name Null? Type
------------------------------- -------- ----
EMPNO NOT NULL NUMBER(4)
ENAME VARCHAR2(10)
JOB VARCHAR2(9)
MGR NUMBER(4)
HIREDATE DATE
SAL NUMBER(7,2)
COMM NUMBER(7,2)
DEPTNO NUMBER(2)
KiÓu d÷ liÖu NOT NULL nghÜa lµ column nhÊt ®Þnh ph¶i cã gi¸ trÞ.
2.6 C¸c lÖnh cña c«ng cô SQL*Plus
2.6.1 C¸c lÖnh so¹n th¶o
LÖnh M« t¶
A[PPEND] text §−a thªm ®o¹n text vµo dßng hiÖn t¹i
C[HANGE] /old/new ChuyÓn ®o¹n text cò thµnh ®o¹n text míi trong dßng hiÖn t¹i
C[HANGE] /text/ Xo¸ ®o¹n text trong dßng hiÖn t¹i
CL[EAR] BUFF[ER] Xo¸ tÊt c¶ c¸c dßng trong SQL buffer
DEL Xo¸ dßng hiÖn t¹i
DEL n Xo¸ dßng n
DEL m n Xo¸ dßng tõ m ®Õn n
I[NPUT] Thªm mét sè dßng nhÊt ®Þnh
I[NPUT] text Thªm dßng cã chøa text
L[IST] LiÖt kª toµn bé c¸c dßng trong SQL buffer
L[IST] n LiÖt kª dßng n
L[IST] m n LiÖt kª dßng m ®Õn n
C«ng ty cæ phÇn ®Çu t− ph¸t triÓn c«ng nghÖ - FPT
Gi¸o tr×nh SQL vµ PL/SQL
§µo t¹o c¬ b¶n: SQL vµ PL/SQL Trang 13
R[UN] HiÓn thÞ vµ ch¹y lÖnh trong buffer
N Nhµy ®Õn dßng n
N text Thay dßng n bëi ®o¹n text
0 text ChÌn 1 dßng tr−íc dßng 1
2.6.2 C¸c lÖnh vÒ file
LÖnh M« t¶
SAVE filename [.ext] [REP[LACE]|APP[END]] Ghi néi dung bufer thµnh file. APPEND ®Ó ghi thªm
vµo file. REPLACE ®Ó chÌn lªn néi dung file cò.
GET filename [.ext] Ghi néi dung file vµo buffer. MÆc ®Þnh phÇn ®u«i lµ
.sql
STA[RT] filename [.ext] Ch¹y c¸c lÖnh trong file
@ filename [.ext] Gièng lÖnh Start
ED[IT] So¹n th¶o néi dung bufffer cã tªn lµ afiedt.buf
§Ó ch¹y néi dung buffer dïng lÖnh /
ED[IT] filename [.ext ] So¹n th¶o néi dung file
SPO[OL] filename [.ext ] [OFF|OUT] CÊt kÕt qu¶ hiÓn thÞ trªn mµn h×nh ra file. Vd:
SPOOL result.sql
....
SPOOL OFF
EXIT Tho¸t khái SQL*Plus
2.6.3 C¸c lÖnh vÒ column
Có ph¸p
COLUMN [{column | alias} [option]]
LÖnh M« t¶
CLE[AR] Xo¸ ®Þnh d¹ng cña column
FOR[MAT] format ChuyÓn ®Þnh d¹ng cña cét d÷ liÖu
HEA[DING] text §Æt nh·n co column
JUS[TIFY] align C¸n tr¸i “ left , ph¶i - right, gi÷a - center cho nh·n
NOPRI[NT] Èn column
NUL[L] text HiÓn thÞ text nÕu gi¸ trÞ cña column lµ NULL
PRI[NT} HiÓn thÞ column
C«ng ty cæ phÇn ®Çu t− ph¸t triÓn c«ng nghÖ - FPT
Gi¸o tr×nh SQL vµ PL/SQL
§µo t¹o c¬ b¶n: SQL vµ PL/SQL Trang 14
TRU[NCATED] Xo¸ chuçi t¹i cuèi dßng ®Çu tiªn khi hiÓn thÞ
WRA[PPED] Phñ cuèi chuçi cña dßng tiÕp theo
WOR[D_WAPPED] Gièng WAP nh−ng tõ kh«ng bÞ c¾t
L−u ý: c¸c ®Þnh d¹ng hiÓn thÞ nµy ®−îc l−u vµo bé nhí vµ ¸p dông cho mäi cét cã tªn nh− vËy, dï chóng ë
trong b¶ng nµo
Vd: ChØnh ®Þnh d¹ng vµ nh·n cña column
COLUMN ename HEADING ‘Employee|Name’ FORMAT A15
COLUMN sal JUSTIFY LEFT FORMAT $ 99,990.00
COLUMN hiredate FORMAT A9 NULL ‘ Not hired’
Vd: HiÓn thÞ ®Þnh d¹ng hiÖn t¹i cña column
COLUMN
COLUMN ename
Vd: Xo¸ ®Þnh d¹ng hiÖn t¹i cña column
COLUMN ename CLEAR
CLEAR COLUMN
C¸c lo¹i ®Þnh d¹ng
§Þnh
d¹ng
M« t¶ VÝ dô KÕt qu¶
An HiÓn thÞ dµi nhÊt n ký tù dïng cho c¸c column d¹ng ký tù
hoÆc d¹ng ngµy
9 HiÓn thÞ sè, kh«ng bao gåm sè 0 999999 1234
0 HiÓn thÞ c¶ sè 0 099999 01234
$ HiÓn thi $ $9999 $1234
L HiÓn thÞ ký tù L L9999 L1234
. HiÓn thÞ dÊu thËp ph©n 9999.99 1234.00
, HiÓn thÞ dÊu ph©n chia hµng ngh×n 9,999 1,234
2.7 Bµi tËp
1. Chän toµn bé th«ng tin trong b¶ng SALGRADE
GRADE LOSAL HISAL
---------- ---------- ----------
1 700 1200
2 1201 1400
3 1401 2000
4 2001 3000
5 3001 9999
2. Chän toµn bé th«ng tin trong b¶ng 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
C«ng ty cæ phÇn ®Çu t− ph¸t triÓn c«ng nghÖ - FPT
Gi¸o tr×nh SQL vµ PL/SQL
§µo t¹o c¬ b¶n: SQL vµ PL/SQL Trang 15
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
3. HiÓn thÞ mäi lo¹i nghÒ nghiÖp
JOB
---------
ANALYST
CLERK
MANAGER
PRESIDENT
SALESMAN
4. HiÓn thÞ tªn nh©n viªn vµ thu nhËp trong mét n¨m (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. HiÓn thÞ theo néi dung d−íi ®©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. HiÓn thÞ cÊu tróc b¶ng emp;
7. Thay ®æi nh·n vµ ®Þnh d¹ng hiÓn thÞ cña cét sal vµ hiredate trong b¶ng emp;
C«ng ty cæ phÇn ®Çu t− ph¸t triÓn c«ng nghÖ - FPT
Gi¸o tr×nh SQL vµ PL/SQL
§µo t¹o c¬ b¶n: SQL vµ PL/SQL Trang 16
3 Truy vÊn d÷ liÖu cã ®iÒu kiÖn
3.1 MÖnh ®Ò ORDER BY
Có ph¸p
SELECT [DISTINCT ] {*, column [alias],...}
FROM table;
[WHERE condition]
[ORDER BY expr/position [DESC/ASC]]
MÖnh ®Ò ORDER BY dïng ®Ó s¾p xÕp sè liÖu ®−îc hiÓn thÞ vµ ph¶i ®Æt ë vÞ trÝ sau cïng cña c©u lÖnh truy
vÊn, VÝ dô:
SELECT ENAME, JOB, SAL*12, DEPTNO
FROM EMP
ORDER BY ENAME;
MÖnh ®Ó ORDER BY mÆc ®Þnh s¾p xÕp theo thø tù t¨ng dÇn ASC[ENDING]
• Sè thÊp tr−íc
• Ngµy nhá tr−íc
• Ký tù theo b¶ng ch÷ c¸i
§Ó s¾p xÕp theo thø tù ng−îc l¹i (gi¶m dÇn) ®Æt tõ kho¸ DESC[ENDING] sau column cÇn s¾p thø tù. Vi dô:
SELECT ENAME, JOB, HIREDATE
FROM EMP
ORDER BY HIREDATE DESC ;
Order nhiÒu column
MÖnh ®Ò Order cßn cã thÓ s¾p xÕp nhiÒu column. C¸c column cÇn s¾p xÕp ®−îc viÕt thø tù sau mÖnh ®Ò
ORDER BY vµ c¸ch bëi dÊu phÈy (,). Column nµo gÇn mÖnh ®Ó ORDER BY h¬n cã møc ®é −u tiªn khi s¾p
xÕp cao h¬n. ChØ ®Þnh c¸ch thøc s¾p xÕp ASC/DESC ®−îc viÕt sau column c¸ch bëi mét dÊu c¸ch. VÝ dô:
SELECT DEPTNO, JOB, ENAME, SAL
FROM EMP
ORDER BY DEPTNO, SAL DESC ;
Order gi¸ trÞ NULL
Riªng ®èi víi gi¸ trÞ NULL, nÕu s¾p xÕp theo thø tù ASCENDING sÏ n»m ë c¸c vÞ trÝ cuèi cïng.
Chó ý
Cã thÓ chØ ®Þnh s¾p xÕp theo thø tù c¸c column trong mÖnh ®Ò SELECT. VÝ dô:
SELECT DEPTNO, JOB, ENAME, SAL
FROM EMP
ORDER BY 2;
3.2 MÖnh ®Ò WHERE
Có ph¸p
SELECT [DISTINCT ] {*, column [alias],...}
FROM table;
[WHERE condition (s)]
[ORDER BY expr/position [DESC/ASC]]
C«ng ty cæ phÇn ®Çu t− ph¸t triÓn c«ng nghÖ - FPT
Gi¸o tr×nh SQL vµ PL/SQL
§µo t¹o c¬ b¶n: SQL vµ PL/SQL Trang 17
MÖnh ®Ò WHERE dïng ®Ó ®Æt ®iÒu kiÖn cho toµn bé c©u lÖnh truy vÊn. Trong mÖnh ®Ò WHERE cã thÓ cã
c¸c thµnh phÇn:
• Tªn column
• To¸n tö so s¸nh
• Tªn column, h»ng sè hoÆc danh s¸ch c¸c gi¸ trÞ
VÝ dô:
SELECT DEPTNO, JOB, ENAME, SAL
FROM EMP
WHERE SAL BETWEEN 1000 AND 2000 ;
Truy vÊn d÷ liÖu víi nhiÒu ®iÒu kiÖn
MÖnh ®Ò WHERE cho phÐp ghÐp ®−îc nhiÒu ®iÒu kiÖn th«ng qua c¸c to¸n tö logic AND/OR. To¸n tö AND
yªu cÇu d÷ liÖu ph¶i tho¶ m·n c¶ 2 ®iÒu kiÖn. To¸n tö OR cho phÐp d÷ liÖu tho¶ m·n 1 trong 2 ®iÒu kiÖn. 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.3 C¸c to¸n tö
To¸n tö so s¸nh
• = : To¸n tö b»ng hay t−¬ng ®−¬ng
• !=, ^=, '+, <> : To¸n tö kh¸c hay kh«ng t−¬ng ®−¬ng
• > : To¸n tö lín h¬n
• < : To¸n tö nhá h¬n
• >= : To¸n tö lín h¬n hoÆc b»ng
• <= : To¸n tö nhá h¬n hoÆc b»ng
C¸c to¸n tö logic
• NOT : Phñ ®Þnh mÖnh ®Ò
• AND : yªu cÇu d÷ liÖu ph¶i tho¶ m·n c¶ 2 ®iÒu kiÖn
• OR : cho phÐp d÷ liÖu tho¶ m·n 1 trong 2 ®iÒu kiÖn
C«ng ty cæ phÇn ®Çu t− ph¸t triÓn c«ng nghÖ - FPT
Gi¸o tr×nh SQL vµ PL/SQL
§µo t¹o c¬ b¶n: SQL vµ PL/SQL Trang 18
C¸c to¸n tö cña SQL
• [NOT] BETWEEN x AND y : [Kh«ng] lín h¬n hoÆc b»ng x vµ nhá h¬n hoÆc b»ng y.
• IN (danh s¸ch) : thuéc bÊt kú gi¸ trÞ nµo trong danh s¸ch
• x [NOT] LIKE y : §óng nÕu x [kh«ng] gièng khung mÉu y.
C¸c ký tù dïng trong khu«n mÉu:
DÊu g¹ch d−íi ( _ ) : ChØ mét ký tù bÊt kú
DÊu phÇn tr¨m ( % ) : ChØ mét nhãm ký tù bÊt kú
• IS [NOT] NULL : kiÓm tra gi¸ trÞ rçng
• EXISTS : Tr¶ vÒ TRUE nÕu cã tån t¹i.
[NOT] BETWEEN x AND y
VÝ dô chän nh©n viªn cã l−¬ng n»m trong kho¶ng 2000 vµ 3000
SELECT * FROM emp WHERE sal BETEEN 2000 AND 3000;
IN (danh s¸ch)
Chän nh©n viªn cã l−¬ng b»ng mét trong 2 gi¸ trÞ 1400 hoÆc 3000
SELECT * FROM emp WHERE sal IN (1400, 3000);
T×m tªn phßng ban nÕu phßng ®ã cã nh©n viªn lµm viÖc.
SELECT dname FROM dept WHERE EXISTS
(SELECT * FROM emp WHERE dept.deptno = emp.deptno);
x [NOT] LIKE y
T×m nh©n viªn cã tªn b¾t ®Çu b»ng chuçi SMITH
SELECT * FROM emp WHERE
ename LIKE 'SMITH_';
§Ó chän nh÷ng nh©n viªn cã tªn b¾t ®Çu b»ng 'SM'
SELECT * FROM emp WHERE ename LIKE 'SM%';
§Ó t×m nh÷ng nh©n viªn cã tªn cã chuçi 'A_B'
SELECT ename FROM emp WHERE ename LIKE '%A_B%'; ESCAPE ''
V× ký hiÖu "_" dïng ®Ó ®¹i diÖn cho mét ký tù bÊt kú nªn nÕu kh«ng cã mÖnh ®Ò ESCAPE, c©u lÖnh trªn sÏ
t×m tÊt c¶ c¸c nh©n viªn tªn AAB, ABB, ACB, v.v... (nÕu kh«ng cã mÖnh ®Ò ESCAPE '')
NÕu muèn ký hiÖu "_" mang ý nghÜa nguyªn thñy, tøc lµ kh«ng cßn ®¹i diÖn cho ký tù bÊt kú n÷a, ta ®Æt dÊu
"" tr−íc ký hiÖu. §ång thêi khai b¸o thªm mÖnh ®Ò ESCAPE ""
Ta còng cã thÓ dïng mét ký tù bÊt kú thay cho "". Ch¼ng h¹n mÖnh ®Ò sau cã cïng kÕt qu¶ víi mÖnh ®Ò
trªn
SELECT ename FROM emp WHERE ename LIKE '%A^_B%'; ESCAPE '^'
Ta gäi c¸c ký tù nh− "" hay "^" nãi trªn lµ c¸c ký tù ESCAPE.
IS [NOT] NULL
VÝ du
SELECT * FROM emp WHERE comm IS NULL ;
C«ng ty cæ phÇn ®Çu t− ph¸t triÓn c«ng nghÖ - FPT
Gi¸o tr×nh SQL vµ PL/SQL
§µo t¹o c¬ b¶n: SQL vµ PL/SQL Trang 19
3.4 Bµi tËp
1. Chän nh©n viªn trong b¶ng EMP cã møc l−¬ng tõ 1000 ®Õn 2000 (chän c¸c tr−êng ENAME, DEPTNO,
SAL).
ENAME DEPTNO SAL
---------- ---------- ----------
ALLEN 30 1600
WARD 30 1250
MARTIN 30 1250
TURNER 30 1500
ADAMS 20 1100
MILLER 10 1300
Sal Between 1000 to 2000
2.HiÓn thÞ m· phßng ban, tªn phßng ban, s¾p xÕp theo thø tù tªn phßng ban.
DEPTNO DNAME
------ -----------
10 ACCOUNTING
40 OPERATIONS
20 RESEARCH
30 SALES
Order by dname
3. HiÓn thÞ danh s¸ch nh÷ng nh©n viªn lµm t¹i phßng 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
Where deptno in (10,20) order by ename asc
4. HiÓn thÞ tªn vµ nghÒ nghiÖp nh÷ng nh©n viªn lµm nghÒ th− ký (clerk) t¹i phßng 20.
ENAME JOB
---------- ---------
SMITH CLERK
ADAMS CLERK
Where upper(job)= upper('clerk') and deptno = '20'; (l−u ý vÊn ®Ò ch÷ Hoa-th−êng)
5. HiÓn thÞ tÊt c¶ nh÷ng nh©n viªn mµ tªn cã c¸c ký tù TH vµ LL.
ENAME
----------
SMITH
ALLEN
MILLER
Where ename like “%TH%“ or ename like “%LL%“
6. HiÓn thÞ tªn nh©n viªn, nghÒ nghiÖp, l−¬ng cña nh÷ng nh©n viªn cã gi¸m ®èc qu¶n lý.
ENAME JOB SAL
---------- --------- ----------
SMITH CLERK 800
ALLEN SALESMAN 1600
WARD SALESMAN 1250
JONES MANAGER 2975
C«ng ty cæ phÇn ®Çu t− ph¸t triÓn c«ng nghÖ - FPT
Gi¸o tr×nh SQL vµ PL/SQL
§µo t¹o c¬ b¶n: SQL vµ PL/SQL Trang 20
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. HiÓn thÞ tªn nh©n viªn, m· phßng ban, ngµy gia nhËp c«ng ty sao cho gia nhËp c«ng ty trong n¨m 1983.
ENAME DEPTNO HIREDATE
---------- ---------- ---------
ADAMS 20 12-JAN-83
Where to_char(hiredate) like “%83“
Where hiredate like “%83“
8. HiÓn thÞ tªn nh©n viªn, l−¬ng mét n¨m (ANUAL_SAL ), th−ëng sao cho l−¬ng lín h¬n th−ëng vµ nghÒ
nghiÖp lµ SALEMAN, s¾p theo thø tù l−¬ng gi¶m dÇn vµ tªn t¨ng dÇn.
ANUAL_SAL COMM
---------- ----------
19200 300
18000 0
15000 500
4 C¸c hµm ¸p dông cho 1 dßng d÷ liÖu
4.1 C¸c hµm sè
§Çu vµo vµ ®Çu ra lµ c¸c gi¸ trÞ kiÓu sè
ROUND(n[,m]) cho gi¸ trÞ lµm trßn cña n (®Õn cÊp m, mÆc nhiªn m=0)
TRUNC(n[,m]) cho gi¸ trÞ n lÊy m ch÷ sè tÝnh tõ chÊm thËp ph©n = Format(dl, “99999,00“)
CEIL(n) cho sè nguyªn nhá nhÊt lín h¬n hoÆc b»ng n =
FLOOR(n) cho sè nguyªn lín nhÊt b»ng hoÆc nhá h¬n n =
POWER(m,n) cho lòy thõa bËc n cña m =
EXP(n) cho gi¸ trÞ cña en =
SQRT(n) cho c¨n bËc 2 cña n, n>=0 =
SIGN(n) cho dÊu cña n. =
n<0 cã SIGN(n)= -1
n=0 cã SIGN(n)= 0
n>0 cã SIGN(n)= 1
ABS(n) cho gi¸ trÞ tuyÖt ®èi =
MOD(m,n) cho phÇn d− cña phÐp chia m cho n =
Mét sè hµm kiÓu sè tham kh¶o kh¸c:
LOG(m,n) cho logarit c¬ sè m cña n =
C«ng ty cæ phÇn ®Çu t− ph¸t triÓn c«ng nghÖ - FPT
Gi¸o tr×nh SQL vµ PL/SQL
§µo t¹o c¬ b¶n: SQL vµ PL/SQL Trang 21
SIN(n) cosin cña n (n tÝnh b»ng radian) =
COS(n) cho cosin cña n (n tÝnh b»ng radian) =
TAN(n) cotang cña n (n tÝnh b»ng radian) =
VÝ dô hµm ROUND(n[,m])
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ô hµm 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ô hµm 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ô hµm 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ô hµm 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)
---------- ------------ ------------ -----------
5000 25000000 1.2500E+11 312500000
2450 6002500 1.4706E+10 312500000
1300 1690000 2197000000 312500000
VÝ dô hµm EXP(n)
SELECT EXP(4) FROM DUMMY;
EXP(4)
C«ng ty cæ phÇn ®Çu t− ph¸t triÓn c«ng nghÖ - FPT
Gi¸o tr×nh SQL vµ PL/SQL
§µo t¹o c¬ b¶n: SQL vµ PL/SQL Trang 22
----------
54.59815
VÝ dô hµm 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ô hµm 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 C¸c hµm ký tù
CONCAT(char1, char2) cho kÕt hîp cña 2 chuçi ký tù, t−¬ng tù nh− sö dông to¸n tö ||
INITCAP(char) cho chuçi víi ký tù ®Çu c¸c tõ lµ ký tù hoa
LOWER(char) cho chuçi ký tù viÕt th−êng (kh«ng viÕt hoa)
LPAD(char1, n [,char2]) cho chuçi ký tù cã chiÒu dµi b»ng n. NÕu chuçi char1 ng¾n h¬n n th× thªm vµo
bªn tr¸i chuçi char2 cho ®ñ n ký tù. NÕu chuçi char1 dµi h¬n n th× gi÷ l¹i n ký
tõ tÝnh tõ tr¸i sang
LTRIM(char1, n [,char2]) bá c¸c ký tù trèng bªn tr¸i
NLS_INITCAP(char) cho chuçi víi ký tù ®Çu c¸c tõ lµ ch÷ hoa, c¸c ch÷ cßn l¹i lµ ch÷ th−êng
REPLACE(char,search_string[,replacement_string]) : thay tÊt c¶ c¸c chuçi search_string cã trong chuçi char
b»ng chuçi replacement_string.
RPAD(char1, n [,char2]) Gièng LPAD(char1, n [,char2]) nh−ng c¨n ph¶i
RTRIM(char1, n [,char2]) bá c¸c ký tù trèng bªn ph¶i
SOUNDEX(char) cho chuçi ®ång ©m cña char.
SUBSTR(char, m [,n]) cho chuçi con cña chuçi char lÊy tõ vÞ trÝ m vÕ ph¶i n ký tù, nÕu kh«ng chØ n th×
lÊy cho ®Õn cuèi chuçi
TRANSLATE(char, from, to) cho chuçi trong ®ã mçi ký tù trong chuçi from thay b»ng ký tù t−¬ng øng trong
chuçi to, nh÷ng ký tù trong chuçi from kh«ng cã t−¬ng øng trong chuçi to sÏ bÞ
lo¹i bá.
UPPER(char) cho chuçi ch÷ hoa cña chuçi char
C«ng ty cæ phÇn ®Çu t− ph¸t triÓn c«ng nghÖ - FPT
Gi¸o tr×nh SQL vµ PL/SQL
§µo t¹o c¬ b¶n: SQL vµ PL/SQL Trang 23
ASCII(char) cho ký tù ASCII cña byte ®Çu tiªn cña chuçi char
INSTR(char1, char2 [,n[,m]]) t×m vÞ trÝ chuçi char2 trong chuçi char1 b¾t ®Çu tõ vÞ trÝ n, lÇn xuÊt hiÖn thø m.
LENGTH(char) cho chiÒu dµi cña chuçi char
VÝ dô hµm LOWER(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ô hµm UPPER(char)
SELECT ENAME FROM EMP WHERE ENAME = UPPER(‘Smith’);
ENAME
----------
SMITH
VÝ dô hµm INITCAP(char)
SELECT INITCAP(DNAME), INITCAP(LOC) FROM DEPT;
INITCAP(DNAME) INITCAP(LOC)
-------------- -------------
Accounting New York
Research Dallas
Sales Chicago
Operations Boston
VÝ dô hµm CONCAT(char1, char2)
SELECT CONCAT(ENAME, JOB) JOB FROM EMP WHERE EMPNO = 7900;
JOB
-------------------
JAMES CLERK
VÝ dô hµm 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ô hµm RPAD(char1, n [,char2])
SELECT RPAD(DNAME,20,’*’), RPAD(DNAME,20), RPAD(DEptno,20,’ ’)
FROM DEPT;
C«ng ty cæ phÇn ®Çu t− ph¸t triÓn c«ng nghÖ - FPT
Gi¸o tr×nh SQL vµ PL/SQL
§µo t¹o c¬ b¶n: SQL vµ PL/SQL Trang 24
RPAD(DNAME,20,'*') RPAD(DNAME,20) RPAD(DEPTNO,20,'')
-------------------- -------------------- --------------------
ACCOUNTING ****** ACCOUNTING 10
RESEARCH ****** RESEARCH 20
SALES ****** SALES 30
OPERATIONS ****** OPERATIONS 40
VÝ dô hµm 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ô hµm 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
RESEARCH 5 2 0
SALES 2 4 0
OPERATIONS 5 0 0
VÝ dô hµm 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ô hµm 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ô hµm SOUNDEX(char)
SELECT ENAME, SOUNDEX(ENAME)
FROM EMP
WHERE SOUNDEX(ENAME)= SOUNDEX(‘FRED’);
ENAME SOUN
---------- ----
FORD F630
VÝ dô hµm LENGTH(char)
SELECT LENGTH(‘SQL COURSE’), LENGTH(DEPTNO), LENGTH(DNAME) FROM DEPT;
C«ng ty cæ phÇn ®Çu t− ph¸t triÓn c«ng nghÖ - FPT
Gi¸o tr×nh SQL vµ PL/SQL
§µo t¹o c¬ b¶n: SQL vµ PL/SQL Trang 25
C«ng ty cæ phÇn ®Çu t− ph¸t triÓn c«ng nghÖ - FPT
Gi¸o tr×nh SQL vµ PL/SQL
§µo t¹o c¬ b¶n: SQL vµ PL/SQL Trang 26
LENGTH('SQLCOURSE') LENGTH(DEPTNO) LENGTH(DNAME)
------------------- -------------- -------------
10 2 14
10 2 14
10 2 14
10 2 14
VÝ dô hµm TRANSLATE(char, from, to)
SELECT ENAME, TRANSLATE(ENAME,'C','F'), JOB,
TRANSLATE(JOB,'AR','IT')
FROM EMP
WHERE DEPTNO = 10;
ENAME TRANSLATE( JOB TRANSLATE
---------- ---------- --------- ---------
KING KING PRESIDENT PTESIDENT
CLARK FLARK MANAGER MINIGET
MILLER MILLER CLERK CLETK
VÝ dô hµm 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ô c¸c hµm lång 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.3 C¸c hµm ngµy
MONTH_BETWEEN(d1, d2) cho biÕt sã th¸ng gi÷a ngµy d1 vµ d2.
ADD_MONTHS(d,n) cho ngµy d thªm n th¸ng.
NEXT_DAY(d, char ) cho ngµy tiÕp theo ngµy d cã thø chØ bëi char.
LAST_DAY(d) cho ngµy cuèi cïng trong th¸ng chØ bëi d.
VÝ dô hµm MONTH_BETWEEN(d1, d2)
SELECT MONTHS_BETWEEN( SYSDATE, HIREDATE),
MONTHS_BETWEEN('01-01-2000','05-10-2000')
C«ng ty cæ phÇn ®Çu t− ph¸t triÓn c«ng nghÖ - FPT
Gi¸o tr×nh SQL vµ PL/SQL
§µo t¹o c¬ b¶n: SQL vµ PL/SQL Trang 27
FROM EMP
WHERE MONTHS_BETWEEN( SYSDATE,HIREDATE)>240;
MONTHS_BETWEEN(SYSDATE,HIREDATE) TWEEN('01-01-2000','05-10-2000')
-------------------------------- --------------------------------
241.271055 -9.1290323
241.206539 -9.1290323
243.367829 -9.1290323
VÝ dô hµm 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ô hµm 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ô hµm 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
Mét sè hµm kh¸c cã thÓ ¸p dông cho kiÓu ngµy:
ROUND(date1) tr¶ vÒ ngµy date 1 t¹i thêi ®iÓm gi÷a tr−a 12:00 AM
ROUND(date1,’MONTH’) NÕu date 1 n»m trong nöa th¸ng ®Çu tr¶ vÒ ngµy ®Çu tiªn cña thµng, ng−îc l¹i
sÏ tr¶ vÒ ngµy ®Çu tiªn cña th¸ng sau.
ROUND(date1,’YEAR’) NÕu date 1 n»m trong nöa n¨m ®Çu tr¶ vÒ ngµy ®Çu tiªn cña thµng, ng−îc l¹i
sÏ tr¶ vÒ ngµy ®Çu tiªn cña n¨m sau.
TRUNC(date1, ’MONTH’) Tr¶ vÒ ngµy ®Çu tiªn cña th¸ng chøa date1
TRUNC(date1, ’YEAR’) Tr¶ vÒ ngµy ®Çu tiªn cña n¨m chøa date1
C«ng ty cæ phÇn ®Çu t− ph¸t triÓn c«ng nghÖ - FPT
Gi¸o tr×nh SQL vµ PL/SQL
§µo t¹o c¬ b¶n: SQL vµ PL/SQL Trang 28
4.4 C¸c hµm chuyÓn ®æi kiÓu
TO_CHAR(number|date, ‘fmt’) ChuyÓn kiÓu sè vµ ngµy vÒ kiÓu ký tù.
TO_NUMBER(char) ChuyÓn ký tù cã néi dung sè sang sè
TO_DATE(‘chsr’,’fmt’) ChuyÓn ký tù sang kiÓu ngµy víi ®Þnh d¹ng ®Æt trong fmt.
DECODE(EXPR, SEARCH1, RESULT1, SEARCH2, RESULT2, DEFAULT):
So s¸nh biÓu thøc expr víi gi¸ trÞ search nÕu ®óng tr¶ vÒ gi¸ trÞ
result nÕu kh«ng tr¶ vÒ gi¸ trÞ default.
NVL(COL|VALUE, VAL) ChuyÓn gi¸ trÞ COL|VALUE thµnh val nÕu null.
Greatest(col|value1, col|value2) Tr¶ gi¸ trÞ lín nhÊt trong d·y gi¸ trÞ.
Vd:
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’) DECODÑD_JOB
FROM EMP;
SELECT GREATEST(1000,2000), GREATEST(SAL,COMM) FROM EMP
WHERE DEPTNO = 10;
Mét sè khu«n d¹ng ngµy
SCC hoÆc CC thÕ kû; S chØ ngµy BC
YYYY hoÆc SYYYY n¨m; S chØ ngµy BC
YYY, YY, Y ChØ n¨m víi 3,2,1 ký tù sè
IYYY, IYY, IY, I ChØ n¨m theo chuÈn ISO
SYEAR, YEAR ChØ n¨m theo c¸ch ph¸t ©m cña ng−êi anh;
Q Quý trong n¨m
MM Gi¸ trÞ th¸ng víi 2 sè (01-12)
MONTH Tªn ®Çy ®ñ cña th¸ng theo tiÕng anh, ®ä dµi 9
MON Th¸ng víi 3 ký tù viÕn t¾t (JAN, FEB...)
WW, W TuÇn trong n¨m hoÆc trong th¸ng
DDD, DD, D Ngµy trong n¨m, th¸ng hoÆc tuÇn
DAY ChØ thø trong tuÇn
DY ChØ thø trong tuÇn víi 3 ký tù viÕt t¾t
J Ngµy Julian; b¾t ®Çu tõ ngµy 31/12/4713 tr−íc c«ng
nguyªn
AM, PM ChØ ®Þnh s¸ng, chiÒu
HH, HH12 HH24 ChØ giê trong ngµy (1-12) hoÆc (0-23)
MI Phót (0-59)
SS Gi©y (0-59)
SSSSS Sè gi©y ®Õn nöa ®ªm (0-86399)
/ . , - ®−îc tù ®éng thªm khi ®Æt trong khu«n d¹ng
“char” §o¹n ký tù ®Æt trong nh¸y ®óp ®−îc tù ®éng thªm khi ®Æt
trong khu«n d¹ng
TH Thªm phÇn thø tù (1st
, 2nd
, 4th
)
SP Ph¸t ©m sè ( FOUR víi DDSP)
C«ng ty cæ phÇn ®Çu t− ph¸t triÓn c«ng nghÖ - FPT
Gi¸o tr×nh SQL vµ PL/SQL
§µo t¹o c¬ b¶n: SQL vµ PL/SQL Trang 29
SPTH, THSP Ph¸t ©m vµ chuyÓn sang d¹ng thø tù ( First, second,
...)
RR Ngµy chuyÓn giao thiªn niªn kû víi c¸c n¨m <1999.
N¨m 0-49 50-99
N¨m hiÖn
t¹i
0-49 thÕ kû hiÖn
t¹i
ThÕ kû
sau
50-99 ThÕ kû tr−íc ThÓ kû
hiÖn t¹i
Mét sè khu«n d¹ng sè
Ký
tù
M« t¶ VÝ dô KÕt qu¶
9 X¸c ®Þnh hiÓn thÞ 1 sè 999999 1234
0 HiÓn thÞ c¶ sè 0 ë ®Çu nÕu ®é
dµi khu«n d¹ng lín h¬n sè
hiÖn cã
099999 001234
$ Thªm ký tù tiÒn tÖ $999999 $1234
L Thªm ký tù tiÒn tÖ b¶n ®Þa L999999 FF1234
. DÊu thËp ph©n 999999.99 1234.00
, DÊu ph©n c¸ch phÇn ngh×n 999,999 1,234
MI DÊu ©m ë bªn ph¶i ( víi c¸c
gi¸ trÞ ©m)
999999MI 1234-
PR Thªm ngoÆc nhän vµo c¸c gi¸
trÞ ©m
999999PR <1234>
EEE ChuyÓn sang hiÓn thÞ sè E 99.9999RRRR 1.234E+03
V Nh©n víi 10 n, n lµ sè c¸c sè
9 ®Æt sau V
9999V99 123400
B HiÓn thÞ c¶ gi¸ trÞ 0 nÕu =
0.
B9999.99 1234.00
4.5 Bµi tËp
1. LiÖt kª tªn nh©n viªn, m· phßng ban vµ l−¬ng nh©n viªn ®−îc t¨ng 15% (PCTSAL).
DEPTNO ENAME PCTSAL
---------- ---------- ----------
10 KING 5000
30 BLAKE 2850
10 CLARK 2450
20 JONES 2975
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. ViÕt c©u lÖnh hiÓn 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
C«ng ty cæ phÇn ®Çu t− ph¸t triÓn c«ng nghÖ - FPT
Gi¸o tr×nh SQL vµ PL/SQL
§µo t¹o c¬ b¶n: SQL vµ PL/SQL Trang 30
SMITH**********CLERK
SCOTT********ANALYST
ADAMS**********CLERK
MILLER*********CLERK
3. ViÕt c©u lÖnh hiÓn 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. ViÕt c©u lÖnh hiÓn thÞ nh− sau:
ENAME DEPTNO JOB
---------- ---------- ---------------
BLAKE 30 Manager
MARTIN 30 Salesperson
ALLEN 30 Salesperson
TURNER 30 Salesperson
JAMES 30 Clerk
WARD 30 Salesperson
5. T×m ngµy thø 6 ®Çu tiªn c¸ch 2 th¸ng so víi ngµy hiÖn t¹i hiÓn thÞ ngµy d−íi d¹ng 09 February 1990.
6. T×m th«ng itn vÒ tªn nh©n viªn, ngµy gia nhËp c«ng ty cña nh©n viªn phßng sè 20, sao cho hiÓn 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. HiÓn thÞ tªn nh©n viªn, ngµy gia nhËp c«ng ty, ngµy xÐt n©ng l−¬ng (sau ngµy gia nhËp c«ng ty 1 n¨m),
s¾p xÕp theo thø tù ngµy xÐt n©ng l−¬ng.
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.HiÓn thÞ tªn nh©n viªn vµ l−¬ng d−íi d¹ng
C«ng ty cæ phÇn ®Çu t− ph¸t triÓn c«ng nghÖ - FPT
Gi¸o tr×nh SQL vµ PL/SQL
§µo t¹o c¬ b¶n: SQL vµ PL/SQL Trang 31
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 biÕt thø cña ngµy hiÖn t¹i
10. §−a chuçi d−íi d¹ng nn/nn, kiÓm tra nÕu khóng khu«n d¹ng tr¶ lêi lµ YES, ng−îc l¹i lµ no. KiÓm tra víi
c¸c chuçi 12/34, 01/1a, 9988
VALUE VALID?
----- -------
12/34 YES
11. HiÓn thÞ tªn nh©n viªn, ngµy gia nhËp c«ng ty, ngµy lÜnh l−¬ng sao cho ngµy lÜnh l−¬ng ph¶i vµo thø 6,
nh©n viªn chØ ®−îc nhËn l−¬ng sau Ýt nhÊt 15 ngµy lµm viÖc t¹i c«ng ty, s¾p xÕp theo thø tù ngµy gia nhËp
c«ng ty.
5 BiÕn runtime
D÷ liÖu thay thÕ trong c©u lÖnh
Dïng (&) ®Ó chØ phÇn thay thÕ trong c©u lÖnh.
NÕu dïng (&&) chØ biÕn thay thÕ th× sau c©u lÖnh biÕn thay thÕ vÉn cßn tån t¹i
VÝ dô
SELECT * FROM emp
WHERE &Condition
Enter value for condition: sal > 1000
Khi Êy c©u lÖnh trªn t−¬ng ®−¬ng
SELECT * FROM emp
WHERE sal > 1000
VÝ du 2:
Select ename, deptno, job
From emp
Where deptno = &&depno_please;
LÖnh Define
Khai b¸o vµ g¸n trÞ cho c¸c biÕn, vÝ dô khai b¸o biÕn condition cã tri 'sal > 1000'
DEFINE condition = 'sal > 1000'
Khi ®ã c©u lÖnh sau kh«ng yªu cÇu nhËp vµo gi¸ trÞ cho codition
SELECT * FROM emp
WHERE &Condition
C«ng ty cæ phÇn ®Çu t− ph¸t triÓn c«ng nghÖ - FPT
Gi¸o tr×nh SQL vµ PL/SQL
§µo t¹o c¬ b¶n: SQL vµ PL/SQL Trang 32
§Ó lo¹i bá biÕn ra khái bé nhí dïng lÖnh UNDEFINE, vÝ dô
UNDEFINE condition
§Ó liÖt kª c¸c biÕn ®· khai b¸o dïng lÖnh DEFINE mµ kh«ng chØ biÕn, 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;
LÖnh Accept
Khai b¸o vµ g¸n trÞ cho biÕn víi dßng hiÓn thÞ
ACCEPT variable [NUMBER/CHAR] [PROMPT/NOPROMPT 'text'] HIDE
VÝ dô
ACCEPT Salary NUMBER PROMPT 'Salary figure: '
Salary figure : 3000
Tõ kho¸ hide cho phÐp che chuçi nhËp liÖu, hay dïng khi nhËp password.
ACCEPT password CHAR PROMPT 'Enter password: ' HIDE
Password : ******
5.1 Bµi tËp
1. HiÓn thÞ tªn nh©n viªn, ngµy gia nhËp c«ng ty víi ®iÒu kiÖn ngµy gia nhËp c«ng ty n»m trong kho¶ng hai
biÕn runtime ®−îc nhËp vµo tõ bµn phÝm (&first_date, &last_date).
2. HiÓn thÞ tªn nh©n viªn, nghÒ nghiÖp, l−¬ng, m· gi¸m ®èc, m· phßng ban víi ®iÒu kiÖn nghÒ nghiÖp b»ng
mét biÕn ®−îc nhËp vµo tõ bµn phÝm. (&job)
3. §Þnh nghÜa mét biÕn tÝnh thu nhËp mét n¨m cña nh©n viªn. Dïng biÕn nµy ®Ó t×m nh÷ng nh©n viªn cã thu
nhËp lín h¬n hoÆc b»ng $30000.
4. §Þnh nghÜa mét biÕn lµ kho¶ng thêi gian nh©n viªn lµm trong c«ng ty. HiÓn thÞ tªn nh©n viªn vµ qu·ng thêi
gian nh©n viªn ®ã lµm viÖc víi ®iÒu kiÖn nh©n viªn lµ mét biÕn ®−îc nhËp vµo tõ bµn phÝm.
ENAME LENGTH OF SERVICE
---------- ---------------------
KING 19 YEAR 4 MONTHS
6 C¸c hµm nhãm ¸p dông cho lín h¬n hoÆc b»ng 1 dßng d÷ liÖu
6.1 C¸c hµm t¸c ®éng trªn nhãm
C¸c hµm t¸c ®éng trªn nhãm c¸c dßng d÷ liÖu t¸c ®éng lªn mét tËp hîp c¸c c¸c dßng d÷ liÖu. Gåm c¸c
hµm:
AVG([DISTINCT/ALL] n) Gi¸ trÞ trung b×nh cña n,kh«ng kÓ trÞ null
COUNT([DISTINCT/ALL] expr) Sè row cã expr kh¸c null
MAX([DISTINCT/ALL] expr) Gi¸ trÞ lín nhÊt cña expr
MIN([DISTINCT/ALL] expr) Gi¸ trÞ nhá nhÊt cña expr
STDDVE([DISTINCT/ALL] n) Ph−¬ng sai cña n kh«ng kÓ trÞ null
C«ng ty cæ phÇn ®Çu t− ph¸t triÓn c«ng nghÖ - FPT
Gi¸o tr×nh SQL vµ PL/SQL
§µo t¹o c¬ b¶n: SQL vµ PL/SQL Trang 33
SUM([DISTINCT/ALL] n) Tæng cña cña n kh«ng kÓ trÞ null
VARIANCE([DISTINCT/ALL] n) Variance cña n kh«ng kÓ trÞ null
Chó ý tÊt c¶ c¸c hµm trªn nhãm mÉu tin ®Òu bá qua gi¸ trÞ NULL trõ hµm COUNT. Dïng hµm NVL ®Ó
chuyÓn ®æi vµ tÝnh gi¸ trÞ NULL.
Cã 2 c¸ch ®Ó dïng c¸c c¸c hµm nµy
• T¸c ®éng trªn toµn bé c¸c dßng d÷ liÖu cña c©u lÖnh truy vÊn
• T¸c ®éng trªn mét nhãm d÷ liÖu cïng tÝnh chÊt cña c©u lÖnh truy vÊn. Cïng tÝnh chÊt ®−îc chØ bëi mÖnh
®Ò
[GROUP BY expr]
[HAVING condition]
C«ng ty cæ phÇn ®Çu t− ph¸t triÓn c«ng nghÖ - FPT
Gi¸o tr×nh SQL vµ PL/SQL
§µo t¹o c¬ b¶n: SQL vµ PL/SQL Trang 34
VÝ dô T¸c ®éng trªn toµn bé c¸c dßng d÷ liÖu cña c©u lÖnh truy vÊn:
Select AVG(SAL)
FROM EMP:
/TÝnh møc l−¬ng trung b×nh cña toµn bé nh©n viªn /
Select MIN(SAL)
FROM EMP
WHERE JOB =’CLERK’:
/TÝnh møc l−¬ng thÊp nhÊt cña nh©n viªn lµm nghÒ CLERK /
VÝ dô t¸c ®éng trªn mét nhãm d÷ liÖu cïng tÝnh chÊt cña c©u lÖnh truy vÊn.
SELECT JOB, AVG(SAL)
FROM EMP
GROUP BY JOB;
/ TÝnh møc l−¬ng trung b×nh cña tõng lo¹i nghÒ nghiÖp/
Chó ý: ChØ ®−îc cïng ®Æt trong mÖnh ®Ó SELECT c¸c hµm nhãm hoÆc c¸c column ®· ®Æt trong mÖnh ®Ò
GROUP BY. VÝ dô
§óng: SELECT MAX(SAL), JOB FROM EMP GROUP BY JOB;
Sai: SELECT MAX(SAL), JOB FROM EMP;
6.2 MÖnh ®Ò GROUP BY
Có ph¸p:
SELECT [DISTINCT ] {*, column [alias],...}
FROM table;
[WHERE condition]
[GROUP BY expr]
[GROUP BY expr]
[GROUP BY expr]
[GROUP BY expr]
[H
[H
[H
[HAVING condition]
AVING condition]
AVING condition]
AVING condition]
[ORDER BY expr/position [DESC/ASC]]
MÖnh ®Ò GROUP BY sÏ nhãm c¸c dßng d÷ liÖu cã cïng gi¸ trÞ cña expr. VÝ dô GROUP BY JOB nghÜa lµ sÏ
nhãm c¸c nghÒ gièng nhau.
MÖnh ®Ò HAVING lµ ®Æt ®iÒu kiÖn cña nhãm d÷ liÖu. MÖnh ®Ò nµy kh¸c mÖnh ®Ò WHERE ë chç mÖnh ®Ò
WHERE ®Æt ®iÒu kiÖn cho toµn bé c©u lÖnh SELECT. 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
C«ng ty cæ phÇn ®Çu t− ph¸t triÓn c«ng nghÖ - FPT
Gi¸o tr×nh SQL vµ PL/SQL
§µo t¹o c¬ b¶n: SQL vµ PL/SQL Trang 35
HAVING MAX(SAL)>=3000
GROUP BY JOB;
JOB MAX(SAL)
--------- ----------
ANALYST 3000
PRESIDENT 5000
6.3 Bµi tËp
1. T×m l−¬ng thÊp nhÊt, lín nhÊt vµ l−¬ng trung b×nh cña tÊt c¶ c¸c nh©n viªn
2. t×m l−¬ng nhá nhÊt vµ lín cña mçi lo¹i nghÒ nghiÖp
3. T×m xem cã bao nhiªu gi¸m ®èc trong danh s¸ch nh©n viªn.
4. T×m tÊt c¶ c¸c phßng ban mµ sè nh©n viªn trong phßng >3
5. T×m ra møc l−¬ng nhá nhÊt cña mçi nh©n viªn lµm viÖc cho mét gi¸m ®èc nµo ®ã s¾p xÕp theo thø tù t¨ng
dÇn cña møc l−¬ng.
7 HiÓn thÞ néi dung d÷ liÖu tõ nhiÒu b¶ng
7.1 Mèi liªn kÕt t−¬ng ®−¬ng
• Mèi liªn kÕt t−¬ng ®−¬ng ®−îc thÓ hiÖn trong mÖnh ®Ó WHERE.
• §Ó liªn kÕt trong mÖnh ®Ó WHERE ph¶i chØ râ tªn cña c¸c column vµ mÖnh ®Ò ®−îc ®Æt t−¬ng ®−¬ng.
Vd: emp.deptno =dept.deptno
• C¸c column trïng tªn ph¶i ®−îc chØ râ column ®ã n»m ë b¶ng n¶o th«ng qua tªn hoÆc qua alias. Tªn
trïng nµy cã thÓ ®Æt trong c¸c mÖnh ®Ò kh¸c nh− SELECT, ORDER BY..
Vd:
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;
7.2 Mèi liªn kÕt kh«ng t−¬ng ®−¬ng
• Mèi liªn kÕt t−¬ng ®−¬ng ®−îc thÓ hiÖn trong mÖnh ®Ó WHERE.
• §Ó liªn kÕt trong mÖnh ®Ó WHERE ph¶i chØ râ tªn cña c¸c column vµ mÖnh ®Ò ®−îc ®Æt KH¤NG t−¬ng
®−¬ng.
Vd: WHERE E.SAL BETWEEN S. LOSAL AND S.HISAL
• C¸c column trïng tªn ph¶i ®−îc chØ râ column ®ã n»m ë b¶ng nµo th«ng qua tªn hoÆc qua alias. Tªn
trïng nµy cã thÓ ®Æt trong c¸c mÖnh ®Ò kh¸c nh− SELECT, ORDER BY..
VD:
SELECT E.ENAME,E.JOB, S.GRADE
FROM EMP E, SALGRADE S
WHERE E.SAL BETWEEN S. LOSAL AND S.HISAL;
§iÒu kiÖn liªn kÕt ®óng lµ sè c¸c b¶ng - 1 = sè c¸c ®iÒu kiÖn liªn kÕt
C«ng ty cæ phÇn ®Çu t− ph¸t triÓn c«ng nghÖ - FPT
Gi¸o tr×nh SQL vµ PL/SQL
§µo t¹o c¬ b¶n: SQL vµ PL/SQL Trang 36
7.3 Mèi liªn kÕt céng
• Mèi liªn kÕt céng tr¶ vÒ c¶ c¸c gi¸ trÞ NULL trong biÓu thøc ®iÒu kiÖn. DÊu (+) ®Ó ë vÕ nµo tÝnh thªm c¸c
gi¸ trÞ NULL ë vÕ ®ã.
• Mét c©u lÖnh select chØ ®Æt ®−îc 1 mèi liªn kÕt céng, dÊu (+) ®Æt ë bªn ph¶i column liªn kÕt
• Trong mÖnh ®Ò WHERE cña mèi liªn kÕt céng kh«ng ®−îc dïng to¸n tö IN hoÆc OR ®Ó nèi c¸c ®iÒu
kiÖn liªn kÕt kh¸c.
Vd:
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
7.4 Liªn kÕt cña b¶ng víi chÝnh nã
Cã thÓ liªn kÐt b¶ng víi chÝnh nã b»ng c¸ch ®Æ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 <m.sal;
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
SMITH 800 FORD 3000
ADAMS 1100 SCOTT 3000
MILLER 1300 CLARK 2450
7.5 C¸c to¸n tö tËp hîp
UNION KÕt hîp kÕt qu¶ cña nhiÒu c©u hái víi nhau, chØ gi÷ l¹i mét ®¹i diÖn cho c¸c mÉu tin trïng
nhau.
UNION ALL KÕt hîp kÕt qu¶ cña nhiÒu c©u hái víi nhau, c¸c mÉu tin trïng nhau còng ®−îc lÆp l¹i
INTERSET LÊy phÇn giao c¸c kÕt qu¶ cña nhiÒu c©u hái
MINUS LÊy kÕt qu¶ cã trong c©u hái thø nhÊt mµ kh«ng cã trong c©u hái thø hai (c©u hái sau to¸n tö
MINUS)
Vd:
Select job from emp where deptno = 10
Union
Select job from emp where deptno = 30;
C«ng ty cæ phÇn ®Çu t− ph¸t triÓn c«ng nghÖ - FPT
Gi¸o tr×nh SQL vµ PL/SQL
§µo t¹o c¬ b¶n: SQL vµ PL/SQL Trang 37
JOB
---------
CLERK
MANAGER
PRESIDENT
SALESMAN
7.6 Bµi tËp
1. HiÓn thÞ toµn bé tªn nh©n viªn vµ tªn phßng ban lµm viÖc s¾p xÕp theo tªn phßng ban.
2. HiÓn thÞ tªn nh©n viªn, vÞ trÝ ®Þa lý, tªn phßng víi ®iÒu kiÖn l−¬ng >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. HiÓn thÞ tªn nh©n viªn, nghÒ nghiÖp, l−¬ng vµ møc l−¬ng.
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. HiÓn thÞ tªn nh©n viªn, nghÒ nghiÖp, l−¬ng vµ møc l−¬ng, víi ®iÒu kiÖn møc l−¬ng = 3.
ENAME JOB SAL GRADE
---------- --------- ---------- ----------
ALLEN SALESMAN 1600 3
TURNER SALESMAN 1500 3
5. HiÓn thÞ nh÷ng nh©n viªn t¹i DALLAS
ENAME LOC SAL
---------- ------------- ----------
JONES DALLAS 2975
FORD DALLAS 3000
SMITH DALLAS 800
SCOTT DALLAS 3000
ADAMS DALLAS 1100
6. HiÓn thÞ tªn nh©n viªn , nghÒ nghiÖp, l−¬ng, møc l−¬ng, tªn phßng lµm viÖc trõ nh©n viªn cã nghÒ lµ cleck
vµ s¾p xÕp theo chiÒu gi¶m.
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
C«ng ty cæ phÇn ®Çu t− ph¸t triÓn c«ng nghÖ - FPT
Gi¸o tr×nh SQL vµ PL/SQL
§µo t¹o c¬ b¶n: SQL vµ PL/SQL Trang 38
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. HiÓn thÞ chi tiÕt vÒ nh÷ng nh©n viªn kiÕm ®−îc 36000 $ 1 n¨m hoÆc nghÒ lµ cleck. (gåm c¸c tr−êng tªn,
nghÒ, thu nhËp, m· phßng, tªn phßng, møc l−¬ng)
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. HiÓn thÞ nh÷ng phßng kh«ng cã nh©n viªn nµo lµm viÖc.
DEPTNO DNAME LOC
---------- -------------- -------------
40 OPERATIONS BOSTON
9. HiÓn thÞ m· nh©n viªn, tªn nh©n viªn, m· ng−êi qu¶n lý, tªn ng−êi qu¶n 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
10. Nh− c©u 9 hiÓn thÞ thªm th«ng 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
EMP_NAME EMP_SAL MGR_NAME MGR_SAL
C«ng ty cæ phÇn ®Çu t− ph¸t triÓn c«ng nghÖ - FPT
Gi¸o tr×nh SQL vµ PL/SQL
§µo t¹o c¬ b¶n: SQL vµ PL/SQL Trang 39
---------- ---------- ---------- ----------
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 3000 JONES 2975
ADAMS 1100 JONES 2975
13 rows selected.
11. HiÓn thÞ nghÒ nghiÖp ®−îc tuyÓn dông vµo n¨m 1981 vµ kh«ng ®−îc tuyÓn dông vµo n¨m 1994.
12. T×m nh÷ng nh©n viªn gia nhËp c«ng ty tr−íc gi¸m ®èc cña hä.
8 C¸c lÖnh truy vÊn lång nhau
8.1 C©u lÖnh SELECT lång nhau.
Trong mÖnh ®Ò WHERE
/T×m nh÷ng nh©n viªn lµm cïng nghÒ víi BLAKE/
select ename, job
from emp
where job = (select job from emp where ename = ‘BLAKE’);
ENAME JOB
---------- --------
BLAKE MANAGER
CLARK MANAGER
JONES MANAGER
Trong mÖnh ®Ò HAVING
/T×m nh÷ng phßng cã møc l−¬ng trung b×nh lín h¬n phßng 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
To¸n tö SOME/ANY/ALL/NOT IN/EXITS
NOT IN : Kh«ng thuéc
ANY vµ SOME : So s¸nh mét gi¸ trÞ víi mçi gi¸ trÞ trong mét danh s¸ch hay trong kÕt qu¶ tr¶ vÒ
cña c©u hái con, ph¶i sau to¸n tö =
ALL : So s¸nh mét gi¸ trÞ víi mäi gi¸ trÞ trong danh s¸ch hay trong kÕt qu¶ tr¶ vÒ cña
c©u hái con.
EXISTS : Tr¶ vÒ TRUE nÕu cã tån t¹i.
VÝ dô
C«ng ty cæ phÇn ®Çu t− ph¸t triÓn c«ng nghÖ - FPT
Gi¸o tr×nh SQL vµ PL/SQL
§µo t¹o c¬ b¶n: SQL vµ PL/SQL Trang 40
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)
ORDER BY SAL DESC;
SELECT EMPNO, ENAME, JOB, DEPTNO
FROM EMP E
WHERE EXISTS ( SELECT EMPNO
FROM EMP
WHERE EMP.MGR = E.EMPNO);
/T×m nh÷ng ng−êi cã nh©n viªn/
8.2 Bµi tËp
9 CÊu tróc h×nh c©y
9.1 CÊu tróc h×nh c©y trong 1 table
Trong mét table cña CSDL ORACLE cã thÓ hiÖn cÊu tróc h×nh c©y. VÝ dô trong b¶ng EMP cÊu tróc thÓ hiÖn
cÊp ®é qu¶n lý.
KING EMPNO = 7839
CLARK JONES BLAKE
Mgr =7839
MILER SCOTT FORD ALLEN WARD MARTIN TUNNER JAMES
ADAMS SMITH
KING EMPNO = 7839
CLARK JONES BLAKE
Mgr =7839
MILER SCOTT FORD ALLEN WARD MARTIN TUNNER JAMES
ADAMS SMITH
C«ng ty cæ phÇn ®Çu t− ph¸t triÓn c«ng nghÖ - FPT
Gi¸o tr×nh SQL vµ PL/SQL
§µo t¹o c¬ b¶n: SQL vµ PL/SQL Trang 41
• Root node lµ node cÊp cao nhÊt
• Child node lµ node con hay kh«ng ph¶i lµ root node
• Parent node lµ node cã node con
• Leaf node lµ node kh«ng cã node con
Level
Level lµ mét cét gi¶ chøa cÊp ®é trong cÊu tróc h×nh c©y. 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
9.2 Kü thuËt thùc hiÖn
Cã thÓ ®Þnh nghÜa quan hÖ thõa kÕ trong c©u hái b»ng mÖnh ®Ò STAR WITH vµ CONNECT BY trong c©u
lªnh SELECT, mçi mÇu tin lµ mét node trong c©y ph©n cÊp. Cét gi¶ LEVEL cho biÕt cÊp cña mÉu tin hay cÊp
cña node trong quan hÖ thõa kÕ.
Có ph¸p:
SELECT [DISTINCT/ALL] [expr [c_ias]]
FROM [table/view/snapshot] [t_alias]
[WHERE condition]
[START WITH condition CONNECT BY PRIOR condition]
[START WITH condition CONNECT BY PRIOR condition]
[START WITH condition CONNECT BY PRIOR condition]
[START WITH condition CONNECT BY PRIOR condition]
[GROUP BY expr] [HAVING condition]
[UNION/UNION ALL/INTERSET/MINUS select command]
[ORDER BY expr/position [DESC/ASC]]
Trong ®ã:
• START WITH §Æc t¶ ®iÓm ®Çu cña h×nh c©y. Kh«ng thÓ ®Ó column gi¶ level ë mÖnh ®Ó nµy.
• CONNECT BY ChØ column trong mèi liªn hÖ t×nh c©y.
• PRIOR §Þnh h−íng cÊu tróc. NÕu prior xuÊt hiÖn tr−íc mgr, Mgr sÏ ®−îc t×m tr−íc sau ®ã ®Õn
empno, ®©y lµ h×nh c©y h−íng lªn. NÕu prior xuÊt hiÖn tr−íc empno, empno sÏ ®−îc t×m tr−íc sau ®ã
®Õn empno, ®©y lµ h×nh c©y h−íng xuèng.
VÝ dô
SELECT LEVEL, DEPTNO, EMPNO, ENAME, JOB, SAL
FROM EMP
CONNECT BY PRIOR MGR = EMPNO
CONNECT BY PRIOR MGR = EMPNO
CONNECT BY PRIOR MGR = EMPNO
CONNECT BY PRIOR MGR = EMPNO
START WITH empno = 7876;
C«ng ty cæ phÇn ®Çu t− ph¸t triÓn c«ng nghÖ - FPT
Gi¸o tr×nh SQL vµ PL/SQL
§µo t¹o c¬ b¶n: SQL vµ PL/SQL Trang 42
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
MÖnh ®Ò WHERE trong cÊu tróc h×nh c©y:
MÖnh ®Ò WHERE vµ CONNECT BY cã thÓ ®−îc dïng ®ång thêi trong cÊu tróc h×nh c©y. NÕu mÖnh ®Ò
WHERE lo¹i trõ mét sè row cña cÊu tróc h×nh c©y th× chØ nh÷ng row ®ã ®−îc lo¹i trõ. NÕu ®iÒu kiÖn ®Æt trong
mÖnh ®Ò CONNECT BY th× toµn bé nh¸nh cña row ®ã bÞ lo¹i 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
2.
SELECT LEVEL, DEPTNO, EMPNO, ENAME, JOB, SAL
FROM EMP
CONNECT BY PRIOR EMPNO = MGR AND ENAME != ‘SCOTT’
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
9.3 Bµi tËp
1. T×m tÊt c¶ c¸c nh©n viªn, ngµy gia nhËp c«ng ty, tªn nh©n viªn, tªn ng−êi gi¸m ®èc vµ ngµy gia nhËp
c«ng ty cña ng−êi gi¸m ®è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
C«ng ty cæ phÇn ®Çu t− ph¸t triÓn c«ng nghÖ - FPT
Gi¸o tr×nh SQL vµ PL/SQL
§µo t¹o c¬ b¶n: SQL vµ PL/SQL Trang 43
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.
2. T×m nh÷ng nh©n viªn kiÕm ®−îc l−¬ng cao nhÊt trong mçi lo¹i nghÒ nghiÖp.
JOB MAX(SAL)
--------- ---------
ANALYST 3000
CLERK 1300
MANAGER 2975
PRESIDENT 5000
SALESMAN 1600
3. T×m møc l−¬ng cao nhÊt trong mçi phßng ban, s¾p xÕp theo thø tù phßng ban.
ENAME JOB DEPTNO SAL
---------- --------- ---------- ----------
KING PRESIDENT 10 5000
SCOTT SALEMAN 20 3300
BLAKE MANAGER 30 2850
4. T×m nh©n viªn gia nhËp vµo phßng ban sím nhÊt
ENAME HIREDATE DEPTNO
---------- ---------- ----------
CLARK 09-06-1981 10
SMITH 17-12-1980 20
ALLEN 20-02-1981 30
5. HiÓn thÞ nh÷ng nh©n viªn cã møc l−¬ng lín h¬n l−¬ng TB cña phßng ban mµ hä lµm viÖc.
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
6. HiÓn thÞ tªn nh©n viªn, m· nh©n viªn, m· gi¸m ®èc, tªn gi¸m ®èc, phßng ban lµm viÖc cña gi¸m ®èc, møc
l−¬ng cña gi¸m ®è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.
C«ng ty cæ phÇn ®Çu t− ph¸t triÓn c«ng nghÖ - FPT
Gi¸o tr×nh SQL vµ PL/SQL
§µo t¹o c¬ b¶n: SQL vµ PL/SQL Trang 44
10 Tæng kÕt vÒ lÖnh select
CÊu tróc lÖnh
SELECT [DISTINCT/ALL] [expr [c_ias]]
FROM [table/view/snapshot] [t_alias]
[WHERE condition]
[START WITH condition CONNECT BY condition]
[GROUP BY expr] [HAVING condition]
[UNION/UNION ALL/INTERSET/MINUS select command]
[ORDER BY expr/position [DESC/ASC]]
[FOR UPDATE OF [column]]
[NOTWAIT]
C¸c thµnh phÇn trong c©u lÖnh SELECT
DISTINCT ChØ chän 1 cho c¸c row gièng nhau trong kÕt qu¶
ALL KÕt xuÊt c¶ c¸c row gièng nhau
* Chän tÊt c¶ c¸c column trong table, view... table.*,
view.*, snapshot.*
Chän tÊt c¶ c¸c cét trong table, view hay snapshot ®−îc
chÞ ®Þnh
expr Chän c¸c biÓu thøc
c_alias Tªn cét trong kÕt qu¶ kÕt xuÊt. table, view, snapshot lµ
Tªn table, view hay snapshot
subquery C©u hái select con
t_alias Tªn cho c¸c table
WHERE Chän c¸c row tháa ®iÒu kiÖn trong mÖnh ®Ò WHERE
START WITH,CONNECT BY
Chän c¸c dßng trong thø tù thõa kÕ
GROUP BY Nhãm c¸c dßng cã expr gièng nhau
HAVING Chän nh÷ng nhãm tháa ®iÒu kiÖn mÖnh ®Ò HAVING
UNION, UNION ALL, INTERSET, MINUS Cho kÕt qu¶ kÕt hîp c¸c to¸n tö tËp
hîp
ORDER BY XÕp thø t− c¸c row theo expr hay position (trong danh
s¸ch select)
ASC, DESC TrËt tù xu«i (mÆc nhiªn) hay ng−îc
FOR UPDATE Khãa nh÷ng row ®−îc chän, cho biÕt b¹n cã ý ®Þnh xãa hay
cËp nhËt c¸c row nµy
NOTWAIT Tr¶ quyÒn ®iÒu khiÓn nÕu khi muèn lock row ®· bÞ lock
bëi user kh¸c.
11 T¹o table
11.1 LÖnh t¹o b¶ng
§Ó t¹o mét b¶ng míi dïng lÖnh CREATE TABLE, Có ph¸p nh− sau:
CREATE TABLE tablename
(column [datatype][DEFAULT expr][column_constraint]..) [table_constraint])
[PCTFREE integer][PCTUSED integer]
[INITRANS integer][MAXTRANS integer]
[TABLESPACE tablespace]
[STORAGE storage_clause]
[AS subquery]
Trong ®ã:
tablename : Tªn table cÇn t¹o
column : Tªn column trong table
[datatype] : KiÓu d÷ liÖu cña column
[DEFAULT expr] : Gi¸ trÞ mÆc ®Þnh cña column trong tr−êng hîp
NULL lµ expr
[column_constraint] : Rµng buéc cña b¶n th©n column
[table_constraint] : rµng buéc cña toµn b¶ng
[PCTFREE integer] : % trèng
[PCTUSED integer] : % sö dông
[INITRANS integer] : Sè b¶n ghi khëi t¹o
[MAXTRANS integer] : Sè b¶n ghi lín nhÊt
C«ng ty cæ phÇn ®Çu t− ph¸t triÓn c«ng nghÖ - FPT
Gi¸o tr×nh SQL vµ PL/SQL
§µo t¹o c¬ b¶n: SQL vµ PL/SQL Trang 45
[TABLESPACE tablespace] : ChØ ®Þnh TABLESAPCE cho b¶ng
[STORAGE storage_clause] : Ghi mÖnh ®Ò l−u tr÷, ®¬n vÞ mÆc ®Þnh lµ KB trong
®ã c¸c c¸c chän lùa lµ: INITIAL - dung l−îng khëi
t¹o; NEXT - dung l−îng t¨ng tiÕp theo; MINEXTENTS
- % më réng nhá nhÊt; MAXEXTENTS- % më réng lín
nhÊt; PCTINCREASE - Tèc ®é t¨ng hµng n¨m.
[AS subquery] : t¹o b¶ng cã cÊu tróc gièng mÖnh ®Ò truy vÊn
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
(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 ;
§Ó t¹o mét table míi, chóng ta cÇn ph¶i chuÈn bÞ mét sè th«ng tin sau:
• Table ph¶i ®−îc chuÈn hãa.
• Nh÷ng column mµ cho phÐp null nªn ®Þnh nghÜa sau ®Ó tiÕt kiÖm n¬i l−u tr÷.
• Gép c¸c table l¹i nÕu cã thÓ.
• ChØ ®Þnh c¸c th«ng sè pcfree vµ pctused
• Cã thÓ chØ ®Þnh 2 th«ng sè initstran, maxtrans
• Cã thÓ chØ ®Þnh tablespace cho table
• Cã thÓ −íc l−îng kÝch th−íc table, vµ c¸c th«ng sè cho storage.
TÝnh to¸n kÝch th−íc table (tham kh¶o):
C«ng ty cæ phÇn ®Çu t− ph¸t triÓn c«ng nghÖ - FPT
Gi¸o tr×nh SQL vµ PL/SQL
§µo t¹o c¬ b¶n: SQL vµ PL/SQL Trang 46
1. TÝnh to¸n kho¶ng ®Üa cÇn thiÕt cho data block header. TÝnh theo c«ng thøc sau:
BLOCK HEADER = (FIXED HEADER + VARIABLE TRANSACTION HEADER) + ( TABLE
DIRECTORY + ROW DIRECTORY)
Trong ®ã:
fixed header = 57 bytes
variable transaction header = 23*gi¸ trÞ cña th«ng sè instrans
table directory =4
row directory = 2* sè l−îng row trong block.
2. TÝnh to¸n kho¶ng ®Üa trèng ®Ó chøa d÷ liÖu cña data block. TÝnh theo c«ng thøc sau:
Kho¶ng ®Üa trèng ®Ó chøa data = (block size -total block header) - (block
size -(fixed header+ variable transaction header))*(pctree/100)
Cã thÓ biÕt block size b»ng c¸ch dïng lÖnh
show parameters db_block_size.
3. TÝnh to¸n kho¶ng ®Üa trèng kÕt hîp b»ng gi¸ trÞ cña mçi row.
4. TÝnh to¸n kÝch th−íc trung b×nh cña row:
KÝch th−íc trung b×nh cña row = row header +A+B+C
A = Tæng chiÒu dµi cña c¸c cét <= 250 byte
B = Tæng chiÒu dµi cña c¸c cét > 250 byte
C = Kho¶ng ®Üa trèng kÕt hîp
5. QuyÕt ®Þnh sè row trung b×nh cho mét block:
avg rows /block = available space/average row size
6. TÝnh to¸n sè l−îng block
Block = sè row / sè row trung b×nh cho mét block
11.2 C¸c quy t¾c ®Æt tªn object
• Tªn dµi tõ 1 ®Õn 30 ký tù, ngo¹i trõ tªn CSDL kh«ng qu¸ 8 ký tù vµ tªn liªn kÕt cã thÓ dµi ®Õn 128 ký tù
• Tªn kh«ng chøa dÊu nh¸y (")
• Kh«ng ph©n biÖt ch÷ hoa ch÷ th−êng
• Tªn ph¶i b¾t ®Çu b»ng ký tù ch÷ trong bé ký tù cña CSDL
• Tªn chØ cã thÓ chøa ký tù sè trong tËp ký tù cña CSDL. Cã thÓ dïng c¸c ký tù _, $, #. ORACLE kh«ng
khuyÕn khÝch dïng c¸c ký tù $ vµ #.
• Tªn kh«ng ®−îc trïng víi c¸c tõ ®· dïng bëi ORACLE (xemphu lôc 1)
• Tªn kh«ng ®−îc c¸ch kho¶ng trèng
• Tªn cã thÓ ®Æt trong cÆp dÊu nh¸y kÐp, khi ®ã tªn cã thÓ bao gåm c¸c ký tù bÊt kú, cã thÓ bao gåm
kho¶ng trèng, cã thÓ dïng c¸c tõ khãa cña ORACLE, ph©n biÖt ch÷ hoa ch÷ th−êng.
• Tªn ph¶i duy nhÊt trong "kh«ng gian tªn" nhÊt ®Þnh. C¸c object thuéc cïng kh«ng gian tªn ph¶i cã tªn
kh¸c nhau.
C¸c bÝ danh cña cét, bÝ danh b¶ng, tªn ng−êi sö dông, mËt khÈu mÆc dï kh«ng ph¶i lµ c¸c object hoÆc c¸c
thµnh phÇn con cña object nh−ng còng ph¶i ®−îc ®Æt tªn theo c¸c quy t¾c trªn, ngo¹i trõ
BÝ danh cét, bÝ danh b¶ng chØ tån t¹i khi thùc hiÖn c¸c lÖnh SQL vµ kh«ng ®−îc l−u tr÷ trong CSDL, do vËy
kh«ng ¸p dông quy t¾c 9 vÒ kh«ng gian tªn.
MËt khÈu kh«ng thuéc vÒ kh«ng gian tªn nµo vµ do ®ã còng kh«ng ¸p dông quy t¾c 9.
Nªn ®Æt tªn theo mét quy t¾c ®Æt tªn thèng nhÊt
C«ng ty cæ phÇn ®Çu t− ph¸t triÓn c«ng nghÖ - FPT
Gi¸o tr×nh SQL vµ PL/SQL
§µo t¹o c¬ b¶n: SQL vµ PL/SQL Trang 47
11.3 C¸c quy t¾c khi tham chiÕu ®Õn object
Có ph¸p chung khi tham chiÕu ®Õn c¸c object
S¬ ®å chung khi tham chiÕu c¸c object hoÆc thµnh phÇn cña c¸c object
Schema.Object.Part.@dblink
Trong ®ã
object Tªn object
schema Schema chøa object
part Thµnh phÇn cña object
dblink Tªn CSDL chøa object
ORACLE gi¶i quyÕt viÖc tham chiÕu c¸c object
Khi tham chiÕu ®Õn mét object trong c©u lÖnh SQL, ORACLE ph©n tÝch c©u lÖnh vµ vµ x¸c ®Þnh c¸c object
trong kh«ng gian tªn. Sau khi x¸c ®Þnh c¸c object, ORACLE thùc hiÖn c¸c thao t¸c mµ c©u lÖnh quy ®Þnh
trªn object. NÕu tªn object truy cËp kh«ng thuéc kh«ng gian tªn th× c©u lÖnh kh«ng ®−îc thùc hiÖn vµ cã
th«ng b¸o lçi.
C©u lÖnh sau thªm mét mÈu tin vµo b¶ng DEPT
INSERT INTO Dept VALUES (50, 'SUPPOR', 'PARIS')
Theo ng÷ c¶nh cña c©u lÖnh, ORACLE x¸c ®Þnh b¶ng Dept cã thÓ lµ
• Mét table trong schema cña b¹n
• Mét view trong schema cña b¹n
• §ång nghÜa riªng cho table hoÆc view
• §ång nghÜa chung cho table hoÆc view
Tham chiÕu ®Õn c¸c object kh«ng thuéc quyÒn së h÷u
§Ó tham chiÕu ®Õn c¸c object kh«ng thuéc schema hiÖn thêi, ph¶i chØ ra tªn cña schema chøa object muèn
truy cËp
schema.object
VÝ dô ®Ó xãa table EMP trong schema SCOTT
DROP TABLE scott.emp
Tham chiÕu c¸c object tõ xa
§Ó truy cËp ®Õn mét CSDL ë xa, sau tªn object ph¶i chØ ra tªn liªn kÕt CSDL (database link) cña CSDL chøa
object muèn truy cËp. Database link lµ mét schema object, ORACLE dïng ®Ó th©m nhËp vµ truy xuÊt CSDL
tõ xa.
11.4 KiÓu d÷ liÖu vµ ®iÒu kiÖn
11.4.1 CHAR
KiÓu CHAR dïng ®Ó khai b¸o mét chuçi cã chiÒu dµi cè ®Þnh, khi khai b¸o biÕn hoÆc cét kiÓu CHAR víi
chiÒu dµi chØ ®Þnh th× tÊt c¶ c¸c môc tin cña biÕn hay cét nµy ®Òu cã cïng chiÒu dµi ®−îc chØ ®Þnh. C¸c môc
tin ng¾n h¬n ORACLE sÏ tù ®éng thªm vµo c¸c kho¶ng trèng cho ®ñ chiÒu dµi. ORACLE kh«ng cho phÐp
3.giao trinh sql_va_pl_sql
3.giao trinh sql_va_pl_sql
3.giao trinh sql_va_pl_sql
3.giao trinh sql_va_pl_sql
3.giao trinh sql_va_pl_sql
3.giao trinh sql_va_pl_sql
3.giao trinh sql_va_pl_sql
3.giao trinh sql_va_pl_sql
3.giao trinh sql_va_pl_sql
3.giao trinh sql_va_pl_sql
3.giao trinh sql_va_pl_sql
3.giao trinh sql_va_pl_sql
3.giao trinh sql_va_pl_sql
3.giao trinh sql_va_pl_sql
3.giao trinh sql_va_pl_sql
3.giao trinh sql_va_pl_sql
3.giao trinh sql_va_pl_sql
3.giao trinh sql_va_pl_sql
3.giao trinh sql_va_pl_sql
3.giao trinh sql_va_pl_sql
3.giao trinh sql_va_pl_sql
3.giao trinh sql_va_pl_sql
3.giao trinh sql_va_pl_sql
3.giao trinh sql_va_pl_sql
3.giao trinh sql_va_pl_sql
3.giao trinh sql_va_pl_sql
3.giao trinh sql_va_pl_sql
3.giao trinh sql_va_pl_sql
3.giao trinh sql_va_pl_sql
3.giao trinh sql_va_pl_sql
3.giao trinh sql_va_pl_sql

Contenu connexe

En vedette

En vedette (6)

Budaya politik dan praktiknya
Budaya politik dan praktiknyaBudaya politik dan praktiknya
Budaya politik dan praktiknya
 
Apache Spark part of Eindhoven Java Meetup
Apache Spark part of Eindhoven Java MeetupApache Spark part of Eindhoven Java Meetup
Apache Spark part of Eindhoven Java Meetup
 
Java development with the dynamo framework
Java development with the dynamo frameworkJava development with the dynamo framework
Java development with the dynamo framework
 
Closing the Knowledge Gap
Closing the Knowledge GapClosing the Knowledge Gap
Closing the Knowledge Gap
 
What's In A Building?
What's In A Building?What's In A Building?
What's In A Building?
 
Campsite project presentation
Campsite project presentationCampsite project presentation
Campsite project presentation
 

Similaire à 3.giao trinh sql_va_pl_sql

Giáo trình autocad 2004[bookbooming.com]
Giáo trình autocad 2004[bookbooming.com]Giáo trình autocad 2004[bookbooming.com]
Giáo trình autocad 2004[bookbooming.com]bookbooming1
 
Giao trinh auto cad 2004
Giao trinh auto cad 2004Giao trinh auto cad 2004
Giao trinh auto cad 2004nhatthai1969
 
Tailieu.vncty.com giai phap thuc day hoat dong sat nhap va mua lai ngan han...
Tailieu.vncty.com   giai phap thuc day hoat dong sat nhap va mua lai ngan han...Tailieu.vncty.com   giai phap thuc day hoat dong sat nhap va mua lai ngan han...
Tailieu.vncty.com giai phap thuc day hoat dong sat nhap va mua lai ngan han...Trần Đức Anh
 
User Guide
User GuideUser Guide
User Guidelaohacqn
 
Luan van tot nghiep ke toan (25)
Luan van tot nghiep ke toan (25)Luan van tot nghiep ke toan (25)
Luan van tot nghiep ke toan (25)Nguyễn Công Huy
 
PHÂN TÍCH CÔNG TÁC TỔ CHỨC BỘ MÁY VÀ HOÀN THIỆN CƠ CẤU TỔ CHỨC BỘ MÁY CỦA CÔN...
PHÂN TÍCH CÔNG TÁC TỔ CHỨC BỘ MÁY VÀ HOÀN THIỆN CƠ CẤU TỔ CHỨC BỘ MÁY CỦA CÔN...PHÂN TÍCH CÔNG TÁC TỔ CHỨC BỘ MÁY VÀ HOÀN THIỆN CƠ CẤU TỔ CHỨC BỘ MÁY CỦA CÔN...
PHÂN TÍCH CÔNG TÁC TỔ CHỨC BỘ MÁY VÀ HOÀN THIỆN CƠ CẤU TỔ CHỨC BỘ MÁY CỦA CÔN...hieu anh
 
Đề tài: Phân tích công tác tổ chức bộ máy và hoàn thiện cơ cấu tổ chức bộ máy...
Đề tài: Phân tích công tác tổ chức bộ máy và hoàn thiện cơ cấu tổ chức bộ máy...Đề tài: Phân tích công tác tổ chức bộ máy và hoàn thiện cơ cấu tổ chức bộ máy...
Đề tài: Phân tích công tác tổ chức bộ máy và hoàn thiện cơ cấu tổ chức bộ máy...Dịch vụ viết thuê Khóa Luận - ZALO 0932091562
 
Kiến thức Thương mại điện tử
Kiến thức Thương mại điện tửKiến thức Thương mại điện tử
Kiến thức Thương mại điện tửDuy Trung
 
Ban cbtt sabeco
Ban cbtt sabecoBan cbtt sabeco
Ban cbtt sabecojujubegl
 
ms project2003
ms project2003ms project2003
ms project2003leevanw
 
ỨNG DỤNG MẠNG NƠRON XÂY DỰNG HỆ THỐNG DỰ BÁO PHỤ TẢI ĐIỆN NĂNG THÀNH PHỐ QUẢN...
ỨNG DỤNG MẠNG NƠRON XÂY DỰNG HỆ THỐNG DỰ BÁO PHỤ TẢI ĐIỆN NĂNG THÀNH PHỐ QUẢN...ỨNG DỤNG MẠNG NƠRON XÂY DỰNG HỆ THỐNG DỰ BÁO PHỤ TẢI ĐIỆN NĂNG THÀNH PHỐ QUẢN...
ỨNG DỤNG MẠNG NƠRON XÂY DỰNG HỆ THỐNG DỰ BÁO PHỤ TẢI ĐIỆN NĂNG THÀNH PHỐ QUẢN...nataliej4
 
Co sodulieu sql_dht_loi
Co sodulieu sql_dht_loiCo sodulieu sql_dht_loi
Co sodulieu sql_dht_loiNam Bùi
 
Tailieu.vncty.com danh gia-chat_luong_dich_vu_tren_mang_wireless_lan.
Tailieu.vncty.com   danh gia-chat_luong_dich_vu_tren_mang_wireless_lan.Tailieu.vncty.com   danh gia-chat_luong_dich_vu_tren_mang_wireless_lan.
Tailieu.vncty.com danh gia-chat_luong_dich_vu_tren_mang_wireless_lan.Trần Đức Anh
 
CHIẾN LƯỢC KINH DOANH CỦA CÔNG TY CỔ PHẦN DỊCH VỤ HÀNG HOÁ NỘI BÀI
CHIẾN LƯỢC KINH DOANH CỦA  CÔNG TY CỔ PHẦN DỊCH VỤ HÀNG HOÁ NỘI BÀICHIẾN LƯỢC KINH DOANH CỦA  CÔNG TY CỔ PHẦN DỊCH VỤ HÀNG HOÁ NỘI BÀI
CHIẾN LƯỢC KINH DOANH CỦA CÔNG TY CỔ PHẦN DỊCH VỤ HÀNG HOÁ NỘI BÀIlamluanvan.net Viết thuê luận văn
 

Similaire à 3.giao trinh sql_va_pl_sql (20)

Giáo trình autocad 2004[bookbooming.com]
Giáo trình autocad 2004[bookbooming.com]Giáo trình autocad 2004[bookbooming.com]
Giáo trình autocad 2004[bookbooming.com]
 
Giao trinh auto cad 2004
Giao trinh auto cad 2004Giao trinh auto cad 2004
Giao trinh auto cad 2004
 
Giao trinh auto cad 2004
Giao trinh auto cad 2004Giao trinh auto cad 2004
Giao trinh auto cad 2004
 
Đề tài: Chế tạo hệ thống xác định chướng ngại vật trên xe, HOT
Đề tài: Chế tạo hệ thống xác định chướng ngại vật trên xe, HOTĐề tài: Chế tạo hệ thống xác định chướng ngại vật trên xe, HOT
Đề tài: Chế tạo hệ thống xác định chướng ngại vật trên xe, HOT
 
Tailieu.vncty.com giai phap thuc day hoat dong sat nhap va mua lai ngan han...
Tailieu.vncty.com   giai phap thuc day hoat dong sat nhap va mua lai ngan han...Tailieu.vncty.com   giai phap thuc day hoat dong sat nhap va mua lai ngan han...
Tailieu.vncty.com giai phap thuc day hoat dong sat nhap va mua lai ngan han...
 
User Guide
User GuideUser Guide
User Guide
 
Bài giảng excel 2010
Bài giảng excel 2010Bài giảng excel 2010
Bài giảng excel 2010
 
Luan van tot nghiep ke toan (25)
Luan van tot nghiep ke toan (25)Luan van tot nghiep ke toan (25)
Luan van tot nghiep ke toan (25)
 
PHÂN TÍCH CÔNG TÁC TỔ CHỨC BỘ MÁY VÀ HOÀN THIỆN CƠ CẤU TỔ CHỨC BỘ MÁY CỦA CÔN...
PHÂN TÍCH CÔNG TÁC TỔ CHỨC BỘ MÁY VÀ HOÀN THIỆN CƠ CẤU TỔ CHỨC BỘ MÁY CỦA CÔN...PHÂN TÍCH CÔNG TÁC TỔ CHỨC BỘ MÁY VÀ HOÀN THIỆN CƠ CẤU TỔ CHỨC BỘ MÁY CỦA CÔN...
PHÂN TÍCH CÔNG TÁC TỔ CHỨC BỘ MÁY VÀ HOÀN THIỆN CƠ CẤU TỔ CHỨC BỘ MÁY CỦA CÔN...
 
Đề tài: Phân tích công tác tổ chức bộ máy và hoàn thiện cơ cấu tổ chức bộ máy...
Đề tài: Phân tích công tác tổ chức bộ máy và hoàn thiện cơ cấu tổ chức bộ máy...Đề tài: Phân tích công tác tổ chức bộ máy và hoàn thiện cơ cấu tổ chức bộ máy...
Đề tài: Phân tích công tác tổ chức bộ máy và hoàn thiện cơ cấu tổ chức bộ máy...
 
Kiến thức Thương mại điện tử
Kiến thức Thương mại điện tửKiến thức Thương mại điện tử
Kiến thức Thương mại điện tử
 
Ban cbtt sabeco
Ban cbtt sabecoBan cbtt sabeco
Ban cbtt sabeco
 
ms project2003
ms project2003ms project2003
ms project2003
 
Kế toán bán hàng và xác định kết quả hoạt động kinh doanh của công ty chánh s...
Kế toán bán hàng và xác định kết quả hoạt động kinh doanh của công ty chánh s...Kế toán bán hàng và xác định kết quả hoạt động kinh doanh của công ty chánh s...
Kế toán bán hàng và xác định kết quả hoạt động kinh doanh của công ty chánh s...
 
ỨNG DỤNG MẠNG NƠRON XÂY DỰNG HỆ THỐNG DỰ BÁO PHỤ TẢI ĐIỆN NĂNG THÀNH PHỐ QUẢN...
ỨNG DỤNG MẠNG NƠRON XÂY DỰNG HỆ THỐNG DỰ BÁO PHỤ TẢI ĐIỆN NĂNG THÀNH PHỐ QUẢN...ỨNG DỤNG MẠNG NƠRON XÂY DỰNG HỆ THỐNG DỰ BÁO PHỤ TẢI ĐIỆN NĂNG THÀNH PHỐ QUẢN...
ỨNG DỤNG MẠNG NƠRON XÂY DỰNG HỆ THỐNG DỰ BÁO PHỤ TẢI ĐIỆN NĂNG THÀNH PHỐ QUẢN...
 
La0214
La0214La0214
La0214
 
Luận văn: Giao thức quản lý mạng và công nghệ dịch vụ web, 9đ
Luận văn: Giao thức quản lý mạng và công nghệ dịch vụ web, 9đLuận văn: Giao thức quản lý mạng và công nghệ dịch vụ web, 9đ
Luận văn: Giao thức quản lý mạng và công nghệ dịch vụ web, 9đ
 
Co sodulieu sql_dht_loi
Co sodulieu sql_dht_loiCo sodulieu sql_dht_loi
Co sodulieu sql_dht_loi
 
Tailieu.vncty.com danh gia-chat_luong_dich_vu_tren_mang_wireless_lan.
Tailieu.vncty.com   danh gia-chat_luong_dich_vu_tren_mang_wireless_lan.Tailieu.vncty.com   danh gia-chat_luong_dich_vu_tren_mang_wireless_lan.
Tailieu.vncty.com danh gia-chat_luong_dich_vu_tren_mang_wireless_lan.
 
CHIẾN LƯỢC KINH DOANH CỦA CÔNG TY CỔ PHẦN DỊCH VỤ HÀNG HOÁ NỘI BÀI
CHIẾN LƯỢC KINH DOANH CỦA  CÔNG TY CỔ PHẦN DỊCH VỤ HÀNG HOÁ NỘI BÀICHIẾN LƯỢC KINH DOANH CỦA  CÔNG TY CỔ PHẦN DỊCH VỤ HÀNG HOÁ NỘI BÀI
CHIẾN LƯỢC KINH DOANH CỦA CÔNG TY CỔ PHẦN DỊCH VỤ HÀNG HOÁ NỘI BÀI
 

Dernier

sách sinh học đại cương - Textbook.pdf
sách sinh học đại cương   -   Textbook.pdfsách sinh học đại cương   -   Textbook.pdf
sách sinh học đại cương - Textbook.pdfTrnHoa46
 
TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...
TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...
TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...Nguyen Thanh Tu Collection
 
Kiểm tra cuối học kì 1 sinh học 12 đề tham khảo
Kiểm tra cuối học kì 1 sinh học 12 đề tham khảoKiểm tra cuối học kì 1 sinh học 12 đề tham khảo
Kiểm tra cuối học kì 1 sinh học 12 đề tham khảohoanhv296
 
TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI LÝ LUẬN VĂN HỌC NĂM HỌC 2023-2024 - MÔN NGỮ ...
TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI LÝ LUẬN VĂN HỌC NĂM HỌC 2023-2024 - MÔN NGỮ ...TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI LÝ LUẬN VĂN HỌC NĂM HỌC 2023-2024 - MÔN NGỮ ...
TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI LÝ LUẬN VĂN HỌC NĂM HỌC 2023-2024 - MÔN NGỮ ...Nguyen Thanh Tu Collection
 
3-BẢNG MÃ LỖI CỦA CÁC HÃNG ĐIỀU HÒA .pdf - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI
3-BẢNG MÃ LỖI CỦA CÁC HÃNG ĐIỀU HÒA .pdf - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI3-BẢNG MÃ LỖI CỦA CÁC HÃNG ĐIỀU HÒA .pdf - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI
3-BẢNG MÃ LỖI CỦA CÁC HÃNG ĐIỀU HÒA .pdf - ĐIỆN LẠNH BÁCH KHOA HÀ NỘIĐiện Lạnh Bách Khoa Hà Nội
 
BỘ LUYỆN NGHE VÀO 10 TIẾNG ANH DẠNG TRẮC NGHIỆM 4 CÂU TRẢ LỜI - CÓ FILE NGHE.pdf
BỘ LUYỆN NGHE VÀO 10 TIẾNG ANH DẠNG TRẮC NGHIỆM 4 CÂU TRẢ LỜI - CÓ FILE NGHE.pdfBỘ LUYỆN NGHE VÀO 10 TIẾNG ANH DẠNG TRẮC NGHIỆM 4 CÂU TRẢ LỜI - CÓ FILE NGHE.pdf
BỘ LUYỆN NGHE VÀO 10 TIẾNG ANH DẠNG TRẮC NGHIỆM 4 CÂU TRẢ LỜI - CÓ FILE NGHE.pdfNguyen Thanh Tu Collection
 
PHƯƠNG THỨC VẬN TẢI ĐƯỜNG SẮT TRONG VẬN TẢI
PHƯƠNG THỨC VẬN TẢI ĐƯỜNG SẮT TRONG VẬN TẢIPHƯƠNG THỨC VẬN TẢI ĐƯỜNG SẮT TRONG VẬN TẢI
PHƯƠNG THỨC VẬN TẢI ĐƯỜNG SẮT TRONG VẬN TẢImyvh40253
 
TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI KỸ NĂNG VIẾT ĐOẠN VĂN NGHỊ LUẬN XÃ HỘI 200 C...
TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI KỸ NĂNG VIẾT ĐOẠN VĂN NGHỊ LUẬN XÃ HỘI 200 C...TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI KỸ NĂNG VIẾT ĐOẠN VĂN NGHỊ LUẬN XÃ HỘI 200 C...
TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI KỸ NĂNG VIẾT ĐOẠN VĂN NGHỊ LUẬN XÃ HỘI 200 C...Nguyen Thanh Tu Collection
 
Giới thiệu Dự án Sản Phụ Khoa - Y Học Cộng Đồng
Giới thiệu Dự án Sản Phụ Khoa - Y Học Cộng ĐồngGiới thiệu Dự án Sản Phụ Khoa - Y Học Cộng Đồng
Giới thiệu Dự án Sản Phụ Khoa - Y Học Cộng ĐồngYhoccongdong.com
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...Nguyen Thanh Tu Collection
 
Đề cương môn giải phẫu......................
Đề cương môn giải phẫu......................Đề cương môn giải phẫu......................
Đề cương môn giải phẫu......................TrnHoa46
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...Nguyen Thanh Tu Collection
 
Các điều kiện bảo hiểm trong bảo hiểm hàng hoá
Các điều kiện bảo hiểm trong bảo hiểm hàng hoáCác điều kiện bảo hiểm trong bảo hiểm hàng hoá
Các điều kiện bảo hiểm trong bảo hiểm hàng hoámyvh40253
 
Chuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdf
Chuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdfChuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdf
Chuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdfhoangtuansinh1
 
GNHH và KBHQ - giao nhận hàng hoá và khai báo hải quan
GNHH và KBHQ - giao nhận hàng hoá và khai báo hải quanGNHH và KBHQ - giao nhận hàng hoá và khai báo hải quan
GNHH và KBHQ - giao nhận hàng hoá và khai báo hải quanmyvh40253
 
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 7 GLOBAL SUCCESS (2 CỘ...
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 7 GLOBAL SUCCESS (2 CỘ...GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 7 GLOBAL SUCCESS (2 CỘ...
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 7 GLOBAL SUCCESS (2 CỘ...Nguyen Thanh Tu Collection
 
Nhiễm khuẩn tiêu hóa-Tiêu chảy do vi khuẩn.pptx
Nhiễm khuẩn tiêu hóa-Tiêu chảy do vi khuẩn.pptxNhiễm khuẩn tiêu hóa-Tiêu chảy do vi khuẩn.pptx
Nhiễm khuẩn tiêu hóa-Tiêu chảy do vi khuẩn.pptxhoangvubaongoc112011
 
Campbell _2011_ - Sinh học - Tế bào - Ref.pdf
Campbell _2011_ - Sinh học - Tế bào - Ref.pdfCampbell _2011_ - Sinh học - Tế bào - Ref.pdf
Campbell _2011_ - Sinh học - Tế bào - Ref.pdfTrnHoa46
 
GIÁO TRÌNH KHỐI NGUỒN CÁC LOẠI - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI
GIÁO TRÌNH  KHỐI NGUỒN CÁC LOẠI - ĐIỆN LẠNH BÁCH KHOA HÀ NỘIGIÁO TRÌNH  KHỐI NGUỒN CÁC LOẠI - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI
GIÁO TRÌNH KHỐI NGUỒN CÁC LOẠI - ĐIỆN LẠNH BÁCH KHOA HÀ NỘIĐiện Lạnh Bách Khoa Hà Nội
 

Dernier (20)

sách sinh học đại cương - Textbook.pdf
sách sinh học đại cương   -   Textbook.pdfsách sinh học đại cương   -   Textbook.pdf
sách sinh học đại cương - Textbook.pdf
 
TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...
TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...
TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...
 
Kiểm tra cuối học kì 1 sinh học 12 đề tham khảo
Kiểm tra cuối học kì 1 sinh học 12 đề tham khảoKiểm tra cuối học kì 1 sinh học 12 đề tham khảo
Kiểm tra cuối học kì 1 sinh học 12 đề tham khảo
 
TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI LÝ LUẬN VĂN HỌC NĂM HỌC 2023-2024 - MÔN NGỮ ...
TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI LÝ LUẬN VĂN HỌC NĂM HỌC 2023-2024 - MÔN NGỮ ...TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI LÝ LUẬN VĂN HỌC NĂM HỌC 2023-2024 - MÔN NGỮ ...
TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI LÝ LUẬN VĂN HỌC NĂM HỌC 2023-2024 - MÔN NGỮ ...
 
3-BẢNG MÃ LỖI CỦA CÁC HÃNG ĐIỀU HÒA .pdf - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI
3-BẢNG MÃ LỖI CỦA CÁC HÃNG ĐIỀU HÒA .pdf - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI3-BẢNG MÃ LỖI CỦA CÁC HÃNG ĐIỀU HÒA .pdf - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI
3-BẢNG MÃ LỖI CỦA CÁC HÃNG ĐIỀU HÒA .pdf - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI
 
BỘ LUYỆN NGHE VÀO 10 TIẾNG ANH DẠNG TRẮC NGHIỆM 4 CÂU TRẢ LỜI - CÓ FILE NGHE.pdf
BỘ LUYỆN NGHE VÀO 10 TIẾNG ANH DẠNG TRẮC NGHIỆM 4 CÂU TRẢ LỜI - CÓ FILE NGHE.pdfBỘ LUYỆN NGHE VÀO 10 TIẾNG ANH DẠNG TRẮC NGHIỆM 4 CÂU TRẢ LỜI - CÓ FILE NGHE.pdf
BỘ LUYỆN NGHE VÀO 10 TIẾNG ANH DẠNG TRẮC NGHIỆM 4 CÂU TRẢ LỜI - CÓ FILE NGHE.pdf
 
PHƯƠNG THỨC VẬN TẢI ĐƯỜNG SẮT TRONG VẬN TẢI
PHƯƠNG THỨC VẬN TẢI ĐƯỜNG SẮT TRONG VẬN TẢIPHƯƠNG THỨC VẬN TẢI ĐƯỜNG SẮT TRONG VẬN TẢI
PHƯƠNG THỨC VẬN TẢI ĐƯỜNG SẮT TRONG VẬN TẢI
 
TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI KỸ NĂNG VIẾT ĐOẠN VĂN NGHỊ LUẬN XÃ HỘI 200 C...
TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI KỸ NĂNG VIẾT ĐOẠN VĂN NGHỊ LUẬN XÃ HỘI 200 C...TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI KỸ NĂNG VIẾT ĐOẠN VĂN NGHỊ LUẬN XÃ HỘI 200 C...
TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI KỸ NĂNG VIẾT ĐOẠN VĂN NGHỊ LUẬN XÃ HỘI 200 C...
 
Giới thiệu Dự án Sản Phụ Khoa - Y Học Cộng Đồng
Giới thiệu Dự án Sản Phụ Khoa - Y Học Cộng ĐồngGiới thiệu Dự án Sản Phụ Khoa - Y Học Cộng Đồng
Giới thiệu Dự án Sản Phụ Khoa - Y Học Cộng Đồng
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
 
Đề cương môn giải phẫu......................
Đề cương môn giải phẫu......................Đề cương môn giải phẫu......................
Đề cương môn giải phẫu......................
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
 
Các điều kiện bảo hiểm trong bảo hiểm hàng hoá
Các điều kiện bảo hiểm trong bảo hiểm hàng hoáCác điều kiện bảo hiểm trong bảo hiểm hàng hoá
Các điều kiện bảo hiểm trong bảo hiểm hàng hoá
 
Chuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdf
Chuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdfChuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdf
Chuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdf
 
1 - MÃ LỖI SỬA CHỮA BOARD MẠCH BẾP TỪ.pdf
1 - MÃ LỖI SỬA CHỮA BOARD MẠCH BẾP TỪ.pdf1 - MÃ LỖI SỬA CHỮA BOARD MẠCH BẾP TỪ.pdf
1 - MÃ LỖI SỬA CHỮA BOARD MẠCH BẾP TỪ.pdf
 
GNHH và KBHQ - giao nhận hàng hoá và khai báo hải quan
GNHH và KBHQ - giao nhận hàng hoá và khai báo hải quanGNHH và KBHQ - giao nhận hàng hoá và khai báo hải quan
GNHH và KBHQ - giao nhận hàng hoá và khai báo hải quan
 
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 7 GLOBAL SUCCESS (2 CỘ...
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 7 GLOBAL SUCCESS (2 CỘ...GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 7 GLOBAL SUCCESS (2 CỘ...
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 7 GLOBAL SUCCESS (2 CỘ...
 
Nhiễm khuẩn tiêu hóa-Tiêu chảy do vi khuẩn.pptx
Nhiễm khuẩn tiêu hóa-Tiêu chảy do vi khuẩn.pptxNhiễm khuẩn tiêu hóa-Tiêu chảy do vi khuẩn.pptx
Nhiễm khuẩn tiêu hóa-Tiêu chảy do vi khuẩn.pptx
 
Campbell _2011_ - Sinh học - Tế bào - Ref.pdf
Campbell _2011_ - Sinh học - Tế bào - Ref.pdfCampbell _2011_ - Sinh học - Tế bào - Ref.pdf
Campbell _2011_ - Sinh học - Tế bào - Ref.pdf
 
GIÁO TRÌNH KHỐI NGUỒN CÁC LOẠI - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI
GIÁO TRÌNH  KHỐI NGUỒN CÁC LOẠI - ĐIỆN LẠNH BÁCH KHOA HÀ NỘIGIÁO TRÌNH  KHỐI NGUỒN CÁC LOẠI - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI
GIÁO TRÌNH KHỐI NGUỒN CÁC LOẠI - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI
 

3.giao trinh sql_va_pl_sql

  • 2. C«ng ty cæ phÇn ®Çu t− ph¸t triÓn c«ng nghÖ - FPT Gi¸o tr×nh SQL vµ PL/SQL §µo t¹o c¬ b¶n: SQL vµ PL/SQL Trang 2 C«ng ty cæ phÇn ®Çu t− ph¸t triÓn c«ng nghÖ - Fpt Hµ Néi, th¸ng 11 n¨m 2002. §µo t¹o Oracle c¬ b¶n Gi¸o tr×nh SQL vµ PL/SQL
  • 3. C«ng ty cæ phÇn ®Çu t− ph¸t triÓn c«ng nghÖ - FPT Gi¸o tr×nh SQL vµ PL/SQL §µo t¹o c¬ b¶n: SQL vµ PL/SQL Trang 3 Môc lôc Môc lôc .................................................................................................................................................3 1 Giíi thiÖu.......................................................................................................................................6 1.1 Môc tiªu kho¸ häc ..............................................................................................................................6 1.2 Khëi ®éng vµ tho¸t khái Oracle.........................................................................................................6 1.2.1 T¹i Server (Window NT) .........................................................................................6 1.2.2 T¹i Client (Window 9x)............................................................................................6 1.3 Giíi thiÖu ng«n ng÷ SQL ...................................................................................................................7 1.3.1 LÞch sö ph¸t triÓn cña ng«n ng÷ SQL .....................................................................7 1.3.2 ChuÈn SQL .............................................................................................................7 1.4 C¸c kh¸i niÖm trong CSDL.................................................................................................................7 1.5 Danh s¸ch rót gän c¸c ®èi t−îng CSDL ...........................................................................................8 1.6 C¸c lÖnh SQL ......................................................................................................................................8 1.7 Giíi thiÖu vÒ vÝ dô thùc hµnh.............................................................................................................9 1.7.1 M« h×nh quan hÖ d÷ liÖu..........................................................................................9 1.7.2 M« t¶ d÷ liÖu............................................................................................................9 2 LÖnh truy vÊn c¬ b¶n ...........................................................................................................10 2.1 LÖnh truy vÊn c¬ b¶n........................................................................................................................10 2.2 C¸c thµnh phÇn kh¸c cña mÖnh ®Ò SELECT..................................................................................10 2.3 Gi¸ trÞ Null..........................................................................................................................................11 2.4 Läc d÷ liÖu tõ c¸c row cã cïng gi¸ trÞ.............................................................................................11 2.5 HiÓn thÞ cÊu tróc b¶ng......................................................................................................................12 2.6 C¸c lÖnh cña c«ng cô SQL*Plus......................................................................................................12 2.6.1 C¸c lÖnh so¹n th¶o ...............................................................................................12 2.6.2 C¸c lÖnh vÒ file......................................................................................................13 2.6.3 C¸c lÖnh vÒ column...............................................................................................13 2.7 Bµi tËp................................................................................................................................................14 3 Truy vÊn d÷ liÖu cã ®iÒu kiÖn ............................................................................................16 3.1 MÖnh ®Ò ORDER BY .........................................................................................................................16 3.2 MÖnh ®Ò WHERE...............................................................................................................................16 3.3 C¸c to¸n tö ........................................................................................................................................17 3.4 Bµi tËp................................................................................................................................................19 4 C¸c hµm ¸p dông cho 1 dßng d÷ liÖu..............................................................................20 4.1 C¸c hµm sè........................................................................................................................................20 4.2 C¸c hµm ký tù ...................................................................................................................................22 4.3 C¸c hµm ngµy ...................................................................................................................................26 4.4 C¸c hµm chuyÓn ®æi kiÓu.................................................................................................................28 4.5 Bµi tËp................................................................................................................................................29 5 BiÕn runtime..............................................................................................................................31 5.1 Bµi tËp................................................................................................................................................32 6 C¸c hµm nhãm ¸p dông cho lín h¬n hoÆc b»ng 1 dßng d÷ liÖu ........................32 6.1 C¸c hµm t¸c ®éng trªn nhãm ..........................................................................................................32 6.2 MÖnh ®Ò GROUP BY.........................................................................................................................34 6.3 Bµi tËp................................................................................................................................................35 7 HiÓn thÞ néi dung d÷ liÖu tõ nhiÒu b¶ng........................................................................35 7.1 Mèi liªn kÕt t−¬ng ®−¬ng .................................................................................................................35
  • 4. C«ng ty cæ phÇn ®Çu t− ph¸t triÓn c«ng nghÖ - FPT Gi¸o tr×nh SQL vµ PL/SQL §µo t¹o c¬ b¶n: SQL vµ PL/SQL Trang 4 7.2 Mèi liªn kÕt kh«ng t−¬ng ®−¬ng......................................................................................................35 7.3 Mèi liªn kÕt céng...............................................................................................................................36 7.4 Liªn kÕt cña b¶ng víi chÝnh nã .......................................................................................................36 7.5 C¸c to¸n tö tËp hîp ..........................................................................................................................36 7.6 Bµi tËp................................................................................................................................................37 8 C¸c lÖnh truy vÊn lång nhau...........................................................................................39 8.1 C©u lÖnh SELECT lång nhau. ..........................................................................................................39 8.2 Bµi tËp................................................................................................................................................40 9 CÊu tróc h×nh c©y...................................................................................................................40 9.1 CÊu tróc h×nh c©y trong 1 table .......................................................................................................40 9.2 Kü thuËt thùc hiÖn ............................................................................................................................41 9.3 Bµi tËp................................................................................................................................................42 10 Tæng kÕt vÒ lÖnh select .....................................................................................................44 11 T¹o table ...................................................................................................................................44 11.1 LÖnh t¹o b¶ng ...................................................................................................................................44 11.2 C¸c quy t¾c ®Æt tªn object ...............................................................................................................46 11.3 C¸c quy t¾c khi tham chiÕu ®Õn object...........................................................................................47 11.4 KiÓu d÷ liÖu vµ ®iÒu kiÖn..................................................................................................................47 11.4.1 CHAR ....................................................................................................................47 11.4.2 VARCHAR2...........................................................................................................48 11.4.3 VARCHAR.............................................................................................................48 11.4.4 NUMBER...............................................................................................................48 11.4.5 FLOAT...................................................................................................................48 11.4.6 LONG ....................................................................................................................49 11.4.7 DATE.....................................................................................................................49 11.4.8 RAW vµ LONG RAW ............................................................................................50 11.4.9 ROWID..................................................................................................................50 11.4.10 MLSLABEL............................................................................................................50 11.4.11 ChuyÓn ®æi kiÓu ....................................................................................................50 11.5 Constraint..........................................................................................................................................51 11.6 Bµi tËp................................................................................................................................................52 12 c¸c lÖnh DDL kh¸c vµ d÷ liÖu trong tõ ®iÓn d÷ liÖu...............................................52 12.1 ChØnh söa cÊu tróc table ..................................................................................................................52 12.2 C¸c lÖnh DDL kh¸c ...........................................................................................................................53 12.2.1 Xãa table ...............................................................................................................53 12.2.2 Gi¶i thÝch b¶ng ......................................................................................................53 12.2.3 Thay ®æi tªn object................................................................................................53 12.2.4 Xãa d÷ liÖu cña table.............................................................................................53 12.3 D÷ liÖu trong tõ ®iÓn d÷ liÖu ............................................................................................................54 12.4 Bµi tËp................................................................................................................................................54 13 C¸c lÖnh Thao t¸c d÷ liÖu kh¸c ......................................................................................55 13.1 ChÌn mét row vµo table ...................................................................................................................55 13.2 ChØnh söa d÷ liÖu..............................................................................................................................55 13.3 Xãa dßng ...........................................................................................................................................55 13.4 Lçi rµng buéc d÷ liÖu .......................................................................................................................56 13.5 LÖnh ®iÒu khiÓn giao dÞch................................................................................................................56 13.6 Bµi tËp................................................................................................................................................57 14 Sequence vµ index..................................................................................................................57
  • 5. C«ng ty cæ phÇn ®Çu t− ph¸t triÓn c«ng nghÖ - FPT Gi¸o tr×nh SQL vµ PL/SQL §µo t¹o c¬ b¶n: SQL vµ PL/SQL Trang 5 14.1 Sequence...........................................................................................................................................57 14.1.1 T¹o Sequence.......................................................................................................57 14.1.2 Xo¸ vµ söa sequence ...........................................................................................58 14.2 Index ..................................................................................................................................................58 14.3 Bµi tËp................................................................................................................................................59 15 T¹o view ......................................................................................................................................59 15.1 View....................................................................................................................................................59 15.2 Bµi tËp................................................................................................................................................61 16 QuyÒn vµ b¶o mËt ...................................................................................................................61 16.1 QuyÒn - PRIVILEGE ..........................................................................................................................61 16.2 ROLE..................................................................................................................................................62 16.3 Synonym............................................................................................................................................63 17 tæng quan vÒ pl/sql vµ procedure builder...............................................................63 17.1 Có ph¸p lÖnh PL/SQL.......................................................................................................................63 17.2 PL/SQL block ....................................................................................................................................63 17.3 Giíi thiÖu Procedure builder............................................................................................................64 18 có ph¸p lËp tr×nh ...................................................................................................................66 18.1 IF ........................................................................................................................................................66 18.2 LOOP vµ EXIT....................................................................................................................................66 18.3 FOR....................................................................................................................................................67 18.4 WHILE................................................................................................................................................67 18.5 GOTO.................................................................................................................................................67 19 cursor ........................................................................................................................................68 19.1 §Þnh nghÜa .........................................................................................................................................68 19.2 KiÓu d÷ liÖu Table vµ Record...........................................................................................................69 19.3 Sao kiÓu d÷ liÖu ................................................................................................................................70 19.4 C©u lÖnh SELECT... INTO... trong PL/SQL......................................................................................70 19.5 Bµi tËp................................................................................................................................................70 20 procedure vµ funtion..........................................................................................................71 20.1 Procedure..........................................................................................................................................71 20.2 Function.............................................................................................................................................72 20.3 Bµi tËp................................................................................................................................................73 21 pakage.........................................................................................................................................73 21.1 Package .............................................................................................................................................73 22 database trigger ..................................................................................................................74 22.1 Database Trigger...............................................................................................................................74 22.2 Bµi tËp................................................................................................................................................75 23 error handing.........................................................................................................................76 23.1 Bµi tËp................................................................................................................................................78
  • 6. C«ng ty cæ phÇn ®Çu t− ph¸t triÓn c«ng nghÖ - FPT Gi¸o tr×nh SQL vµ PL/SQL §µo t¹o c¬ b¶n: SQL vµ PL/SQL Trang 6 1 Giíi thiÖu 1.1 Môc tiªu kho¸ häc KÕt thóc kho¸ häc häc viªn ph¶i n¾m ®−îc • HiÓu ®−îc ph−¬ng ph¸p, c¸c thµnh phÇn, thuËt ng÷ vµ thao t¸c trong CSDL quan hÖ • T¹o ®−îc c¸c cÊu tróc d÷ liÖu nh− table, view dïng SQL • Ghi, ®äc, vµ cËp nhËt d÷ liÖu trong CSDL • X©y dùng c¸c PL/SQL block dïng Procedure Builder 1.2 Khëi ®éng vµ tho¸t khái Oracle 1.2.1 T¹i Server (Window NT) SQLDBA cung cÊp c¸c dÞch vô qu¶n trÞ hÖ thèng, nh−: t¹o lËp CSDL, më - ®ãng CSDL, t¹o vµ qu¶n lý c¸c USER ... C¸c b−íc ®Ó khëi ®éng t¹i Server nh− sau: • Khëi ®éng m¸y chñ • BËt dÞch vô OracleServiceXXX (trong ®ã XXX lµ tªn cña CSDL) b»ng c¸ch nhÊn vµo Start -> Program - > Service -> OracleServiceXXX -> NhÊn chuét ph¶i -> NhÊn Start. Chó ý chØ bËt dÞch vô nµy khi ng−êi cµi ®Æt kh«ng ®Ó chÕ ®é tù ®éng hay khi dÞch vô nµy ch−a ®−îc bËt. • BËt dÞch vô OracleXXXTNSLÝstener (trong ®ã XXX lµ tªn cña Database Home) b»ng c¸ch nhÊn vµo Start -> Program -> Service -> OracleXXXTNSLÝstener -> NhÊn chuét ph¶i -> NhÊn Start. Chó ý chØ bËt dÞch vô nµy khi ng−êi cµi ®Æt kh«ng ®Ó chÕ ®é tù ®éng hay khi dÞch vô nµy ch−a ®−îc bËt. • Khi bËt xong CSDL ®· s½n sµng ®Ó lµm viÖc §Ó ®ãng CSDL cÇn lµm theo c¸c b−íc ng−îc l¹i: • T¾t dÞch vô OracleXXXTNSLÝstener (trong ®ã XXX lµ tªn cña Database Home) b»ng c¸ch nhÊn vµo Start -> Program -> Service -> OracleXXXTNSLÝstener -> NhÊn chuét ph¶i -> NhÊn Stop. • T¾t dÞch vô OracleServiceXXX (trong ®ã XXX lµ tªn cña CSDL) b»ng c¸ch nhÊn vµo Start -> Program - > Service -> OracleServiceXXX -> NhÊn chuét ph¶i -> NhÊn Stop. • Shutdown m¸y chñ. 1.2.2 T¹i Client (Window 9x) C¸c øng dông cña oracle ch¹y trong m«i tr−êng Windows víi giao diÖn graphic, c¸c øng dông th−êng dïng cã SQL*Plus, Oracle Form, Oracle Report, Oracle Designer ... ViÖc ch¹y c¸c øng dông nµy hoµn toµn gièng nh− viÖc ch¹y c¸c øng dông th«ng th−êng trong m«i tr−êng windows. §Ó lµm viÖc víi c¸c øng dông truy cËp CSDL Oracle, ng−êi sö dông (NSD) ph¶i connect vµo CSDL. Cã hai c¸ch ®Ó connect. Connect NSD/password, vÝ dô NSD tªn Scott cã password lµ tiger th× Connect Scott/tiger Ph¸t lÖnh connect víi tªn NSD, khi ®ã Oracle sÏ hái password Connect Scott Enter password: *****
  • 7. C«ng ty cæ phÇn ®Çu t− ph¸t triÓn c«ng nghÖ - FPT Gi¸o tr×nh SQL vµ PL/SQL §µo t¹o c¬ b¶n: SQL vµ PL/SQL Trang 7 NSD cã thÓ lµm viÖc trong ph¹m vi cho phÐp cña m×nh mµ Oracle gäi lµ "khung c¶nh" (Schema) cña NSD. Mçi khung c¶nh chøa nhiÒu ®èi t−îng c¸c lo¹i, NSD chØ cã thÓ t¸c ®éng lªn c¸c ®èi t−îng trong khung c¶nh cña m×nh. Trong c¸c øng dông ®Òu cã chøc n¨ng tho¸t vµ tù ®éng disconnect. §Ó thùc hµnh phÇn SQL vµ PL/SQL gäi øng dông SQL* Plus. 1.3 Giíi thiÖu ng«n ng÷ SQL 1.3.1 LÞch sö ph¸t triÓn cña ng«n ng÷ SQL M« h×nh c¬ së d÷ liÖu (CSDL) quan hÖ do E.F Codd ®−a ra vµo ®Çu thËp kû 70, tõ ®ã ®Õn nay nã liªn tôc ph¸t triÓn trë thµnh m« h×nh CSDL phæ biÕn bËc nhÊt (RDBMS). M« h×nh quan hÖ gåm c¸c thµnh phÇn sau: • TËp hîp c¸c ®èi t−îng vµ/hoÆc c¸c mèi quan hÖ • TËp hîp c¸c xö lý t¸c ®éng tíi c¸c quan hÖ • Rµng buéc d÷ liÖu ®¶m b¶o tÝnh chÝnh x¸c vµ nhÊt qu¸n. SQL (Structured Query Language, ®äc lµ "sequel") lµ tËp lÖnh truy xuÊt CSDL quan hÖ. Ng«n ng÷ SQL ®−îc IBM sö dông ®Çu tiªn trong hÖ qu¶n trÞ CSDL System R vµo gi÷a nh÷ng n¨m 70, hÖ ng«n ng÷ SQL ®Çu tiªn (SEQUEL2) ®−îc IBM c«ng bè vµo th¸ng 11 n¨m 1976. N¨m 1979, tËp ®oµn ORACLE giíi thiÖu th−¬ng phÈm ®Çu tiªn cña SQL, SQL còng ®−îc cµi ®Æt trong c¸c hÖ qu¶n trÞ CSDL nh− DB2 cña IBM vµ SQL/DS. Ngµy nay, SQL ®−îc sö dông réng r·i vµ ®uîc xem lµ ng«n ng÷ chuÈn ®Ó truy cËp CSDL quan hÖ. 1.3.2 ChuÈn SQL N¨m 1989, viÖn tiªu chuÈn quèc gia Hoa kú (ANSI) c«ng nhËn SQL lµ ng«n ng÷ chuÈn ®Ó truy cËp CSDL quan hÖ trong v¨n b¶n ANSI SQL89. N¨m 1989, tæ chøc tiªu chuÈn quèc tÕ (ISO) c«ng nhËn SQL ng«n ng÷ chuÈn ®Ó truy cËp CSDL quan hÖ trong v¨n b¶n ISO 9075-1989. TÊt c¶ c¸c hÖ qu¶n trÞ CSDL lín trªn thÕ giíi cho phÐp truy cËp b»ng SQL vµ hÇu hÕt theo chuÈn ANSI. 1.4 C¸c kh¸i niÖm trong CSDL Table lµ cÊu tróc l−u tr÷ c¬ b¶n nhÊt trong CSDL quan hÖ (RDBMS), nã bao gåm 1 hoÆc nhiÒu column vµ 0 hoÆc nhiÒu row. Row lµ tæ hîp nh÷ng gi¸ trÞ cña Column trong b¶ng. Mét row cßn cã thÓ ®−îc gäi lµ 1 record. Column hiÓn thÞ mét lo¹i d÷ liÖu trong b¶ng, vÝ dô tªn phßng ban trong b¶ng phßng ban. Ng−êi ta thÓ hiÖn nã th«ng qua tªn column vµ gi÷ sè liÖu d−íi c¸c kiÓu vµ kÝch cì nhÊt ®Þnh. Field lµ giao cña column vµ row. Field chÝnh lµ n¬i chøa d÷ liÖu. NÕu kh«ng cã d÷ liÖu trong field ng−êi ta nãi field cã gia trÞ lµ null. Primary Key lµ mét column hoÆc mét tËp c¸c column x¸c ®Þnh tÝnh duy nhÊt cña c¸c row ë trong b¶ng. VÝ dô m· phßng ban. Primary Key nhÊt thiÕt ph¶i cã sè liÖu. Foreign Key lµ mét column hoÆc mét tËp c¸c column tham chiÕu tíi chÝnh b¶ng ®ã hoÆc mét b¶ng kh¸c. Foreign Key x¸c ®Þnh mèi quan hÖ gi÷a c¸c b¶ng. Constraint lµ c¸c rµng buéc d÷ liÖu, vÝ dô Foreign Key, Primary Key...
  • 8. C«ng ty cæ phÇn ®Çu t− ph¸t triÓn c«ng nghÖ - FPT Gi¸o tr×nh SQL vµ PL/SQL §µo t¹o c¬ b¶n: SQL vµ PL/SQL Trang 8 VÝ dô: 10 CLARK 7782 30 BLAKE 7698 30 MARTIN 7654 20 JONES 7566 30 WARD 7521 30 ALLEN 7499 20 SMITH 7369 DEPTNO DEPT EMP ENAME EMPNO OPERATIONS 40 SALES 30 RESEARCH 20 ACCOUNTING 10 DNAME DEPTNO DEPT EMP Primary key Foreign key Column Row 1.5 Danh s¸ch rót gän c¸c ®èi t−îng CSDL Table lµ cÊu tróc l−u tr÷ c¬ b¶n nhÊt trong CSDL quan hÖ (RDBMS), gåm row vµ column View lµ cÊu tróc logic hiÓn thÞ d÷ liÖu tõ 1 hoÆc nhiÒu b¶ng Sequence kÕt sinh gi¸ trÞ cho c¸c primary key Index t¨ng tÝnh thùc thi cña c¸u truy vÊn Synonym tªn t−¬ng ®−¬ng cña ®èi t−îng Program unit gåm Procedure, function, package... 1.6 C¸c lÖnh SQL LÖnh M« t¶ SELECT Lµ lÖnh th«ng dông nhÊt, dïng ®Ó lÊy, xem d÷ liÖu trong CSDL. INSERT UPDATE DELETE Lµ 3 lÖnh dïng ®Ó nhËp thªm nh÷ng row míi, thay ®æi néi dung d÷ liÖu trªn c¸c row hay xo¸ c¸c row trong table. Nh÷ng lÖnh nµy ®−îc gäi lµ c¸c lÖnh thao t¸c d÷ liÖu DML (Data Manipulation Language) CREATE ALTER DROP RENAME TRUNCATE Lµ 3 lÖnh dïng ®Ó thiÕt lËp, thay ®æi hay xo¸ bá cÊu tróc d÷ liÖu nh− lµ table, view, index. Nh÷ng lÖnh nµy ®−îc gäi lµ c¸c lÖnh ®Þnh nghÜa d÷ liÖu DDL (Data Definition Language) COMMIT ROLLBACK SAVE POINT Qu¶n lý viÖc thay ®æi d÷ liÖu b»ng c¸c lÖnh DML. ViÖc thay ®æi d÷ liÖu cã thÓ ®−îc nhãm l¹i thµnh c¸c transaction. GRANT REVOKE 2 lÖnh nµy dïng ®Ó g¸n hoÆc huû c¸c quyÒn truy nhËp vµo CSDL Oracle vµ c¸c cÊu tróc bªn trong nã. Nh÷ng lÖnh nµy ®−îc gäi lµ c¸c lÖnh ®iÒu khiÓn d÷ liÖu DCL (Data
  • 9. C«ng ty cæ phÇn ®Çu t− ph¸t triÓn c«ng nghÖ - FPT Gi¸o tr×nh SQL vµ PL/SQL §µo t¹o c¬ b¶n: SQL vµ PL/SQL Trang 9 Control Language) 1.7 Giíi thiÖu vÒ vÝ dô thùc hµnh 1.7.1 M« h×nh quan hÖ d÷ liÖu EMP DEPT BONUS SALGRADE DUMMY 1.7.2 M« t¶ d÷ liÖu Tªn KiÓu Kho¸ Gi¶i thÝch DEPT DEPTNO NUMBER(2) NOT NULL PK M· phßng ban DNAME CHAR(14) Tªn phßng ban LOC CHAR(13) §Þa chØ SALGRADE GRADE NUMBER PK Møc l¬ng LOSAL NUMBER Gi¸ trÞ thÊp HISAL NUMBER Gi¸ trÞ cao EMP EMPNO NUMBER(4) NOT NULL, PK M· nh©n viªn ENAME CHAR(10), Tªn nh©n viªn JOB CHAR(9), NghÒ nghiÖp MGR NUMBER(4) FK (EMP.EMPNO) M· ng−êi qu¶n lý HIREDATE DATE Ngµy gia nhËp c«ng ty SAL NUMBER(7,2) L−¬ng COMM NUMBER(7,2) Th−ëng DEPTNO NUMBER(2) NOT NULL, FK (DEPT.DEPTNO) M· phßng ban
  • 10. C«ng ty cæ phÇn ®Çu t− ph¸t triÓn c«ng nghÖ - FPT Gi¸o tr×nh SQL vµ PL/SQL §µo t¹o c¬ b¶n: SQL vµ PL/SQL Trang 10 2 LÖnh truy vÊn c¬ b¶n 2.1 LÖnh truy vÊn c¬ b¶n SELECT [DISTINCT ] {*, column [alias],...} FROM table; • SELECT tr¶ lêi c©u hái lÊy d÷ liÖu nµo? (column, biÓu thøc...), trong mÖnh ®Ò SELECT cÇn cã Ýt nhÊt 1 column. • FROM tr¶ lêi c©u hái lÊy d÷ liÖu ë ®Çu? (table, view...) • DISTINCT chØ ®Þnh hiÓn thÞ 1 lÇn c¸c d÷ liÖu trïng nhau. • * thay cho viÖc chØ tªn tÊt c¶ c¸c column • alias ®−a ra nh·n cña column hiÓn thÞ d÷ liÖu. Vd: SELECT * FROM emp; SELECT empno, ename, deptno, mgr FROM emp; SELECT DISTINCT job nghenghiep FROM emp; 2.2 C¸c thµnh phÇn kh¸c cña mÖnh ®Ò SELECT Trong mÖnh ®Ò SELECT cßn cã thÓ ®−a vµo c¸c thµnh phÇn kh¸c: • BiÓu thøc to¸n häc • Column alias • C¸c column ®−îc ghÐp chuçi • Literal BiÓu thøc to¸n häc Trong mÖnh ®Ò SELECT biÓu thøc to¸n häc cã thÓ c¸c gi¸ trÞ (column hoÆc hµng sè), c¸c to¸n tö, c¸c hµm. C¸c to¸n tö ®−îc dïng lµ (+), (-), (*), (/). §é −u tiªn cña c¸c to¸n tö gièng trong phÇn sè häc. Vd: SELECT ename, sal *12, comm FROM emp; SELECT ename, (sal+250)*12 FROM emp; Column alias Trong mÖnh ®Ò SELECT, column alias lµ phÇn nh·n hiÓn thÞ cña column khi lÊy sè liÖu ra. Trong column alias kh«ng ®−îc cã dÊu c¸ch vµ viÕt c¸ch sau tªn column mét dÊu c¸ch. Column alias ®−îc chÊp nhËn cã dÊu c¸ch khi ®−îc ®Æt trong dÊu nh¸y kÐp (“ “). Vd: (ANUAL chÝnh lµ column alias) SELECT ename, SAL*12 ANUAL, comm FROM emp; C¸c column ®−îc ghÐp chuçi To¸n tö ghÐp chuçi (||) cho phÐp c¸c column ®−îc nèi víi nhau thµnh d¹ng chuçi. Cã thÓ cã nhiÒu to¸n tö ghÐp chuçi trong cïng mét column alias. Vd: SELECT empno||ename EMPLOYEE FROM emp; SELECT ename || ' co luong la ' || (sal+250)*12 as "mieu ta" FROM emp; Chuçi ®Æt trong nh¸y ®¬n, bÝ danh ®Æt trong nh¸y kÐp
  • 11. C«ng ty cæ phÇn ®Çu t− ph¸t triÓn c«ng nghÖ - FPT Gi¸o tr×nh SQL vµ PL/SQL §µo t¹o c¬ b¶n: SQL vµ PL/SQL Trang 11 Literal Trong mÖnh ®Ò SELECT, literal lµ bÊt kú ký tù nµo, biÓu thøc, hay sè nµp mµ kh«ng ph¶i lµ column hoÆc column alias. Vd: SELECT empno||ename EMPLOYEE, ‘WORK IN DEPARTMENT’, deptno FROM emp; 2.3 Gi¸ trÞ Null Cét cã gi¸ trÞ rçng (NULL) lµ cét ch−a ®−îc g¸n gi¸ trÞ, nãi c¸ch kh¸c nã ch−a ®−îc khëi t¹o gi¸ trÞ. C¸c cét víi bÊt cø kiÓu d÷ liÖu nµo còng cã thÓ cã trÞ NULL, trõ khi ®−îc nã lµ khãa hay cã rµng buéc toµn vÑn NOT NULL. Trong biÓu thøc cã bÊt kú gi¸ trÞ NULL nµo kÕt qu¶ còng lµ NULL. Vd: SELECT ename, sal*12 + comm ANUAL_SAL FROM emp; NULL trong c¸c hµm cña SQL - Trong c¸c hµm lµm viÖc víi tõng cét hay hµm v« h−íng (scalar function) C¸c hµm lo¹i nµy tr¶ vÒ trÞ null khi cã tham sè null, trõ hµm NVL vµ TRANSLATE cã thÓ tr¶ vÒ gi¸ trÞ thùc. Có ph¸p cña hµm NVL NVL (DATECOLUMN,’01-01-2001’) NVL(NUMBERCOLUMN, 9) NVL(CHARCOLUMN,’STRING’) VÝ dô: NVL(comm,0) tr¶ vÒ trÞ 0 khi comm lµ null SELECT ename, sal*12 + NVL(comm,0) ANUAL_SAL FROM emp; - Trong c¸c hµm lµm viÖc víi nhãm c¸c cét (group function) HÇu hÕt c¸c hµm lµm viÖc trªn nhãm bá qua trÞ null, vÝ dô nh− khi sö dông hµm AVG ®Ó tÝnh trung b×nh cho mét cét cã c¸c gi¸ trÞ 1000, null, null, null, 2000 khi ®ã trung b×nh ®−îc tÝnh lµ (1000+2000)/2=1500, nh− vËy trÞ null bÞ bá qua chø kh«ng ph¶i xem lµ trÞ 0. NULL trong c¸c biÓu thøc so s¸nh, ®iÒu kiÖn §Ó kiÓm tra cã ph¶i null hay kh«ng dïng c¸c to¸n tö IS NULL hoÆc IS NOT NULL. NÕu trong biÓu thøc so s¸nh cã trÞ null tham gia vµ kÕt qu¶ cña biÓu thøc phô thuéc vµo trÞ null th× kÕt qu¶ lµ kh«ng x¸c ®Þnh, tuy nhiªn trong biÓu thøc DECODE, hai gi¸ trÞ null ®−îc xem lµ b»ng nhau trong phÐp so s¸nh. ORACLE xem c¸c biÓu thøc víi kÕt qu¶ kh«ng x¸c ®Þnh t−¬ng ®−¬ng víi FALSE, vÝ dô comm = NULL cã kÕt qu¶ kh«ng x¸c ®Þnh vµ do ®ã biÓu thøc so s¸nh xem nh− cho kÕt qu¶ FALSE. Trong c©u lÖnh sau kh«ng cã mÉu tin nµo ®−îc chän SELECT * FROM emp WHERE comm=NULL; NÕu muèn chän c¸c nh©n viªn cã comm lµ NULL th× ph¶i dïng to¸n tö IS NULL SELECT * FROM emp WHERE comm IS NULL; 2.4 Läc d÷ liÖu tõ c¸c row cã cïng gi¸ trÞ Mét c©u lÖnh truy vÊn cã thÓ tr¶ vÒ c¸c row cã cïng gÝa trÞ. Vd: SELECT JOB FROM EMP; SELECT DEPTNO FROM EMP; SELECT JOB, DEPTNO FROM EMP;
  • 12. C«ng ty cæ phÇn ®Çu t− ph¸t triÓn c«ng nghÖ - FPT Gi¸o tr×nh SQL vµ PL/SQL §µo t¹o c¬ b¶n: SQL vµ PL/SQL Trang 12 §Ó läc lÊy mét gi¸ trÞ duy nhÊt ng−êi ta dïng mÖnh ®Ò DISTINCT. MÖnh ®Ò nµy ph¶i ®−îc ®Æt tr−íc tÊt c¶ c¸c column, sau mÖnh ®Ò SELECT. Vd: SELECT DISTINCT JOB FROM EMP; SELECT DISTINCT DEPTNO FROM EMP; SELECT DISTINCT JOB, DEPTNO FROM EMP; 2.5 HiÓn thÞ cÊu tróc b¶ng Có ph¸p DESC[RIBE] table_name (lÖnh nµy chØ ch¹y ®−îc trªn sqlplus, kh«ng ch¹y ®−îc trªn PL/SQL Develop) VÝ dô: DESC emp; Name Null? Type ------------------------------- -------- ---- EMPNO NOT NULL NUMBER(4) ENAME VARCHAR2(10) JOB VARCHAR2(9) MGR NUMBER(4) HIREDATE DATE SAL NUMBER(7,2) COMM NUMBER(7,2) DEPTNO NUMBER(2) KiÓu d÷ liÖu NOT NULL nghÜa lµ column nhÊt ®Þnh ph¶i cã gi¸ trÞ. 2.6 C¸c lÖnh cña c«ng cô SQL*Plus 2.6.1 C¸c lÖnh so¹n th¶o LÖnh M« t¶ A[PPEND] text §−a thªm ®o¹n text vµo dßng hiÖn t¹i C[HANGE] /old/new ChuyÓn ®o¹n text cò thµnh ®o¹n text míi trong dßng hiÖn t¹i C[HANGE] /text/ Xo¸ ®o¹n text trong dßng hiÖn t¹i CL[EAR] BUFF[ER] Xo¸ tÊt c¶ c¸c dßng trong SQL buffer DEL Xo¸ dßng hiÖn t¹i DEL n Xo¸ dßng n DEL m n Xo¸ dßng tõ m ®Õn n I[NPUT] Thªm mét sè dßng nhÊt ®Þnh I[NPUT] text Thªm dßng cã chøa text L[IST] LiÖt kª toµn bé c¸c dßng trong SQL buffer L[IST] n LiÖt kª dßng n L[IST] m n LiÖt kª dßng m ®Õn n
  • 13. C«ng ty cæ phÇn ®Çu t− ph¸t triÓn c«ng nghÖ - FPT Gi¸o tr×nh SQL vµ PL/SQL §µo t¹o c¬ b¶n: SQL vµ PL/SQL Trang 13 R[UN] HiÓn thÞ vµ ch¹y lÖnh trong buffer N Nhµy ®Õn dßng n N text Thay dßng n bëi ®o¹n text 0 text ChÌn 1 dßng tr−íc dßng 1 2.6.2 C¸c lÖnh vÒ file LÖnh M« t¶ SAVE filename [.ext] [REP[LACE]|APP[END]] Ghi néi dung bufer thµnh file. APPEND ®Ó ghi thªm vµo file. REPLACE ®Ó chÌn lªn néi dung file cò. GET filename [.ext] Ghi néi dung file vµo buffer. MÆc ®Þnh phÇn ®u«i lµ .sql STA[RT] filename [.ext] Ch¹y c¸c lÖnh trong file @ filename [.ext] Gièng lÖnh Start ED[IT] So¹n th¶o néi dung bufffer cã tªn lµ afiedt.buf §Ó ch¹y néi dung buffer dïng lÖnh / ED[IT] filename [.ext ] So¹n th¶o néi dung file SPO[OL] filename [.ext ] [OFF|OUT] CÊt kÕt qu¶ hiÓn thÞ trªn mµn h×nh ra file. Vd: SPOOL result.sql .... SPOOL OFF EXIT Tho¸t khái SQL*Plus 2.6.3 C¸c lÖnh vÒ column Có ph¸p COLUMN [{column | alias} [option]] LÖnh M« t¶ CLE[AR] Xo¸ ®Þnh d¹ng cña column FOR[MAT] format ChuyÓn ®Þnh d¹ng cña cét d÷ liÖu HEA[DING] text §Æt nh·n co column JUS[TIFY] align C¸n tr¸i “ left , ph¶i - right, gi÷a - center cho nh·n NOPRI[NT] Èn column NUL[L] text HiÓn thÞ text nÕu gi¸ trÞ cña column lµ NULL PRI[NT} HiÓn thÞ column
  • 14. C«ng ty cæ phÇn ®Çu t− ph¸t triÓn c«ng nghÖ - FPT Gi¸o tr×nh SQL vµ PL/SQL §µo t¹o c¬ b¶n: SQL vµ PL/SQL Trang 14 TRU[NCATED] Xo¸ chuçi t¹i cuèi dßng ®Çu tiªn khi hiÓn thÞ WRA[PPED] Phñ cuèi chuçi cña dßng tiÕp theo WOR[D_WAPPED] Gièng WAP nh−ng tõ kh«ng bÞ c¾t L−u ý: c¸c ®Þnh d¹ng hiÓn thÞ nµy ®−îc l−u vµo bé nhí vµ ¸p dông cho mäi cét cã tªn nh− vËy, dï chóng ë trong b¶ng nµo Vd: ChØnh ®Þnh d¹ng vµ nh·n cña column COLUMN ename HEADING ‘Employee|Name’ FORMAT A15 COLUMN sal JUSTIFY LEFT FORMAT $ 99,990.00 COLUMN hiredate FORMAT A9 NULL ‘ Not hired’ Vd: HiÓn thÞ ®Þnh d¹ng hiÖn t¹i cña column COLUMN COLUMN ename Vd: Xo¸ ®Þnh d¹ng hiÖn t¹i cña column COLUMN ename CLEAR CLEAR COLUMN C¸c lo¹i ®Þnh d¹ng §Þnh d¹ng M« t¶ VÝ dô KÕt qu¶ An HiÓn thÞ dµi nhÊt n ký tù dïng cho c¸c column d¹ng ký tù hoÆc d¹ng ngµy 9 HiÓn thÞ sè, kh«ng bao gåm sè 0 999999 1234 0 HiÓn thÞ c¶ sè 0 099999 01234 $ HiÓn thi $ $9999 $1234 L HiÓn thÞ ký tù L L9999 L1234 . HiÓn thÞ dÊu thËp ph©n 9999.99 1234.00 , HiÓn thÞ dÊu ph©n chia hµng ngh×n 9,999 1,234 2.7 Bµi tËp 1. Chän toµn bé th«ng tin trong b¶ng SALGRADE GRADE LOSAL HISAL ---------- ---------- ---------- 1 700 1200 2 1201 1400 3 1401 2000 4 2001 3000 5 3001 9999 2. Chän toµn bé th«ng tin trong b¶ng 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
  • 15. C«ng ty cæ phÇn ®Çu t− ph¸t triÓn c«ng nghÖ - FPT Gi¸o tr×nh SQL vµ PL/SQL §µo t¹o c¬ b¶n: SQL vµ PL/SQL Trang 15 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 3. HiÓn thÞ mäi lo¹i nghÒ nghiÖp JOB --------- ANALYST CLERK MANAGER PRESIDENT SALESMAN 4. HiÓn thÞ tªn nh©n viªn vµ thu nhËp trong mét n¨m (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. HiÓn thÞ theo néi dung d−íi ®©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. HiÓn thÞ cÊu tróc b¶ng emp; 7. Thay ®æi nh·n vµ ®Þnh d¹ng hiÓn thÞ cña cét sal vµ hiredate trong b¶ng emp;
  • 16. C«ng ty cæ phÇn ®Çu t− ph¸t triÓn c«ng nghÖ - FPT Gi¸o tr×nh SQL vµ PL/SQL §µo t¹o c¬ b¶n: SQL vµ PL/SQL Trang 16 3 Truy vÊn d÷ liÖu cã ®iÒu kiÖn 3.1 MÖnh ®Ò ORDER BY Có ph¸p SELECT [DISTINCT ] {*, column [alias],...} FROM table; [WHERE condition] [ORDER BY expr/position [DESC/ASC]] MÖnh ®Ò ORDER BY dïng ®Ó s¾p xÕp sè liÖu ®−îc hiÓn thÞ vµ ph¶i ®Æt ë vÞ trÝ sau cïng cña c©u lÖnh truy vÊn, VÝ dô: SELECT ENAME, JOB, SAL*12, DEPTNO FROM EMP ORDER BY ENAME; MÖnh ®Ó ORDER BY mÆc ®Þnh s¾p xÕp theo thø tù t¨ng dÇn ASC[ENDING] • Sè thÊp tr−íc • Ngµy nhá tr−íc • Ký tù theo b¶ng ch÷ c¸i §Ó s¾p xÕp theo thø tù ng−îc l¹i (gi¶m dÇn) ®Æt tõ kho¸ DESC[ENDING] sau column cÇn s¾p thø tù. Vi dô: SELECT ENAME, JOB, HIREDATE FROM EMP ORDER BY HIREDATE DESC ; Order nhiÒu column MÖnh ®Ò Order cßn cã thÓ s¾p xÕp nhiÒu column. C¸c column cÇn s¾p xÕp ®−îc viÕt thø tù sau mÖnh ®Ò ORDER BY vµ c¸ch bëi dÊu phÈy (,). Column nµo gÇn mÖnh ®Ó ORDER BY h¬n cã møc ®é −u tiªn khi s¾p xÕp cao h¬n. ChØ ®Þnh c¸ch thøc s¾p xÕp ASC/DESC ®−îc viÕt sau column c¸ch bëi mét dÊu c¸ch. VÝ dô: SELECT DEPTNO, JOB, ENAME, SAL FROM EMP ORDER BY DEPTNO, SAL DESC ; Order gi¸ trÞ NULL Riªng ®èi víi gi¸ trÞ NULL, nÕu s¾p xÕp theo thø tù ASCENDING sÏ n»m ë c¸c vÞ trÝ cuèi cïng. Chó ý Cã thÓ chØ ®Þnh s¾p xÕp theo thø tù c¸c column trong mÖnh ®Ò SELECT. VÝ dô: SELECT DEPTNO, JOB, ENAME, SAL FROM EMP ORDER BY 2; 3.2 MÖnh ®Ò WHERE Có ph¸p SELECT [DISTINCT ] {*, column [alias],...} FROM table; [WHERE condition (s)] [ORDER BY expr/position [DESC/ASC]]
  • 17. C«ng ty cæ phÇn ®Çu t− ph¸t triÓn c«ng nghÖ - FPT Gi¸o tr×nh SQL vµ PL/SQL §µo t¹o c¬ b¶n: SQL vµ PL/SQL Trang 17 MÖnh ®Ò WHERE dïng ®Ó ®Æt ®iÒu kiÖn cho toµn bé c©u lÖnh truy vÊn. Trong mÖnh ®Ò WHERE cã thÓ cã c¸c thµnh phÇn: • Tªn column • To¸n tö so s¸nh • Tªn column, h»ng sè hoÆc danh s¸ch c¸c gi¸ trÞ VÝ dô: SELECT DEPTNO, JOB, ENAME, SAL FROM EMP WHERE SAL BETWEEN 1000 AND 2000 ; Truy vÊn d÷ liÖu víi nhiÒu ®iÒu kiÖn MÖnh ®Ò WHERE cho phÐp ghÐp ®−îc nhiÒu ®iÒu kiÖn th«ng qua c¸c to¸n tö logic AND/OR. To¸n tö AND yªu cÇu d÷ liÖu ph¶i tho¶ m·n c¶ 2 ®iÒu kiÖn. To¸n tö OR cho phÐp d÷ liÖu tho¶ m·n 1 trong 2 ®iÒu kiÖn. 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.3 C¸c to¸n tö To¸n tö so s¸nh • = : To¸n tö b»ng hay t−¬ng ®−¬ng • !=, ^=, '+, <> : To¸n tö kh¸c hay kh«ng t−¬ng ®−¬ng • > : To¸n tö lín h¬n • < : To¸n tö nhá h¬n • >= : To¸n tö lín h¬n hoÆc b»ng • <= : To¸n tö nhá h¬n hoÆc b»ng C¸c to¸n tö logic • NOT : Phñ ®Þnh mÖnh ®Ò • AND : yªu cÇu d÷ liÖu ph¶i tho¶ m·n c¶ 2 ®iÒu kiÖn • OR : cho phÐp d÷ liÖu tho¶ m·n 1 trong 2 ®iÒu kiÖn
  • 18. C«ng ty cæ phÇn ®Çu t− ph¸t triÓn c«ng nghÖ - FPT Gi¸o tr×nh SQL vµ PL/SQL §µo t¹o c¬ b¶n: SQL vµ PL/SQL Trang 18 C¸c to¸n tö cña SQL • [NOT] BETWEEN x AND y : [Kh«ng] lín h¬n hoÆc b»ng x vµ nhá h¬n hoÆc b»ng y. • IN (danh s¸ch) : thuéc bÊt kú gi¸ trÞ nµo trong danh s¸ch • x [NOT] LIKE y : §óng nÕu x [kh«ng] gièng khung mÉu y. C¸c ký tù dïng trong khu«n mÉu: DÊu g¹ch d−íi ( _ ) : ChØ mét ký tù bÊt kú DÊu phÇn tr¨m ( % ) : ChØ mét nhãm ký tù bÊt kú • IS [NOT] NULL : kiÓm tra gi¸ trÞ rçng • EXISTS : Tr¶ vÒ TRUE nÕu cã tån t¹i. [NOT] BETWEEN x AND y VÝ dô chän nh©n viªn cã l−¬ng n»m trong kho¶ng 2000 vµ 3000 SELECT * FROM emp WHERE sal BETEEN 2000 AND 3000; IN (danh s¸ch) Chän nh©n viªn cã l−¬ng b»ng mét trong 2 gi¸ trÞ 1400 hoÆc 3000 SELECT * FROM emp WHERE sal IN (1400, 3000); T×m tªn phßng ban nÕu phßng ®ã cã nh©n viªn lµm viÖc. SELECT dname FROM dept WHERE EXISTS (SELECT * FROM emp WHERE dept.deptno = emp.deptno); x [NOT] LIKE y T×m nh©n viªn cã tªn b¾t ®Çu b»ng chuçi SMITH SELECT * FROM emp WHERE ename LIKE 'SMITH_'; §Ó chän nh÷ng nh©n viªn cã tªn b¾t ®Çu b»ng 'SM' SELECT * FROM emp WHERE ename LIKE 'SM%'; §Ó t×m nh÷ng nh©n viªn cã tªn cã chuçi 'A_B' SELECT ename FROM emp WHERE ename LIKE '%A_B%'; ESCAPE '' V× ký hiÖu "_" dïng ®Ó ®¹i diÖn cho mét ký tù bÊt kú nªn nÕu kh«ng cã mÖnh ®Ò ESCAPE, c©u lÖnh trªn sÏ t×m tÊt c¶ c¸c nh©n viªn tªn AAB, ABB, ACB, v.v... (nÕu kh«ng cã mÖnh ®Ò ESCAPE '') NÕu muèn ký hiÖu "_" mang ý nghÜa nguyªn thñy, tøc lµ kh«ng cßn ®¹i diÖn cho ký tù bÊt kú n÷a, ta ®Æt dÊu "" tr−íc ký hiÖu. §ång thêi khai b¸o thªm mÖnh ®Ò ESCAPE "" Ta còng cã thÓ dïng mét ký tù bÊt kú thay cho "". Ch¼ng h¹n mÖnh ®Ò sau cã cïng kÕt qu¶ víi mÖnh ®Ò trªn SELECT ename FROM emp WHERE ename LIKE '%A^_B%'; ESCAPE '^' Ta gäi c¸c ký tù nh− "" hay "^" nãi trªn lµ c¸c ký tù ESCAPE. IS [NOT] NULL VÝ du SELECT * FROM emp WHERE comm IS NULL ;
  • 19. C«ng ty cæ phÇn ®Çu t− ph¸t triÓn c«ng nghÖ - FPT Gi¸o tr×nh SQL vµ PL/SQL §µo t¹o c¬ b¶n: SQL vµ PL/SQL Trang 19 3.4 Bµi tËp 1. Chän nh©n viªn trong b¶ng EMP cã møc l−¬ng tõ 1000 ®Õn 2000 (chän c¸c tr−êng ENAME, DEPTNO, SAL). ENAME DEPTNO SAL ---------- ---------- ---------- ALLEN 30 1600 WARD 30 1250 MARTIN 30 1250 TURNER 30 1500 ADAMS 20 1100 MILLER 10 1300 Sal Between 1000 to 2000 2.HiÓn thÞ m· phßng ban, tªn phßng ban, s¾p xÕp theo thø tù tªn phßng ban. DEPTNO DNAME ------ ----------- 10 ACCOUNTING 40 OPERATIONS 20 RESEARCH 30 SALES Order by dname 3. HiÓn thÞ danh s¸ch nh÷ng nh©n viªn lµm t¹i phßng 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 Where deptno in (10,20) order by ename asc 4. HiÓn thÞ tªn vµ nghÒ nghiÖp nh÷ng nh©n viªn lµm nghÒ th− ký (clerk) t¹i phßng 20. ENAME JOB ---------- --------- SMITH CLERK ADAMS CLERK Where upper(job)= upper('clerk') and deptno = '20'; (l−u ý vÊn ®Ò ch÷ Hoa-th−êng) 5. HiÓn thÞ tÊt c¶ nh÷ng nh©n viªn mµ tªn cã c¸c ký tù TH vµ LL. ENAME ---------- SMITH ALLEN MILLER Where ename like “%TH%“ or ename like “%LL%“ 6. HiÓn thÞ tªn nh©n viªn, nghÒ nghiÖp, l−¬ng cña nh÷ng nh©n viªn cã gi¸m ®èc qu¶n lý. ENAME JOB SAL ---------- --------- ---------- SMITH CLERK 800 ALLEN SALESMAN 1600 WARD SALESMAN 1250 JONES MANAGER 2975
  • 20. C«ng ty cæ phÇn ®Çu t− ph¸t triÓn c«ng nghÖ - FPT Gi¸o tr×nh SQL vµ PL/SQL §µo t¹o c¬ b¶n: SQL vµ PL/SQL Trang 20 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. HiÓn thÞ tªn nh©n viªn, m· phßng ban, ngµy gia nhËp c«ng ty sao cho gia nhËp c«ng ty trong n¨m 1983. ENAME DEPTNO HIREDATE ---------- ---------- --------- ADAMS 20 12-JAN-83 Where to_char(hiredate) like “%83“ Where hiredate like “%83“ 8. HiÓn thÞ tªn nh©n viªn, l−¬ng mét n¨m (ANUAL_SAL ), th−ëng sao cho l−¬ng lín h¬n th−ëng vµ nghÒ nghiÖp lµ SALEMAN, s¾p theo thø tù l−¬ng gi¶m dÇn vµ tªn t¨ng dÇn. ANUAL_SAL COMM ---------- ---------- 19200 300 18000 0 15000 500 4 C¸c hµm ¸p dông cho 1 dßng d÷ liÖu 4.1 C¸c hµm sè §Çu vµo vµ ®Çu ra lµ c¸c gi¸ trÞ kiÓu sè ROUND(n[,m]) cho gi¸ trÞ lµm trßn cña n (®Õn cÊp m, mÆc nhiªn m=0) TRUNC(n[,m]) cho gi¸ trÞ n lÊy m ch÷ sè tÝnh tõ chÊm thËp ph©n = Format(dl, “99999,00“) CEIL(n) cho sè nguyªn nhá nhÊt lín h¬n hoÆc b»ng n = FLOOR(n) cho sè nguyªn lín nhÊt b»ng hoÆc nhá h¬n n = POWER(m,n) cho lòy thõa bËc n cña m = EXP(n) cho gi¸ trÞ cña en = SQRT(n) cho c¨n bËc 2 cña n, n>=0 = SIGN(n) cho dÊu cña n. = n<0 cã SIGN(n)= -1 n=0 cã SIGN(n)= 0 n>0 cã SIGN(n)= 1 ABS(n) cho gi¸ trÞ tuyÖt ®èi = MOD(m,n) cho phÇn d− cña phÐp chia m cho n = Mét sè hµm kiÓu sè tham kh¶o kh¸c: LOG(m,n) cho logarit c¬ sè m cña n =
  • 21. C«ng ty cæ phÇn ®Çu t− ph¸t triÓn c«ng nghÖ - FPT Gi¸o tr×nh SQL vµ PL/SQL §µo t¹o c¬ b¶n: SQL vµ PL/SQL Trang 21 SIN(n) cosin cña n (n tÝnh b»ng radian) = COS(n) cho cosin cña n (n tÝnh b»ng radian) = TAN(n) cotang cña n (n tÝnh b»ng radian) = VÝ dô hµm ROUND(n[,m]) 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ô hµm 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ô hµm 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ô hµm 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ô hµm 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) ---------- ------------ ------------ ----------- 5000 25000000 1.2500E+11 312500000 2450 6002500 1.4706E+10 312500000 1300 1690000 2197000000 312500000 VÝ dô hµm EXP(n) SELECT EXP(4) FROM DUMMY; EXP(4)
  • 22. C«ng ty cæ phÇn ®Çu t− ph¸t triÓn c«ng nghÖ - FPT Gi¸o tr×nh SQL vµ PL/SQL §µo t¹o c¬ b¶n: SQL vµ PL/SQL Trang 22 ---------- 54.59815 VÝ dô hµm 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ô hµm 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 C¸c hµm ký tù CONCAT(char1, char2) cho kÕt hîp cña 2 chuçi ký tù, t−¬ng tù nh− sö dông to¸n tö || INITCAP(char) cho chuçi víi ký tù ®Çu c¸c tõ lµ ký tù hoa LOWER(char) cho chuçi ký tù viÕt th−êng (kh«ng viÕt hoa) LPAD(char1, n [,char2]) cho chuçi ký tù cã chiÒu dµi b»ng n. NÕu chuçi char1 ng¾n h¬n n th× thªm vµo bªn tr¸i chuçi char2 cho ®ñ n ký tù. NÕu chuçi char1 dµi h¬n n th× gi÷ l¹i n ký tõ tÝnh tõ tr¸i sang LTRIM(char1, n [,char2]) bá c¸c ký tù trèng bªn tr¸i NLS_INITCAP(char) cho chuçi víi ký tù ®Çu c¸c tõ lµ ch÷ hoa, c¸c ch÷ cßn l¹i lµ ch÷ th−êng REPLACE(char,search_string[,replacement_string]) : thay tÊt c¶ c¸c chuçi search_string cã trong chuçi char b»ng chuçi replacement_string. RPAD(char1, n [,char2]) Gièng LPAD(char1, n [,char2]) nh−ng c¨n ph¶i RTRIM(char1, n [,char2]) bá c¸c ký tù trèng bªn ph¶i SOUNDEX(char) cho chuçi ®ång ©m cña char. SUBSTR(char, m [,n]) cho chuçi con cña chuçi char lÊy tõ vÞ trÝ m vÕ ph¶i n ký tù, nÕu kh«ng chØ n th× lÊy cho ®Õn cuèi chuçi TRANSLATE(char, from, to) cho chuçi trong ®ã mçi ký tù trong chuçi from thay b»ng ký tù t−¬ng øng trong chuçi to, nh÷ng ký tù trong chuçi from kh«ng cã t−¬ng øng trong chuçi to sÏ bÞ lo¹i bá. UPPER(char) cho chuçi ch÷ hoa cña chuçi char
  • 23. C«ng ty cæ phÇn ®Çu t− ph¸t triÓn c«ng nghÖ - FPT Gi¸o tr×nh SQL vµ PL/SQL §µo t¹o c¬ b¶n: SQL vµ PL/SQL Trang 23 ASCII(char) cho ký tù ASCII cña byte ®Çu tiªn cña chuçi char INSTR(char1, char2 [,n[,m]]) t×m vÞ trÝ chuçi char2 trong chuçi char1 b¾t ®Çu tõ vÞ trÝ n, lÇn xuÊt hiÖn thø m. LENGTH(char) cho chiÒu dµi cña chuçi char VÝ dô hµm LOWER(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ô hµm UPPER(char) SELECT ENAME FROM EMP WHERE ENAME = UPPER(‘Smith’); ENAME ---------- SMITH VÝ dô hµm INITCAP(char) SELECT INITCAP(DNAME), INITCAP(LOC) FROM DEPT; INITCAP(DNAME) INITCAP(LOC) -------------- ------------- Accounting New York Research Dallas Sales Chicago Operations Boston VÝ dô hµm CONCAT(char1, char2) SELECT CONCAT(ENAME, JOB) JOB FROM EMP WHERE EMPNO = 7900; JOB ------------------- JAMES CLERK VÝ dô hµm 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ô hµm RPAD(char1, n [,char2]) SELECT RPAD(DNAME,20,’*’), RPAD(DNAME,20), RPAD(DEptno,20,’ ’) FROM DEPT;
  • 24. C«ng ty cæ phÇn ®Çu t− ph¸t triÓn c«ng nghÖ - FPT Gi¸o tr×nh SQL vµ PL/SQL §µo t¹o c¬ b¶n: SQL vµ PL/SQL Trang 24 RPAD(DNAME,20,'*') RPAD(DNAME,20) RPAD(DEPTNO,20,'') -------------------- -------------------- -------------------- ACCOUNTING ****** ACCOUNTING 10 RESEARCH ****** RESEARCH 20 SALES ****** SALES 30 OPERATIONS ****** OPERATIONS 40 VÝ dô hµm 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ô hµm 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 RESEARCH 5 2 0 SALES 2 4 0 OPERATIONS 5 0 0 VÝ dô hµm 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ô hµm 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ô hµm SOUNDEX(char) SELECT ENAME, SOUNDEX(ENAME) FROM EMP WHERE SOUNDEX(ENAME)= SOUNDEX(‘FRED’); ENAME SOUN ---------- ---- FORD F630 VÝ dô hµm LENGTH(char) SELECT LENGTH(‘SQL COURSE’), LENGTH(DEPTNO), LENGTH(DNAME) FROM DEPT;
  • 25. C«ng ty cæ phÇn ®Çu t− ph¸t triÓn c«ng nghÖ - FPT Gi¸o tr×nh SQL vµ PL/SQL §µo t¹o c¬ b¶n: SQL vµ PL/SQL Trang 25
  • 26. C«ng ty cæ phÇn ®Çu t− ph¸t triÓn c«ng nghÖ - FPT Gi¸o tr×nh SQL vµ PL/SQL §µo t¹o c¬ b¶n: SQL vµ PL/SQL Trang 26 LENGTH('SQLCOURSE') LENGTH(DEPTNO) LENGTH(DNAME) ------------------- -------------- ------------- 10 2 14 10 2 14 10 2 14 10 2 14 VÝ dô hµm TRANSLATE(char, from, to) SELECT ENAME, TRANSLATE(ENAME,'C','F'), JOB, TRANSLATE(JOB,'AR','IT') FROM EMP WHERE DEPTNO = 10; ENAME TRANSLATE( JOB TRANSLATE ---------- ---------- --------- --------- KING KING PRESIDENT PTESIDENT CLARK FLARK MANAGER MINIGET MILLER MILLER CLERK CLETK VÝ dô hµm 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ô c¸c hµm lång 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.3 C¸c hµm ngµy MONTH_BETWEEN(d1, d2) cho biÕt sã th¸ng gi÷a ngµy d1 vµ d2. ADD_MONTHS(d,n) cho ngµy d thªm n th¸ng. NEXT_DAY(d, char ) cho ngµy tiÕp theo ngµy d cã thø chØ bëi char. LAST_DAY(d) cho ngµy cuèi cïng trong th¸ng chØ bëi d. VÝ dô hµm MONTH_BETWEEN(d1, d2) SELECT MONTHS_BETWEEN( SYSDATE, HIREDATE), MONTHS_BETWEEN('01-01-2000','05-10-2000')
  • 27. C«ng ty cæ phÇn ®Çu t− ph¸t triÓn c«ng nghÖ - FPT Gi¸o tr×nh SQL vµ PL/SQL §µo t¹o c¬ b¶n: SQL vµ PL/SQL Trang 27 FROM EMP WHERE MONTHS_BETWEEN( SYSDATE,HIREDATE)>240; MONTHS_BETWEEN(SYSDATE,HIREDATE) TWEEN('01-01-2000','05-10-2000') -------------------------------- -------------------------------- 241.271055 -9.1290323 241.206539 -9.1290323 243.367829 -9.1290323 VÝ dô hµm 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ô hµm 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ô hµm 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 Mét sè hµm kh¸c cã thÓ ¸p dông cho kiÓu ngµy: ROUND(date1) tr¶ vÒ ngµy date 1 t¹i thêi ®iÓm gi÷a tr−a 12:00 AM ROUND(date1,’MONTH’) NÕu date 1 n»m trong nöa th¸ng ®Çu tr¶ vÒ ngµy ®Çu tiªn cña thµng, ng−îc l¹i sÏ tr¶ vÒ ngµy ®Çu tiªn cña th¸ng sau. ROUND(date1,’YEAR’) NÕu date 1 n»m trong nöa n¨m ®Çu tr¶ vÒ ngµy ®Çu tiªn cña thµng, ng−îc l¹i sÏ tr¶ vÒ ngµy ®Çu tiªn cña n¨m sau. TRUNC(date1, ’MONTH’) Tr¶ vÒ ngµy ®Çu tiªn cña th¸ng chøa date1 TRUNC(date1, ’YEAR’) Tr¶ vÒ ngµy ®Çu tiªn cña n¨m chøa date1
  • 28. C«ng ty cæ phÇn ®Çu t− ph¸t triÓn c«ng nghÖ - FPT Gi¸o tr×nh SQL vµ PL/SQL §µo t¹o c¬ b¶n: SQL vµ PL/SQL Trang 28 4.4 C¸c hµm chuyÓn ®æi kiÓu TO_CHAR(number|date, ‘fmt’) ChuyÓn kiÓu sè vµ ngµy vÒ kiÓu ký tù. TO_NUMBER(char) ChuyÓn ký tù cã néi dung sè sang sè TO_DATE(‘chsr’,’fmt’) ChuyÓn ký tù sang kiÓu ngµy víi ®Þnh d¹ng ®Æt trong fmt. DECODE(EXPR, SEARCH1, RESULT1, SEARCH2, RESULT2, DEFAULT): So s¸nh biÓu thøc expr víi gi¸ trÞ search nÕu ®óng tr¶ vÒ gi¸ trÞ result nÕu kh«ng tr¶ vÒ gi¸ trÞ default. NVL(COL|VALUE, VAL) ChuyÓn gi¸ trÞ COL|VALUE thµnh val nÕu null. Greatest(col|value1, col|value2) Tr¶ gi¸ trÞ lín nhÊt trong d·y gi¸ trÞ. Vd: 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’) DECODÑD_JOB FROM EMP; SELECT GREATEST(1000,2000), GREATEST(SAL,COMM) FROM EMP WHERE DEPTNO = 10; Mét sè khu«n d¹ng ngµy SCC hoÆc CC thÕ kû; S chØ ngµy BC YYYY hoÆc SYYYY n¨m; S chØ ngµy BC YYY, YY, Y ChØ n¨m víi 3,2,1 ký tù sè IYYY, IYY, IY, I ChØ n¨m theo chuÈn ISO SYEAR, YEAR ChØ n¨m theo c¸ch ph¸t ©m cña ng−êi anh; Q Quý trong n¨m MM Gi¸ trÞ th¸ng víi 2 sè (01-12) MONTH Tªn ®Çy ®ñ cña th¸ng theo tiÕng anh, ®ä dµi 9 MON Th¸ng víi 3 ký tù viÕn t¾t (JAN, FEB...) WW, W TuÇn trong n¨m hoÆc trong th¸ng DDD, DD, D Ngµy trong n¨m, th¸ng hoÆc tuÇn DAY ChØ thø trong tuÇn DY ChØ thø trong tuÇn víi 3 ký tù viÕt t¾t J Ngµy Julian; b¾t ®Çu tõ ngµy 31/12/4713 tr−íc c«ng nguyªn AM, PM ChØ ®Þnh s¸ng, chiÒu HH, HH12 HH24 ChØ giê trong ngµy (1-12) hoÆc (0-23) MI Phót (0-59) SS Gi©y (0-59) SSSSS Sè gi©y ®Õn nöa ®ªm (0-86399) / . , - ®−îc tù ®éng thªm khi ®Æt trong khu«n d¹ng “char” §o¹n ký tù ®Æt trong nh¸y ®óp ®−îc tù ®éng thªm khi ®Æt trong khu«n d¹ng TH Thªm phÇn thø tù (1st , 2nd , 4th ) SP Ph¸t ©m sè ( FOUR víi DDSP)
  • 29. C«ng ty cæ phÇn ®Çu t− ph¸t triÓn c«ng nghÖ - FPT Gi¸o tr×nh SQL vµ PL/SQL §µo t¹o c¬ b¶n: SQL vµ PL/SQL Trang 29 SPTH, THSP Ph¸t ©m vµ chuyÓn sang d¹ng thø tù ( First, second, ...) RR Ngµy chuyÓn giao thiªn niªn kû víi c¸c n¨m <1999. N¨m 0-49 50-99 N¨m hiÖn t¹i 0-49 thÕ kû hiÖn t¹i ThÕ kû sau 50-99 ThÕ kû tr−íc ThÓ kû hiÖn t¹i Mét sè khu«n d¹ng sè Ký tù M« t¶ VÝ dô KÕt qu¶ 9 X¸c ®Þnh hiÓn thÞ 1 sè 999999 1234 0 HiÓn thÞ c¶ sè 0 ë ®Çu nÕu ®é dµi khu«n d¹ng lín h¬n sè hiÖn cã 099999 001234 $ Thªm ký tù tiÒn tÖ $999999 $1234 L Thªm ký tù tiÒn tÖ b¶n ®Þa L999999 FF1234 . DÊu thËp ph©n 999999.99 1234.00 , DÊu ph©n c¸ch phÇn ngh×n 999,999 1,234 MI DÊu ©m ë bªn ph¶i ( víi c¸c gi¸ trÞ ©m) 999999MI 1234- PR Thªm ngoÆc nhän vµo c¸c gi¸ trÞ ©m 999999PR <1234> EEE ChuyÓn sang hiÓn thÞ sè E 99.9999RRRR 1.234E+03 V Nh©n víi 10 n, n lµ sè c¸c sè 9 ®Æt sau V 9999V99 123400 B HiÓn thÞ c¶ gi¸ trÞ 0 nÕu = 0. B9999.99 1234.00 4.5 Bµi tËp 1. LiÖt kª tªn nh©n viªn, m· phßng ban vµ l−¬ng nh©n viªn ®−îc t¨ng 15% (PCTSAL). DEPTNO ENAME PCTSAL ---------- ---------- ---------- 10 KING 5000 30 BLAKE 2850 10 CLARK 2450 20 JONES 2975 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. ViÕt c©u lÖnh hiÓn 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
  • 30. C«ng ty cæ phÇn ®Çu t− ph¸t triÓn c«ng nghÖ - FPT Gi¸o tr×nh SQL vµ PL/SQL §µo t¹o c¬ b¶n: SQL vµ PL/SQL Trang 30 SMITH**********CLERK SCOTT********ANALYST ADAMS**********CLERK MILLER*********CLERK 3. ViÕt c©u lÖnh hiÓn 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. ViÕt c©u lÖnh hiÓn thÞ nh− sau: ENAME DEPTNO JOB ---------- ---------- --------------- BLAKE 30 Manager MARTIN 30 Salesperson ALLEN 30 Salesperson TURNER 30 Salesperson JAMES 30 Clerk WARD 30 Salesperson 5. T×m ngµy thø 6 ®Çu tiªn c¸ch 2 th¸ng so víi ngµy hiÖn t¹i hiÓn thÞ ngµy d−íi d¹ng 09 February 1990. 6. T×m th«ng itn vÒ tªn nh©n viªn, ngµy gia nhËp c«ng ty cña nh©n viªn phßng sè 20, sao cho hiÓn 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. HiÓn thÞ tªn nh©n viªn, ngµy gia nhËp c«ng ty, ngµy xÐt n©ng l−¬ng (sau ngµy gia nhËp c«ng ty 1 n¨m), s¾p xÕp theo thø tù ngµy xÐt n©ng l−¬ng. 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.HiÓn thÞ tªn nh©n viªn vµ l−¬ng d−íi d¹ng
  • 31. C«ng ty cæ phÇn ®Çu t− ph¸t triÓn c«ng nghÖ - FPT Gi¸o tr×nh SQL vµ PL/SQL §µo t¹o c¬ b¶n: SQL vµ PL/SQL Trang 31 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 biÕt thø cña ngµy hiÖn t¹i 10. §−a chuçi d−íi d¹ng nn/nn, kiÓm tra nÕu khóng khu«n d¹ng tr¶ lêi lµ YES, ng−îc l¹i lµ no. KiÓm tra víi c¸c chuçi 12/34, 01/1a, 9988 VALUE VALID? ----- ------- 12/34 YES 11. HiÓn thÞ tªn nh©n viªn, ngµy gia nhËp c«ng ty, ngµy lÜnh l−¬ng sao cho ngµy lÜnh l−¬ng ph¶i vµo thø 6, nh©n viªn chØ ®−îc nhËn l−¬ng sau Ýt nhÊt 15 ngµy lµm viÖc t¹i c«ng ty, s¾p xÕp theo thø tù ngµy gia nhËp c«ng ty. 5 BiÕn runtime D÷ liÖu thay thÕ trong c©u lÖnh Dïng (&) ®Ó chØ phÇn thay thÕ trong c©u lÖnh. NÕu dïng (&&) chØ biÕn thay thÕ th× sau c©u lÖnh biÕn thay thÕ vÉn cßn tån t¹i VÝ dô SELECT * FROM emp WHERE &Condition Enter value for condition: sal > 1000 Khi Êy c©u lÖnh trªn t−¬ng ®−¬ng SELECT * FROM emp WHERE sal > 1000 VÝ du 2: Select ename, deptno, job From emp Where deptno = &&depno_please; LÖnh Define Khai b¸o vµ g¸n trÞ cho c¸c biÕn, vÝ dô khai b¸o biÕn condition cã tri 'sal > 1000' DEFINE condition = 'sal > 1000' Khi ®ã c©u lÖnh sau kh«ng yªu cÇu nhËp vµo gi¸ trÞ cho codition SELECT * FROM emp WHERE &Condition
  • 32. C«ng ty cæ phÇn ®Çu t− ph¸t triÓn c«ng nghÖ - FPT Gi¸o tr×nh SQL vµ PL/SQL §µo t¹o c¬ b¶n: SQL vµ PL/SQL Trang 32 §Ó lo¹i bá biÕn ra khái bé nhí dïng lÖnh UNDEFINE, vÝ dô UNDEFINE condition §Ó liÖt kª c¸c biÕn ®· khai b¸o dïng lÖnh DEFINE mµ kh«ng chØ biÕn, 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; LÖnh Accept Khai b¸o vµ g¸n trÞ cho biÕn víi dßng hiÓn thÞ ACCEPT variable [NUMBER/CHAR] [PROMPT/NOPROMPT 'text'] HIDE VÝ dô ACCEPT Salary NUMBER PROMPT 'Salary figure: ' Salary figure : 3000 Tõ kho¸ hide cho phÐp che chuçi nhËp liÖu, hay dïng khi nhËp password. ACCEPT password CHAR PROMPT 'Enter password: ' HIDE Password : ****** 5.1 Bµi tËp 1. HiÓn thÞ tªn nh©n viªn, ngµy gia nhËp c«ng ty víi ®iÒu kiÖn ngµy gia nhËp c«ng ty n»m trong kho¶ng hai biÕn runtime ®−îc nhËp vµo tõ bµn phÝm (&first_date, &last_date). 2. HiÓn thÞ tªn nh©n viªn, nghÒ nghiÖp, l−¬ng, m· gi¸m ®èc, m· phßng ban víi ®iÒu kiÖn nghÒ nghiÖp b»ng mét biÕn ®−îc nhËp vµo tõ bµn phÝm. (&job) 3. §Þnh nghÜa mét biÕn tÝnh thu nhËp mét n¨m cña nh©n viªn. Dïng biÕn nµy ®Ó t×m nh÷ng nh©n viªn cã thu nhËp lín h¬n hoÆc b»ng $30000. 4. §Þnh nghÜa mét biÕn lµ kho¶ng thêi gian nh©n viªn lµm trong c«ng ty. HiÓn thÞ tªn nh©n viªn vµ qu·ng thêi gian nh©n viªn ®ã lµm viÖc víi ®iÒu kiÖn nh©n viªn lµ mét biÕn ®−îc nhËp vµo tõ bµn phÝm. ENAME LENGTH OF SERVICE ---------- --------------------- KING 19 YEAR 4 MONTHS 6 C¸c hµm nhãm ¸p dông cho lín h¬n hoÆc b»ng 1 dßng d÷ liÖu 6.1 C¸c hµm t¸c ®éng trªn nhãm C¸c hµm t¸c ®éng trªn nhãm c¸c dßng d÷ liÖu t¸c ®éng lªn mét tËp hîp c¸c c¸c dßng d÷ liÖu. Gåm c¸c hµm: AVG([DISTINCT/ALL] n) Gi¸ trÞ trung b×nh cña n,kh«ng kÓ trÞ null COUNT([DISTINCT/ALL] expr) Sè row cã expr kh¸c null MAX([DISTINCT/ALL] expr) Gi¸ trÞ lín nhÊt cña expr MIN([DISTINCT/ALL] expr) Gi¸ trÞ nhá nhÊt cña expr STDDVE([DISTINCT/ALL] n) Ph−¬ng sai cña n kh«ng kÓ trÞ null
  • 33. C«ng ty cæ phÇn ®Çu t− ph¸t triÓn c«ng nghÖ - FPT Gi¸o tr×nh SQL vµ PL/SQL §µo t¹o c¬ b¶n: SQL vµ PL/SQL Trang 33 SUM([DISTINCT/ALL] n) Tæng cña cña n kh«ng kÓ trÞ null VARIANCE([DISTINCT/ALL] n) Variance cña n kh«ng kÓ trÞ null Chó ý tÊt c¶ c¸c hµm trªn nhãm mÉu tin ®Òu bá qua gi¸ trÞ NULL trõ hµm COUNT. Dïng hµm NVL ®Ó chuyÓn ®æi vµ tÝnh gi¸ trÞ NULL. Cã 2 c¸ch ®Ó dïng c¸c c¸c hµm nµy • T¸c ®éng trªn toµn bé c¸c dßng d÷ liÖu cña c©u lÖnh truy vÊn • T¸c ®éng trªn mét nhãm d÷ liÖu cïng tÝnh chÊt cña c©u lÖnh truy vÊn. Cïng tÝnh chÊt ®−îc chØ bëi mÖnh ®Ò [GROUP BY expr] [HAVING condition]
  • 34. C«ng ty cæ phÇn ®Çu t− ph¸t triÓn c«ng nghÖ - FPT Gi¸o tr×nh SQL vµ PL/SQL §µo t¹o c¬ b¶n: SQL vµ PL/SQL Trang 34 VÝ dô T¸c ®éng trªn toµn bé c¸c dßng d÷ liÖu cña c©u lÖnh truy vÊn: Select AVG(SAL) FROM EMP: /TÝnh møc l−¬ng trung b×nh cña toµn bé nh©n viªn / Select MIN(SAL) FROM EMP WHERE JOB =’CLERK’: /TÝnh møc l−¬ng thÊp nhÊt cña nh©n viªn lµm nghÒ CLERK / VÝ dô t¸c ®éng trªn mét nhãm d÷ liÖu cïng tÝnh chÊt cña c©u lÖnh truy vÊn. SELECT JOB, AVG(SAL) FROM EMP GROUP BY JOB; / TÝnh møc l−¬ng trung b×nh cña tõng lo¹i nghÒ nghiÖp/ Chó ý: ChØ ®−îc cïng ®Æt trong mÖnh ®Ó SELECT c¸c hµm nhãm hoÆc c¸c column ®· ®Æt trong mÖnh ®Ò GROUP BY. VÝ dô §óng: SELECT MAX(SAL), JOB FROM EMP GROUP BY JOB; Sai: SELECT MAX(SAL), JOB FROM EMP; 6.2 MÖnh ®Ò GROUP BY Có ph¸p: SELECT [DISTINCT ] {*, column [alias],...} FROM table; [WHERE condition] [GROUP BY expr] [GROUP BY expr] [GROUP BY expr] [GROUP BY expr] [H [H [H [HAVING condition] AVING condition] AVING condition] AVING condition] [ORDER BY expr/position [DESC/ASC]] MÖnh ®Ò GROUP BY sÏ nhãm c¸c dßng d÷ liÖu cã cïng gi¸ trÞ cña expr. VÝ dô GROUP BY JOB nghÜa lµ sÏ nhãm c¸c nghÒ gièng nhau. MÖnh ®Ò HAVING lµ ®Æt ®iÒu kiÖn cña nhãm d÷ liÖu. MÖnh ®Ò nµy kh¸c mÖnh ®Ò WHERE ë chç mÖnh ®Ò WHERE ®Æt ®iÒu kiÖn cho toµn bé c©u lÖnh SELECT. 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
  • 35. C«ng ty cæ phÇn ®Çu t− ph¸t triÓn c«ng nghÖ - FPT Gi¸o tr×nh SQL vµ PL/SQL §µo t¹o c¬ b¶n: SQL vµ PL/SQL Trang 35 HAVING MAX(SAL)>=3000 GROUP BY JOB; JOB MAX(SAL) --------- ---------- ANALYST 3000 PRESIDENT 5000 6.3 Bµi tËp 1. T×m l−¬ng thÊp nhÊt, lín nhÊt vµ l−¬ng trung b×nh cña tÊt c¶ c¸c nh©n viªn 2. t×m l−¬ng nhá nhÊt vµ lín cña mçi lo¹i nghÒ nghiÖp 3. T×m xem cã bao nhiªu gi¸m ®èc trong danh s¸ch nh©n viªn. 4. T×m tÊt c¶ c¸c phßng ban mµ sè nh©n viªn trong phßng >3 5. T×m ra møc l−¬ng nhá nhÊt cña mçi nh©n viªn lµm viÖc cho mét gi¸m ®èc nµo ®ã s¾p xÕp theo thø tù t¨ng dÇn cña møc l−¬ng. 7 HiÓn thÞ néi dung d÷ liÖu tõ nhiÒu b¶ng 7.1 Mèi liªn kÕt t−¬ng ®−¬ng • Mèi liªn kÕt t−¬ng ®−¬ng ®−îc thÓ hiÖn trong mÖnh ®Ó WHERE. • §Ó liªn kÕt trong mÖnh ®Ó WHERE ph¶i chØ râ tªn cña c¸c column vµ mÖnh ®Ò ®−îc ®Æt t−¬ng ®−¬ng. Vd: emp.deptno =dept.deptno • C¸c column trïng tªn ph¶i ®−îc chØ râ column ®ã n»m ë b¶ng n¶o th«ng qua tªn hoÆc qua alias. Tªn trïng nµy cã thÓ ®Æt trong c¸c mÖnh ®Ò kh¸c nh− SELECT, ORDER BY.. Vd: 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; 7.2 Mèi liªn kÕt kh«ng t−¬ng ®−¬ng • Mèi liªn kÕt t−¬ng ®−¬ng ®−îc thÓ hiÖn trong mÖnh ®Ó WHERE. • §Ó liªn kÕt trong mÖnh ®Ó WHERE ph¶i chØ râ tªn cña c¸c column vµ mÖnh ®Ò ®−îc ®Æt KH¤NG t−¬ng ®−¬ng. Vd: WHERE E.SAL BETWEEN S. LOSAL AND S.HISAL • C¸c column trïng tªn ph¶i ®−îc chØ râ column ®ã n»m ë b¶ng nµo th«ng qua tªn hoÆc qua alias. Tªn trïng nµy cã thÓ ®Æt trong c¸c mÖnh ®Ò kh¸c nh− SELECT, ORDER BY.. VD: SELECT E.ENAME,E.JOB, S.GRADE FROM EMP E, SALGRADE S WHERE E.SAL BETWEEN S. LOSAL AND S.HISAL; §iÒu kiÖn liªn kÕt ®óng lµ sè c¸c b¶ng - 1 = sè c¸c ®iÒu kiÖn liªn kÕt
  • 36. C«ng ty cæ phÇn ®Çu t− ph¸t triÓn c«ng nghÖ - FPT Gi¸o tr×nh SQL vµ PL/SQL §µo t¹o c¬ b¶n: SQL vµ PL/SQL Trang 36 7.3 Mèi liªn kÕt céng • Mèi liªn kÕt céng tr¶ vÒ c¶ c¸c gi¸ trÞ NULL trong biÓu thøc ®iÒu kiÖn. DÊu (+) ®Ó ë vÕ nµo tÝnh thªm c¸c gi¸ trÞ NULL ë vÕ ®ã. • Mét c©u lÖnh select chØ ®Æt ®−îc 1 mèi liªn kÕt céng, dÊu (+) ®Æt ë bªn ph¶i column liªn kÕt • Trong mÖnh ®Ò WHERE cña mèi liªn kÕt céng kh«ng ®−îc dïng to¸n tö IN hoÆc OR ®Ó nèi c¸c ®iÒu kiÖn liªn kÕt kh¸c. Vd: 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 7.4 Liªn kÕt cña b¶ng víi chÝnh nã Cã thÓ liªn kÐt b¶ng víi chÝnh nã b»ng c¸ch ®Æ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 <m.sal; 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 SMITH 800 FORD 3000 ADAMS 1100 SCOTT 3000 MILLER 1300 CLARK 2450 7.5 C¸c to¸n tö tËp hîp UNION KÕt hîp kÕt qu¶ cña nhiÒu c©u hái víi nhau, chØ gi÷ l¹i mét ®¹i diÖn cho c¸c mÉu tin trïng nhau. UNION ALL KÕt hîp kÕt qu¶ cña nhiÒu c©u hái víi nhau, c¸c mÉu tin trïng nhau còng ®−îc lÆp l¹i INTERSET LÊy phÇn giao c¸c kÕt qu¶ cña nhiÒu c©u hái MINUS LÊy kÕt qu¶ cã trong c©u hái thø nhÊt mµ kh«ng cã trong c©u hái thø hai (c©u hái sau to¸n tö MINUS) Vd: Select job from emp where deptno = 10 Union Select job from emp where deptno = 30;
  • 37. C«ng ty cæ phÇn ®Çu t− ph¸t triÓn c«ng nghÖ - FPT Gi¸o tr×nh SQL vµ PL/SQL §µo t¹o c¬ b¶n: SQL vµ PL/SQL Trang 37 JOB --------- CLERK MANAGER PRESIDENT SALESMAN 7.6 Bµi tËp 1. HiÓn thÞ toµn bé tªn nh©n viªn vµ tªn phßng ban lµm viÖc s¾p xÕp theo tªn phßng ban. 2. HiÓn thÞ tªn nh©n viªn, vÞ trÝ ®Þa lý, tªn phßng víi ®iÒu kiÖn l−¬ng >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. HiÓn thÞ tªn nh©n viªn, nghÒ nghiÖp, l−¬ng vµ møc l−¬ng. 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. HiÓn thÞ tªn nh©n viªn, nghÒ nghiÖp, l−¬ng vµ møc l−¬ng, víi ®iÒu kiÖn møc l−¬ng = 3. ENAME JOB SAL GRADE ---------- --------- ---------- ---------- ALLEN SALESMAN 1600 3 TURNER SALESMAN 1500 3 5. HiÓn thÞ nh÷ng nh©n viªn t¹i DALLAS ENAME LOC SAL ---------- ------------- ---------- JONES DALLAS 2975 FORD DALLAS 3000 SMITH DALLAS 800 SCOTT DALLAS 3000 ADAMS DALLAS 1100 6. HiÓn thÞ tªn nh©n viªn , nghÒ nghiÖp, l−¬ng, møc l−¬ng, tªn phßng lµm viÖc trõ nh©n viªn cã nghÒ lµ cleck vµ s¾p xÕp theo chiÒu gi¶m. 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
  • 38. C«ng ty cæ phÇn ®Çu t− ph¸t triÓn c«ng nghÖ - FPT Gi¸o tr×nh SQL vµ PL/SQL §µo t¹o c¬ b¶n: SQL vµ PL/SQL Trang 38 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. HiÓn thÞ chi tiÕt vÒ nh÷ng nh©n viªn kiÕm ®−îc 36000 $ 1 n¨m hoÆc nghÒ lµ cleck. (gåm c¸c tr−êng tªn, nghÒ, thu nhËp, m· phßng, tªn phßng, møc l−¬ng) 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. HiÓn thÞ nh÷ng phßng kh«ng cã nh©n viªn nµo lµm viÖc. DEPTNO DNAME LOC ---------- -------------- ------------- 40 OPERATIONS BOSTON 9. HiÓn thÞ m· nh©n viªn, tªn nh©n viªn, m· ng−êi qu¶n lý, tªn ng−êi qu¶n 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 10. Nh− c©u 9 hiÓn thÞ thªm th«ng 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 EMP_NAME EMP_SAL MGR_NAME MGR_SAL
  • 39. C«ng ty cæ phÇn ®Çu t− ph¸t triÓn c«ng nghÖ - FPT Gi¸o tr×nh SQL vµ PL/SQL §µo t¹o c¬ b¶n: SQL vµ PL/SQL Trang 39 ---------- ---------- ---------- ---------- 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 3000 JONES 2975 ADAMS 1100 JONES 2975 13 rows selected. 11. HiÓn thÞ nghÒ nghiÖp ®−îc tuyÓn dông vµo n¨m 1981 vµ kh«ng ®−îc tuyÓn dông vµo n¨m 1994. 12. T×m nh÷ng nh©n viªn gia nhËp c«ng ty tr−íc gi¸m ®èc cña hä. 8 C¸c lÖnh truy vÊn lång nhau 8.1 C©u lÖnh SELECT lång nhau. Trong mÖnh ®Ò WHERE /T×m nh÷ng nh©n viªn lµm cïng nghÒ víi BLAKE/ select ename, job from emp where job = (select job from emp where ename = ‘BLAKE’); ENAME JOB ---------- -------- BLAKE MANAGER CLARK MANAGER JONES MANAGER Trong mÖnh ®Ò HAVING /T×m nh÷ng phßng cã møc l−¬ng trung b×nh lín h¬n phßng 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 To¸n tö SOME/ANY/ALL/NOT IN/EXITS NOT IN : Kh«ng thuéc ANY vµ SOME : So s¸nh mét gi¸ trÞ víi mçi gi¸ trÞ trong mét danh s¸ch hay trong kÕt qu¶ tr¶ vÒ cña c©u hái con, ph¶i sau to¸n tö = ALL : So s¸nh mét gi¸ trÞ víi mäi gi¸ trÞ trong danh s¸ch hay trong kÕt qu¶ tr¶ vÒ cña c©u hái con. EXISTS : Tr¶ vÒ TRUE nÕu cã tån t¹i. VÝ dô
  • 40. C«ng ty cæ phÇn ®Çu t− ph¸t triÓn c«ng nghÖ - FPT Gi¸o tr×nh SQL vµ PL/SQL §µo t¹o c¬ b¶n: SQL vµ PL/SQL Trang 40 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) ORDER BY SAL DESC; SELECT EMPNO, ENAME, JOB, DEPTNO FROM EMP E WHERE EXISTS ( SELECT EMPNO FROM EMP WHERE EMP.MGR = E.EMPNO); /T×m nh÷ng ng−êi cã nh©n viªn/ 8.2 Bµi tËp 9 CÊu tróc h×nh c©y 9.1 CÊu tróc h×nh c©y trong 1 table Trong mét table cña CSDL ORACLE cã thÓ hiÖn cÊu tróc h×nh c©y. VÝ dô trong b¶ng EMP cÊu tróc thÓ hiÖn cÊp ®é qu¶n lý. KING EMPNO = 7839 CLARK JONES BLAKE Mgr =7839 MILER SCOTT FORD ALLEN WARD MARTIN TUNNER JAMES ADAMS SMITH KING EMPNO = 7839 CLARK JONES BLAKE Mgr =7839 MILER SCOTT FORD ALLEN WARD MARTIN TUNNER JAMES ADAMS SMITH
  • 41. C«ng ty cæ phÇn ®Çu t− ph¸t triÓn c«ng nghÖ - FPT Gi¸o tr×nh SQL vµ PL/SQL §µo t¹o c¬ b¶n: SQL vµ PL/SQL Trang 41 • Root node lµ node cÊp cao nhÊt • Child node lµ node con hay kh«ng ph¶i lµ root node • Parent node lµ node cã node con • Leaf node lµ node kh«ng cã node con Level Level lµ mét cét gi¶ chøa cÊp ®é trong cÊu tróc h×nh c©y. 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 9.2 Kü thuËt thùc hiÖn Cã thÓ ®Þnh nghÜa quan hÖ thõa kÕ trong c©u hái b»ng mÖnh ®Ò STAR WITH vµ CONNECT BY trong c©u lªnh SELECT, mçi mÇu tin lµ mét node trong c©y ph©n cÊp. Cét gi¶ LEVEL cho biÕt cÊp cña mÉu tin hay cÊp cña node trong quan hÖ thõa kÕ. Có ph¸p: SELECT [DISTINCT/ALL] [expr [c_ias]] FROM [table/view/snapshot] [t_alias] [WHERE condition] [START WITH condition CONNECT BY PRIOR condition] [START WITH condition CONNECT BY PRIOR condition] [START WITH condition CONNECT BY PRIOR condition] [START WITH condition CONNECT BY PRIOR condition] [GROUP BY expr] [HAVING condition] [UNION/UNION ALL/INTERSET/MINUS select command] [ORDER BY expr/position [DESC/ASC]] Trong ®ã: • START WITH §Æc t¶ ®iÓm ®Çu cña h×nh c©y. Kh«ng thÓ ®Ó column gi¶ level ë mÖnh ®Ó nµy. • CONNECT BY ChØ column trong mèi liªn hÖ t×nh c©y. • PRIOR §Þnh h−íng cÊu tróc. NÕu prior xuÊt hiÖn tr−íc mgr, Mgr sÏ ®−îc t×m tr−íc sau ®ã ®Õn empno, ®©y lµ h×nh c©y h−íng lªn. NÕu prior xuÊt hiÖn tr−íc empno, empno sÏ ®−îc t×m tr−íc sau ®ã ®Õn empno, ®©y lµ h×nh c©y h−íng xuèng. VÝ dô SELECT LEVEL, DEPTNO, EMPNO, ENAME, JOB, SAL FROM EMP CONNECT BY PRIOR MGR = EMPNO CONNECT BY PRIOR MGR = EMPNO CONNECT BY PRIOR MGR = EMPNO CONNECT BY PRIOR MGR = EMPNO START WITH empno = 7876;
  • 42. C«ng ty cæ phÇn ®Çu t− ph¸t triÓn c«ng nghÖ - FPT Gi¸o tr×nh SQL vµ PL/SQL §µo t¹o c¬ b¶n: SQL vµ PL/SQL Trang 42 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 MÖnh ®Ò WHERE trong cÊu tróc h×nh c©y: MÖnh ®Ò WHERE vµ CONNECT BY cã thÓ ®−îc dïng ®ång thêi trong cÊu tróc h×nh c©y. NÕu mÖnh ®Ò WHERE lo¹i trõ mét sè row cña cÊu tróc h×nh c©y th× chØ nh÷ng row ®ã ®−îc lo¹i trõ. NÕu ®iÒu kiÖn ®Æt trong mÖnh ®Ò CONNECT BY th× toµn bé nh¸nh cña row ®ã bÞ lo¹i 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 2. SELECT LEVEL, DEPTNO, EMPNO, ENAME, JOB, SAL FROM EMP CONNECT BY PRIOR EMPNO = MGR AND ENAME != ‘SCOTT’ 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 9.3 Bµi tËp 1. T×m tÊt c¶ c¸c nh©n viªn, ngµy gia nhËp c«ng ty, tªn nh©n viªn, tªn ng−êi gi¸m ®èc vµ ngµy gia nhËp c«ng ty cña ng−êi gi¸m ®è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
  • 43. C«ng ty cæ phÇn ®Çu t− ph¸t triÓn c«ng nghÖ - FPT Gi¸o tr×nh SQL vµ PL/SQL §µo t¹o c¬ b¶n: SQL vµ PL/SQL Trang 43 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. 2. T×m nh÷ng nh©n viªn kiÕm ®−îc l−¬ng cao nhÊt trong mçi lo¹i nghÒ nghiÖp. JOB MAX(SAL) --------- --------- ANALYST 3000 CLERK 1300 MANAGER 2975 PRESIDENT 5000 SALESMAN 1600 3. T×m møc l−¬ng cao nhÊt trong mçi phßng ban, s¾p xÕp theo thø tù phßng ban. ENAME JOB DEPTNO SAL ---------- --------- ---------- ---------- KING PRESIDENT 10 5000 SCOTT SALEMAN 20 3300 BLAKE MANAGER 30 2850 4. T×m nh©n viªn gia nhËp vµo phßng ban sím nhÊt ENAME HIREDATE DEPTNO ---------- ---------- ---------- CLARK 09-06-1981 10 SMITH 17-12-1980 20 ALLEN 20-02-1981 30 5. HiÓn thÞ nh÷ng nh©n viªn cã møc l−¬ng lín h¬n l−¬ng TB cña phßng ban mµ hä lµm viÖc. 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 6. HiÓn thÞ tªn nh©n viªn, m· nh©n viªn, m· gi¸m ®èc, tªn gi¸m ®èc, phßng ban lµm viÖc cña gi¸m ®èc, møc l−¬ng cña gi¸m ®è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.
  • 44. C«ng ty cæ phÇn ®Çu t− ph¸t triÓn c«ng nghÖ - FPT Gi¸o tr×nh SQL vµ PL/SQL §µo t¹o c¬ b¶n: SQL vµ PL/SQL Trang 44 10 Tæng kÕt vÒ lÖnh select CÊu tróc lÖnh SELECT [DISTINCT/ALL] [expr [c_ias]] FROM [table/view/snapshot] [t_alias] [WHERE condition] [START WITH condition CONNECT BY condition] [GROUP BY expr] [HAVING condition] [UNION/UNION ALL/INTERSET/MINUS select command] [ORDER BY expr/position [DESC/ASC]] [FOR UPDATE OF [column]] [NOTWAIT] C¸c thµnh phÇn trong c©u lÖnh SELECT DISTINCT ChØ chän 1 cho c¸c row gièng nhau trong kÕt qu¶ ALL KÕt xuÊt c¶ c¸c row gièng nhau * Chän tÊt c¶ c¸c column trong table, view... table.*, view.*, snapshot.* Chän tÊt c¶ c¸c cét trong table, view hay snapshot ®−îc chÞ ®Þnh expr Chän c¸c biÓu thøc c_alias Tªn cét trong kÕt qu¶ kÕt xuÊt. table, view, snapshot lµ Tªn table, view hay snapshot subquery C©u hái select con t_alias Tªn cho c¸c table WHERE Chän c¸c row tháa ®iÒu kiÖn trong mÖnh ®Ò WHERE START WITH,CONNECT BY Chän c¸c dßng trong thø tù thõa kÕ GROUP BY Nhãm c¸c dßng cã expr gièng nhau HAVING Chän nh÷ng nhãm tháa ®iÒu kiÖn mÖnh ®Ò HAVING UNION, UNION ALL, INTERSET, MINUS Cho kÕt qu¶ kÕt hîp c¸c to¸n tö tËp hîp ORDER BY XÕp thø t− c¸c row theo expr hay position (trong danh s¸ch select) ASC, DESC TrËt tù xu«i (mÆc nhiªn) hay ng−îc FOR UPDATE Khãa nh÷ng row ®−îc chän, cho biÕt b¹n cã ý ®Þnh xãa hay cËp nhËt c¸c row nµy NOTWAIT Tr¶ quyÒn ®iÒu khiÓn nÕu khi muèn lock row ®· bÞ lock bëi user kh¸c. 11 T¹o table 11.1 LÖnh t¹o b¶ng §Ó t¹o mét b¶ng míi dïng lÖnh CREATE TABLE, Có ph¸p nh− sau: CREATE TABLE tablename (column [datatype][DEFAULT expr][column_constraint]..) [table_constraint]) [PCTFREE integer][PCTUSED integer] [INITRANS integer][MAXTRANS integer] [TABLESPACE tablespace] [STORAGE storage_clause] [AS subquery] Trong ®ã: tablename : Tªn table cÇn t¹o column : Tªn column trong table [datatype] : KiÓu d÷ liÖu cña column [DEFAULT expr] : Gi¸ trÞ mÆc ®Þnh cña column trong tr−êng hîp NULL lµ expr [column_constraint] : Rµng buéc cña b¶n th©n column [table_constraint] : rµng buéc cña toµn b¶ng [PCTFREE integer] : % trèng [PCTUSED integer] : % sö dông [INITRANS integer] : Sè b¶n ghi khëi t¹o [MAXTRANS integer] : Sè b¶n ghi lín nhÊt
  • 45. C«ng ty cæ phÇn ®Çu t− ph¸t triÓn c«ng nghÖ - FPT Gi¸o tr×nh SQL vµ PL/SQL §µo t¹o c¬ b¶n: SQL vµ PL/SQL Trang 45 [TABLESPACE tablespace] : ChØ ®Þnh TABLESAPCE cho b¶ng [STORAGE storage_clause] : Ghi mÖnh ®Ò l−u tr÷, ®¬n vÞ mÆc ®Þnh lµ KB trong ®ã c¸c c¸c chän lùa lµ: INITIAL - dung l−îng khëi t¹o; NEXT - dung l−îng t¨ng tiÕp theo; MINEXTENTS - % më réng nhá nhÊt; MAXEXTENTS- % më réng lín nhÊt; PCTINCREASE - Tèc ®é t¨ng hµng n¨m. [AS subquery] : t¹o b¶ng cã cÊu tróc gièng mÖnh ®Ò truy vÊn 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 (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 ; §Ó t¹o mét table míi, chóng ta cÇn ph¶i chuÈn bÞ mét sè th«ng tin sau: • Table ph¶i ®−îc chuÈn hãa. • Nh÷ng column mµ cho phÐp null nªn ®Þnh nghÜa sau ®Ó tiÕt kiÖm n¬i l−u tr÷. • Gép c¸c table l¹i nÕu cã thÓ. • ChØ ®Þnh c¸c th«ng sè pcfree vµ pctused • Cã thÓ chØ ®Þnh 2 th«ng sè initstran, maxtrans • Cã thÓ chØ ®Þnh tablespace cho table • Cã thÓ −íc l−îng kÝch th−íc table, vµ c¸c th«ng sè cho storage. TÝnh to¸n kÝch th−íc table (tham kh¶o):
  • 46. C«ng ty cæ phÇn ®Çu t− ph¸t triÓn c«ng nghÖ - FPT Gi¸o tr×nh SQL vµ PL/SQL §µo t¹o c¬ b¶n: SQL vµ PL/SQL Trang 46 1. TÝnh to¸n kho¶ng ®Üa cÇn thiÕt cho data block header. TÝnh theo c«ng thøc sau: BLOCK HEADER = (FIXED HEADER + VARIABLE TRANSACTION HEADER) + ( TABLE DIRECTORY + ROW DIRECTORY) Trong ®ã: fixed header = 57 bytes variable transaction header = 23*gi¸ trÞ cña th«ng sè instrans table directory =4 row directory = 2* sè l−îng row trong block. 2. TÝnh to¸n kho¶ng ®Üa trèng ®Ó chøa d÷ liÖu cña data block. TÝnh theo c«ng thøc sau: Kho¶ng ®Üa trèng ®Ó chøa data = (block size -total block header) - (block size -(fixed header+ variable transaction header))*(pctree/100) Cã thÓ biÕt block size b»ng c¸ch dïng lÖnh show parameters db_block_size. 3. TÝnh to¸n kho¶ng ®Üa trèng kÕt hîp b»ng gi¸ trÞ cña mçi row. 4. TÝnh to¸n kÝch th−íc trung b×nh cña row: KÝch th−íc trung b×nh cña row = row header +A+B+C A = Tæng chiÒu dµi cña c¸c cét <= 250 byte B = Tæng chiÒu dµi cña c¸c cét > 250 byte C = Kho¶ng ®Üa trèng kÕt hîp 5. QuyÕt ®Þnh sè row trung b×nh cho mét block: avg rows /block = available space/average row size 6. TÝnh to¸n sè l−îng block Block = sè row / sè row trung b×nh cho mét block 11.2 C¸c quy t¾c ®Æt tªn object • Tªn dµi tõ 1 ®Õn 30 ký tù, ngo¹i trõ tªn CSDL kh«ng qu¸ 8 ký tù vµ tªn liªn kÕt cã thÓ dµi ®Õn 128 ký tù • Tªn kh«ng chøa dÊu nh¸y (") • Kh«ng ph©n biÖt ch÷ hoa ch÷ th−êng • Tªn ph¶i b¾t ®Çu b»ng ký tù ch÷ trong bé ký tù cña CSDL • Tªn chØ cã thÓ chøa ký tù sè trong tËp ký tù cña CSDL. Cã thÓ dïng c¸c ký tù _, $, #. ORACLE kh«ng khuyÕn khÝch dïng c¸c ký tù $ vµ #. • Tªn kh«ng ®−îc trïng víi c¸c tõ ®· dïng bëi ORACLE (xemphu lôc 1) • Tªn kh«ng ®−îc c¸ch kho¶ng trèng • Tªn cã thÓ ®Æt trong cÆp dÊu nh¸y kÐp, khi ®ã tªn cã thÓ bao gåm c¸c ký tù bÊt kú, cã thÓ bao gåm kho¶ng trèng, cã thÓ dïng c¸c tõ khãa cña ORACLE, ph©n biÖt ch÷ hoa ch÷ th−êng. • Tªn ph¶i duy nhÊt trong "kh«ng gian tªn" nhÊt ®Þnh. C¸c object thuéc cïng kh«ng gian tªn ph¶i cã tªn kh¸c nhau. C¸c bÝ danh cña cét, bÝ danh b¶ng, tªn ng−êi sö dông, mËt khÈu mÆc dï kh«ng ph¶i lµ c¸c object hoÆc c¸c thµnh phÇn con cña object nh−ng còng ph¶i ®−îc ®Æt tªn theo c¸c quy t¾c trªn, ngo¹i trõ BÝ danh cét, bÝ danh b¶ng chØ tån t¹i khi thùc hiÖn c¸c lÖnh SQL vµ kh«ng ®−îc l−u tr÷ trong CSDL, do vËy kh«ng ¸p dông quy t¾c 9 vÒ kh«ng gian tªn. MËt khÈu kh«ng thuéc vÒ kh«ng gian tªn nµo vµ do ®ã còng kh«ng ¸p dông quy t¾c 9. Nªn ®Æt tªn theo mét quy t¾c ®Æt tªn thèng nhÊt
  • 47. C«ng ty cæ phÇn ®Çu t− ph¸t triÓn c«ng nghÖ - FPT Gi¸o tr×nh SQL vµ PL/SQL §µo t¹o c¬ b¶n: SQL vµ PL/SQL Trang 47 11.3 C¸c quy t¾c khi tham chiÕu ®Õn object Có ph¸p chung khi tham chiÕu ®Õn c¸c object S¬ ®å chung khi tham chiÕu c¸c object hoÆc thµnh phÇn cña c¸c object Schema.Object.Part.@dblink Trong ®ã object Tªn object schema Schema chøa object part Thµnh phÇn cña object dblink Tªn CSDL chøa object ORACLE gi¶i quyÕt viÖc tham chiÕu c¸c object Khi tham chiÕu ®Õn mét object trong c©u lÖnh SQL, ORACLE ph©n tÝch c©u lÖnh vµ vµ x¸c ®Þnh c¸c object trong kh«ng gian tªn. Sau khi x¸c ®Þnh c¸c object, ORACLE thùc hiÖn c¸c thao t¸c mµ c©u lÖnh quy ®Þnh trªn object. NÕu tªn object truy cËp kh«ng thuéc kh«ng gian tªn th× c©u lÖnh kh«ng ®−îc thùc hiÖn vµ cã th«ng b¸o lçi. C©u lÖnh sau thªm mét mÈu tin vµo b¶ng DEPT INSERT INTO Dept VALUES (50, 'SUPPOR', 'PARIS') Theo ng÷ c¶nh cña c©u lÖnh, ORACLE x¸c ®Þnh b¶ng Dept cã thÓ lµ • Mét table trong schema cña b¹n • Mét view trong schema cña b¹n • §ång nghÜa riªng cho table hoÆc view • §ång nghÜa chung cho table hoÆc view Tham chiÕu ®Õn c¸c object kh«ng thuéc quyÒn së h÷u §Ó tham chiÕu ®Õn c¸c object kh«ng thuéc schema hiÖn thêi, ph¶i chØ ra tªn cña schema chøa object muèn truy cËp schema.object VÝ dô ®Ó xãa table EMP trong schema SCOTT DROP TABLE scott.emp Tham chiÕu c¸c object tõ xa §Ó truy cËp ®Õn mét CSDL ë xa, sau tªn object ph¶i chØ ra tªn liªn kÕt CSDL (database link) cña CSDL chøa object muèn truy cËp. Database link lµ mét schema object, ORACLE dïng ®Ó th©m nhËp vµ truy xuÊt CSDL tõ xa. 11.4 KiÓu d÷ liÖu vµ ®iÒu kiÖn 11.4.1 CHAR KiÓu CHAR dïng ®Ó khai b¸o mét chuçi cã chiÒu dµi cè ®Þnh, khi khai b¸o biÕn hoÆc cét kiÓu CHAR víi chiÒu dµi chØ ®Þnh th× tÊt c¶ c¸c môc tin cña biÕn hay cét nµy ®Òu cã cïng chiÒu dµi ®−îc chØ ®Þnh. C¸c môc tin ng¾n h¬n ORACLE sÏ tù ®éng thªm vµo c¸c kho¶ng trèng cho ®ñ chiÒu dµi. ORACLE kh«ng cho phÐp