SqlServer修改表結構總結


增加字段,刪除字段,增加約束,刪除約束,修改缺省值,修改字段數據類型,重命名字段,重命名表。所有這些動作都是用 ALTER TABLE 命令執行的。
 
增加字段
要增加一個字段,使用下面這樣的命令:
ALTER TABLE products ADD COLUMN description text;新增的字段對於表中已經存在的行而言最初將先填充所給出的缺省值(如果你沒有聲明DEFAULT子句,那么缺省是空值)。
你也可以同時在該字段上定義約束,使用通常的語法:
ALTER TABLE products ADD COLUMN description text CHECK (description <> '');實際上,所有在 CREATE TABLE 里描述的可以應用於字段之選項都可以在這里使用。 不過,我們要注意的是缺省值必須滿足給出的約束,否則 ADD 將會失敗。另外,你可以在你正確填充了新字段的數值之后再增加約束(見下文)。

刪除字段
要刪除一個字段,使用下面這樣的命令:
ALTER TABLE products DROP COLUMN description;不管字段里有啥數據,都會小時。和這個字段相關的約束也會被刪除。不過,如果這個字段被另外一個表的外鍵所引用,PostgreSQL 則不會隱含地刪除該約束。你可以通過使用 CASCADE 來授權刪除任何依賴該字段的東西:
ALTER TABLE products DROP COLUMN description CASCADE;參閱 Section 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;這樣實際上相當於把缺省設置為空。 結果是,如果我們刪除一個還沒有定義的缺省值不算錯誤,因為缺省隱含就是空值。

修改一個字段的數據類型
把一個字段轉換成另外一種數據類型,使用下面的命令:
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 COLUMN product_no TO product_number;
給表改名字
給一個表重命名:
ALTER TABLE products RENAME TO items;

 

 

 

 

轉自:http://hi.baidu.com/zjx_8090/blog/item/8271bc2a9fbdbb4c4ec22622.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM