日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

PostgreSQL数据库修改sql表的方法汇总

發布時間:2023/12/2 数据库 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PostgreSQL数据库修改sql表的方法汇总 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一,修改表
PostgreSQL 提供了一族命令用于修改現有表。?
可以實現:
增加字段,
刪除字段,
增加約束,
刪除約束,
修改默認值,
重命名字段,
重命名表。

這些操作可以用:ALTER TABLE命令執行的。

1,增加字段
要增加一個字段,使用這條命令:?
ALTER TABLE products ADD COLUMN description text;
新增的字段對于表中已經存在的行而言最初將先填充空值。?
你也可以同時在該字段上定義約束,使用通常的語法:?
ALTER TABLE products ADD COLUMN description text CHECK (description <> '');
一個新字段不能用非空約束,因為最初的時候該字段必須包含空值。 但是你可以稍后增加一個非空約束。同樣,你也不能在一個新字段 上定義默認值。根據 SQL 標準的說明,這樣需要對現存行的新 字段填充默認值,而這個特性還沒有實現。但是你可以稍后調整 字段預設。

2,刪除字段
除一個字段:?
ALTER TABLE products DROP COLUMN description;

3,增加約束?

要增加一個約束,使用表約束語法。比如:

ALTER TABLE products ADD CHECK (name <> '');
ALTER TABLE products ADD CONSTRAINT some_name UNIQUE (product_no);
ALTER TABLE products ADD FOREIGN KEY (product_group_id) REFERENCES product_groups;

要增加一個不能寫成表約束的非空約束,使用下面語法:?
ALTER TABLE products ALTER COLUMN product_no SET NOT NULL;

這個約束將立即進行檢查,所以表在加入約束之前必須符合約束條件。

4,刪除約束
要刪除一個約束,你需要知道它的名字。如果你給了它一個名字, 那么事情就好辦了。
否則系統會分配一個生成的名字,這樣你就需要 把它找出來了。psql 的命令 \d tablename 在這兒可以幫忙﹔?
其它接口可能也提供了檢查表的細節的方法。
命令:?
ALTER TABLE products DROP CONSTRAINT some_name;
除了非空約束外,所有約束類型都這么用。要刪除非空類型,用?
ALTER TABLE products ALTER COLUMN product_no DROP NOT NULL;
(要記得非空約束沒有名字。)

5,改變默認值
要給一個字段設定默認值,使用一個象下面這樣的命令:?
ALTER TABLE products ALTER COLUMN price SET DEFAULT 7.77;
要刪除默認值,用?
ALTER TABLE products ALTER COLUMN price DROP DEFAULT;
這樣相當于把預設設定為空,至少在 PostgreSQL里是這樣的。?
如果刪除一個還沒有定義的默認值不算錯誤,因為預設隱含就是空值。

6,給字段改名字
重命名一個字段:?
ALTER TABLE products RENAME COLUMN product_no TO product_number;

7,給表改名字

To rename a table:?
ALTER TABLE products RENAME TO items;

8, ?postgresql 9.0以后更改字段長度會重寫表,如果表比較大,那么表會加鎖,需要很長時間,這里介紹一種方法通過修改pg_attribute.atttypmod字段修改長度,不需要重寫表

? ? ? 假如表中atttypemod為6,變長類型頭信息占去4個字節,這里6-4=2就是我們字段長度。

? ? ? 查看修改如下:

select atttypmod from pg_attribute where attrelid='hall_info'::regclass and attname='holiday';

update pg_attribute set atttypmod=19 where attrelid='hall_info'::regclass and attname='holiday';? ?(hall_info:表名,holiday:字段名,該字段長度改為:15)


注:創建一個作為外鍵的字段company_id

首先: ? ? alter table dtb_order add column company_id int default 0;
再:???????? alter table dtb_order add foreign key(company_id) references dtb_transinfo;


實際項目中經常會遇到要修改表結構的需求, 現在總結下postgres中修改表結構

比如, 現在有個表,

CREATE TABLE ?test
(
?id ?bigint NOT NULL,
?name character varying,
? CONSTRAINT pk_test PRIMARY KEY (id) ? ? ?-------這個個約束(constraint), 主鍵約束
)?

WITH (

? OIDS=FALSE
);
ALTER TABLE pets
? OWNER TO postgres;


1. 增加列, 修改主鍵

之前表有2個字段, id和name, id是主鍵, 現在有需求增加一個index, 并且需求是主鍵改為id和index, sql語句如下

alter table test add column test_index smallint not null default 0; ? ? ? ? ?-----------增加一個列 test_index

alter table test drop constraint pk_test; ? ? ? ?----------------刪除之前的主鍵約束

alter table test add constraint pk_test PRIMARY_KEY(id, test_index); ? ? ? ? ? ------------重新增加一個主鍵

總結

以上是生活随笔為你收集整理的PostgreSQL数据库修改sql表的方法汇总的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。