1. 程式人生 > >Oracle DB 使用DDL語句建立和管理表

Oracle DB 使用DDL語句建立和管理表

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow

也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!

               

 

• 對主要的資料庫物件進行分類 • 查看錶結構 • 列舉列可以使用的資料型別 • 建立簡單的表 • 說明建立表時如何建立約束條件 • 描述方案物件如何工作
• 資料庫物件 – 命名規則 • CREATE TABLE語句: – 訪問另一個使用者的表 – DEFAULT選項 • 資料型別 • 約束條件概覽:NOT NULL、UNIQUE、PRIMARY KEY、 FOREIGN KEY、CHECK約束條件 • 使用子查詢建立表 • ALTER TABLE – 只讀表 • DROP TABLE語句
  • 資料庫物件

Oracle DB 可以包含多種資料結構。在資料庫設計中應對每種結構加以概述,以便可在 資料庫開發的構建階段建立資料庫結構。 • 表:用於儲存資料 • 檢視:一個或多個表中資料的子集 • 序列:用於生成數字值 • 索引:提高某些查詢的效能 • 同義詞:給出物件的替代名稱 Oracle 表結構 • 在任何時候都可以建立表,即使使用者正在使用資料庫時也是如此。 • 無需指定表的大小。表的大小最終由全部分配給資料庫的空間量確定。但是,需要 估計一個表將要使用的空間大小,這一點非常重要。
• 可以聯機修改表結構。
  • 命名規則
表名和列名必須滿足以下條件: • 以字母開頭 • 長度為1-30 個字元 • 只包含A-Z、a-z、0-9、_、$ 和# • 不與同一使用者擁有的其它物件重名 • 不是Oracle Server 的保留字
應根據命名任意Oracle DB 物件的標準規則來命名資料庫表和列: • 表名和列名必須以字母開頭,長度必須為1-30 個字元。 • 名稱中只能包含字元A-Z、a-z、0-9、_(下劃線)、$ 和#(這兩個字元是合法字元, 但建議不要使用它們)。
• 不能與同一Oracle Server 使用者擁有的其它物件重名。 • 不能是Oracle Server 的保留字。 - 還可以使用 加引號的識別符號來表示物件名稱。加引號的識別符號以雙引號(“”) 開始 和結束。如果使用加雙引號的識別符號為方案命名,那麼,只要引用該物件,就必 須使用雙引號。加引號的識別符號可以是保留字,不過建議不要這樣做。 命名準則 對於表和其它資料庫物件,應使用描述性名稱。 注:名稱不區分大小寫,例如,EMPLOYEES與eMPloyees或eMpLOYEES被認為是 同一名稱。但是,加引號的識別符號區分大小寫。
  • CREATE TABLE語句
• 必須具有以下項才能使用此語句: – CREATE TABLE許可權 – 一個儲存區 CREATE TABLE [schema.]table (column datatype[DEFAULT expr][, ...]); • 可以指定: – 表名稱 – 列名、列資料型別和列大小

通過執行SQL CREATE TABLE語句可以建立用於儲存資料的表。此語句是一條DDL 語 句,DDL 語句是SQL 語句的子集,用於建立、修改或刪除Oracle DB 結構。這些語句會 對資料庫產生直接的影響,它們還會在資料字典中記錄資訊。 要建立一個表,使用者必須具有CREATE TABLE許可權和一個用於在其中建立物件的儲存區。 資料庫管理員(DBA) 可以使用資料控制語言(DCL) 語句為使用者授權。 在該語法中: schema 與所有者的姓名相同 table 是表名稱 DEFAULT expr 指定當INSERT語句中省略了值時所使用的預設值語句 column 是列名稱 datatype 是列的資料型別和長度
  • 引用另一個使用者的表
• 在使用者方案中沒有屬於其他使用者的表。 • 應使用所有者姓名作為那些表的字首。

方案是由資料或方案物件構成的一組邏輯結構。方案由資料庫使用者擁有,而且與該使用者 具有相同的名稱。每個使用者都擁有一個方案。 方案物件可使用SQL 來建立和操作;方案物件包括表、檢視、同義詞、序列、儲存過程、 索引、叢集和資料庫連結。 如果某個表不屬於該使用者,則必須將所有者的姓名作為該表的字首。例如,假設存在名為 USERA和USERB的兩個方案,每個方案都有一個EMPLOYEES表,如果USERA要訪問 屬於USERB的EMPLOYEES表,USERA就必須將USERB方案名作為該表名的字首: SELECT * FROM userb.employees; 如果USERB要訪問屬於USERA的EMPLOYEES表,USERB就必須將USERA的方案名 作為該表名的字首: SELECT * FROM usera.employees;
  • DEFAULT選項
• 指定插入過程中列的預設值。 ... hire_date DATE DEFAULT SYSDATE, ... • 文字值、表示式或SQL 函式都是合法值。 • 其它列的名稱或假列是非法值。 • 預設資料型別必須與列的資料型別相匹配。
CREATE TABLE hire_dates (id  NUMBER(8), hire_date DATE DEFAULT SYSDATE);
在定義表時,可以使用DEFAULT選項指定列的預設值。當插入的行中沒有某列的相應值 時,使用此選項可以防止將空值輸入到列中。預設值可以是文字值、表示式或SQL 函式 (例如SYSDATE或USER),但是該值不能是其它列或假列的名稱(例如NEXTVAL或 CURRVAL) 。預設表示式必須與列的資料型別相匹配。 請看如下示例: INSERT INTO hire_dates values(45, NULL); 以上語句將插入空值而非預設值。 INSERT INTO hire_dates(id) values(35); 以上語句將在HIRE_DATE列中插入SYSDATE。
  • 建立表
• 建立表: CREATE TABLE dept (deptno  NUMBER(2), dname  VARCHAR2(14), loc  VARCHAR2(13), create_date DATE DEFAULT SYSDATE); • 確認表建立: DESCRIBE dept
示例中建立的DEPT表包含以下四列:DEPTNO、DNAME、LOC和CREATE_DATE。 CREATE_DATE列具有預設值。如果沒有為INSERT語句提供值,則會自動插入系統日期。 要確認該表是否已建立,請執行DESCRIBE命令。 因為建立表的命令是一條DDL 語句,所以在執行該語句後會自動提交。 注:可以通過查詢資料字典來檢視你擁有的表列表。例如: select table_name from user_tables 使用資料字典檢視,還可以查詢有關其它資料庫物件(例如檢視、索引等)的資訊。
  • 資料型別

在指定表的列時,需要提供列的資料型別。下面是幾種可用的資料型別:
準則 • 在使用子查詢建立表時不復制LONG列。 • 不能在GROUP BY或ORDER BY子句中包括LONG列。 • 每個表只能使用一個LONG列。 • 不能對LONG列定義約束條件。 • 可以要求使用CLOB列,而不是LONG列。
  • 日期時間資料型別
注:可以在Oracle9i和更高版本中使用這些日期時間資料型別。

  • 包括約束條件
http://blog.csdn.net/rlhua/article/details/12804291
  • 包括約束條件
• 約束條件用於在表級別強制執行各種規則。 • 約束條件用於防止在存在相關性時刪除表。 • 下列約束條件型別有效: – NOT NULL :指定該列不能包含空值 – UNIQUE :定一個列或列組合的值對於表中的所有行必須是唯一的 – PRIMARY KEY :唯一地標識表中的每一行 – FOREIGN KEY : 在該列和所引用表的列之間建立聯絡後強制實施引用完整性, 這樣其中一個表的值與另一個表中的值相匹配 – CHECK :指定必須為真的條件
Oracle Server 使用約束條件來防止將無效的資料輸入到表中。 可以使用約束條件完成以下任務: • 在表中插入、更新或刪除某一行時,對錶中的資料強制執行各種規則。必須滿足約束 條件,操作才會成功。 • 防止當某個表與其它表存在相關性時刪除該表。 • 為Oracle 工具(例如Oracle Developer)提供規則。
  • 約束條件準則
• 可以為約束條件命名,也可以由Oracle Server 使用 SYS_Cn格式生成一個名稱。 • 可採用以下任何一種方式建立約束條件: – 建立表的同時建立約束條件 – 建立表以後 • 可以在列或表級別定義約束條件。 • 可以在資料字典中檢視約束條件。
所有約束條件都儲存在資料字典中。如果為約束條件指定了一個有意義的名稱,則引用時 較為容易。約束條件名稱必須遵循標準物件命名規則,但是 該名稱不能與同一使用者的另一 物件名稱相同 。如果你沒有對約束條件命名,Oracle Server 就會按照SYS_Cn格式生成 一個名稱,其中n是一個整數,這樣約束條件名稱是唯一的。 既可以在建立表的同時定義約束條件,也可以在建立表之後定義約束條件。 你可以在列 級別或表級別定義約束條件。從功能上來說,表級別約束條件與列級別約束條件的作用是 相同的。
  • 定義約束條件
