[20151024]关于ctas与建立主键.txt

[20151024]关于ctas与建立主键.txt

--前一阵子别人问的问题,就是ctas是否可以建立主键,对于这种情况平时不这么建立,我给看看文档。
--平时我建立测试表
create table t as select rownum id ,'test' name from dual connect by level<=10;

--要实现ctas同时建立主键,看看如下是否可行:

SCOTT@test01p> @ver1
PORT_STRING                    VERSION        BANNER                                                                               CON_ID
------------------------------ -------------- -------------------------------------------------------------------------------- ----------
IBMPC/WIN_NT64-9.1.0           12.1.0.1.0     Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production              0

SCOTT@test01p> create table t ( id number CONSTRAINTS pk_t primary key , name varchar2(20)) as select rownum,'test' from dual connect by level<=10 ;
create table t ( id number CONSTRAINTS pk_t primary key , name varchar2(20)) as select rownum,'test' from dual connect by level<=10
                 *
ERROR at line 1:
ORA-01773: may not specify column datatypes in this CREATE TABLE

SCOTT@test01p> create table t ( id number  , name varchar2(20)) as select rownum,'test' from dual connect by level<=10 ;
create table t ( id number  , name varchar2(20)) as select rownum,'test' from dual connect by level<=10
                 *
ERROR at line 1:
ORA-01773: may not specify column datatypes in this CREATE TABLE

--错误一样!

SCOTT@test01p> create table t ( id constraint pk_t primary key) as select rownum id,'test' name from dual ;
create table t ( id constraint pk_t primary key) as select rownum id,'test' name from dual
                 *
ERROR at line 1:
ORA-01730: invalid number of column names specified

SCOTT@test01p> create table t ( id  primary key) as select rownum id,'test' name from dual ;
create table t ( id  primary key) as select rownum id,'test' name from dual
                 *
ERROR at line 1:
ORA-01730: invalid number of column names specified

SCOTT@test01p> host oerr ora 1773
01773, 00000, "may not specify column datatypes in this CREATE TABLE"
// *Cause:
// *Action:

--从提示我的感觉字段id后面不能跟数据类型。

SCOTT@test01p> create table t ( id  primary key) as select rownum id,'test' name from dual ;
create table t ( id  primary key) as select rownum id,'test' name from dual
                 *
ERROR at line 1:
ORA-01730: invalid number of column names specified

SCOTT@test01p> create table t ( id  primary key,name) as select rownum id,'test' name from dual ;
Table created.

--OK!

SCOTT@test01p> drop table t purge;
Table dropped.

SCOTT@test01p> create table t ( id constraints pk_t primary key,name) as select rownum id,'test'  from dual ;
Table created.

SCOTT@test01p> drop table t purge;
Table dropped.

SCOTT@test01p> create table t ( id constraints pk_t primary key,name  not null) as select rownum id,'test'  from dual ;
Table created.

SCOTT@test01p> drop table t purge;
Table dropped.

SCOTT@test01p> create table t ( id ,name  not null, constraints pk_t primary key (id,name)) as select rownum id,'test'  from dual ;
Table created.

--总结:
--这种语法不常用。ctas 表后面的字段不能带数据类型,类型由select显示的字段决定,并且表后面要包括全部字段列表。
--还可以把约束放在里面(比如最后的例子)。

时间: 2024-09-03 21:28:20

[20151024]关于ctas与建立主键.txt的相关文章

[20160526]建立主键问题.txt

[20160526]建立主键问题.txt --生产系统有1个表没有主键,要求建立发现无法建立,有重复.而且这个索引查询是需要. --实际上可以限制以后的记录不再重复,以前我自己也遇到过,做一个记录. 1.环境: SCOTT@book> @ &r/ver1 PORT_STRING                    VERSION        BANNER ------------------------------ -------------- ---------------------

[20120301]删除主键与索引.txt

一些表建立的时候是通过建立主键来建立索引的,如果drop/disable主键对应的索引也会删除,如果做到drop/disable主键约束,而保留索引呢?看了以下手册,发现可以使用如下命令来保留索引:ALTER TABLE table_name DROP PRIMARY KEY KEEP INDEX;ALTER TABLE table_name DISABE PRIMARY KEY KEEP INDEX; 测试一下: 1.建立测试环境: SQL> select * from v$version ;

中文Access2000速成教程--1.6 定义“主键

access|教程|速成|中文 第六讲 定义"主键" 在中文Access 2000中,可以建立一个庞大的数据信息库,而要将这些分布于不同表中的数据作为一个"库"来使用,就需要为各表建立好"主键",从而建立起一个关系型数据库系统.这种系统的特点是可以使用查询.窗体和报表快速查找数据,并能组合保存来自各个不同表中信息.如果要做到这一点,每一张表就应该包含相同的一个或一组字段,它些都是保存在表中的.每一条记录的唯一标识,即表的"主键"

常用Hibernate主键生成策略

今天学习到了关于Hibernate主键生成策略的问题,总结下,不足之处,请大家指出. Hibernate为优秀的持久层框架的代表.在传统的JDBC+JavaBean操作中,实体对象都由程序员自己去封装,然后返回.而在Hibernate中,采用对象关系映射『ORM』,大大简化了对数据库的操作. 在数据库的设计和操作中,我们通常会给表建立主键.主键,可以分为自然主键和代理主键. 自然主键表示:采用具有业务逻辑含义的字段作为表的主键.比如在用户信息表中,采用用户的身份证号码作为主键.但是这样一来,随着

Access教程 如何在字段定义主键

  通常数据表都要定义主键,不然系统会提示你建立主键,那么该怎么建立呢?下面就让第九软件小编给大家演示操作一遍吧! 具体操作步骤如下: 1.打开你的access,并打开你要设置主键的数据表,然后点击 开始--视图. 2.在视图的下拉菜单中,点击 设计视图. 3.来到了设计视图面板,我们在要设立主键的字段的右边,也就是红色箭头的位置右键单击 4.在弹出的菜单中,我们选择 主键.这样就给ID这个字段建立的主键. 5.另一个方法就是我们选中将要建立主键的字段,然后再菜单栏上点击 主键. 6.最后点击左

SQL Server上进行表设计时表的主键设计问题

关于数据库的逻辑设计,是一个很广泛的问题.本文主要针对开发应用中遇到在MS SQL Server上进行表设计时,对表的主键设计应注意的问题以及相应的解决办法. 主键设计现状和问题 关于数据库表的主键设计,一般而言,是根据业务需求情况,以业务逻辑为基础,形成主键. 比如,销售时要记录销售情况,一般需要两个表,一个是销售单的概要描述,记录诸如销售单号.总金额一类的情况,另外一个表记录每种商品的数量和金额.对于第一个表(主表),通常我们以单据号为主键;对于商品销售的明细表(从表),我们就需要将主表的单

Access如何在字段定义主键

  1.打开你的access,并打开你要设置主键的数据表,然后点击 开始--视图. 2.在视图的下拉菜单中,点击 设计视图. 3.来到了设计视图面板,我们在要设立主键的字段的右边,也就是红色箭头的位置右键单击 4.在弹出的菜单中,我们选择 主键.这样就给ID这个字段建立的主键. 5.另一个方法就是我们选中将要建立主键的字段,然后再菜单栏上点击 主键. 6.最后点击左上角的保存按钮,将主键进行保存. 7.点击视图按钮,返回数据表视图.

讨论SQL Server 表的主键问题

关于数据库的逻辑设计,是一个很广泛的问题.本文主要针对开发应用中遇到在MS SQL Server上进行表设计时,对表的主键设计应注意的问题以及相应的解决办法. 主键设计现状和问题 关于数据库表的主键设计,一般而言,是根据业务需求情况,以业务逻辑为基础,形成主键. 比如,销售时要记录销售情况,一般需要两个表,一个是销售单的概要描述,记录诸如销售单号.总金额一类的情况,另外一个表记录每种商品的数量和金额.对于第一个表(主表),通常我们以单据号为主键;对于商品销售的明细表(从表),我们就需要将主表的单

数据库模型设计——主键的设计

在数据库设计时,主要就是对实体和关系的设计,实体表现出来就是表,关系表现出来就是外键.而对于一个表,由两部分组成:主键和属性.主键的简单定义就是表中为每一行数据的唯一标识.其实更准确的说法,每一行数据的唯一标识是候选键(Candidate Key),一个表中可以有很多个候选键,主键是候选键中的一个,主要用于更方便的检索和管理数据.一个表中可以有多个候选键,但是只有一个主键.由于主键常常用于检索数据,也用于表之间的关联,所以主键的设计的好坏将会严重影响数据操作的性能.下面来介绍下主键设计的几个考虑