一、CREATE TABLE — 创建一个新表
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 [,...] ) ]
另外: 函数的继承是按照通用Lisp对象系统(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.linuxforum.net/books/postgresNEW/sql-createtable.htm
二、ALTER TABLE -- 修改表的定义
向表中增加一个 varchar 列:
ALTER TABLE distributors ADD COLUMN address VARCHAR(30);对现存列改名:
ALTER TABLE distributors RENAME COLUMN address TO city;更改现存表的名字∶
ALTER TABLE distributors RENAME TO suppliers;给一个表增加一个检查约束∶
ALTER TABLE distributors ADD CONSTRAINT zipchk CHECK (char_length(zipcode) = 5);删除一个表和它的所有子表的监查约束∶
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 }@H_502_49@从一个表中删除一个列. 目前,要删除一个现存的列,表必须重新创建和重新装载:
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.pgsqldb.org/pgsqldoc-7.2c/sql-altertable.html 三、DROP TABLE — 从数据库中删除一个表
DROP TABLE name [,...]输入
输出
- DROP @H_502_49@
- 如果命令成功完成,返回此信息.
- ERROR Relation " name" Does Not Exist! @H_502_49@
- 如果声明的表或视图在数据库中不存在.
描述
DROP TABLE 从数据库中删除表或视图.只有其所有者才能删除一个表或视图.使用 DELETE 一个表可能没有任何行,但不会被删除.
如果被删除的表有从索引,它们将首先被删除.从索引的删除将对所属表的内容没有任何影响.
注意
请参考 CREATE TABLE 和 ALTER TABLE 获取如何创建或更改表的信息.
用法
删除 films 和 distributors 表:
DROP TABLE films,distributors兼容性
sql92
sql92 为 DROP TABLE 声明了一些附加的功能:
DROP TABLE table { RESTRICT | CASCADE }例子:
strsql="DROP TABLE "+ str_tab_mc +"";
sql.ExecuteNonQuery(strsql);详细看:http://www.linuxaid.com.cn/engineer/eight/postgrenew/sql-droptable.htm
四、表内列的修改:ALTER COLUMN
ALTER TABLE MyTable ALTER COLUMN NullCOl NVARCHAR(20) NOT NULL
如果 ALTER COLUMN 中指定了 NULL 或 NOT NULL,那么必须同时指定 new_data_type [(precision [,scale ])]。如果不更改数据类型、精度和小数位数,请指定列的这些值的当前值
例:1、ALTER TABLE "+str_mcc+" ALTER COLUMN "+str_mc+" "+str_lx+"("+str_cd+") "+str_null;