oracle添加列(极速版)

本文介绍了在Oracle数据库中优化ALTERTABLE操作的方法,包括直接增加表列并赋予默认值、在线重定义、使用并行DML更新NULL值以及设置参数加速。最后提到确保新添加列的NOTNULL约束。
摘要由CSDN通过智能技术生成

1.快的(使用等级1,先

操作方法1:直接增加表列并赋予默认值(NOVALIDATE是暂时抛开约束(这里是not null)加快执行

按道理设置该参数(11g默认开启),添加列(只有一种语法)会只改数据字典,速度很快。

一定要的语法(加多列也行):

alter table xxx add column (xxxx not null default xxx);

alter table xxx add column (xxxx not null default xxx,xxxx not null default xxx);

设置参数

ALTER SESSION SET "_add_col_optim_enabled" = TRUE;

下面的因为没加not null,没符合特定语法要求,所以很慢。

SQL> alter table user_mark_result add name3 varchar2(10) default 'a';

Table altered

Executed in 45.86 seconds

2.在线重定义(我感觉稳妥,就是麻烦)(使用等级2,稳

3.加速版(使用等级3

操作方法2:先增加表列,再修改默认值

SQL> alter table user_mark_resultadd name2 varchar2(10) ;

Table altered

Executed in 0.047 seconds

SQL> alter table user_mark_result modify name2 default 'a';

Table altered

Executed in 0.063 seconds

改完后,后续的新行,该列值都自动有了,但是老的还是null的,如果想加not null约束,需要把老的null值全update掉。

方法一、

1.开启加速

alter session enable parallel dml;

2.切片分会话跑

3.

UPDATE user_mark_result SET name2 = 0 WHERE name2 IS NULL;

方法二、

1.rowid切片

2.查看表的并行度

SELECT TABLE_NAME, DEGREE FROM DBA_TABLES WHERE OWNER = 'YOUR_SCHEMA' AND TABLE_NAME = 'YOUR_TABLE_NAME';

3.每份/*+ PARALLEL(p,5) */开并行

UPDATE user_mark_result SET name2 = 0 WHERE name2 IS NULL;

4.改回原本的并行度

自己选

ALTER TABLE your_table_name PARALLEL DEGREE (n);

禁用

ALTER TABLE your_table_name NO PARALLEL;

自行判断并行度

ALTER TABLE your_table_name NO PARALLEL;

-----

最终再将列改为not null

alter table RADINFO.PACSSERIES modify SERIESCATEGORY not null;

查看约束

SELECT constraint_name, constraint_type, search_condition

FROM all_constraints

WHERE owner = 'YOUR_SCHEMA' -- 替换为你的模式名

AND table_name = 'YOUR_TABLE_NAME' -- 替换为你的表名

ORDER BY constraint_type, constraint_name;

### 回答1: 要在Oracle表中添加,可以使用ALTER TABLE语句。以下是一个简单的示例: ```sql ALTER TABLE table_name ADD (column_name data_type); ``` 其中,table_name是要添加的表名,column_name是要添加名,data_type是的数据类型。 例如,如果要向名为employees的表中添加一个名为email的,数据类型为VARCHAR2(50),可以使用以下命令: ```sql ALTER TABLE employees ADD (email VARCHAR2(50)); ``` ### 回答2: 在Oracle中,我们可以通过ALTER TABLE语句来向表中添加新的。具体操作如下: 首先,确定要添加的表名和的名称以及数据类型和长度。 例如,我们想向名为“employees”的表中添加“age”,数据类型为整数类型。 ALTER TABLE employees ADD age NUMBER; 上述语句中,使用ALTER TABLE关键字指定要修改的表名为“employees”。然后使用ADD关键字指定要添加新的,并指定名为“age”,数据类型为NUMBER。 如果需要指定新的长度或约束条件,可以在ADD子句中进一步定义。 例如,指定“age”的最大值为100: ALTER TABLE employees ADD age NUMBER(3) CHECK (age <= 100); 上述语句中,使用NUMBER(3)来指定“age”的最大长度为3个字符,并使用CHECK约束来限制值必须小于等于100。 值得注意的是,添加会导致表的结构变化,可能会影响已有数据和表的性能。因此,在操作之前,需要仔细考虑并备份相关数据以防止意外情况。 添加后,可以使用INSERT语句向新增插入数据,也可以使用UPDATE语句修改已有数据的值。 总的来说,通过ALTER TABLE语句可以在Oracle中向表中添加新的,以满足数据库设计的需求。 ### 回答3: 要在 Oracle 表中添加,可以使用 ALTER TABLE 语句。 ALTER TABLE 语句用于修改已有的表定义。要在表中添加,可以使用 ALTER TABLE 表名 ADD (名 数据类型); 的语法。 例如,假设有一个名为 employees 的表,现在要在该表中添加一个新的名为 salary,数据类型为 NUMBER: ALTER TABLE employees ADD (salary NUMBER); 执行此语句后,新的 salary 将添加到 employees 表中。 需要注意的是,如果要添加已经存在于表中,那么会报错。在使用 ALTER TABLE 添加时,可以选择指定的位置。例如,可以使用 ALTER TABLE 表名 ADD (名1 数据类型1, 名2 数据类型2, ...) AFTER 某个名 的语法来指定新添加的位置。 以上就是 Oracle添加的方法。通过使用 ALTER TABLE 语句,可以轻松地给表添加新的
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

汪灵骅

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值