我有两个脚本:
CREATE TABLE Customers
(
Id INT,
Age INT,
FirstName NVARCHAR(20),
LastName NVARCHAR(20),
Email VARCHAR(30),
Phone VARCHAR(20)
)
CREATE TABLE _Customers
(
Id INT,
Age INT,
FirstName NVARCHAR(20),
LastName NVARCHAR(20),
Email VARCHAR(30),
Phone VARCHAR(20)
)
唯一的区别是表名。
如何用一个替换两个列定义?因此,将来在重命名列或向一个表添加新列的情况下不要出错(表必须始终进行同等定义)?
在SQL Server中,如果要创建具有相同列名和类型的新表,则可以使用:
select c.*
into _customer
from customer c
where 1 = 0;
您可能需要先删除_customer
。
注意:这不会复制约束或触发器,因此它不能替代其他数据库中可用的create table like
。但是您的问题似乎与列和类型有关。
也:age
是要存储到表中的可怕值。它实际上每天都在变化。
在oracle中
CREATE TABLE new_table
AS (SELECT * FROM old_table);
当您更新问题时,它将是sql server
SELECT * INTO newtable
FROM oldtable
WHERE condition