• 語法: CREATE TABLE [schema.]table (column datatype[DEFAULT expr]  [column_constraint], ...  [table_constraint][,...]);
• 列級別約束條件語法: column[CONSTRAINT constraint_name] constraint_type,
• 表級別約束條件語法: column,...  [CONSTRAINT constraint_name] constraint_type (column, ...),
示例給出了在建立表時定義約束條件的語法。你可以在列級別或表級別建立約束條件。 定義列時會包括在列級別定義的約束條件。在表定義結束時定義表級別約束條件,必須 在一組括號中引用應用了約束條件的列或列組合。這二者主要在語法上有所不同;此外 從功能上來說,列級別約束條件和表級別約束條件的作用是相同的。 必須在列級別定義NOT NULL約束條件。 必須在表級別定義適用於多個列的約束條件。 在該語法中: schema :與所有者的姓名相同 table :是表名稱 DEFAULT expr :指定當INSERT語句中省略了值時所使用的預設值 column: 是列名稱 datatype :是列的資料型別和長度 column_constraint:是作為列定義一部分的完整性約束條件 table_constraint :是作為表定義一部分的完整性約束條件
• 列級別約束條件示例: CREATE TABLE employees( employee_id NUMBER(6)  CONSTRAINT emp_emp_id_pk PRIMARY KEY, first_name  VARCHAR2(20), ...);
• 表級別約束條件示例: CREATE TABLE employees( employee_id NUMBER(6), first_name  VARCHAR2(20), ... job_id VARCHAR2(10) NOT NULL, CONSTRAINT emp_emp_id_pk PRIMARY KEY (EMPLOYEE_ID));
通常會在建立表的同時建立約束條件。可以在建立表之後將約束條件新增到表,也可以 臨時禁用約束條件。 示例中都對EMPLOYEES表的EMPLOYEE_ID列建立了主鍵約束條件。 1.第一個示例使用列級別語法定義約束條件。 2.第二個示例使用表級別語法定義約束條件。
  • NOT NULL約束條件
NOT NULL約束條件可以確保某列不包含空值。預設情況下,沒有NOT NULL約束條件 的列可以包含空值。 必須在列級別定義NOT NULL約束條件。 在EMPLOYEES表中, EMPLOYEE_ID列繼承了NOT NULL約束條件,因為該列已定義為主鍵。否則,在 LAST_NAME、EMAIL、HIRE_DATE和JOB_ID列上強制實施NOT NULL約束條件。
  • UNIQUE約束條件
UNIQUE關鍵字完整性約束條件要求一列或一組列(鍵)中的每個值必須是唯一的,即在 指定的列或一組列中,表的任意兩行無重複值。UNIQUE關鍵字約束條件的定義中包括的 列(或一組列)被稱為唯一關鍵字。如果UNIQUE約束條件由多個列組成,則該組列被 稱為組合唯一關鍵字。 UNIQUE約束條件允許輸入空值,除非你還為同一列定義了NOT NULL約束條件。實際 上,因為空值被認為不等於任何值,所以任意數量的行都可以在沒有NOT NULL約束條 件的列中包括空值。一個列(或組合UNIQUE關鍵字的所有列)中的空值總是滿足 UNIQUE約束條件。 注:由於多個列上UNIQUE約束條件的搜尋機制所致,在部分空值組合UNIQUE關鍵字 約束條件的非空列中不能有相同的值。
可以在表級別或列級別定義: CREATE TABLE employees(  employee_id  NUMBER(6),  last_name  VARCHAR2(25) NOT NULL,  email  VARCHAR2(25),  salary  NUMBER(8,2),  commission_pct NUMBER(2,2),  hire_date  DATE NOT NULL,  ...  CONSTRAINT emp_email_uk UNIQUE(email));  可以在列級別或表級別定義UNIQUE約束條件。如果要建立一個組合唯一關鍵字,則可 在表級別定義該約束條件。如果不能使用單個屬性來唯一地標識某一行,則需定義組合 關鍵字。在這種情況下,可以建立由兩個或兩個以上列組成的唯一關鍵字,其組合值總 是唯一的,可用於標識行。 示例中將UNIQUE約束條件應用於EMPLOYEES表的EMAIL列。該約束條件的 名稱為EMP_EMAIL_UK。 注:Oracle Server 通過對一個或多個唯一關鍵字列 隱式建立一個唯一索引來強制實現 UNIQUE約束條件。

  • PRIMARY KEY約束條件
PRIMARY KEY約束條件用於建立建立表的主鍵。只能為每一個表建立一個主鍵。 PRIMARY KEY約束條件是唯一標識表中每一行的一個列或一組列。此約束條件可以強制 一個列或列組合是唯一的,還可以確保作為主鍵一部分的列不包含空值。 注:因為唯一性是主鍵約束條件定義的一部分,所以Oracle Server 通過對一個或多個主鍵 列隱式創建一個唯一索引來強制實現唯一性。

  • FOREIGN KEY約束條件
FOREIGN KEY(或引用完整性)約束條件指定一個列或列組合作為外來鍵,並建立與同一 表或不同表中主鍵或唯一關鍵字的關係。 示例中,DEPARTMENT_ID已被定義為EMPLOYEES表(相關表或子表)中的 外來鍵,它引用DEPARTMENTS表(被引用表或父表)的DEPARTMENT_ID列。 準則 • 外來鍵值必須與父表中的現有值相匹配,或為NULL。 • 外來鍵取決於資料值,外來鍵是純邏輯指標,而不是物理指標。 可以在表級別或列級別定義: CREATE TABLE employees(  employee_id NUMBER(6),  last_name VARCHAR2(25) NOT NULL,  email VARCHAR2(25),  salary NUMBER(8,2),  commission_pct NUMBER(2,2),  hire_date DATE NOT NULL,  ...  department_id NUMBER(4),  CONSTRAINT emp_dept_fk FOREIGN KEY (department_id)  REFERENCES departments(department_id),  CONSTRAINT emp_email_uk UNIQUE(email));
可以在列級別或表級別定義FOREIGN KEY約束條件。必須使用表級別定義來建立組合 外來鍵。 示例中使用表級別語法,對EMPLOYEES表的DEPARTMENT_ID列定義一個 FOREIGN KEY約束條件。該約束條件的名稱為EMP_DEPT_FK。 如果約束條件只是針對單個列,則也可以在列級別定義外來鍵。語法上的不同之處在於沒有 出現關鍵字FOREIGN KEY。例如: CREATE TABLE employees  (...  department_id NUMBER(4) CONSTRAINT emp_deptid_fk  REFERENCES departments(department_id),  ... 
  • FOREIGN KEY約束條件:關鍵字

外來鍵是在子表中定義的,而包含被引用列的表是父表。外來鍵是使用以下關鍵字的組合 定義的: • FOREIGN KEY用於在表約束條件級別定義子表中的列。 • REFERENCES用於標識父表中的表和列。 • ON DELETE CASCADE指出在刪除父表中的行時,還刪除子表中的相關行。 • ON DELETE SET NULL指出在刪除父表中的行時,將外來鍵值設為空值。 預設行為被稱為限制規則,該規則可禁止更新或禁止刪除被引用的資料。 在沒有ON DELETE CASCADE或ON DELETE SET NULL選項時,如果在子表中引用 父表中的一行,則不能刪除該行。
  • CHECK約束條件
• 定義每行都必須滿足的一個條件 • 以下表達式是不允許的: – 引用CURRVAL、NEXTVAL、LEVEL和ROWNUM假列的 表示式 – 呼叫SYSDATE、UID、USER和USERENV函式的表示式 – 引用其它行中的其它值的查詢 ..., salary NUMBER(2) CONSTRAINT emp_salary_min CHECK (salary> 0),... 
CHECK約束條件用於定義每行都必須滿足的一個條件。該條件可以使用與查詢條件相同 的結構,但是以下項除外: • 引用CURRVAL、NEXTVAL、LEVEL和ROWNUM假列的表示式 • 呼叫SYSDATE、UID、USER和USERENV函式的表示式 • 引用其它行中的其它值的查詢 一個列可以有多個CHECK約束條件,這些約束條件將在其定義中引用該列。可以按需要, 對一個列定義任意數量的CHECK約束條件。 可以在列級別或表級別定義CHECK約束條件。 CREATE TABLE employees (... salary NUMBER(8,2) CONSTRAINT emp_salary_min CHECK (salary > 0), ... 
示例中顯示用於建立HR方案中EMPLOYEES表的語句 CREATE TABLE employees ( employee_id NUMBER(6) CONSTRAINT emp_employee_id PRIMARY KEY , first_name VARCHAR2(20) , last_name VARCHAR2(25) CONSTRAINT emp_last_name_nn NOT NULL , email VARCHAR2(25) CONSTRAINT emp_email_nn NOT NULL CONSTRAINT emp_email_uk UNIQUE , phone_number VARCHAR2(20) , hire_date DATE CONSTRAINT emp_hire_date_nn NOT NULL , job_id VARCHAR2(10) CONSTRAINT emp_job_nn NOT NULL , salary NUMBER(8,2) CONSTRAINT emp_salary_ck CHECK (salary>0) , commission_pct NUMBER(2,2) , manager_id NUMBER(6) CONSTRAINT emp_manager_fk REFERENCES employees (employee_id) , department_id NUMBER(4) CONSTRAINT emp_dept_fk REFERENCES departments (department_id));
通過以下查詢表中哪列有哪些約束,上面建立表的語句對應下面的約束。 [email protected]> l   1  select a.owner,a.TABLE_NAME,b.COLUMN_NAME,a.CONSTRAINT_NAME,a.CONSTRAINT_TYPE,a.SEARCH_CONDITION   2  from USER_CONSTRAINTS a,USER_CONS_COLUMNS b   3* where a.CONSTRAINT_NAME=b.CONSTRAINT_NAME and A.table_name='EMPLOYEES' [email protected]> /
OWNER      TABLE_NAME                     COLUMN_NAM CONSTRAINT_NAME                C SEARCH_CONDITION ---------- ------------------------------ ---------- ------------------------------ - -------------------- HR         EMPLOYEES                      SALARY                EMP_SALARY_MIN                       C       salary > 0 HR         EMPLOYEES                      EMAIL                 EMP_EMAIL_UK                         U HR         EMPLOYEES                      EMPLOYEE_ID       EMP_EMP_ID_PK                  P                                          HR         EMPLOYEES                      DEPARTMENT_ID EMP_DEPT_FK                          R                                     HR         EMPLOYEES                      JOB_ID             EMP_JOB_FK                                     R HR         EMPLOYEES                      MANAGER_ID       EMP_MANAGER_FK                 R HR         EMPLOYEES                      LAST_NAME        EMP_LAST_NAME_NN               C       "LAST_NAME" IS NOT N ULL HR         EMPLOYEES                      EMAIL                 EMP_EMAIL_NN                         C            "EMAIL" IS NOT NULL HR         EMPLOYEES                      HIRE_DATE        EMP_HIRE_DATE_NN               C       "HIRE_DATE" IS NOT N ULL HR         EMPLOYEES                      JOB_ID                EMP_JOB_NN                                C                      "JOB_ID" IS NOT NULL
10 rows selected.
  • 違反約束條件
當對列設定了約束條件後,如果試圖違反約束條件規則,則會返回一條錯誤。例如,如果 嘗試更新一條記錄,但該記錄中的值受完整性約束條件所約束,則會返回一條錯誤。 示例中,因為父表DEPARTMENTS中不存在部門55,所以你會收到違例 ORA-02291“parent key not found(未找到父關鍵字)”。
[email protected]> update employees set department_id=55 where department_id=110; update employees set department_id=55 where department_id=110 * ERROR at line 1: ORA-02291: integrity constraint (HR.EMP_DEPT_FK) violated - parent key not found
如果某行中包含用作其它表中的外來鍵的主鍵,則不能刪除 該行。 [email protected]> delete from departments where department_id=60; delete from departments where department_id=60 * ERROR at line 1: ORA-02292: integrity constraint (HR.EMP_DEPT_FK) violated - child record found
如果試圖刪除一條記錄,但該記錄中的值受完整性約束條件所約束,則會返回一條錯誤。 示例中試圖從DEPARTMENTS表中刪除部門60,但此操作導致一個錯誤,因為該 部門編號已用作EMPLOYEES表中的外來鍵。如果試圖刪除具有子記錄的父記錄,則會 收到違例ORA-02292“child record found(存在子記錄)”。 由於部門210 中沒有任何僱員,因此下面的語句有效: [email protected]> delete from departments where department_id=210;
1 row deleted.
  • 使用子查詢建立表
• 通過組合CREATE TABLE語句和AS subquery選項 可以建立表並插入行。 CREATE TABLE table [(column, column...)] AS subquery; • 使指定列的數量與子查詢列的數量相匹配。 • 定義具有列名和預設值的列。
建立表的另一種方法是應用AS subquery子句,該方法既可以建立表,又可以將子查詢 返回的行插入表中。 在該語法中: table 是表名稱 column 是列的名稱、預設值和完整性約束條件 subquery 是一條SELECT語句,用於定義要插入到新表中的一組行 準則 • 使用指定的列名建立一個表,然後將SELECT語句檢索到的那些行插入到該表中。 • 列定義只能包含列名和預設值。 • 如果已經給出列的規格,則列數必須等於子查詢SELECT列表中的列數。 • 如果沒有給出列的規格,則表的列名與子查詢中的列名相同。 •   列資料型別定義和NOT NULL約束條件會傳遞到新表中,請注意,只會繼承顯式 NOT NULL約束條件。PRIMARY KEY列不會將NOT NULL特性傳遞給新列。任何 其它約束條件規則也不會傳遞到新表中。但是,你可以在列定義中新增約束條件。
  • 使用子查詢建立表

CREATE TABLE dept80 AS SELECT employee_id, last_name,salary*12 ANNSAL,hire_date FROM employees WHERE department_id = 80;
DESCRIBE dept80
示例中建立了一個名為DEPT80的表,該表包含在部門80 中工作的所有僱員的 詳細資料。請注意,DEPT80表中的資料來自EMPLOYEES表。 可以使用DESCRIBE命令驗證資料庫表的存在,並檢查列定義。 但是,在選擇表示式時請務必提供列別名。表示式SALARY*12被賦予了別名ANNSAL。 如果沒有別名,系統就會生成以下錯誤: [email protected]> CREATE TABLE dept80   2  as   3  SELECT employee_id, last_name,salary*12 ,hire_date FROM employees WHERE department_id = 80;SELECT employee_id, last_name,salary*12 ,hire_date FROM employees WHERE department_id = 80                                     * ERROR at line 3: ORA-00998: must name this expression with a column alias
  • ALTER TABLE語句
使用ALTER TABLE語句可: • 新增新列 • 修改現有列定義 • 定義新列的預設值 • 刪除列 • 重新命名列 • 將表的狀態更改為“只讀”
在建立表之後,可能會因以下原因而需要更改表結構: • 省略了某列。 • 列定義或列名需要更改。 • 需要刪除列。 • 要將表設定為“只讀”模式。 可以使用ALTER TABLE語句完成此任務。
  • 只讀表
可以使用ALTER TABLE語法執行下列操作: • 將表置於只讀模式,從而阻止在維護表過程中進行 DDL 或DML 更改 • 將表重新置於讀/寫模式 ALTER TABLE employees READ ONLY; -- 執行表維護,然後再 將表改回讀/寫模式 ALTER TABLE employees READ WRITE;
在Oracle Database 11g中,可以通過指定READ ONLY將表設定為“只讀”模式。當表 處於READ-ONLY模式時,使用者不能發出可對錶造成影響的任何DML 語句或任何 SELECT ... FOR UPDATE語句。可以發出DDL 語句,但前提條件是不對錶中的任何 資料進行修改。當表處於READ ONLY模式時,可以對與表關聯的索引執行操作。 指定READ/WRITE,可令處於“只讀”模式的表返回“讀/寫”模式。 注:可以刪除處於READ ONLY模式的表。DROP命令只能在資料字典中執行,因此無需 訪問表內容。在表空間返回“讀/寫”狀態之前,系統不會回收表使用的空間,此時可對 塊段頭進行必要的更改。
  • 刪除表
• 將表移至回收站 • 如果指定了PURGE子句,則可將表及其所有資料全部 刪除 • 使從屬物件失效並刪除表的物件許可權 DROP TABLE dept80;
使用DROP TABLE語句可以將表移至回收站或從資料庫中全部刪除該表及其所有資料。 如果不指定PURGE子句,DROP TABLE語句就不會將使用的空間重新釋放到表空間中供 其它物件使用,而且該空間會繼續視為使用者的空間限額。刪除表會使從屬物件失效並刪除 表的物件許可權。 刪除表後,在資料庫中會失去表的所有資料以及與表關聯的 所有索引。 語法 DROP TABLE table [PURGE] 在該語法中,table是表的名稱。 準則 • 刪除表中的所有資料。 • 保留檢視和同義詞,但不再有效。 • 提交所有待定的事務處理。 • 只有表的建立者或具有DROP ANY TABLE許可權的使用者才能刪除表。 注:使用FLASHBACK TABLE語句可從回收站中還原已刪除的表。            

給我老師的人工智慧教程打call!http://blog.csdn.net/jiangjunshow

這裡寫圖片描述