Đăng ký Đăng nhập

Tài liệu 3.giao_trinh_sql_va_pl_sql

.PDF
78
330
132

Mô tả:

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 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 §µ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 Gi¸o tr×nh SQL vµ PL/SQL Môc lôc Môc lôc .................................................................................................................................................3 1 Giíi thiÖu.......................................................................................................................................6 1.1 1.2 Môc tiªu kho¸ häc ..............................................................................................................................6 Khëi ®éng vµ tho¸t khái Oracle.........................................................................................................6 1.2.1 1.2.2 1.3 Giíi thiÖu ng«n ng÷ SQL ...................................................................................................................7 1.3.1 1.3.2 1.4 1.5 1.6 1.7 LÖnh truy vÊn c¬ b¶n........................................................................................................................10 C¸c thµnh phÇn kh¸c cña mÖnh ®Ò SELECT..................................................................................10 Gi¸ trÞ Null..........................................................................................................................................11 Läc d÷ liÖu tõ c¸c row cã cïng gi¸ trÞ.............................................................................................11 HiÓn thÞ cÊu tróc b¶ng ......................................................................................................................12 C¸c lÖnh cña c«ng cô SQL*Plus......................................................................................................12 2.6.1 2.6.2 2.6.3 2.7 C¸c hµm sè........................................................................................................................................20 C¸c hµm ký tù ...................................................................................................................................22 C¸c hµm ngµy ...................................................................................................................................26 C¸c hµm chuyÓn ®æi kiÓu.................................................................................................................28 Bµi tËp................................................................................................................................................29 Bµi tËp................................................................................................................................................32 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 6.2 6.3 7 MÖnh ®Ò ORDER BY .........................................................................................................................16 MÖnh ®Ò WHERE...............................................................................................................................16 C¸c to¸n tö ........................................................................................................................................17 Bµi tËp................................................................................................................................................19 BiÕn runtime..............................................................................................................................31 5.1 6 Bµi tËp................................................................................................................................................14 C¸c hµm ¸p dông cho 1 dßng d÷ liÖu..............................................................................20 4.1 4.2 4.3 4.4 4.5 5 C¸c lÖnh so¹n th¶o ...............................................................................................12 C¸c lÖnh vÒ file......................................................................................................13 C¸c lÖnh vÒ column...............................................................................................13 Truy vÊn d÷ liÖu cã ®iÒu kiÖn ............................................................................................16 3.1 3.2 3.3 3.4 4 M« h×nh quan hÖ d÷ liÖu..........................................................................................9 M« t¶ d÷ liÖu............................................................................................................9 LÖnh truy vÊn c¬ b¶n ...........................................................................................................10 2.1 2.2 2.3 2.4 2.5 2.6 3 LÞch sö ph¸t triÓn cña ng«n ng÷ SQL .....................................................................7 ChuÈn SQL .............................................................................................................7 C¸c kh¸i niÖm trong CSDL.................................................................................................................7 Danh s¸ch rót gän c¸c ®èi t−îng CSDL ...........................................................................................8 C¸c lÖnh SQL ......................................................................................................................................8 Giíi thiÖu vÒ vÝ dô thùc hµnh.............................................................................................................9 1.7.1 1.7.2 2 T¹i Server (Window NT) .........................................................................................6 T¹i Client (Window 9x) ............................................................................................6 C¸c hµm t¸c ®éng trªn nhãm ..........................................................................................................32 MÖnh ®Ò GROUP BY .........................................................................................................................34 Bµi tËp................................................................................................................................................35 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 §µo t¹o c¬ b¶n: SQL vµ PL/SQL Trang 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 7.2 7.3 7.4 7.5 7.6 8 C¸c lÖnh truy vÊn lång nhau...........................................................................................39 8.1 8.2 9 Mèi liªn kÕt kh«ng t−¬ng ®−¬ng......................................................................................................35 Mèi liªn kÕt céng...............................................................................................................................36 Liªn kÕt cña b¶ng víi chÝnh nã .......................................................................................................36 C¸c to¸n tö tËp hîp ..........................................................................................................................36 Bµi tËp................................................................................................................................................37 C©u lÖnh SELECT lång nhau. ..........................................................................................................39 Bµi tËp................................................................................................................................................40 CÊu tróc h×nh c©y...................................................................................................................40 9.1 9.2 9.3 CÊu tróc h×nh c©y trong 1 table .......................................................................................................40 Kü thuËt thùc hiÖn ............................................................................................................................41 Bµi tËp................................................................................................................................................42 10 Tæng kÕt vÒ lÖnh select .....................................................................................................44 11 T¹o table ...................................................................................................................................44 11.1 11.2 11.3 11.4 LÖnh t¹o b¶ng ...................................................................................................................................44 C¸c quy t¾c ®Æt tªn object ...............................................................................................................46 C¸c quy t¾c khi tham chiÕu ®Õn object...........................................................................................47 KiÓu d÷ liÖu vµ ®iÒu kiÖn ..................................................................................................................47 11.4.1 11.4.2 11.4.3 11.4.4 11.4.5 11.4.6 11.4.7 11.4.8 11.4.9 11.4.10 11.4.11 CHAR ....................................................................................................................47 VARCHAR2...........................................................................................................48 VARCHAR.............................................................................................................48 NUMBER...............................................................................................................48 FLOAT...................................................................................................................48 LONG ....................................................................................................................49 DATE.....................................................................................................................49 RAW vµ LONG RAW ............................................................................................50 ROWID ..................................................................................................................50 MLSLABEL............................................................................................................50 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 12.2.2 12.2.3 12.2.4 Xãa table ...............................................................................................................53 Gi¶i thÝch b¶ng ......................................................................................................53 Thay ®æi tªn object................................................................................................53 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 13.2 13.3 13.4 13.5 13.6 14 ChÌn mét row vµo table ...................................................................................................................55 ChØnh söa d÷ liÖu..............................................................................................................................55 Xãa dßng ...........................................................................................................................................55 Lçi rµng buéc d÷ liÖu .......................................................................................................................56 LÖnh ®iÒu khiÓn giao dÞch................................................................................................................56 Bµi tËp................................................................................................................................................57 Sequence vµ index..................................................................................................................57 §µo t¹o c¬ b¶n: SQL vµ PL/SQL Trang 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 14.1 Sequence...........................................................................................................................................57 14.1.1 14.1.2 T¹o Sequence.......................................................................................................57 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 18.2 18.3 18.4 18.5 19 cursor ........................................................................................................................................68 19.1 19.2 19.3 19.4 19.5 20 IF ........................................................................................................................................................66 LOOP vµ EXIT....................................................................................................................................66 FOR ....................................................................................................................................................67 WHILE ................................................................................................................................................67 GOTO .................................................................................................................................................67 §Þnh nghÜa .........................................................................................................................................68 KiÓu d÷ liÖu Table vµ Record...........................................................................................................69 Sao kiÓu d÷ liÖu ................................................................................................................................70 C©u lÖnh SELECT... INTO... trong PL/SQL......................................................................................70 Bµi tËp................................................................................................................................................70 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 §µo t¹o c¬ b¶n: SQL vµ PL/SQL Trang 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 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: ***** §µo t¹o c¬ b¶n: SQL vµ PL/SQL Trang 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 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... §µo t¹o c¬ b¶n: SQL vµ PL/SQL Trang 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 VÝ dô: EMP EMPNO DEPT ENAME DEPTNO EMP 7369 DEPTNO DNAME DEPT 20 10 ACCOUNTING 7499 ALLEN 30 20 RESEARCH 7521 WARD 30 7566 JONES 20 30 SALES 7654 MARTIN 30 40 OPERATIONS 7698 BLAKE 30 7782 Row SMITH CLARK 10 Foreign key Primary key Column 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 SELECT INSERT UPDATE DELETE CREATE ALTER DROP RENAME TRUNCATE COMMIT ROLLBACK SAVE POINT GRANT REVOKE M« t¶ Lµ lÖnh th«ng dông nhÊt, dïng ®Ó lÊy, xem d÷ liÖu trong CSDL. 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) 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) 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. 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 §µo t¹o c¬ b¶n: SQL vµ PL/SQL Trang 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 Control Language) 1.7 1.7.1 Giíi thiÖu vÒ vÝ dô thùc hµnh M« h×nh quan hÖ d÷ liÖu DEPT EMP SALGRADE DUMMY 1.7.2 BONUS M« t¶ d÷ liÖu Tªn KiÓu Kho¸ Gi¶i thÝch DEPTNO NUMBER(2) NOT NULL PK M· phßng ban DNAME CHAR(14) Tªn phßng ban LOC CHAR(13) §Þa chØ DEPT SALGRADE GRADE NUMBER LOSAL NUMBER PK Møc l¬ng Gi¸ trÞ thÊp HISAL NUMBER Gi¸ trÞ cao EMP EMPNO NUMBER(4) NOT NULL, ENAME CHAR(10), JOB CHAR(9), MGR NUMBER(4) HIREDATE DATE Ngµy gia nhËp c«ng ty SAL NUMBER(7,2) L−¬ng COMM NUMBER(2) NOT NULL, §µo t¹o c¬ b¶n: SQL vµ PL/SQL M· nh©n viªn Tªn nh©n viªn NghÒ nghiÖp FK (EMP.EMPNO) NUMBER(7,2) DEPTNO PK M· ng−êi qu¶n lý Th−ëng FK (DEPT.DEPTNO) M· phßng ban Trang 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 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 1 column. 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 • 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 §µo t¹o c¬ b¶n: SQL vµ PL/SQL Trang 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 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; §µo t¹o c¬ b¶n: SQL vµ PL/SQL Trang 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 §Ó 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 §µo t¹o c¬ b¶n: SQL vµ PL/SQL Trang 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 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 2.6.3 Tho¸t khái SQL*Plus 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 §µo t¹o c¬ b¶n: SQL vµ PL/SQL Trang 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 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 §µo t¹o c¬ b¶n: SQL vµ PL/SQL Trang 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 7654 MARTIN SALESMAN 7499 ALLEN SALESMAN 7844 TURNER SALESMAN 7900 JAMES CLERK 7521 WARD SALESMAN 7902 FORD ANALYST 7369 SMITH CLERK 7788 SCOTT ANALYST 7876 ADAMS CLERK 7934 MILLER CLERK 3. HiÓn thÞ mäi lo¹i nghÒ nghiÖp 7698 7698 7698 7698 7698 7566 7902 7566 7788 7782 28-09-1981 20-02-1981 08-09-1981 03-12-1981 22-02-1981 03-12-1981 17-12-1980 09-12-1982 12-01-1983 23-01-1982 1250 1600 1500 950 1250 3000 800 3000 1100 1300 1400 300 0 500 30 30 30 30 30 20 20 20 20 10 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; §µo t¹o c¬ b¶n: SQL vµ PL/SQL Trang 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 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]] §µo t¹o c¬ b¶n: SQL vµ PL/SQL Trang 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 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 §µo t¹o c¬ b¶n: SQL vµ PL/SQL Trang 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 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) • 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. : thuéc bÊt kú gi¸ trÞ nµo trong danh s¸ch [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 ; §µo t¹o c¬ b¶n: SQL vµ PL/SQL Trang 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 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 -----10 40 20 30 DNAME ----------ACCOUNTING OPERATIONS RESEARCH 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 ---------7876 7782 7902 7566 7839 7934 7788 7369 ENAME JOB MGR HIREDATE SAL COMM DEPTNO ----------------- ----- ---------- ---------- ----- ----ADAMS CLERK 7788 12-01-1983 1100 20 CLARK MANAGER 7839 09-06-1981 2450 10 FORD ANALYST 7566 03-12-1981 3000 20 JONES MANAGER 7839 02-04-1981 2975 20 KING PRESIDENT 17-11-1981 5000 10 MILLER CLERK 7782 23-01-1982 1300 10 SCOTT ANALYST 7566 09-12-1982 3000 20 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 ---------SMITH ADAMS JOB --------CLERK 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 ---------SMITH ALLEN WARD JONES JOB SAL --------- ---------CLERK 800 SALESMAN 1600 SALESMAN 1250 MANAGER 2975 §µo t¹o c¬ b¶n: SQL vµ PL/SQL Trang 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 MARTIN BLAKE CLARK SCOTT TURNER ADAMS JAMES FORD MILLER SALESMAN MANAGER MANAGER ANALYST SALESMAN CLERK CLERK ANALYST CLERK 1250 2850 2450 3000 1500 1100 950 3000 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 4.1 C¸c hµm ¸p dông cho 1 dßng d÷ liÖu 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 §µo t¹o c¬ b¶n: SQL vµ PL/SQL = Trang 20
- Xem thêm -

Tài liệu liên quan