1. 程式人生 > >PostgreSQL修改表

PostgreSQL修改表

    修改表是通過命令"alter table"實現的。該命令支援操作:增加欄位、刪除欄位、增加約束、刪除約束、設定預設值、修改欄位資料型別、重新命名欄位、重命名錶。

    現在已有一張表student, 在此基礎上修改。

增加欄位

    對錶中已存在行而言,新增的欄位會填充預設值 ,如果沒有預設值,則填充NULL。

    例:向表student中增加三個欄位:id, name, age。

ALTER TABLE student ADD COLUMN id int;
ALTER TABLE student ADD COLUMN name varchar(20);
ALTER TABLE student ADD COLUMN age  int;

刪除欄位

    刪除某欄位時,該欄位中的所有內容都會消失,相關的約束也會被刪除。

    例:刪除表student中列school。

ALTER TABLE student DROP COLUMN school;

增加約束

   增加約束之前要確定表中資料符合該約束條件,否則約束會增加失敗。

   例:向表student中id增加主鍵,name增加非空約束,age增加檢查約束。

ALTER TABLE student ADD PRIMARY KEY(id);
ALTER TABLE student ALTER COLUMN name SET NOT NULL;
ALTER TABLE student ADD CHECK(age>0);

刪除約束

  刪除約束時需要知道約束的名稱。一般使用 \d  命令把約束的名稱查出來,再刪除。

  例:刪除表student中age列的檢查約束。

ALTER TABLE student DROP CONSTRAINT student_age_check

設定預設值

    設定預設值不會影響現有表中的任何資料行,它只是會為將來插入的資料設定預設值。

   例:為表student中age列設定預設值15。

ALTER TABLE student ALTER COLUMN age SET DEFAULT 15;

刪除預設值

    相當於把預設值設定為NUL。如果一個欄位上沒有定義預設值,執行該語句也不會因此報錯。

   例:表student中age列刪除預設值。

ALTER TABLE student ALTER COLUMN age DROP DEFAULT;

修改欄位資料型別

   只有當欄位現有的型別可以隱式轉換成新型別時,修改語句才能執行成功。

   例:表student中age列從int改為smallint。

ALTER TABLE student ALTER COLUMN age TYPE SMALLINT;

重新命名欄位

   例:表student中id重新命名為stu_id。

ALTER TABLE student RENAME COLUMN id TO stu_id;

重命名錶

  例:表student重新命名person。

ALTER TABLE student RENAME TO person;