首页 > 解决方案 > 查看表的内容和约束

问题描述

我正在处理这个作业问题,它在问我:

  1. TEMP_CUST从现有表创建名为 ( ) 的表Customers
  2. TEMP_CUST查看表的内容和约束

到目前为止我所做的是我已经创建了我的表,没有向表添加任何约束并使用命令TEMP_CUST查看表。DESC

这是创建表的代码

CREATE TABLE TEMP_CUST 
AS 
    (SELECT 
         CUSTOMER#, LASTNAME, 
         FIRSTNAME, ADDRESS, CITY, 
         STATE, ZIP, REFERRED, 
         REGION, EMAIL 
     FROM 
         CUSTOMERS);

DESC TEMP_CUST;

现在我已经完成了,我想查看表的约束。我用过这个命令,但不确定它是否正确。

SELECT * 
FROM USER_CONSTRAINTS 
WHERE TABLE_NAME = 'TEMP_CUST';

标签: oracle

解决方案


我用过这个命令,但不确定它是否正确。

您还没有说为什么您认为它不正确,所以我们必须猜测您怀疑的原因。也许是因为您获得的约束集小于原始 CUSTOMERS 表的约束集?

那是对的。当我们使用 CREATE TABLE ... AS SELECT 语句创建一个新表,其中包含原始表的投影、列名和数据类型(假设是一个普通的 SELECT 子句)和数据(由 WHERE 子句确定,如果有的话)。但是,创建的唯一约束是主键列和任何其他强制列上的 NOT NULL 约束。新表没有主键、外键或检查约束。我们必须明确地创建这些。

因此,这个查询...

SELECT * FROM USER_CONSTRAINTS 
WHERE TABLE_NAME = 'TEMP_CUST';

...返回的约束可能比您预期的要少。


推荐阅读