程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle教程 >> Oracle-08-修改表結構(對已有的表增刪改查)

Oracle-08-修改表結構(對已有的表增刪改查)

編輯:Oracle教程

Oracle-08-修改表結構(對已有的表增刪改查)


一、在創建表的時候加上主鍵的例子:

create table stu(

id number(5)primary key,

name varchar2(20)

);

以上是一種主鍵約束。簡單了解下。約束表中id列中的數據,要求不為空且不能重復。

 

二、修改表結構常用的3種操作:

1.在一個表中加入一個新的列

語法格式:

alter table 表名 add

(列名 數據類型 [default 默認值] [, 列名…])

如果加一列不夠,可以逗號之後再加一列。

【注意】alter是DDL語句,一旦改動就永久改動。

 

例:為A表加入“age”一列,該列的數據類型為“number”,且默認值為23。

alter table A add agenumber(2) default 23

 

下面具體操作:

Step1:首先用lisi登錄數據庫,因為原sys用戶下面的表太多,查詢起來麻煩,換個自定義用戶lisi登錄數據庫,查詢方便,如下圖:

\

 

Step2:查詢當前用戶下的表數量,注意下圖中的命令

\

 

Step3:發現lisi用戶下沒有表,那麼創建一個表,如下圖:

\

 

Step4:再次用步驟2的方法查詢,如下圖:

\

 

接著用desc A查詢A表的結構,如下圖:

\

 

發現lisi用戶下已有表A。

Step5:為A表增加age列,如下圖:

\

 

Step6:再次用desc A查看A表結構,如下圖:

\

 

 

2.修改在一個表中已存在的列

語法格式:

alter table 表名 modify

(列名 數據類型 [default 默認值] [,列名…])

【注意】alter語句一旦執行,就永久修改。

 

例:將A表中的age這列的數據類型改為varchar2(2)

alter table A modify agevarchar2(2)

 

下面具體操作:

Step1:為了說明報錯信息,首先給空的A表中添加一行數據,如下圖:

\

 

查詢表結構和表內容,如下圖:

\

 

說明數據內容添加成功。

Step2:這時候將表age列修改為varchar2(2),如下圖:

\

 

發現報錯,因為被修改的age列已經存在數據,所以被修改的列必須是空的才能修改

Step3:將表A的age列清空,注意下圖中的命令,如下圖所示:

\

 

查詢表結構和表內容:

\

 

Step4:將表A中的age列修改為varchar2(2),如下圖:

\

 

【注意】修改一個表中已經存在的列要注意以下事項:

(1)可以增加字符類型的列的寬度,簡單說,比如原來該列是varchar2(2)類型,在不改變類型情況下,不管該列是否為空,都可以增加長度,比如把2加到10,即varchar(10);

(2)可以增加數字類型的列的寬度和精度,數字類型比如number類型;

(3)只有當所有列的值都為空或者表中沒有數據時,才可以減少列的寬度;

(4)只有當所有列的值都為空時,才可以改變某一列的數據類型,如上面示例說明;

(5)如果改變某一列的默認值,該默認值只能影響以後的操作,如以下操作,在將A表age列的默認值改為23後,原來張三數據依然為空,之後添加的張四數據age默認值為23,所以只影響以後的操作:

表中原數據查詢:

\

 

修改age列的默認值為23:

\

 

再次查詢A表內容,發現原來數據的age列沒改:

\

 

插入新數據張四:

\

 

查詢發現新數據張四的age是新設置的默認值23:

\

 

所以修改某一列的默認值,不影響原數據,只影響後數據;

(6)只有當某一列沒有改變該列的大小的情況下,才可以把char類型的列改變成varchar2類型的列,或者把varchar2類型的列改變成char類型的列,因為char類型如果數據長度不夠,會自動補空格,所以如果把varchar2類型改為char類型,長度會改變,不安全。

 

3.從一個表中刪除一列

語法格式:

alter table 表名 drop column 列名

 

例:將A表中的age列刪除

alter table A drop column age

 

實戰操作:

Step1:先看下現在的A表,如下圖:

\

 

Step2:刪除age列,如下圖:

\

 

Step3:查詢是否刪除成功,如下圖:

\

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved