การใช้งบ DDL

การใช้คำสั่ง DDL เพื่อสร้างและจัดการตาราง

สคีมาคือชุดของอ็อบเจ็กต์ฐานข้อมูลหลายตัวซึ่งเรียกว่าอ็อบเจ็กต์สกีมาอ็อบเจ็กต์เหล่านี้มีการเข้าถึงโดยตรงโดยสคีมาของเจ้าของตารางด้านล่างแสดงรายการอ็อบเจ็กต์สคีมา

  • ตาราง - เพื่อจัดเก็บข้อมูล

  • ดู - เพื่อฉายข้อมูลในรูปแบบที่ต้องการจากตารางอย่างน้อยหนึ่งตาราง

  • ลำดับ - เพื่อสร้างค่าตัวเลข

  • ดัชนี - เพื่อปรับปรุงประสิทธิภาพของแบบสอบถามบนตาราง

  • คำพ้องความหมาย - ชื่อทางเลือกของวัตถุ

ขั้นตอนแรกในการสร้างฐานข้อมูลคือการสร้างตารางที่จะจัดเก็บข้อมูลขององค์กรการออกแบบฐานข้อมูลเกี่ยวข้องกับการระบุความต้องการของผู้ใช้ระบบสำหรับระบบต่างๆขององค์กรเช่นการป้อนใบสั่งการจัดการสินค้าคงคลังและบัญชีลูกหนี้ โดยไม่คำนึงถึงขนาดฐานข้อมูลและความซับซ้อนฐานข้อมูลแต่ละฐานประกอบด้วยตาราง

การสร้างตาราง

ในการสร้างตารางในฐานข้อมูล DBA ต้องมีข้อมูลบางอย่างอยู่ในมือเช่นชื่อตารางชื่อคอลัมน์ชนิดข้อมูลคอลัมน์และขนาดคอลัมน์ ข้อมูลทั้งหมดนี้สามารถแก้ไขได้ในภายหลังโดยใช้คำสั่ง DDL

หลักการตั้งชื่อตาราง -

  • ชื่อที่คุณเลือกสำหรับตารางต้องเป็นไปตามกฎมาตรฐานเหล่านี้:

  • ชื่อต้องขึ้นต้นด้วยตัวอักษร AZ หรือ az

  • สามารถมีตัวเลขและขีดล่าง

  • สามารถอยู่ได้ใน UPPER ของตัวพิมพ์เล็ก

  • มีความยาวได้สูงสุด 30 อักขระ

  • ไม่สามารถใช้ชื่อเดียวกันของวัตถุอื่นที่มีอยู่ในสคีมาของคุณ

  • ต้องไม่ใช่คำสงวนของ SQL

ตามแนวทางข้างต้น 'EMP85' อาจเป็นชื่อตารางที่ถูกต้อง แต่ 85EMP ไม่ใช่ในทำนองเดียวกัน UPDATE ไม่สามารถเลือกเป็นชื่อตารางได้เนื่องจากเป็นคำหลักที่สงวนไว้ของ SQL

สร้างคำสั่งตาราง

CREATE TABLE เป็นคำสั่ง DDL ที่ใช้สร้างตารางในฐานข้อมูลตารางจะถูกสร้างขึ้นทันทีที่เรียกใช้สคริปต์ CREATE TABLE และพร้อมที่จะเก็บข้อมูลเป็นต้นไปผู้ใช้ต้องมีสิทธิ์ระบบ CREATE TABLE เพื่อสร้าง ตารางในสคีมาของตัวเอง แต่ในการสร้างตารางในสคีมาของผู้ใช้ผู้ใช้จะต้องสร้างสคีมาตารางใดก็ได้

นี่คือไวยากรณ์ของคำสั่ง CREATE TABLE พื้นฐานอาจมีส่วนคำสั่งเพิ่มเติมอีกมากมายเพื่อระบุข้อมูลจำเพาะของหน่วยเก็บข้อมูลหรือค่าเซ็กเมนต์อย่างชัดเจน

CREATE TABLE [schema.]table 
          ( { column datatype [DEFAULT expr] [column_constraint] ... 
            | table_constraint} 
         [, { column datatype [DEFAULT expr] [column_constraint] ... 
            | table_constraint} ]...) 
         [AS subquery]

