一、CREATE TABLE — 創(chuàng)建一個新表
CREATE [ TEMPORARY | TEMP ] TABLE table (
column type [ NULL | NOT NULL ] [ UNIQUE ] [ DEFAULT value ] [column_constraint_clause | PRIMARY KEY } [ ... ] ] [, ... ] [, PRIMARY KEY ( column [, ...] ) ] [, CHECK ( condition ) ] [, table_constraint_clause ] ) [ INHERITS ( inherited_table [, ...] ) ] TEMPORARY
此表只是為這次會話創(chuàng)建,并且在會話結(jié)束后自動刪除。當臨時表存在時,同名的永久表是不可見的。 table 將要創(chuàng)建的新表的名稱. column 列/字段名. type 列/字段類型.這里可以包括數(shù)組的聲明.請參考 PostgreSQL 用戶手冊 獲取關(guān)于數(shù)據(jù)類型和數(shù)組的詳細信息. DEFAULT value 一個列/字段的缺省值.請參考 DEFAULT 子句獲取更多信息. column_constraint_clause 可選的列/字段約束子句,聲明一系列整合的約束和測試,當對表進行更新或插入操作時必須滿足這些約束條件才能成功.每個約束必須生成一個布爾式.盡管 SQL92 需要 column_constraint_clause 用于指定某一行,Postgres 允許在用一個列/字段的約束索引多個列.請參考列約束子句獲取更多信息. table_constraint_clause 可選的表(約束) CONSTRAINT 子句,聲明一系列整合的約束,當對表進行更新或插入時必須滿足這些約束.每個約束必須生成一個布爾表達式.可以對多列使用同一個約束.一個表只能聲明一個 PRIMARY KEY 子句;PRIMARY KEY column (表約束)和 PRIMARY KEY (列/字段約束)是互斥的. 請參考表約束子句獲取更多信息. INHERITS inherited_table 可選的(繼承)INHERITS 子句聲明一系列表名,這個表將自動從這些表繼承所有字段.如果任何繼承域出現(xiàn)的次數(shù)超過一次,Postgres 將報告一個錯誤. Postgres 自動地允許所創(chuàng)建的表繼承所有其父表的函數(shù). 另外: 函數(shù)的繼承是按照通用Lisp對象系統(tǒng)(CLOS)的習慣進行的. CREATE TABLE films (
code CHARACTER(5) CONSTRAINT firstkey PRIMARY KEY, title CHARACTER VARYING(40) NOT NULL, did DECIMAL(3) NOT NULL, date_prod DATE, kind CHAR(10), len INTERVAL HOUR TO MINUTE ); 詳細請看:http://www./books/postgresNEW/sql-createtable.htm 二、ALTER TABLE -- 修改表的定義
向表中增加一個 varchar 列:
ALTER TABLE distributors ADD COLUMN address VARCHAR(30);
對現(xiàn)存列改名: ALTER TABLE distributors RENAME COLUMN address TO city;
更改現(xiàn)存表的名字∶ ALTER TABLE distributors RENAME TO suppliers;
給一個表增加一個檢查約束∶ ALTER TABLE distributors ADD CONSTRAINT zipchk CHECK (char_length(zipcode) = 5); 刪除一個表和它的所有子表的監(jiān)查約束∶
ALTER TABLE distributors DROP CONSTRAINT zipchk;
向表中增加一個外鍵約束: ALTER TABLE distributors ADD CONSTRAINT distfk FOREIGN KEY (address) REFERENCES addresses(address) MATCH FULL;
給表增加一個(多字段)唯一約束∶ ALTER TABLE distributors ADD CONSTRAINT dist_id_zipcode_key UNIQUE (dist_id, zipcode);
兼容性 SQL92 ADD COLUMN 形式是兼容的, 除了上面說的缺?。ㄖ担┖?NOT NULL 約束外。 ALTER COLUMN 形式是完全兼容的。 SQL92 對 ALTER TABLE 聲明了一些附加的 PostgreSQL 目前還不直接支持的功能:
ALTER TABLE table DROP [ COLUMN ] column { RESTRICT | CASCADE }
從一個表中刪除一個列. 目前,要刪除一個現(xiàn)存的列,表必須重新創(chuàng)建和重新裝載: CREATE TABLE temp AS SELECT did, city FROM distributors;
DROP TABLE distributors; CREATE TABLE distributors ( did DECIMAL(3) DEFAULT 1, name VARCHAR(40) NOT NULL ); INSERT INTO distributors SELECT * FROM temp; DROP TABLE temp;程序例子:1if((Drop_column_type.SelectedItem.Text.Trim()=="int")|(Drop_column_type.SelectedItem.Text.Trim()=="datetime")) { strsql="ALTER TABLE "+str_table_mc+" ADD "+li_mc+" " + Drop_column_type.SelectedItem.Text.Trim() + " "+str_isnull; } else { strsql="ALTER TABLE "+str_table_mc+" ADD "+li_mc+" "+Drop_column_type.SelectedItem.Text.Trim()+"("+Txt_column_l.Text.Trim()+") "+str_isnull; } int run; run=sql.ExecuteNonQuery(strsql);詳細請看:http://www./pgsqldoc-7.2c/sql-altertable.html三、DROP TABLE — 從數(shù)據(jù)庫中刪除一個表 DROP TABLE name [, ...] 輸入 name 要刪除的現(xiàn)存表或視圖. 輸出 DROP 如果命令成功完成,返回此信息. ERROR Relation "name" Does Not Exist! 如果聲明的表或視圖在數(shù)據(jù)庫中不存在. 描述 DROP TABLE 從數(shù)據(jù)庫中刪除表或視圖.只有其所有者才能刪除一個表或視圖.使用 DELETE 一個表可能沒有任何行,但不會被刪除. 如果被刪除的表有從索引,它們將首先被刪除.從索引的刪除將對所屬表的內(nèi)容沒有任何影響. 注意 請參考 CREATE TABLE 和 ALTER TABLE 獲取如何創(chuàng)建或更改表的信息. 用法 刪除 films 和 distributors 表: DROP TABLE films, distributors 兼容性
SQL92 SQL92 為 DROP TABLE 聲明了一些附加的功能: DROP TABLE table { RESTRICT | CASCADE } RESTRICT 確保只有不存在相關(guān)視圖或整合約束的表才可以被刪除. CASCADE 任何引用的視圖或整合約束都將被刪除.
小技巧: 目前,要刪除一個視圖,你必須顯式刪除之 例子:strsql="DROP TABLE "+ str_tab_mc +""; sql.ExecuteNonQuery(strsql);詳細看:http://www./engineer/eight/postgrenew/sql-droptable.htm四、表內(nèi)列的修改:ALTER COLUMN ALTER TABLE MyTable ALTER COLUMN NullCOl NVARCHAR(20) NOT NULL如果 ALTER COLUMN 中指定了 NULL 或 NOT NULL,那么必須同時指定 new_data_type [(precision [, scale ])]。如果不更改數(shù)據(jù)類型、精度和小數(shù)位數(shù),請指定列的這些值的當前值例:1、ALTER TABLE "+str_mcc+" ALTER COLUMN "+str_mc+" "+str_lx+"("+str_cd+") "+str_null; 本文來自CSDN博客,轉(zhuǎn)載請標明出處:http://blog.csdn.net/fmwind/archive/2006/01/25/588261.aspx
|
|