打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
CREATE TABLE、ALTER TABLE、DROP TABLE等,及表内列的添加、...
一、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 [, ...] ) ]
TEMPORARY
此表只是为这次会话创建,并且在会话结束后自动删除。当临时表存在时,同名的永久表是不可见的。
table
将要创建的新表的名称.
column
列/字段名.
type
列/字段类型.这里可以包括数组的声明.请参考 PostgreSQL 用户手册 获取关于数据类型和数组的详细信息.
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 子句声明一系列表名,这个表将自动从这些表继承所有字段.如果任何继承域出现的次数超过一次,Postgres 将报告一个错误. Postgres 自动地允许所创建的表继承所有其父表的函数.
另外: 函数的继承是按照通用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 }
      从一个表中删除一个列. 目前,要删除一个现存的列,表必须重新创建和重新装载:
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 [, ...]
 
输入
name 要删除的现存表或视图.
输出
DROP 如果命令成功完成,返回此信息. ERROR Relation "name" Does Not Exist! 如果声明的表或视图在数据库中不存在.
描述
DROP TABLE 从数据库中删除表或视图.只有其所有者才能删除一个表或视图.使用 DELETE 一个表可能没有任何行,但不会被删除.
如果被删除的表有从索引,它们将首先被删除.从索引的删除将对所属表的内容没有任何影响.
注意
请参考 CREATE TABLE 和 ALTER TABLE 获取如何创建或更改表的信息.
用法
删除 films 和 distributors 表:
DROP TABLE films, distributors
兼容性
SQL92
SQL92 为 DROP TABLE 声明了一些附加的功能:
DROP TABLE table { RESTRICT | CASCADE }
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;
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/fmwind/archive/2006/01/25/588261.aspx
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
修改表结构
sqlserver中sql修改表的字段名、字段属性等
五种约束条件
复习常用的SQL以及一些函数
SQl
SQL基础(二)
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服