ในไวยากรณ์ข้างต้น DEFAULT ระบุค่าเริ่มต้นซึ่งสามารถใช้ได้ในระหว่างคำสั่ง INSERT หากคอลัมน์ถูกละเว้น ไม่สามารถมีการอ้างอิงถึงคอลัมน์ตารางอื่น ๆ หรือคอลัมน์หลอก (CURRVAL, NEXTVAL, LEVEL และ ROWNUM) ยกเว้น SYSDATE และ USER หรือค่าคงที่ของวันที่ที่ไม่ได้ระบุไว้อย่างครบถ้วน

ข้อ จำกัด คือกฎที่กำหนดไว้เป็นทางเลือกที่ระดับคอลัมน์หรือระดับตาราง (ครอบคลุมในบทนี้ในภายหลัง) กฎเหล่านี้จะถูกตรวจสอบระหว่างการดำเนินการกับข้อมูล (แทรกอัปเดต) บนตารางและเพิ่มข้อผิดพลาดเพื่อยกเลิกการดำเนินการเมื่อมีการละเมิด

ตัวอย่างเช่นคำสั่ง CREATE TABLE ด้านล่างสร้างตาราง EMP_TEST สังเกตข้อกำหนดของคอลัมน์ชนิดข้อมูลและความแม่นยำ

CREATE TABLE SCOTT.EMP_TEST
(EMPID NUMBER,
ENAME VARCHAR2(100),
DEPARTMENT_ID NUMBER,
SALARY NUMBER,
JOB_ID VARCHAR2(3),
HIREDATE DATE,
COMM NUMBER);

ผู้ใช้สามารถอ้างอิงตารางจากสคีมาของผู้ใช้รายอื่นโดยนำหน้าชื่อผู้ใช้หรือสคีมาด้วยชื่อตารางตัวอย่างเช่น GUEST ผู้ใช้ต้องการสอบถามชื่อพนักงานและเงินเดือนจากตาราง EMP_TEST ซึ่ง SCOTT เป็นเจ้าของ เขาสามารถออกแบบสอบถามด้านล่าง -

SELECT  ENAME, SALARY,
FROM 	GUEST.EMP_TEST;

คอลัมน์สามารถเก็บค่าเริ่มต้นในช่วงเวลาของการสร้างตารางได้ช่วย จำกัด ค่า NULL ที่เข้ามาในคอลัมน์ ค่าดีฟอลต์สามารถอนุมานได้จากฟังก์ชันลิเทอรัลนิพจน์หรือ SQL ซึ่งต้องส่งคืนชนิดข้อมูลที่เข้ากันได้ไปยังคอลัมน์ ในคำสั่ง CREATE TABLE ด้านล่างโปรดทราบว่าคอลัมน์ LOCATION_ID มีค่าเริ่มต้น 100

CREATE TABLE SCOTT.DEPARTMENT
(DEPARTMENT_ID NUMBER,
   DNAME VARCHAR2 (100),
   LOCATION_ID NUMBER DEFAULT 100);

CTAS - สร้างตารางโดยใช้แบบสอบถามย่อย

สามารถสร้างตารางจากตารางที่มีอยู่ในฐานข้อมูลโดยใช้ตัวเลือกเคียวรีย่อยซึ่งจะคัดลอกโครงสร้างตารางเช่นเดียวกับข้อมูลจากตาราง นอกจากนี้ยังสามารถคัดลอกข้อมูลได้ตามเงื่อนไขข้อกำหนดประเภทข้อมูลคอลัมน์รวมถึงข้อ จำกัด NOT NULL ที่กำหนดไว้อย่างชัดเจนจะถูกคัดลอกลงในตารางใหม่

สคริปต์ CTAS ด้านล่างสร้างตารางใหม่ EMP_BACKUP ข้อมูลพนักงานของแผนก 20 จะถูกคัดลอกลงในตารางใหม่

CREATE TABLE EMP_BACKUP
AS
SELECT * FROM EMP_TEST
WHERE department_id=20;

ประเภทข้อมูล

