在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>
将一个名为 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>