oracle alter 大全

本文详细介绍了如何使用SQL语句来实现表结构的变更,包括字段的添加、修改、删除及表名更改等操作,提供了丰富的示例帮助理解。
1,alter table table_name drop (字段1,字段2,字段3);

2,alter table table1 drop column a,b

增加一个列:
ALTER TABLE 表名 ADD(列名 数据类型);
如:
ALTER TABLE emp ADD(weight NUMBER(38,0));

修改一个列的数据类型(一般限于修改长度,修改为一个不同类型时有诸多限制):
ALTER TABLE 表名 MODIFY(列名 数据类型);
如:
ALTER TABLE emp MODIFY(weight NUMBER(3,0) NOT NULL);
Demo:

ALTER TABLE PY_CCORDER ADD(
CCORD_REFUNDEDTIMES INTEGER,
CCORD_REFUNDEDAMOUNT NUMBER(15,2)
);

给列改名:
ALTER TABLE 表名 RENAME COLUMN 当前列名 TO 新列名;
如:
ALTER TABLE emp RENAME COLUMN weight TO weight_new;

删除一个列:
ALTER TABLE 表名 DROP COLUMN 列名;
如:
ALTER TABLE emp DROP COLUMN weight_new;

将一个表改名:
ALTER TABLE 当前表名 RENAME TO 新表名;
如:
ALTER TABLE bouns RENAME TO bonus_new
Oracle 数据库中,使用 `ALTER TABLE` 语句可以向现有表中添加新的列。添加列的基本语法如下: ```sql ALTER TABLE table_name ADD (column1_name column1_datatype column1_constraint, column2_name column2_datatype column2_constraint, ...); ``` ### 添加单个列 如果只想添加一个列,语法可以简化为: ```sql ALTER TABLE table_name ADD column_name datatype constraint; ``` 例如,假设有一个名为 `employees` 的表,现在需要向该表中添加一个新的列 `email`,数据类型为 `VARCHAR2(100)`,并且允许 `NULL` 值: ```sql ALTER TABLE employees ADD email VARCHAR2(100); ``` 如果希望新列具有非空约束,则可以这样写: ```sql ALTER TABLE employees ADD email VARCHAR2(100) NOT NULL; ``` ### 添加多个列 Oracle 允许通过一次 `ALTER TABLE` 操作添加多个列。例如,向 `employees` 表中同时添加 `phone_number` 和 `hire_date` 列: ```sql ALTER TABLE employees ADD (phone_number VARCHAR2(20), hire_date DATE NOT NULL); ``` ### 添加带有默认值的列 如果希望新列具有默认值,可以在 `ADD` 子句中使用 `DEFAULT` 关键字。例如,添加一个 `status` 列,默认值为 `'active'`: ```sql ALTER TABLE employees ADD status VARCHAR2(10) DEFAULT 'active'; ``` ### 修改现有列 除了添加列之外,`ALTER TABLE` 还可以用于修改现有列的定义,例如更改数据类型或调整列的长度。但需要注意的是,Oracle 不允许直接减小列的长度,如果某些值超出了新的长度限制,将会导致错误 [^4]。例如,以下语句将修改 `employees` 表中 `name` 列的长度为 `VARCHAR2(50)`: ```sql ALTER TABLE employees MODIFY (name VARCHAR2(50)); ``` 如果尝试将 `name` 列的长度减小到无法容纳现有数据的程度,Oracle 将抛出 `ORA-01441: 无法减小列长度, 因为一些值过大` 错误。 ### 分区表的操作 对于分区表,`ALTER TABLE` 也可以用于合并分区或子分区。例如,合并两个分区时,可以使用 `MERGE PARTITIONS` 子句,并且建议使用 `UPDATE INDEXES` 来确保索引保持有效 [^3]: ```sql ALTER TABLE range_example MERGE PARTITIONS part01_1, part01_2 INTO PARTITION part01 UPDATE INDEXES; ``` 如果未指定 `UPDATE INDEXES`,则必须手动重建受影响的索引。 ### 总结 `ALTER TABLE` 是 Oracle 中用于修改表结构的强大工具,支持添加列、修改列定义、合并分区等操作。在使用时需要注意数据完整性约束以及分区表的特殊处理方式。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值