ชนิดข้อมูลใช้เพื่อระบุลักษณะการทำงานพื้นฐานของคอลัมน์ในตารางโดยพื้นฐานที่กว้างขึ้นลักษณะการทำงานของคอลัมน์อาจเป็นของตัวเลขอักขระหรือตระกูลวันที่มีประเภทย่อยอื่น ๆ อีกหลายประเภทที่อยู่ในตระกูลเหล่านี้

ประเภทข้อมูลตัวเลข

ประเภทข้อมูล NUMBER ประกอบด้วยค่าตัวเลขทั้งจำนวนเต็มจุดคงที่และทศนิยมรุ่นแรก ๆ ของ Oracle ได้กำหนดประเภทข้อมูลที่แตกต่างกันสำหรับแต่ละประเภทของตัวเลขที่แตกต่างกันเหล่านี้ แต่ตอนนี้ประเภทข้อมูล NUMBER ทำหน้าที่ทั้งหมดของวัตถุประสงค์เหล่านี้เลือกประเภทข้อมูล NUMBER เมื่อ คอลัมน์ต้องจัดเก็บข้อมูลตัวเลขที่สามารถใช้ในการคำนวณทางคณิตศาสตร์ได้ในบางครั้งประเภทข้อมูล NUMBER จะถูกใช้เพื่อจัดเก็บหมายเลขประจำตัวโดยที่ DBMS สร้างตัวเลขเหล่านั้นเป็นตัวเลขตามลำดับ

NUMBER (p, s) โดยที่ p คือความแม่นยำสูงสุด 38 หลักและ s คือมาตราส่วน (จำนวนตัวเลขทางด้านขวาของจุดทศนิยม) มาตราส่วนสามารถอยู่ระหว่าง -84 ถึง 127

NUMBER (p) คือตัวเลขจุดคงที่ที่มีมาตราส่วนเป็นศูนย์และมีความแม่นยำเป็น p

FLOAT [(p)] โดยที่ p คือความแม่นยำของไบนารีที่สามารถอยู่ในช่วง 1 ถึง 126 หากไม่ระบุ p ค่าเริ่มต้นคือไบนารี 126

ชนิดข้อมูลวันที่

สำหรับข้อมูล DATE แต่ละประเภทศตวรรษปีเดือนวันชั่วโมงนาทีวินาทีจะถูกเก็บไว้ในฐานข้อมูล ทุกระบบฐานข้อมูลมีรูปแบบวันที่เริ่มต้นที่กำหนดโดยพารามิเตอร์การเริ่มต้น NLS_DATE_FORMAT โดยปกติพารามิเตอร์นี้จะตั้งค่าเป็น DD-MON-YY หากคุณไม่ระบุเวลาเวลาเริ่มต้นคือ 00:00:00 น

ชนิดข้อมูลอักขระ

Oracle สนับสนุนประเภทข้อมูลอักขระที่กำหนดไว้ล่วงหน้าสามประเภท ได้แก่ CHAR, VARCHAR, VARCHAR2 และ LONG VARCHAR และ VARCHAR2 มีความหมายเหมือนกันและ Oracle แนะนำให้ใช้ VARCHAR2 แทน VARCHAR ใช้ประเภทข้อมูล CHAR เมื่อคอลัมน์จะเก็บค่าอักขระที่มีความยาวคงที่สำหรับ ตัวอย่างเช่นหมายเลขประกันสังคม (SSN) ในสหรัฐอเมริกาถูกกำหนดให้กับพลเมืองทุกคนและมีขนาด 9 อักขระเสมอ (แม้ว่า SSN จะประกอบด้วยตัวเลขอย่างเคร่งครัด แต่ตัวเลขจะถือว่าเป็นอักขระ) และจะระบุเป็น CHAR (9). ใช้ประเภทข้อมูล VARCHAR2 เพื่อจัดเก็บข้อมูลที่เป็นตัวอักษรและตัวเลขที่มีความยาวผันแปรได้ตัวอย่างเช่นชื่อลูกค้าหรือที่อยู่จะแตกต่างกันมากตามจำนวนอักขระที่จะจัดเก็บขนาดสูงสุดของคอลัมน์ VARCHAR2 คือ 4,000 อักขระ

ประเภทข้อมูลลอบ

Oracle มีประเภทข้อมูล LOB ที่แตกต่างกันหลายประเภทรวมถึง CLOB (วัตถุขนาดใหญ่ที่มีอักขระ) และ BLOB (วัตถุขนาดใหญ่แบบไบนารี) คอลัมน์ของประเภทข้อมูลเหล่านี้สามารถจัดเก็บข้อมูลที่ไม่มีโครงสร้างรวมถึงข้อความรูปภาพวิดีโอและข้อมูลเชิงพื้นที่ประเภทข้อมูล CLOB สามารถจัดเก็บได้ถึงแปดเทราไบต์ ข้อมูลอักขระโดยใช้ชุดอักขระฐานข้อมูล CHAR ประเภทข้อมูล BLOB ใช้เพื่อจัดเก็บอ็อบเจ็กต์ขนาดใหญ่แบบไบนารีที่ไม่มีโครงสร้างเช่นข้อมูลที่เกี่ยวข้องกับข้อมูลรูปภาพและวิดีโอซึ่งข้อมูลเป็นเพียงสตรีมของค่า "บิต" ประเภทข้อมูล BLOB สามารถจัดเก็บได้ถึง ข้อมูลไบนารีแปดเทราไบต์ชนิดข้อมูล NCLOB สามารถจัดเก็บอ็อบเจ็กต์ขนาดใหญ่ของอักขระในอักขระประจำชาติหลายไบต์ที่ตั้งค่าได้สูงสุด 8TB ถึง 128TB ค่าชนิดข้อมูล BFILE ทำงานเป็นตัวระบุตำแหน่งไฟล์หรือตัวชี้เพื่อจัดเก็บไฟล์บนระบบไฟล์ของเซิร์ฟเวอร์ ขนาดไฟล์สูงสุดที่รองรับคือ 8TB ​​ถึง 128TB

ข้อ จำกัด

ข้อ จำกัด คือชุดของกฎที่กำหนดไว้ในตาราง Oracle เพื่อให้แน่ใจว่าข้อมูลมีความสมบูรณ์กฎเหล่านี้ถูกบังคับใช้สำหรับแต่ละคอลัมน์หรือชุดของคอลัมน์เมื่อใดก็ตามที่ตารางมีส่วนร่วมในการดำเนินการกับข้อมูลกฎเหล่านี้จะได้รับการตรวจสอบและเพิ่มข้อยกเว้นเมื่อมีการละเมิด ประเภทข้อ จำกัด ที่มีอยู่ไม่ใช่ NULL, Primary Key, Unique, Check และ Foreign Key

คุณสามารถใช้ไวยากรณ์ด้านล่างเพื่อกำหนดข้อ จำกัด ที่ระดับคอลัมน์

ไวยากรณ์:

column [data type] [CONSTRAINT constraint_name] constraint_type

ข้อ จำกัด ทั้งหมดยกเว้น NOT NULL สามารถกำหนดได้ที่ระดับตาราง สามารถระบุข้อ จำกัด ของคอมโพสิตได้ที่ระดับตารางเท่านั้น

ไม่ใช่ข้อ จำกัด ที่เป็นโมฆะ

ข้อ จำกัด NOT NULL หมายความว่าแถวข้อมูลต้องมีค่าสำหรับคอลัมน์ที่ระบุเป็น NOT NULL หากคอลัมน์ถูกระบุว่าไม่ใช่ NULL Oracle RDBMS จะไม่อนุญาตให้จัดเก็บแถวในตารางพนักงานที่ละเมิดข้อ จำกัด นี้ สามารถกำหนดได้ที่ระดับคอลัมน์เท่านั้นไม่ใช่ที่ระดับตาราง

ไวยากรณ์:

COLUMN [data type] [NOT NULL]

ข้อ จำกัด ที่ไม่ซ้ำใคร

บางครั้งจำเป็นต้องบังคับใช้ความไม่ซ้ำกันสำหรับค่าคอลัมน์ที่ไม่ใช่คอลัมน์คีย์หลักสามารถใช้ข้อ จำกัด UNIQUE เพื่อบังคับใช้กฎนี้และ Oracle จะปฏิเสธแถวใด ๆ ที่ละเมิดข้อ จำกัด ที่ไม่ซ้ำกันข้อ จำกัด ที่ไม่ซ้ำกันทำให้แน่ใจได้ว่าค่าคอลัมน์แตกต่างกัน โดยไม่มีรายการที่ซ้ำกัน

ไวยากรณ์:

Column Level:

COLUMN [data type] [CONSTRAINT <name>] [UNIQUE]

Table Level: CONSTRAINT [ชื่อข้อ จำกัด ] UNIQUE (ชื่อคอลัมน์)

หมายเหตุ: Oracle สร้างดัชนีที่ไม่ซ้ำกันภายในเพื่อป้องกันการทำซ้ำในค่าคอลัมน์ดัชนีจะกล่าวถึงใน PL / SQL ในภายหลัง

CREATE TABLE TEST
( ... ,
  NAME VARCHAR2(20) 
          CONSTRAINT TEST_NAME_UK UNIQUE,
  ... );

ในกรณีของคีย์เฉพาะแบบผสมจะต้องกำหนดไว้ที่ระดับตารางดังต่อไปนี้

CREATE TABLE TEST
( ... ,
  NAME VARCHAR2(20),
  STD VARCHAR2(20) ,
      CONSTRAINT TEST_NAME_UK UNIQUE (NAME, STD)
 );

คีย์หลัก

โดยปกติแต่ละตารางจะต้องมีคอลัมน์หรือชุดของคอลัมน์ที่ระบุแถวของข้อมูลที่จัดเก็บในตารางโดยไม่ซ้ำกันคอลัมน์หรือชุดของคอลัมน์นี้เรียกว่าคีย์หลักตารางส่วนใหญ่มีคอลัมน์เดียวเป็นคีย์หลัก คอลัมน์หลักถูก จำกัด ไม่ให้มีค่า NULL และค่าที่ซ้ำกัน

ประเด็นที่ควรสังเกต -

  • ตารางสามารถมีคีย์หลักได้เพียงคีย์เดียว

  • หลายคอลัมน์สามารถต่อกันได้ภายใต้คีย์หลักแบบผสม

  • Oracle สร้างดัชนีเฉพาะภายในเพื่อป้องกันการทำซ้ำในค่าคอลัมน์ดัชนีจะกล่าวถึงใน PL / SQL ในภายหลัง

ไวยากรณ์:

Column level:

COLUMN [data type] [CONSTRAINT <constraint name> PRIMARY KEY]

Table level:

CONSTRAINT [constraint name] PRIMARY KEY [column (s)]

ตัวอย่างต่อไปนี้แสดงวิธีใช้ข้อ จำกัด ของคีย์หลักที่ระดับคอลัมน์

CREATE TABLE TEST
( ID  NUMBER CONSTRAINT TEST_PK PRIMARY KEY,
  ...  );

ตัวอย่างต่อไปนี้แสดงวิธีกำหนดคีย์หลักแบบผสมโดยใช้ข้อ จำกัด ของคีย์หลักที่ระดับตาราง

CREATE TABLE TEST
 ( ...,
   CONSTRAINT TEST_PK PRIMARY KEY (ID) 
 );

คีย์ต่างประเทศ

เมื่อสองตารางแบ่งปันความสัมพันธ์ลูกแม่ตามคอลัมน์ที่ระบุคอลัมน์การรวมในตารางลูกจะเรียกว่า Foreign Key คุณสมบัติของคอลัมน์ที่เกี่ยวข้องในตารางหลักนี้เรียกว่า Referential Integrity ค่าคอลัมน์คีย์ต่างประเทศในตารางลูกสามารถ ไม่ว่าจะเป็นค่าว่างหรือต้องเป็นค่าที่มีอยู่ของตารางหลักโปรดทราบว่าเฉพาะคอลัมน์คีย์หลักของตารางที่อ้างอิงเท่านั้นที่มีสิทธิ์บังคับใช้ความสมบูรณ์ของการอ้างอิง

หากมีการกำหนดคีย์นอกในคอลัมน์ในตารางลูก Oracle จะไม่อนุญาตให้ลบแถวพาเรนต์หากแถวนั้นมีแถวลูกอย่างไรก็ตามหากมีการกำหนดอ็อพชัน ON DELETE CASCADE ในขณะที่กำหนดคีย์นอก Oracle จะลบ แถวลูกทั้งหมดในขณะที่กำลังลบแถวพาเรนต์ในทำนองเดียวกัน ON DELETE SET NULL ระบุว่าเมื่อลบแถวในตารางพาเรนต์ค่าคีย์ต่างประเทศจะถูกตั้งค่าเป็น null

