PostgreSQL修改表
阿新 • • 發佈:2018-12-10
修改表是通過命令"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;