oracle怎么修改表结构
本教程操作環境:Windows7系統、Oracle 11g版、Dell G3電腦。
在oracle中,可以使用“ALTER TABLE”語句來修改表結構。
ALTER TABLE 語句可以改變原有表的結構,例如增加或刪減列、更改原有列類型、重新命名列或表等。
ALTER TABLE 語句的語法:
ALTER TABLE 表名 [修改選項]
登錄后復制
在上面的語句中,
-
首先,指定要修改的表名稱。
-
其次,指出想在表名稱后執行的修改操作。
ALTER TABLE語句可用來:
- 添加一個或多個列
- 修改列定義
- 刪除一列或多列
- 重命名列
- 重命名表
下面來看看一些例子來了解每個操作的工作原理。
Oracle ALTER TABLE示例
我們將使用在上一個教程中創建的persons表進行演示。
-- 12c語法
CREATE TABLE persons(
person_id NUMBER GENERATED BY DEFAULT AS IDENTITY,
first_name VARCHAR2(50) NOT NULL,
last_name VARCHAR2(50) NOT NULL,
PRIMARY KEY(person_id)
);
登錄后復制
1. 添加列的例子
要將新列添加到表中,請使用以下語法:
ALTER TABLE table_name ADD column_name type constraint;
登錄后復制
例如,以下語句將一個名為birthdate的新列添加到persons表中:
ALTER TABLE persons ADD birthdate DATE NOT NULL;
登錄后復制
如果查看persons表格,會看到birthdate日期列被添加到列列表的末尾:
DESC persons; Name Null Type ---------- -------- ------------ PERSON_ID NOT NULL NUMBER FIRST_NAME NOT NULL VARCHAR2(50) LAST_NAME NOT NULL VARCHAR2(50) BIRTHDATE NOT NULL DATE
登錄后復制
要同時向表中添加多列,請按如下所示將新列置于括號內:
ALTER TABLE table_name
ADD (
column_name type constraint,
column_name type constraint,
...
);
登錄后復制
看下面的例子:
ALTER TABLE persons
ADD (
phone VARCHAR(20),
email VARCHAR(100)
);
登錄后復制
在這個例子中,語句在users表中添加了兩個名為phone和email的新列。
DESC persons Name Null Type ---------- -------- ------------- PERSON_ID NOT NULL NUMBER FIRST_NAME NOT NULL VARCHAR2(50) LAST_NAME NOT NULL VARCHAR2(50) BIRTHDATE NOT NULL DATE PHONE VARCHAR2(20) EMAIL VARCHAR2(100)
登錄后復制
2. 修改列的屬性的示例
要修改列的屬性,請使用以下語法:
ALTER TABLE table_name MODIFY column_name type constraint;
登錄后復制
例如,下面的語句將birthdate列更改為一個空列:
ALTER TABLE persons MODIFY birthdate DATE NULL;
登錄后復制
我們再次驗證persons表結構:
DESC persons Name Null Type ---------- -------- ------------- PERSON_ID NOT NULL NUMBER FIRST_NAME NOT NULL VARCHAR2(50) LAST_NAME NOT NULL VARCHAR2(50) BIRTHDATE DATE PHONE VARCHAR2(20) EMAIL VARCHAR2(100)
登錄后復制
正如所看到的,birthdate日期變得無能為力。
要修改多個列,請使用以下語法:
ALTER TABLE table_name
MODIFY ( column_1 type constraint,
column_1 type constraint,
...);
登錄后復制
例如,以下語句將phone和email列更改為NOT NULL列,并將email列的長度擴展為255個字符:
ALTER TABLE persons MODIFY(
phone VARCHAR2(20) NOT NULL,
email VARCHAR2(255) NOT NULL
);
登錄后復制
再次驗證persons表結構:
DESC persons; Name Null Type ---------- -------- ------------- PERSON_ID NOT NULL NUMBER FIRST_NAME NOT NULL VARCHAR2(50) LAST_NAME NOT NULL VARCHAR2(50) BIRTHDATE DATE PHONE NOT NULL VARCHAR2(20) EMAIL NOT NULL VARCHAR2(255)
登錄后復制
3. 刪除現有的列的示例
要從表中刪除現有的列,請使用以下語法:
ALTER TABLE table_name DROP COLUMN column_name;
登錄后復制
該語句從表結構中刪除列,并刪除存儲在該列中的數據。以下示例從persons表中刪除birthdate日期類型的列:
ALTER TABLE persons DROP COLUMN birthdate;
登錄后復制
再次查看persons表結構,就會發現birthdate列已被刪除:
DESC persons; Name Null Type ---------- -------- ------------- PERSON_ID NOT NULL NUMBER FIRST_NAME NOT NULL VARCHAR2(50) LAST_NAME NOT NULL VARCHAR2(50) PHONE NOT NULL VARCHAR2(20) EMAIL NOT NULL VARCHAR2(255)
登錄后復制
要同時刪除多個列,請使用以下語法:
ALTER TABLE table_name DROP (column_1,column_2,...);
登錄后復制
例如,以下語句從個人表中刪除phone和email列:
ALTER TABLE persons DROP ( email, phone );
登錄后復制
我們再來看一下persons表:
DESC persons; Name Null Type ---------- -------- ------------ PERSON_ID NOT NULL NUMBER FIRST_NAME NOT NULL VARCHAR2(50) LAST_NAME NOT NULL VARCHAR2(50)
登錄后復制
email和phone列已按預期刪除。
4. 重命名列的示例
從版本9i開始,Oracle添加了一個用于重命名列的子句,如下所示:
ALTER TABLE table_name RENAME COLUMN column_name TO new_name;
登錄后復制
例如,以下語句將first_name列重命名為forename列:
ALTER TABLE persons RENAME COLUMN first_name TO forename;
登錄后復制
以下語句檢查結果:
DESC persons; Name Null Type --------- -------- ------------ PERSON_ID NOT NULL NUMBER FORENAME NOT NULL VARCHAR2(50) LAST_NAME NOT NULL VARCHAR2(50)
登錄后復制
5. 重命名表的例子
要將一個表重命名為一個新的name的表名,使用下面的語法:
ALTER TABLE table_name RENAME TO new_table_name;
登錄后復制
例如,下面的語句將users表重命名為people表:
ALTER TABLE persons RENAME TO people;
登錄后復制
推薦教程:《Oracle教程》
以上就是oracle怎么修改表結構的詳細內容,更多請關注風君子博客其它相關文章!
總結
以上是生活随笔為你收集整理的oracle怎么修改表结构的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 私对公转账的规定2020
- 下一篇: 怎么查个人征信报告 如何查看征信报告