我是数据库编程的新手并且有一个问题。
在正在运行的C ++应用程序中,有一个Oracle DB。其中一个表称为USR_INFO。它有多个列,如
1. U_INFO_ID
2. U_INFO_FIRST_NAME
3. U_INFO_LAST_NAME
4. U_INFO_ADDRESS
5. U_INFO_AGE
6. U_INFO_LAST_LOGIN_DATE
7. U_INFO_LAST_LOGIN_TIME
现在我想创建一个名为USR_LOG_INFO的新表,并为其添加3列,称为
1. U_INFO_ID
2. U_INFO_LAST_LOGIN_DATE
3. U_INFO_LAST_LOGIN_TIME
然后将USR_INFO中相同列的数据迁移到USR_LOG_INFO中的类似列。
基本上这里涉及两个步骤。
1.创建名为USR_LOG_INFO的新表
2.将列数据从USR_INFO迁移到USR_LOG_INFO
有人可以给我SQL命令做两步以上吗?
答案 0 :(得分:0)
简单回答..不要..
alter table USR_INFO rename USR_LOG_INFO;
alter table USR_LOG_INFO add (U_INFO_ID NUMBER,
U_INFO_LAST_LOGIN_DATE DATE,
U_INFO_LAST_LOGIN_TIME DATE);
进行。
如果你真的想按自己的方式去做。
create table USR_LOG_INFO as
select *
, to_number(NULL) U_INFO_ID
, to_date(null) U_INFO_LAST_LOGIN_DATE
, to_date(null) U_INFO_LAST_LOGIN_TIME
from USR_INFO;
drop table USR_INFO;
最后 为什么你有单独的日期/时间列 您可能最好只使用TIMESTAMP列并在需要时提取日期和/或时间。
答案 1 :(得分:0)
另一个两步法:
create table USR_LOG_INFO
as
select *
from USR_INFO;
然后按照用户Shoelace的建议,使用第二个alter table
命令添加额外的列。
我避免了drop table
步骤,因为从阅读OP的问题来看,OP是否希望保留或删除原始表格尚不清楚。