postgresql字段新增、刪除、增刪約束、字段和表重命名

  • 新增字段
在t_test表里添加名為t1,類型為VARCHAR(10)的列
ALTER TABLE t_test ADD COLUMN t1 VARCHAR(10);

如果列是整型可以VARCHAR(10)換成integer

ALTER TABLE t_test ADD COLUMN t2 integer;

如果加上非空約束或者默認(rèn)值

ALTER TABLE t_test ADD COLUMN t1 VARCHAR(10) not null;表示不能為空
ALTER TABLE t_test ADD COLUMN t1 VARCHAR(10) default '';表示默認(rèn)值為字符串


  • 刪除字段
刪除t_test表里t1字段
ALTER TABLE t_test DROP COLUMN t1; 

如果t1字段被另外的表外鍵引用,直接執(zhí)行刪除會(huì)報(bào)錯(cuò),需要使用cascade刪除外鍵的依賴

ALTER TABLE t_test DROP COLUMN t1 cascade;

  • 增加約束
ALTER TABLE t_test ADD CHECK (t2 > 0);表示t2得大于0

ALTER TABLE t_test ADD CONSTRAINT unique_test_key UNIQUE(t1);表示t1是唯一約束


ALTER TABLE t_test ALTER COLUMN t1 SET NOT NULL;表示給t1增加非空約束

注意在添加這些約束的時(shí)候,前提是這些表里已存在的數(shù)據(jù)也符合這些約束,否則會(huì)失敗
  • 刪除約束
ALTER TABLE t_test DROP CONSTRAINT unique_test_key unique_test_key;表示刪除t_test里名為unique_test_key的唯一約束

刪除約束需要知道約束的名稱,所以可以使用\d的命令查看有約束的名稱,有點(diǎn)特殊的是非空的約束是沒(méi)有名稱的,但可以這樣執(zhí)行刪除

ALTER TABLE t_test ALTER COLUMN t1 DROP CONSTRAINT NOT NULL;
  • 修改、刪除默認(rèn)值
ALTER TABLE t_test ALTER COLUMN t2 SET DEFAUL 1;表示給t2列設(shè)置默認(rèn)值

ALTER TABLE t_test ALTER COLUMN t2 DROP DEFAUL;

  • 修改數(shù)據(jù)類型
ALTER TABLE t_test ALTER COLUMN t1 TYPE text;表示將t1的varchar類型轉(zhuǎn)換成text類型

值得注意的是只有字段里的每個(gè)項(xiàng)都能隱式的轉(zhuǎn)成新類型,這個(gè)操作才會(huì)成功
假如varchar(40)轉(zhuǎn)成varchcar(10),如果有數(shù)據(jù)是長(zhǎng)度是大于10的,那么轉(zhuǎn)換就會(huì)失敗
  • 重命名字段
ALTER TABLE t_test RENAME COLUMN t2 TO t3;
  • 重命名表
ALTER TABLE t_test RENAME TO t_test1;
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • ORA-00001: 違反唯一約束條件 (.) 錯(cuò)誤說(shuō)明:當(dāng)在唯一索引所對(duì)應(yīng)的列上鍵入重復(fù)值時(shí),會(huì)觸發(fā)此異常。 O...
    我想起個(gè)好名字閱讀 5,964評(píng)論 0 9
  • 作者:燁竹 數(shù)據(jù)庫(kù)的基本操作 登陸MySQL數(shù)據(jù)庫(kù)服務(wù):mysql -h服務(wù)器地址 -P端口號(hào) -u用戶名 ...
    DragonRat閱讀 1,443評(píng)論 0 7
  • MySQL5.6從零開(kāi)始學(xué) 第一章 初始mysql 1.1數(shù)據(jù)庫(kù)基礎(chǔ) 數(shù)據(jù)庫(kù)是由一批數(shù)據(jù)構(gòu)成的有序的集合,這些數(shù)據(jù)...
    星期四晚八點(diǎn)閱讀 1,230評(píng)論 0 4
  • 在PostgreSQL中,數(shù)據(jù)就是存放在數(shù)據(jù)表中,在一張數(shù)據(jù)表中,每一列就是一個(gè)字段,即表示哪種類型的數(shù)據(jù)。每一行...
    shark_tear閱讀 1,055評(píng)論 0 1
  • 山竹將要來(lái)臨,沉醉的夜里,呼呼聲不斷,為做清洗前的最后準(zhǔn)備,全城準(zhǔn)備著,心里懸著的便是那些即將被臺(tái)風(fēng)洗劫的固定不動(dòng)...
    藏拾叁閱讀 200評(píng)論 0 0

友情鏈接更多精彩內(nèi)容