ไวยากรณ์:

Column Level:

COLUMN [data type] [CONSTRAINT] [constraint name] [REFERENCES] [table name (column name)]

Table level:

CONSTRAINT [constraint name] [FOREIGN KEY (foreign key column name) REFERENCES] [referenced table name (referenced column name)]

ตัวอย่างต่อไปนี้แสดงวิธีใช้ข้อ จำกัด คีย์ต่างประเทศที่ระดับคอลัมน์

CREATE TABLE TEST
(ccode varchar2(5) 
     CONSTRAINT TEST_FK REFERENCES PARENT_TEST(ccode),
   ...
);

Usage of ON DELETE CASCADE clause

CREATE TABLE TEST
(ccode varchar2(5) 
   CONSTRAINT TEST_FK REFERENCES PARENT_TEST (ccode)
   ON DELETE CASCADE,
   ...
);

ตรวจสอบข้อ จำกัด

บางครั้งค่าข้อมูลที่จัดเก็บในคอลัมน์เฉพาะจะต้องอยู่ในช่วงค่าที่ยอมรับได้ข้อ จำกัด การตรวจสอบกำหนดให้เงื่อนไขการตรวจสอบที่ระบุเป็นจริงหรือไม่ทราบสำหรับแต่ละแถวที่จัดเก็บในตารางข้อ จำกัด การตรวจสอบอนุญาตให้กำหนดกฎเงื่อนไขบน a คอลัมน์ซึ่งต้องได้รับการตรวจสอบความถูกต้องก่อนที่จะแทรกข้อมูลลงในคอลัมน์ เงื่อนไขต้องไม่มีแบบสอบถามย่อยหรือคอลัมน์หลอก CURRVAL NEXTVAL, LEVEL, ROWNUM หรือ SYSDATE

Oracle อนุญาตให้คอลัมน์เดียวมีข้อ จำกัด CHECK มากกว่าหนึ่งข้อ ในความเป็นจริงไม่มีการ จำกัด จำนวนข้อ จำกัด CHECK ที่สามารถกำหนดได้สำหรับคอลัมน์ในทางปฏิบัติ

ไวยากรณ์:

Column level:

COLUMN [data type] CONSTRAINT [name] [CHECK (condition)]

Table level:

CONSTRAINT [name] CHECK (condition)

ตัวอย่างต่อไปนี้แสดงวิธีใช้ข้อ จำกัด CHECK ที่ระดับคอลัมน์

CREATE TABLE TEST
( ...,
   GRADE char (1) CONSTRAINT TEST_CHK
   CHECK (upper (GRADE) in ('A','B','C')),
   ...
);

ตัวอย่างต่อไปนี้แสดงวิธีใช้ข้อ จำกัด CHECK ที่ระดับตาราง

CREATE TABLE TEST
( ...,
   CONSTRAINT TEST_CHK
   CHECK (stdate < = enddate),
);

แก้ไขคำสั่งตาราง

DBA สามารถเปลี่ยนแปลงโครงสร้างตารางหรือคำจำกัดความคอลัมน์หลังจากสร้างตารางในฐานข้อมูลแล้วคำสั่ง DDL ALTER TABLE ใช้เพื่อดำเนินการดังกล่าวคำสั่ง Alter จัดเตรียมยูทิลิตี้หลายรายการสำหรับอ็อบเจ็กต์ schema โดยเฉพาะคำสั่ง ALTER TABLE ถูกใช้ เพื่อเพิ่มวางเปลี่ยนชื่อและแก้ไขคอลัมน์ในตาราง

คำสั่ง ALTER TABLE ด้านล่างเปลี่ยนชื่อตาราง EMP เป็น EMP_NEW

ALTER TABLE EMP RENAME TO EMP_NEW;

คำสั่ง ALTER TABLE ด้านล่างเพิ่มคอลัมน์ใหม่ TESTCOL ในตาราง EMP_NEW

ALTER TABLE EMP_NEW ADD (TESTCOL VARCHAR2 (100))

คำสั่ง ALTER TABLE ด้านล่างเปลี่ยนชื่อคอลัมน์ TESTCOL เป็น TESTNEW

ALTER TABLE EMP_NEW RENAME COLUMN TESTCOL TO TESTNEW

คำสั่ง ALTER TABLE ด้านล่างทิ้งคอลัมน์ TESTNEW จากตาราง EMP_NEW

ALTER TABLE EMP_NEW DROP COLUMN TESTNEW;

คำสั่ง ALTER TABLE ด้านล่างเพิ่มคีย์หลักในคอลัมน์ EMPLOYEE_ID

ALTER TABLE EMP_NEW ADD PRIMARY KEY (EMPLOYEE_ID)

คำสั่ง ALTER TABLE ด้านล่างทิ้งคีย์หลัก

ALTER TABLE EMP_NEW DROP PRIMARY KEY;

คำสั่ง ALTER TABLE ด้านล่างนี้จะเปลี่ยนโหมดตารางเป็นแบบอ่านอย่างเดียว

ALTER TABLE EMP_NEW READ ONLY;

อ่านเฉพาะตาราง

ตารางอ่านอย่างเดียวเป็นส่วนเสริมใน Oracle 11g ช่วยให้สามารถใช้ตารางเพื่อการอ่านอย่างเดียว ใน Oracle เวอร์ชันก่อนหน้านี้ตารางถูกสร้างให้อ่านโดยให้สิทธิ์ SELECT แก่ผู้ใช้รายอื่นเท่านั้น แต่เจ้าของยังคงมีสิทธิ์อ่านเขียน แต่ตอนนี้ถ้าตารางถูกตั้งค่าเป็นอ่านอย่างเดียวแม้แต่เจ้าของก็ไม่สามารถเข้าถึงการจัดการข้อมูลได้ .

ไวยากรณ์:

ALTER TALE [TABLE NAME] READ ONLY
ALTER TALE [TABLE NAME] READ WRITE

ภาพประกอบ

SQL>CREATE TABLE ORATEST (id NUMBER)

SQL>INSERT INTO ORATEST VALUES (1);

SQL>ALTER TABLE ORATEST READ ONLY;

SQL> INSERT INTO ORATEST VALUES (2);
INSERT INTO ORATEST VALUES (2)
            *
ERROR at line 1:
ORA-12081: update operation not allowed on table "TEST"."ORATEST"

SQL> UPDATE ORATEST SET id = 2;
UPDATE ORATEST SET id = 2
       *
ERROR at line 1:
ORA-12081: update operation not allowed on table "TEST"."ORATEST"

SQL> DELETE FROM ORATEST;
DELETE FROM ORATEST
            *
ERROR at line 1:
ORA-12081: update operation not allowed on table "TEST"."ORATEST"

SQL> TRUNCATE TABLE ORATEST;
TRUNCATE TABLE ORATEST
               *
ERROR at line 1:
ORA-12081: update operation not allowed on table "TEST"."ORATEST"

SQL> ALTER TABLE ORATEST ADD (description VARCHAR2 (50));
ALTER TABLE ORATEST ADD (description VARCHAR2 (50))
*
ERROR at line 1:
ORA-12081: update operation not allowed on table "TEST"."ORATEST"

SQL> ALTER TABLE ORATEST READ WRITE;

Table altered.

SQL> DELETE FROM ORATEST;

1 row deleted.

คำสั่ง DROP TABLE

คำสั่ง DROP TABLE ใช้เพื่อลบตารางออกจากฐานข้อมูล ตารางที่ตกหล่นและข้อมูลจะไม่สามารถเลือกได้อีกต่อไปตารางที่ดร็อปสามารถกู้คืนได้โดยใช้ยูทิลิตี้ FLASHBACK หากมีอยู่ในถังรีไซเคิลการทิ้งตารางจะลดดัชนีและทริกเกอร์ที่เกี่ยวข้อง

ไวยากรณ์:

DROP TABLE [TABLE NAME] [PURGE]

ข้อความด้านล่างจะวางตารางและวางลงในถังรีไซเคิล

DROP TABLE emp_new;

ข้อความด้านล่างนี้จะวางตารางและล้างออกจากถังรีไซเคิลด้วย

DROP TABLE emp_new PURGE;