`
xuxiaoxiao
  • 浏览: 80307 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

ALTER TABLE 命令 修改表结构

阅读更多
增加字段,

删除字段,

增加约束,

删除约束,

修改缺省值,

修改字段数据类型,

重命名字段,

重命名表。

所有这些动作都是用 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;
分享到:
评论

相关推荐

    mysql alter table命令修改表结构实例

    mysql实例之使用alter table命令修改表结构 mysql alter table语句可以修改表的基本结构,例如添加字段、删除字段、添加主键、添加索引、修改字段数据类型、对表重命名等等操作,本文章通过两个简单的实例向大家介绍...

    mysql alter table命令修改表结构实例详解

     实例一:使用ALTER TABLE命令向表中添加字段、修改字段类型以及设置主键。 首先创建一个表,SQL语句如下: mysql&gt; CREATE TABLE myTable( -&gt; ID SMALLINT -&gt; ); 使用desc命令查看表结构: mysql&gt; desc myTable...

    mysql alter table 修改表命令详细介绍

    MYSQL ALTER TABLE命令用于修改表结构,例如添加/修改/删除字段、索引、主键等等,本文章通过实例向大家介绍MYSQL ALTER TABLE语句的使用方法,需要的朋友可以参考一下。

    mysql alter table修改表命令整理

    MYSQL ALTER TABLE命令用于修改表结构,例如添加/修改/删除字段、索引、主键等等,本文章通过实例向大家介绍MYSQL ALTER TABLE语句的使用方法,  MySQL ALTER语法如下: ALTER [IGNORE] TABLE tbl_name alter_spec...

    Oracle常用的命令如何查看表的结构

    在Oracle常用命令中查看表结构sqlplus 然后输入系统用户名和密码 2.创建表空间登陆别的用户 conn 用户名/密码; 3 create tablespace 空间名 4 datafile 'c:\空间名' size 15M --表空间的存放路径,初始值为15M 5 ...

    MySQL如何快速修改表的表结构

    这个命令可以修改表结构 此外,也可以如下方法修改表结构: 先创建一张表,如下: &gt; create table t1 (id int, name varchar(5), rmb decimal(9,1)); 如果要修改name列为varchar(10)的,可以这样操作: alter ...

    hive操作命令大全.txt

    # 表结构修改 # 重命名表 use xxxdb; alter table table_name rename to new_table_name; # 增加字段 alter table table_name add columns (newcol1 int comment ‘新增’); # 修改字段 alter table table_...

    MySQL修改表结构操作命令总结

    表的结构如下: 代码如下: mysql&gt; show create table person; | person | CREATE TABLE `person` (  `number` int(11) DEFAULT NULL,  `name` varchar(255) DEFAULT NULL,  `birthday` date DEFAULT NULL ) ...

    oracle命令中英文对照.doc

    ALTER TABLE --修改数据库表结构 CREATE VIEW --创建一个视图 DROP VIEW --从数据库中删除视图 CREATE INDEX --为数据库表创建一个索引 DROP INDEX --从数据库中删除索引 CREATE PROCEDURE --创建一个存储过程

    SQL语句解释大全-从数据库表中检索数据行和列

    ALTER TABLE --修改数据库表结构 CREATE VIEW --创建一个视图 DROP VIEW --从数据库中删除视图 CREATE INDEX --为数据库表创建一个索引 DROP INDEX --从数据库中删除索引 CREATE PROCEDURE --创建一个存储过程 ...

    MySQL ALTER命令使用详解

    ALTER TABLE允许你修改一个现有表的结构。例如,你可以增加或删除列、创造或消去索引、改变现有列的类型、或重新命名列或表本身。你也能改变表的注释和表的类型。 你可以使用CHANGE old_col_name create_definition...

    SQL 基本命令大全

    ALTER TABLE --修改数据库表结构 CREATE VIEW --创建一个视图 DROP VIEW --从数据库中删除视图 CREATE INDEX --为数据库表创建一个索引 DROP INDEX --从数据库中删除索引 CREATE PROCEDURE --创建一个存储过程 ...

    oracle SQL命令大全

    才进行数据操作 drop一张表时也会对表加锁,DDL排它锁,所以在删除一张表时如果当前还有用户操作表时不能删除表 alter table 命令用于修改表的结构(这些命令不会经常用): 增加约束: alter table 表名 add

    奈特ACCESS查询分析器、在线管理工具

     查看ACCESS表结构:“DESC test”会列出test表的结构(可直接右击右侧表名快捷查看),此命令同MYSQL的DESC命令类似  添加字段:“ALTER TABLE test ADD name3 TIME”在test表中增加一个name3字段时间日期类型  ...

    Oracle数据库学习笔记

    1)数据定义语言:用于改变数据库结构,包括创建,修改,删除数据库对象 创建表(create): create table person(id int primary key,name varchar(16) not null,password int not null, address varchar(20))...

    邓炜MYSQL常用操作命令

    alter table book rename book_table; 添加列名 alter table book add ‘bcontent’ varchar(500) null after buser //在buser字段后面增加1列字符串类型bcontent字段。 删除列 alter table book drop column bip;//...

    orcale常用命令

    c、显示表结构命令DESCRIBE SQL&gt;DESC 表名 d、SQL*Plus中的编辑命令 显示SQL缓冲区命令 SQL&gt;L 修改SQL命令 首先要将待改正行变为当前行 SQL&gt;n 用CHANGE命令修改内容 SQL&gt;c/旧/新 重新确认是否已正确 SQL&gt;L 使用...

    计算机二级考试MySQL知识点 mysql alter命令

    mysql中alter命令的用法,用于编辑表结构。具体内容如下 修改字段类型 mysql&gt; alter table employee change depno depno int(5) not null; 加索引 mysql&gt; alter table 表名 add index 索引名 (字段名1[,字段名2 ...

Global site tag (gtag.js) - Google Analytics