在oracle中添加一列到table

Adding a column into table in oracle

将一个名为 flag 的列添加到 table 中,默认值为 0,然后复制 table 的所有行,并仅将我们刚刚复制的行的标志更改为 1。

Table A

Name     Flag
apple      0
banana     0
orange     0

After Copying the rows
Name     Flag
apple     0
apple     0
banana    0
banana    0
orange    0
orange    0

Now change the flag to 1 to copied rows
Name     Flag
apple     0
apple     1
banana    0
banana    1
orange    0
orange    1

我可以通过创建一个临时文件 table 来做到这一点,但是有没有其他方法可以在不在数据库中创建临时文件 table 的情况下做到这一点?

这是原文table:

SQL> select * from tablea order by name;

NAME
------
apple
banana
orange

添加一个新列 - flag,其默认值为 0:

SQL> alter table tablea add flag number(1) default 0;

Table altered.

之后table的内容是:

SQL> select * From tablea order by name;

NAME         FLAG
------ ----------
apple           0
banana          0
orange          0

插入“重复项”,但标志现在为 1:

SQL> insert into tablea (name, flag)
  2  select name, 1 from tablea;

3 rows created.

结果:

SQL> select * From tablea order by name, flag;

NAME         FLAG
------ ----------
apple           0
apple           1
banana          0
banana          1
orange          0
orange          1

6 rows selected.

SQL>