PostgreSQL基本命令,PostgreSQL命令
1.更改表名
alter table 表名 rename to 新表名
2.更改欄位名
alter table 表名 rename 欄位名 to 新欄位名
3,更改欄位類型
如:ID 欄位 原類型為 character varying(50) 新類型為integer
其中,ID中原有資料為1,2,3等數字
用如下語句更改
alter table dbo.titemtype alter column id type integer using to_number(id,'9' ) ;
要增加一個欄位,使用下面這樣的命令:
ALTER TABLE products ADD COLUMN description text;
新增的欄位對於表中已經存在的行而言最初將先填充所給出的預設值(如果你沒有聲明 DEFAULT 子句,那麼預設是 NULL)。
你也可以同時在該欄位上定義約束,使用通常的文法:
ALTER TABLE products ADD COLUMN description text CHECK (description <> '' ) ;
實際上,所有在 CREATE TABLE 裡描述的可以應用於欄位的選項都可以在這裡使用。不過,我們要注意的是預設值必須滿足給出的約束,否則 ADD 將會失敗。另外,你可以在正確填充了新欄位的數值之後再增加約束(見下文)。
【提示】添加一個欄位並填充預設值將會導致更新表中的所有行(為了儲存新欄位的值),但如果沒有指定預設值,PostgreSQL 就可以避免物理更新。所以如果你將要在新欄位中填充的值大多數都不等於預設值,那麼最好添加一個沒有預設值的欄位,然後再使用 UPDATE 更新資料,最後使用下面的方法添加預設值。
要刪除一個欄位,使用下面這樣的命令:
ALTER TABLE products DROP COLUMN description;
不管欄位裡有啥資料,都會消失,和這個欄位相關的約束也會被刪除。不過,如果這個欄位被另一個表的外鍵所引用,PostgreSQL 則不會隱含地刪除該約束。你可以通過使用 CASCADE 指明刪除任何依賴該欄位的東西:
ALTER TABLE products DROP COLUMN description CASCADE;
參閱節5.11擷取有關這些操作背後的機制的資訊。
要增加一個約束,必須使用資料表條件約束文法。比如:
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;
這個約束將立即進行檢查,所以表在添加約束之前必須符合約束條件。
要刪除一個約束,你需要知道它的名字。如果你曾經給了它取了名字,那麼事情就很簡單。否則你就需要找出系統自動分配的名字。psql 的命令 \d tablename可以這個幫忙;其它介面可能也提供了檢查表的細節的方法。然後就是這條命令:
ALTER TABLE products DROP CONSTRAINT some_name;
如果你在處理一個產生的約束名,比如 $2 ,別忘了你需要給它添加雙引號,讓它成為一個有效標識符。
和刪除欄位一樣,如果你想刪除被依賴的約束,你需要用 CASCADE 。一個例子是某個外鍵約束依賴被引用欄位上的唯一約束或者主鍵約束。
除了非空約束外,所有約束類型都這麼用。要刪除非空約束,可以這樣:
ALTER TABLE products ALTER COLUMN product_no DROP NOT NULL;
要記得非空約束沒有名字。
要給一個欄位設定預設值,可以使用一個像下面這樣的命令:
ALTER TABLE products ALTER COLUMN price SET DEFAULT 7.77;
請注意這麼做不會影響任何錶中現有的資料行,它只是為將來的 INSERT 命令改變預設值。
要刪除預設值,可以用
ALTER TABLE products ALTER COLUMN price DROP DEFAULT;
這樣實際上相當於把預設設定為空白。結果是,如果我們刪除一個還沒有定義的預設值不算錯誤,因為預設隱含就是 NULL 。
把一個欄位轉換成另外一種資料類型,使用下面的命令:
ALTER TABLE products ALTER COLUMN price TYPE numeric(10,2) ;
只有在欄位裡現有的每個項都可以隱含的轉換城新類型時才可能成功。如果需要更複雜的轉換,你可以增加一個 USING 子句,它聲明如何從舊值裡計算新值。
PostgreSQL 將試圖把欄位的預設值(如果存在)轉換成新的類型,還有涉及該欄位的任何約束。但是這些轉換可能失敗,或者可能產生奇怪的結果。在修改某欄位類型之前,你最好刪除那些約束,然後再把合適的約束添加上去。
重新命名一個欄位:
ALTER TABLE products RENAME COLUMN product_no TO product_number;
重新命名一個表:
ALTER TABLE products RENAME TO items;