在创建表时,我可以使用现有表的列吗?

时间:2011-09-20 18:55:54

标签: sql oracle

我很好奇我是否可以在创建另一列时使用现有表的列的类型。就像使用像varchar这样的数据类型一样,我希望我的列与另一个表中的列具有相同的类型。

我在想象类似的东西  CREATE TABLE FIRST(id NUMBER(5),name VARCHAR(25))

然后

CREATE TABLE SECOND(id NUMBER(6),value FIRST.NAME%TYPE)

,VALUE列的类型为VARCHAR(25)

我将此视为一般SQL问题,但我使用的是Oracle。

3 个答案:

答案 0 :(得分:2)

您可以执行以下操作:

  CREATE TABLE SECOND AS (
    SELECT ID, NAME AS VALUE 
    FROM FIRST
    WHERE 1 = 2
  );

如果认为%type语法只是一个plsql的东西

答案 1 :(得分:1)

在标准SQL中,您将编写一个CREATE DOMAIN语句。

CREATE DOMAIN my_name_type VARCHAR(25);

但我不认为Oracle支持CREATE DOMAIN,所以我认为你需要创建一个对象。

create type my_name_type as object
( my_name_col varchar2(25));

在任何一种情况下,您都可以直接在创建表格时使用它。

create table test (
    user_name my_name_type
);

我记得INSERT语句的语法有点奇怪;检查文档。

答案 2 :(得分:-1)

您可以使用SELECT INTO

在SQL Server中执行此操作
SELECT TOP 0 CAST(0 as int) as 'id', Field
INTO NewTable
FROM OtherTable