`

[转]ALTER TABLE的用法 增加列、删除列、改列名、改列约束、改表名

阅读更多

ALTER TABLE
名称
ALTER TABLE — 更改表属性
语法
ALTER TABLE table [ * ]
    
ADD [ COLUMN ] column type
ALTER TABLE table [ * ]
    
ALTER [ COLUMN ] column { SET DEFAULT value | DROP DEFAULT }
ALTER TABLE table [ * ]
     RENAME
[ COLUMN ] column TO newcolumn
ALTER TABLE table
     RENAME
TO newtable
ALTER TABLE table
    
ADD table constraint definition
Inputs
table
试图更改的现存表的名称.
column
现存或新的列名称.
type
新列的类型.
newcolumn
现存列的新名称.
newtable
表的新名称.
table constraint definition
表的新的约束定义.
New
table constraint for the table

输出
ALTER
从被更名的列或表返回的信息.
ERROR
如果一个列或表不存在返回的信息.
描述
ALTER TABLE 变更一个现存表的定义. ADD COLUMN 形式用与 CREATE TABLE一样的语法向表中增加一个新列 / 字段。 ALTER COLUMN 形式允许你从列 / 字段中设置或者删除缺省(值)。注意缺省(值)只对新插入的行有效。RENAME 子句可以在不影响相关表中任何数据的情况下更改一个表或者列 / 字段的名称。因此,表或列 / 字段在此命令执行后仍将是相同尺寸和类型。 ADD table constraint definition 子句用与 CREATE TABLE一样的语法向表中增加一个新的约束。

如果要改变表的属性,你必须是表的所有者.

注意
COLUMN 关键字是多余的,可以省略.
如果"
* "跟在一个表名后面,表示该命令要对该表和所有继承级别低于该表的表进行操作;缺省时,该属性(更改)不会增加到任何子表或修改任何子表的相关名称。当增加或修改一个上级表(译注:继承级别高的表)的属性时总是应该这样的。否则,象下面这样的在继承级上进行的查询
SELECT NewColumn FROM SuperClass *
将不能工作,因为子表会比上级表少一个属性。
在目前的实现里,新列
/ 字段的缺省(值)和约束子句会被忽略。你可以随后用 ALTER TABLE SET DEFAULT 形式设置缺省(值)。(你还不得不用 UPDATE 把已存在行更新为缺省值。)

在目前的实现里,只有
FOREIGN KEY 约束可以增加到表中.要创建或者删除一个唯一约束,可以创建一个唯一索引(参阅 CREATE INDEX ).要想增加 check (检查)约束,你需要重建和重载该表,用的参数是 CREATE TABLE 命令的其他参数.
要修改表的结构,你必须是表的所有人。不允许更改系统表结构的任何部分。PostgreSQL 用户手册 里有关于继承的更多信息.

用法
向表中增加一个
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 distfk FOREIGN KEY (address) REFERENCES addresses(address) MATCH FULL

兼容性
SQL92ADD
COLUMN 形式是兼容的,除了上面说的缺省(值)和约束外。 ALTER COLUMN 形式是完全兼容的。
SQL92 对
ALTER TABLE 声明了一些附加的Postgres目前还不直接支持的功能:
ALTER TABLE table DROP CONSTRAINT constraint { RESTRICT | CASCADE }
增加或删除表的约束(比如象检查约束,唯一约束或外键约束)。要创建或删除一个唯一约束,对应地创建或删除一个唯一索引,要修改其他类型的约束,你需要重建和重载该表,使用 
CREATE TABLE  命令的其他参数.
例如,删除表 distributors 的任何约束:
CREATE TABLE temp AS SELECT * FROM distributors;
DROP TABLE distributors;
CREATE TABLE distributors AS SELECT * FROM temp ;
DROP TABLE temp ;
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 ;
重命名列
/ 字段和表名是 PostgreSQL 扩展。SQL92 没有提供这些。

分享到:
评论

相关推荐

    alter table 2.zip_ALTER_Table_csharp_sql

    - **删除列**: 使用`DROP COLUMN`子句可以移除不再需要的列,但需谨慎,因为这将永久删除所有相关数据,例如:`ALTER TABLE 表名 DROP COLUMN 列名;` - **修改列属性**: 可以改变列的数据类型、长度、是否允许空值...

    Alter-Table.rar_Table

    ALTER TABLE 表名 ADD [COLUMN] 新列名 数据类型; ALTER TABLE 表名 DROP COLUMN 列名; ALTER TABLE 表名 MODIFY COLUMN 列名 新数据类型; ``` 在VB6中,你可以通过DAO(Data Access Objects)或者ADO(ActiveX ...

    SQLserver、Oracle、Mysql语法与用法对比

    - SQL Server:`alter table 表名 add constraint 主键约束名 primary key (列名)` - Oracle:`alter table 表名 add primary key (列名)` - MySQL:相同 11. **删除主键约束**: - SQL Server:`alter table ...

    mysqlalter命令共5页.pdf.zip

    本资料“mysqlalter命令共5页.pdf”可能详细介绍了`ALTER`命令的各种用法,包括但不限于添加、删除、修改列,更改表名,添加或删除索引,以及调整表的存储引擎等。 1. **添加列**:使用`ALTER TABLE`可以向已存在的...

    SQLserver、Oracle、Mysql语法与用法对比.doc

    - Oracle 使用 `ALTER TABLE 表名 RENAME COLUMN 旧列名 TO 新列名` - MySQL 使用 `ALTER TABLE 表名 RENAME COLUMN 旧列名 TO 新列名` 5. **删除数据库**: - SQL Server 使用 `DROP DATABASE 数据库名` - ...

    Oracle修改表列名与顺序的解决方案 (sql 修改列名)

    在Oracle数据库管理中,有时我们...理解并熟练运用`ALTER TABLE`和`RENAME COLUMN`命令,以及掌握通过创建新表调整列顺序的方法,对于数据库管理员来说至关重要。在执行任何更改之前,记得备份数据,确保有恢复的余地。

    数据库常见约束

    - 语法示例:`ALTER TABLE 表名 DROP FOREIGN KEY 约束名, ADD CONSTRAINT 新约束名 FOREIGN KEY (列名) REFERENCES 主表名(列名);` - **2.2.4 删除外键** - 语法示例:`ALTER TABLE 表名 DROP FOREIGN KEY 约束...

    SQL修改表语句和正则表达式

    1. **添加列 (ALTER TABLE ADD COLUMN)**:当我们需要向已存在的表中增加新的数据字段时,可以使用此语句。例如: ```sql ALTER TABLE 表名 ADD COLUMN 新列名 数据类型; ``` 2. **删除列 (ALTER TABLE DROP ...

    oracle查询语句大全

    - `ALTER TABLE 表名 ADD CONSTRAINT pk_表名 PRIMARY KEY (列名);` - `ALTER TABLE 表名 MODIFY (列名 NOT NULL);` - **删除主键约束**: - `ALTER TABLE 表名 DROP PRIMARY KEY;` - `ALTER TABLE 表名 DROP ...

    IQ_16 SQL 语句应用

    本文将详细介绍 `ALTER TABLE` 语句的基本语法,并通过具体的例子帮助理解其用法。 #### ALTER TABLE 语句概述 `ALTER TABLE` 语句用于修改已存在的表结构。它可以添加、删除或修改列,也可以添加或删除约束条件。...

    数据库系统之实体完整性约束.pdf

    删除这些约束的SQL语句分别是`ALTER TABLE 表名 DROP PRIMARY KEY`,`ALTER TABLE 表名 DROP FOREIGN KEY 约束名`,以及`ALTER TABLE 表名 DROP CONSTRAINT 约束名`。 总之,实体完整性约束是数据库设计的核心部分...

    SQLserverOracleMysql语法与用法对比(over).pdf

    - 删除列:SQL Server 和 MySQL 使用 `ALTER TABLE 表名 DROP COLUMN 列名`。 - 删除表:三者都使用 `DROP TABLE 表名`。 - 删除约束:例如删除主键,SQL Server 和 Oracle 使用 `ALTER TABLE 表名 DROP PRIMARY ...

    数据库与数据表操作.pdf

    (3)删除操作:在 ALTER TABLE 语句中使用 DROP 子句删除已有的列和完整性约束条件,删除列的语句格式如下:ALTERTABLE <表名>DROPCOLUMN <列名>;删除完整性约束条件的语句格式为:ALTERTABLE <表名>DROP <约束...

    mqsql数据库查询方法部分收集

    表的修改包括添加列(`ALTER TABLE 表名 ADD 列名 类型(长度) 约束;`)、删除列(`ALTER TABLE 表名 DROP 列名;`)、修改列类型(`ALTER TABLE 表名 MODIFY 列名 类型(长度) 约束;`)、更改列名(`ALTER TABLE 表名 CHANGE ...

    sql server 常表操作命令

    - `ALTER TABLE [表名] ADD CONSTRAINT [约束名] FOREIGN KEY ([列名列表]) REFERENCES [引用表名]([引用列名列表])` - 例如:`ALTER TABLE Orders ADD CONSTRAINT FK_EmployeeID FOREIGN KEY (EmployeeID) ...

    数据库系统及原理及MYSQL应用教程数据完整性实验报告

    4. **掌握使用SQL语句ALTER TABLE增加或删除约束的方法**:使用`ALTER TABLE`语句可以动态地添加或移除表的约束,如`ALTER TABLE table_name ADD CONSTRAINT constraint_name constraint_definition`。 #### 实验...

    sql server中的权限基本操作

    - 增加或删除主键、唯一性、检查和默认约束的语法格式为`ALTER TABLE 表名 ADD|DROP CONSTRAINT 约束名称 (约束类型)(列名)`或`... DEFAULT '值' FOR 列名`。 - 在已有的表上增加自动标号,需要确保列不是主键,且...

    MySQL 添加、修改、删除表的列及约束等表的定义

    在MySQL数据库管理中,对表结构的维护是日常操作的一部分,包括添加、修改和删除表的列以及约束。本文将详细讲解这些操作的语法和使用方法。 首先,查看表的列信息可以使用`DESCRIBE`或`SHOW COLUMNS FROM`语句。...

    东软实习复习资料.docx

    * 语法格式:ALTER TABLE 表名 ADD 列名 数据类型和长度 列属性、ALTER TABLE 表名 MODIFY 列名 新数据类型和长度 新列属性、ALTER TABLE 表名 DROP COLUMN 列名。 2. 向表的某个字段添加约束条件: * 约束类型...

Global site tag (gtag.js) - Google Analytics