一、在創建表的時候加上主鍵的例子:
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:查詢是否刪除成功,如下圖: