Học Oracle cơ bản (Bài 13)
Đâ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
Bạn đang xem trước 20 trang tài liệu Học Oracle cơ bản (Bài 13), để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
C¸c object kh¸c trong database Néi dung M« t¶ mét sè ®èi tîng d÷ liÖu vµ c¸ch sö dông chóng T¹o vµ b¶o tr× sequence T¹o vµ b¶o tr× indexes T¹o c¸c private vµ public synonyms C¸c ®èi tîng cña database Description Basic unit of storage; composed of rows and columns Logically represents subsets of data from one or more tables Generates primary key values Improves the performance of some queries Alternative name for an object Object Table View Sequence Index Synonym Sequence lµ g×? Tù ®éng sinh ra mét sè duy nhÊt Lµ ®èi tîng chia sÎ Hay ®îc sö dông lµ primary key Thay thÕ m· øng dông T¨ng tèc ®é sö lý khi truy xuÊt sequence trªn memory cache C©u lÖnh t¹o sequence §Þnh nghÜa sequence: CREATE SEQUENCE sequence [INCREMENT BY n] [START WITH n] [{MAXVALUE n | NOMAXVALUE}] [{MINVALUE n | NOMINVALUE}] [{CYCLE | NOCYCLE}] [{CACHE n | NOCACHE}]; T¹o sequence T¹o mét dequence DEPT_DEPTNO sö dông cho primary key cña b¶ng DEPT Kh«ng sö dông tuy chän CYCLE. SQL> CREATE SEQUENCE dept_deptno 2 INCREMENT BY 1 3 START WITH 91 4 MAXVALUE 100 5 NOCACHE 6 NOCYCLE; Sequence created. Th«ng tin vÒ sequence KiÓm tra th«ng tin vÒ sequence trªn b¶ng USER_SEQUENCES. Cét LAST_NUMBER hiÓn thÞ gi¸ tri tiÕp theo cña sequence SQL> SELECT sequence_name, min_value, max_value, 2 increment_by, last_number 3 FROM user_sequences; To¸n tö NEXTVAL vµ CURRVAL NEXTVAL tr¶ vÒ gi¸ trÞ tiÕp theo cña sequence nã tr¶ vÒ gi¸ trÞ duy nhÊt th©m chÝ ch¹y bëi c¸c user kh¸c. CURRVAL gi¸ trÞ hiÖn thêi cña sequence Sö dông Sequence ChÌn mét v¨n phßng míi cã tªn lµ “MARKETING” ë San Diego. Xem gi¸ trÞ hiÖn thêi cña sequence 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 Sequence Cache sequence trªn bé nhí cho phÐp truy xuÊt nhanh sequence Khe hë giòa c¸c gi¸ trÞ cã thÓ x¶y ra khi: Rollback x¶y ra HÖ thèng bÞ háng Mét sequence ®ùîc sö dông trªn table kh¸c Söa ch÷a mét Sequence Thay ®æi gi¸ trÞ increment, maximum , minimum , cycle option hay cache option. SQL> ALTER SEQUENCE dept_deptno 2 INCREMENT BY 1 3 MAXVALUE 999999 4 NOCACHE 5 NOCYCLE; Sequence altered. Mét sè híng dÉn söa ch÷a sequence B¹n ph¶i lµ owner hay cã quyÒn alter ChØ c¸c sè sequence trong t¬ng lai míi bÞ ¶nh hëng. Sequence cÇn ph¶i ®îc xo¸ hay t¹o l¹i ®Ó b¾t ®Çu sequence ë mét gi¸ trÞ kh¸c Mét sè qu¸ tr×nh kiÓm tra ®îc thùc hiÖn. Xo¸ mét Sequence Xo¸ mét sequence tõ database b»ng c©u lÖnh DROP SEQUENCE Khi ®· bÞ xo¸ sequence kh«ng thÓ tham kh¶o ®îc SQL> DROP SEQUENCE dept_deptno; Sequence dropped. Index lµ g×? Lµ mét ®èi tîng §îc sö dông ®Ó t¨ng tèc ®é truy xuÊt d÷ liÖu Lµm gi¶m disk I/O b»ng ph¬ng ph¸p truy xuÊt d÷ liÖu nhanh §éc lËp víi b¶ng mµ nã chØ sè §îc sö dông vµ b¶o tr× tù ®éng bëi oracle database Index ®îc t¹o ra nh thÕ nµo? Tù ®éng: Mét index duy nhÊt ®îc t¹o ra khi ®Þnh nghÜa mét PRIMARY KEY hay UNIQUE constraint trong b¶ng . B»ng tay: ngêi dïng cã thÓ t¹o index trªn c¸c cét ®Ó t¨ng téc ®é truy xuÊt T¹o Index Hç trî tèc ®é truy xuÊt SQL> CREATE INDEX emp_ename_idx 2 ON emp(ename); Index created. CREATE INDEX index ON table (column[, column]...); T¹o index trªn mét hay nhiÒu cét. Híng dÉn t¹o Index C¸c cét ®îc dïng thßng xuyªn trong mÖnh ®Ò WHERE vµ mÖnh ®Ò JOINT Cét chøa d·y gi¸ trÞ lín. Cét chøa nhiÒu gi¸ trÞ NULL Hai hay nhiÒu cét ®îc sö dông thêng xuyªn trong mÖnh ®Ò WHERE hay mÖnh ®Ò JOINT C¸c b¶ng lín vµ vµ c¸c truy xuÊt Ýt h¬n 2–4% c¸c hµng. Khi nµo kh«ng t¹o Index B¶ng lµ nhá. C¸c cét kh«ng thêng xuyªn ®îc sö dông trong c©u lÖnh query HÇu hÕt c¸c query truy xuÊt nhiÒu h¬n 2–4% c¸c hµng. B¶ng ®îc update thêng xuyªn . Xem th«ng tin Indexes View USER_INDEXES chøa tªn cña index vµ c¸c th«ng tin vÒ index. View USER_IND_COLUMNS Chøa th«ng tin vÒ index,tªn b¶ng , còng nh cét ®îc 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¸ mét Index Xo¸ index tõ tõ ®iÓn d÷ liÖu. Xo¸ Index EMP_ENAME_IDX tõ data dictionary. §Ó xo¸ mét index th× ph¶i lµ owner cña index hay cã DROP ANY INDEX privilege. SQL> DROP INDEX emp_ename_idx; Index dropped. SQL> DROP INDEX index; Synonyms Synonyms lµ c¸ch ®Æt tªn kh¸c cho ®èi tîng T¹o tªn tham kh¶o tíi tªn b¶ng cña mét user kh¸c . T¹o ra tªn ng¾n cho ®èi tîng. CREATE [PUBLIC] SYNONYM synonym FOR object; T¹o vµ xo¸ Synonyms SQL> CREATE SYNONYM d_sum 2 FOR dept_sum; Synonym Created. SQL> DROP SYNONYM d_sum; Synonym dropped. T¹o tªn ng¾n cho view DEPT_SUM. Xo¸ mét synonym. Tæng kÕt Tù ®éng sinh ra sè sequence b»ng c¸ch dïng sequence Xem c¸c th«ng tin vÒ sequence dùa vµo b¶ng USER_SEQUENCES trong data dictionary. T¹o Index ®Ó hç trî hiÖu n¨ng truy xuÊt Xem th«ng tin vÒ index trong b¶ng USER_INDEXES trong dictionary table. Sö dông synonyms t¹o tªn thay thÕ cho mét ®èi tîng