Học Oracle cơ bản (Bài 13 Sequent)

Đây là tập tài liệu hướng dẫn học Oracle từ mức cơ bản của công ty PyThis, tài liệu này khá hay. Bạn nào quan tâm hãy download về và học

ppt25 trang | Chia sẻ: tue_kc | Lượt xem: 2387 | Lượt tải: 2download
Bạn đang xem trước 20 trang tài liệu Học Oracle cơ bản (Bài 13 Sequent), để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Nh÷ng ®èi t­îng kh¸c cña CSDL Môc ®Ých Sau bµi häc nµy, b¹n cã thÓ: Miªu t¶ vµ sö dông mét sè ®èi t­îng cña CSDL. T¹o, duy tr×, vµ sö dông d·y (sequence). T¹o vµ duy tr× chØ sè (indexes). T¹o c¸c tõ ®ång nghÜa (synonyms). §èi t­îng cña CSDL Miªu t¶ §¬n vÞ c¬ së ®Ó l­u tr÷ d÷ liÖu; gåm hµng vµ cét. BiÓu diÔn tËp d÷ liÖu tõ mét hoÆc nhiÒu b¶ng mét c¸ch logic T¹o gi¸ trÞ cho primary key. C¶i thiÖn sù thùc hiÖn cña mét sè query Tªn kh¸c cho ®èi t­îng §èi t­îng Table View Sequence Index Synonym D·y (sequence) lµ g×? Tù ®éng t¹o c¸c sè duy nhÊt Lµ ®èi t­îng cã thÓ dïng chung. Th­êng ®­îc sö dông ®Ó t¹o c¸c gi¸ trÞ cña kho¸ chÝnh (primary key). Thay thÕ m· øng dông. Lµm t¨ng tÝnh hiÖu qu¶ vµ truy nhËp gi¸ trÞ d·y khi ®Ó (cached) trong bé nhí. C©u lÖnh CREATE SEQUENCE T¹o d·y tù ®éng nhê lªnh: CREATE SEQUENCE sequence [INCREMENT BY n] [START WITH n] [{MAXVALUE n | NOMAXVALUE}] [{MINVALUE n | NOMINVALUE}] [{CYCLE | NOCYCLE}] [{CACHE n | NOCACHE}]; T¹o d·y T¹o d·y cã tªn DEPT_DEPTNO Kh«ng sö dông chän lùa CYCLE. SQL> CREATE SEQUENCE dept_deptno 2 INCREMENT BY 1 3 START WITH 91 4 MAXVALUE 100 5 NOCACHE 6 NOCYCLE; Sequence created. KiÓm tra d·y KiÓm tra d·y trong b¶ng tõ ®iÓn d÷ liÖu:USER_SEQUENCES Cét LAST_NUMBER hiÖn sè tiÕp theo cña d·y. SQL> SELECT sequence_name, min_value, max_value, 2 increment_by, last_number 3 FROM user_sequences; C¸c gi¶ cét NEXTVAL vµ CURRVAL NEXTVAL tr¶ vÒ gi¸ trÞ tiÕp theo cña d·y. Gi¸ trÞ ®ã lµ duy nhÊt ®èi víi mäi ng­êi dïng. CURRVAL cho gi¸ trÞ hiÖn t¹i cña d·y. NEXTVAL ph¶i ®­îc thùc hiÖn tr­íc khi lÊy CURRVAL. Sö dông d·y ChÌn hµng míi cho b¶ng. Xem gi¸ trÞ hiÖn t¹i cña d·y. SQL> INSERT INTO dept(deptno, dname, loc) 2 VALUES (dept_deptno.NEXTVAL, 3 'MARKETING', 'SAN DIEGO'); 1 row created. SQL> SELECT dept_deptno.CURRVAL 2 FROM dual; Sö dông d·y L­u (Caching) gi¸ trÞ d·y trong bé nhí cho phÐp truy nhËp d·y nhanh h¬n. Kho¶ng trèng trong d·y cã thÓ xuÊt hiÖn khi: Cã rollback. HÖ thèng bÞ háng. D·y ®­îc sö dông ë b¶ng kh¸c. Sö dông USER_SEQUENCE ®Ó xem gi¸ trÞ tiÕp theo cña d·y. Thay ®æi d·y Thay ®æi c¸c chän lùa: increment by, maximum, minimum, cycle, hoÆc cache. SQL> ALTER SEQUENCE dept_deptno 2 INCREMENT BY 1 3 MAXVALUE 999999 4 NOCACHE 5 NOCYCLE; Sequence altered. ChØ dÉn khi thay ®æi d·y Ph¶i lµ chñ hoÆc cã quyÒn ALTER d·y. ChØ nh÷ng gi¸ trÞ tiÕp theo cña d·y bÞ ¶nh h­ëng. D·y ph¶i bÞ xo¸ vµ t¹o l¹i ®Ó t¸i t¹o sè b¾t ®Çu. Mét sè kiÓm tra x¸c nhËn ®­îc thùc hiÖn. Xo¸ bá d·y Sö dông c©u lÖnh DROP SEQUENCE. Sau khi xo¸, d·y kh«ng cßn tham chiÕu tíi ®­îc n÷a. SQL> DROP SEQUENCE dept_deptno; Sequence dropped. ChØ sè (Index) lµ g×? Lµ ®èi t­îng cña CSDL. §­îc Oracle Server sö dông ®Ó t¨ng tèc khi lÊy c¸c hµng nhê sö dông con trá. §éc lËp víi b¶ng ®­îc t¹o chØ sè. §­îc Oracle Server sö dông vµ duy tr× tù ®éng. ChØ sè (index) ®­îc t¹o nh­ thÕ nµo? Tù ®éng: chØ sè duy nhÊt ®­îc t¹o tù ®éng khi x¸c ®Þnh rµng buéc PRIMARY KEY hoÆc UNIQUE khi ®Þnh nghÜa b¶ng. Tù t¹o: Ng­êi dïng cã thÓ t¹o index trªn c¸c cét ®Ó t¨ng tèc truy nhËp ®Õn c¸c hµng. T¹o chØ sè (index) VÝ dô: SQL> CREATE INDEX emp_ename_idx 2 ON emp(ename); Index created. CREATE INDEX index ON table (column[, column]...); T¹o chØ sè cho mét hoÆc nhiÒu cét. Khi nµo t¹o Index Cét th­êng ®­îc sö dông trong mÖnh ®Ò WHERE hoÆc trong ®iÒu kiÖn JOIN. Cét chøa c¸c gi¸ trÞ trong mét miÒn réng. Cét chøa nhiÒu gi¸ trÞ null. B¶ng lín vµ nhiÒu query chØ truy vÊn ®Õn 2-4% c¸c hµng. Kh«ng t¹o Index? B¶ng nhá Cét kh«ng th­êng ®­îc sö dông trong query. §a sè c¸c query truy vÊn ®Õn h¬n 2-4 % c¸c hµng. B¶ng th­êng ®­îc cËp nhËt (update). KiÓm tra index USER_INDEX view chøa tªn vµ c¸c tÝnh chÊt cña index. USER_IND_COLUMNS view chøa tªn, tªn b¶ng, tªn cét cña index. SQL> SELECT ic.index_name, ic.column_name, 2 ic.column_position col_pos,ix.uniqueness 3 FROM user_indexes ix, user_ind_columns ic 4 WHERE ic.index_name = ix.index_name 5 AND ic.table_name = 'EMP'; Xo¸ bá Index Sö dông lÖnh: VÝ dô: §Ó xo¸ bá index, b¹n ph¶i lµ chñ hoÆc cã quyÒn DROP ANY INDEX. SQL> DROP INDEX emp_ename_idx; Index dropped. SQL> DROP INDEX index; §ång nghÜa (Synonyms) T¹o tªn kh¸c cho ®èi t­îng ®Ó ®¬n gi¶n khi truy nhËp. Tham chiÕu ®Õn b¶ng cña ng­êi kh¸c. Lµm cho tªn cña ®èi t­îng ng¾n ®i. CREATE [PUBLIC] SYNONYM synonym FOR object; T¹o vµ bá Synonym SQL> CREATE SYNONYM d_sum 2 FOR dept_sum_vu; Synonym Created. SQL> DROP SYNONYM d_sum; Synonym dropped. VÝ dô t¹o synonym: Bá synonym. Tãm t¾t D·y sè (sequence) ®­îc tù ®éng t¹o. Xem th«ng tin vÒ d·y tõ USER_SEQUENCES. T¹o index ®Ó c¶i thiÖn khi truy vÊn. Xem th«ng tin vÒ index tõ USER_INDEXES. Sö dông synonym ®Ó cung cÊp tªn kh¸c cho ®èi t­îng. Thùc hµnh T¹o d·y (sequence) Sö dông d·y T¹o index Xem th«ng tin vÒ sequence vµ index. Xo¸ bá sequence vµ index.