OCP-051题库整理:CTAS语句创建新表详解

需积分: 9 1 下载量 179 浏览量 更新于2024-07-19 收藏 992KB DOCX 举报
Oracle Certified Professional (OCP) 051考试备考资料中,一道重要的题目涉及了使用CTAS (Create Table As Select) 语句创建新表时的注意事项。题目背景是关于四个表SALES、CUSTOMERS、PRODUCTS和TIMES,其中SALES表的prod_id列是PRODUCTS表的外键,CUST_ID和TIME_ID列分别是CUSTOMERS和TIMES表的外键引用。 题目具体要求分析以下CREATE TABLE命令: ```sql CREATE TABLE new_sales(prod_id, cust_id, order_date DEFAULT SYSDATE) AS SELECT prod_id, cust_id, time_id FROM sales; ``` 选项A认为新表NEW_SALES不会被创建,因为列定义中不能指定DEFAULT值,但这不符合CTAS语句的语法,因为DEFAULT关键字确实可以在CREATE TABLE语句中用于设置默认值。 选项B是正确答案,指出新表NEW_SALES将被创建,并且在CREATE TABLE语句中定义的所有NOT NULL约束会被传递到新表中。这意味着在创建新表时,如果源表中的指定列有NOT NULL约束,这些约束会在新表中得到维护。 选项C错误,因为CTAS允许创建新表时使用相同的列名,尽管命令中列名与SELECT子句可能不同,但这种差异并不影响表的创建。 选项D则提到所有FOREIGN KEY约束会被传递,这是部分正确的,因为外键关联(通过列名或引用)在创建新表时会被保留,但这里并没有明确提及是否只有FOREIGN KEY约束,通常CTAS会传递所有的引用完整性约束。 总结来说,本题考察的是考生对于CTAS语句的理解,包括默认值的设定、约束的继承以及外键关系的处理。理解这些概念是OCP-051考试中数据库设计和SQL语法部分的关键点。在复习过程中,考生应熟练掌握如何使用CTAS创建新表,并注意SQL语句中约束的正确应用。