Học Oracle cơ bản (Bài 10 Create Table)
Đâ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 10 Create Table), để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
T¹o vµ qu¶n lý b¶ng Môc ®Ých Sau bµi häc nµy, b¹n cã thÓ: Miªu t¶ nh÷ng ®èi tîng chñ yÕu cña CSDL. T¹o b¶ng Miªu t¶ c¸c d¹ng d÷ liÖu cho c¸c cét Thay ®æi b¶ng Xo¸ (drop), ®æi tªn (rename), vµ xo¸ d÷ liÖu (truncate) cña b¶ng. C¸c ®èi tîng cña CSDL §èi tîng Miªu t¶ Table Lµ ®¬n vÞ c¬ së ®Ó lu; gåm hµng vµ cét View Lµ tËp con biÓu diÔn logic d÷ liÖu tõ mét hoÆc nhiÒu b¶ng. Sequence T¹o c¸c gi¸ trÞ cho kho¸ chÝnh Index C¶i thiÖn sù thùc hiÖn cho mét sè query Synonym T¹o tªn kh¸c cho ®èi tîng Quy íc ®Æt tªn Ph¶i b¾t ®Çu b»ng ch÷ c¸i Cã thÓ dµi tõ 1-30 ký tù Ph¶i bao gåm A-Z, a-z, 0-9, _, $ vµ #. Kh«ng lÆp l¹i tªn cña ®èi tîng kh¸c cña cïng ngêi dïng Kh«ng lµ tõ dù tr÷ cña Oracle Server. LÖnh CREATE TABLE Ph¶i cã : QuyÒn t¹o b¶ng: CREATE TABLE Vïng lu tr÷ B¹n chØ ra: Tªn b¶ng tªn c«t, d¹ng d÷ liÖu cña cét, vµ kÝch thíc cét CREATE TABLE [schema.]table (column datatype [DEFAULT expr][, ...]); Tham chiÕu ®Õn b¶ng kh¸c C¸c b¶ng thuéc ngêi kh¸c kh«ng thuéc schema cña ngêi dïng. B¹n dïng tªn ngêi chñ nh lµ phÇn tiÒn tè cña b¶ng. PhÇn chän DEFAULT ChØ gi¸ trÞ ngÇm ®Þnh cho cét khi insert.. … hiredate DATE DEFAULT SYSDATE, … Gi¸ trÞ hîp lÖ lµ gi¸ trÞ ®óng nh viÕt (literal), biÓu thøc, hoÆc hµm SQL. Gi¸ trÞ kh«ng hîp lÖ lµ tªn cét kh¸c, hoÆc cét gi¶. D¹ng d÷ liÖu ngÇm ®Þnh ph¶i phï hîp d¹ng d÷ liÖu cña cét. T¹o b¶ng SQL> CREATE TABLE dept 2 (deptno NUMBER(2), 3 dname VARCHAR2(14), 4 loc VARCHAR2(13)); Table created. T¹o b¶ng. KiÓm tra viÖc t¹o b¶ng. SQL> DESCRIBE dept Name Null? Type --------------------------- -------- --------- DEPTNO NUMBER(2) DNAME VARCHAR2(14) LOC VARCHAR2(13) B¶ng trong CSDL Oracle B¶ng cña ngêi dïng Lµ tËp c¸c b¶ng ®îc ngêi dïng t¹o vµ duy tr×. Chøa c¸c th«ng tin cña ngêi dïng Tõ ®iÓn d÷ liÖu (Data Dictionary) TËp c¸c b¶ng ®îc Oracle server t¹o vµ duy tr×. Chøa c¸c th«ng tin vÒ CSDL. Truy vÊn tõ ®iÓn d÷ liÖu Miªu t¶ b¶ng cña ngêi dïng. HiÖn c¸c d¹ng ®èi tîng kh¸c nhau cña ngêi dïng. HiÖn table, view, synonym, sequence cña ngêi dïng. SQL> SELECT * 2 FROM user_tables; SQL> SELECT DISTINCT object_type 2 FROM user_objects; SQL> SELECT * 2 FROM user_catalog; D¹ng d÷ liÖu D¹ng d÷ liÖu Miªu t¶ VARCHAR2(size) Variable-length character data CHAR(size) Fixed-length character data NUMBER(p,s) Variable-length numeric data DATE Date and time values LONG Variable-length character data up to 2 gigabytes CLOB Single-byte character data up to 4 gigabytes RAW and LONG RAW Raw binary data BLOB Binary data up to 4 gigabytes BFILE Binary data stored in an external file; up to 4 gigabytes Sö dông Subquery ®Ó t¹o b¶ng T¹o b¶ng vµ chÌn c¸c hµng nhê (AS) subquery Sè cét cña b¶ng phï hîp víi sè cét trong subquery. X¸c ®Þnh cét víi tªn vµ gi¸ trÞ ngÇm ®Þnh. CREATE TABLE table [(column, column...)] AS subquery; T¹o b¶ng nhê Subquery Name Null? Type ---------------------------- -------- ----- EMPNO NOT NULL NUMBER(4) ENAME VARCHAR2(10) ANNSAL NUMBER HIREDATE DATE SQL> DESCRIBE dept30 SQL> CREATE TABLE dept30 2 AS 3 SELECT empno, ename, sal*12 ANNSAL, hiredate 4 FROM emp 5 WHERE deptno = 30; Table created. C©u lÖnh ALTER TABLE Sö dông ALTER TABLE ®Ó: Thªm mét cét míi Thay ®æi cét ®ang cã. X¸c ®Þnh gi¸ trÞ ngÇm ®Þnh cho cét. ALTER TABLE table ADD (column datatype [DEFAULT expr] [, column datatype]...); ALTER TABLE table MODIFY (column datatype [DEFAULT expr] [, column datatype]...); Thªm mét cét DEPT30 EMPNO ENAME ANNSAL HIREDATE ------ ---------- -------- 7698 BLAKE 34200 01-MAY-81 7654 MARTIN 15000 28-SEP-81 7499 ALLEN 19200 20-FEB-81 7844 TURNER 18000 08-SEP-81 ... DEPT30 EMPNO ENAME ANNSAL HIREDATE ------ ---------- -------- 7698 BLAKE 34200 01-MAY-81 7654 MARTIN 15000 28-SEP-81 7499 ALLEN 19200 20-FEB-81 7844 TURNER 18000 08-SEP-81 ... JOB New column Thªm mét cét B¹n sö dông mÖnh ®Ò ADD ®Ó thªm cét. EMPNO ENAME ANNSAL HIREDATE JOB --------- ---------- --------- --------- ---- 7698 BLAKE 34200 01-MAY-81 7654 MARTIN 15000 28-SEP-81 7499 ALLEN 19200 20-FEB-81 7844 TURNER 18000 08-SEP-81 ... 6 rows selected. SQL> ALTER TABLE dept30 2 ADD (job VARCHAR2(9)); Table altered. Cét míi trë thµnh cét cuèi cïng. Thay ®æi mét cét B¹n cã thÓ thay ®æi kiÓu, kÝch thíc vµ gi¸ trÞ ngÇm ®Þnh cña cét Thay ®æi gi¸ trÞ ngÇm ®Þnh chØ ¶nh hëng ®Õn viÖc thªm hµng vµo b¶ng tõ sau khi thay ®æi. ALTER TABLE dept30 MODIFY (ename VARCHAR2(15)); Table altered. Xo¸ b¶ng Toµn bé d÷ liÖu vµ cÊu tróc cña b¶ng bÞ xo¸. Mäi transactions ®ang ®îi ®îc thùc hiÖn (committed). Mäi chØ sè (indexes) bÞ xo¸. Kh«ng thÓ kh«i phôc (roll back) lÖnh nµy. SQL> DROP TABLE dept30; Table dropped. Thay ®æi tªn cña ®èi tîng Dïng lÖnh RENAME ®Ó ®æi tªn cña table, view, sequence, hoÆc synonym. B¹n ph¶i lµ chñ cña ®èi tîng. SQL> RENAME dept TO department; Table renamed. Xo¸ d÷ liÖu cña b¶ng LÖnh TRUNCATE TABLE: Xo¸ tÊt c¶ c¸c hµng cña b¶ng Kho¶ng lu tr÷ cña b¶ng ®îc gi¶i phãng. B¹n kh«ng thÓ kh«i phôc l¹i d÷ liÖu sau khi TRUNCATE. C¸ch kh¸c, b¹n sö dông lÖnh: DELETE. SQL> TRUNCATE TABLE department; Table truncated. Thªm lêi chó thÝch vµo b¶ng B¹n cã thÓ thªm lêi chó thÝch vµo b¶ng hay cét nhê lÖnh COMMENT Lêi chó thÝch cã thÓ xem nhê tõ ®iÓn d÷ liÖu view. ALL_COL_COMMENTS USER_COL_COMMENTS ALL_TAB_COMMENTS USER_TAB_COMMENTS SQL> COMMENT ON TABLE emp 2 IS 'Employee Information'; Comment created. Tãm t¾t LÖnh Miªu t¶ CREATE TABLE T¹o b¶ng ALTER TABLE Thay ®æi cÊu tróc b¶ng DROP TABLE Xo¸ hµng vµ cÊu tróc b¶ng. RENAME Thay ®æi tªn cña table, view, sequence, vµ synonym. TRUNCATE Xo¸ tÊt c¶ hµng trong b¶ng vµ gi¶i phãng kho¶ng lu tr÷. COMMENT Thªm lêi chó thÝch cho b¶ng. Thùc hµnh T¹o b¶ng míi T¹o b¶ng míi nhê CREATE TABLE AS Thay ®æi ®Þnh nghÜa cét. KiÓm tra b¶ng tån t¹i? Thªm lêi chó thÝch vµo b¶ng. Xo¸ b¶ng Thay ®æi b¶ng