- 浏览: 7339391 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (1546)
- 企业中间件 (236)
- 企业应用面临的问题 (236)
- 小布Oracle学习笔记汇总 (36)
- Spring 开发应用 (54)
- IBatis开发应用 (16)
- Oracle基础学习 (23)
- struts2.0 (41)
- JVM&ClassLoader&GC (16)
- JQuery的开发应用 (17)
- WebService的开发应用 (21)
- Java&Socket (44)
- 开源组件的应用 (254)
- 常用Javascript的开发应用 (28)
- J2EE开发技术指南 (163)
- EJB3开发应用 (11)
- GIS&Mobile&MAP (36)
- SWT-GEF-RCP (52)
- 算法&数据结构 (6)
- Apache开源组件研究 (62)
- Hibernate 学习应用 (57)
- java并发编程 (59)
- MySQL&Mongodb&MS/SQL (15)
- Oracle数据库实验室 (55)
- 搜索引擎的开发应用 (34)
- 软件工程师笔试经典 (14)
- 其他杂项 (10)
- AndroidPn& MQTT&C2DM&推技术 (29)
- ActiveMQ学习和研究 (38)
- Google技术应用开发和API分析 (11)
- flex的学习总结 (59)
- 项目中一点总结 (20)
- java疑惑 java面向对象编程 (28)
- Android 开发学习 (133)
- linux和UNIX的总结 (37)
- Titanium学习总结 (20)
- JQueryMobile学习总结 (34)
- Phonegap学习总结 (32)
- HTML5学习总结 (41)
- JeeCMS研究和理解分析 (9)
最新评论
-
lgh1992314:
[u][i][b][flash=200,200][url][i ...
看看mybatis 源代码 -
尼古拉斯.fwp:
图片根本就不出来好吧。。。。。。
Android文件图片上传的详细讲解(一)HTTP multipart/form-data 上传报文格式实现手机端上传 -
ln94223:
第一个应该用排它网关吧 怎么是并行网关, 并行网关是所有exe ...
工作流Activiti的学习总结(八)Activiti自动执行的应用 -
ZY199266:
获取不到任何消息信息,请问这是什么原因呢?
ActiveMQ 通过JMX监控Connection,Queue,Topic的信息 -
xiaoyao霄:
DestinationSourceMonitor 报错 应该导 ...
ActiveMQ 通过JMX监控Connection,Queue,Topic的信息
ORACLE CTAS(create table as select)使用注意点
看到这篇文章Beware of default values when using CTAS,关于create table as select
(CTAS)值得注意的地方:使用这条sql创建的表不会带默认值。
操作以下实验证明之:
scott@TICKET> create table p
2 ( id number primary key ,
3 username varchar(25) ,
4 passwd varchar(24),
5 email varchar(30),
6 birth date,
7 tel number ,
8 sex char(1));
表已创建。
scott@TICKET> alter table p add age number ;
表已更改。
创建一个唯一约束
scott@TICKET> alter table p modify tel unique;
表已更改。
创建一个检查约束
scott@TICKET> alter table p add constraint p_ck_age check(age>0 and age<150);
表已更改。
创建一个默认约束
scott@TICKET> alter table p modify sex default '0';
表已更改。
scott@TICKET> desc user_constraints;
名称 是否为空? 类型
----------------------------------------- -------- ----------------------------
OWNER NOT NULL VARCHAR2(30)
CONSTRAINT_NAME NOT NULL VARCHAR2(30)
CONSTRAINT_TYPE VARCHAR2(1)
TABLE_NAME NOT NULL VARCHAR2(30)
SEARCH_CONDITION LONG
R_OWNER VARCHAR2(30)
R_CONSTRAINT_NAME VARCHAR2(30)
DELETE_RULE VARCHAR2(9)
STATUS VARCHAR2(8)
DEFERRABLE VARCHAR2(14)
DEFERRED VARCHAR2(9)
VALIDATED VARCHAR2(13)
GENERATED VARCHAR2(14)
BAD VARCHAR2(3)
RELY VARCHAR2(4)
LAST_CHANGE DATE
INDEX_OWNER VARCHAR2(30)
INDEX_NAME VARCHAR2(30)
INVALID VARCHAR2(7)
VIEW_RELATED VARCHAR2(14)
查看原表中的各种约束信息.
scott@TICKET> select constraint_name,constraint_type,status from user_constraints where table_name='P';
CONSTRAINT_NAME C STATUS
------------------------------ - --------
SYS_C0015996 P ENABLED
SYS_C0015997 U ENABLED
P_CK_AGE C ENABLED
通过查询创建相关的表信息.
scott@TICKET> create table persion as select * from p;
表已创建。
scott@TICKET> select * from persion;
未选定行
scott@TICKET> insert into persion select * from p;
已创建0行。
检查新表中的约束信息
scott@TICKET> select constraint_name,constraint_type,status from user_constraints where table_name='PERSION';
未选定行
再次证明了使用CTAS存在一些问题.
Oracle查询了一下文档(11gr1),关于 AS subquery 里面叙述到
Oracle Database automatically defines on columns in the new table any NOT NULL constraints that were explicitly
created on the corresponding columns of the selected table if the subquery selects the column rather than an expression
containing the column. If any rows violate the constraint, then the database does not create the table and returns
an error.
显示的NOT NULL约束自动会带到新表。
NOT NULL constraints that were implicitly created by Oracle Database on columns of the selected table (for example,
for primary keys) are not carried over to the new table.
隐式的NOT NULL约束不会带到新表,如主键。
In addition, primary keys, unique keys, foreign keys, check constraints, partitioning criteria, indexes, and column
default values are not carried over to the new table.
另外,主键,唯一,外键,check约束,分区,索引以及列的默认值不会带到新表。
If the selected table is partitioned, then you can choose whether the new table will be partitioned the same way,
partitioned differently, or not partitioned. Partitioning is not carried over to the new table. Specify any desired
partitioning as part of the CREATE TABLE statement before the AS subquery clause.
在新表上可以选择是否像像旧表那样分区,或者不同的分区形式,或者创建非分区表。在AS subquery句之前指定。
发表评论
-
各种数据库分页Dialect的方法
2011-12-02 09:01 2016以下分页技术均来自hibernate-core-3.3.1.G ... -
Oracle控制文件管理
2011-10-18 17:00 2087每一个Oracle数据库都有一个二进制文件记录着数据库的物理结 ... -
Oracle 问题诊断工具ADRCI(ADRCI: ADR Command Interpreter)
2011-10-29 09:23 2096ADRCI is a command-line tool th ... -
Oracle正则表达式函数:regexp_like、regexp_substr、regexp_instr、regexp_replace
2011-10-17 17:07 8590Oracle使用正则表达式离 ... -
Oracle 10g SQL Fundamentals II(学习笔记二第7-8章)
2011-10-17 16:27 1872第七章分层检索 语法: SELECT [LE ... -
Oracle 10g SQL Fundamentals II(学习笔记二第5-6章)
2011-10-17 16:26 1461第五章不同时区管理数据 TIME_ZONE 会话参数 ... -
Oracle 10g SQL Fundamentals II(学习笔记二第3-4章)
2011-10-17 16:25 1676第三章 大数据集合 从一个表中拷贝数据 ... -
Oracle 10g SQL Fundamentals II(学习笔记二第1-2章)
2011-10-17 16:23 1912第一章用户访问 创建用户 create user us ... -
Oracle 10g SQL Fundamentals I(学习笔记二第10-11章)
2011-10-16 11:19 1608第十章创建其他对象(视图,索引,序列,同义词) 视图的优点 ... -
Oracle 10g SQL Fundamentals I(学习笔记二第7-8章)
2011-10-16 11:17 1148第七章使用各种操作Union/UNION ALL/MINUS/ ... -
Oracle的小应用
2011-10-08 16:38 909今天同事打电话让我把数据库中的一个用户下所有表的注释导出 ... -
Oracle 10g SQL Fundamentals I(学习笔记二第4-6章)
2011-10-08 16:28 1540第四节: 分组函数: select [column, ... -
Oracle 10g SQL Fundamentals I(学习笔记第1-3章)
2011-10-08 16:25 1711第一章和第二章 distinct like 'S%' ... -
Oracle监控语句
2011-09-21 22:40 8511.监控事例的等待 select event,sum(de ... -
Oracle Rman 命令详解(List report backup configure)
2011-09-21 22:37 1536一、list常用命令总结备忘 list命令列出控制文件、 ... -
Oracle RMAN相关验证备份
2011-09-20 23:19 2201一.备份db并查看备份 list backup summ ... -
Oracle 的 Alert 日志
2011-09-20 23:18 2908从 Oracle 11g 开始,Oracle 数据库以XML与 ... -
Oracle 几个常用命令
2011-09-19 19:35 1291OEMC启动dbconsole进程1. emctl star ... -
Oracle中登录文件Login的定制
2011-09-14 10:55 1835在window系统针对Oracle登录调试设置登录 ... -
ORACLE使用dbv工具检验数据文件是否有坏块
2011-09-13 22:31 2755使用dbv工具检验数据文件是否有坏块 dbv工具可以用来验 ...
相关推荐
常见的逻辑备份方法包括使用`CREATE TABLE AS SELECT`(CTAS)语句创建新表来保存数据,以及使用Oracle的导出(Export)工具进行备份。 #### 二、`CREATE TABLE AS SELECT`语句详解 `CREATE TABLE AS SELECT`...
第二种方法是使用Oracle的`CREATE TABLE AS SELECT`(CTAS)语句,这一步骤创建一个新的表并立即填充来自查询的结果。基本语法如下: ```sql CREATE TABLE table2 AS SELECT column1, column2, ... FROM table1 ...
6. **并行执行**:利用并行提示(PARALLEL HINT)可以充分利用多CPU资源,提高DML操作的效率,尤其是对于大表的CTAS(CREATE TABLE AS SELECT)和INSERT操作。 7. **Direct-Path插入**:使用`/*+APPEND*/`提示进行...
Oracle数据库提供了Create table as select (CTAS)语句来完成这一操作。CTAS语句是Oracle中一个非常有用的命令,它将SELECT查询的结果集直接插入到一个新创建的表中。该语句不仅创建表,还同时填充数据,可以极大地...
- 使用`CREATE TABLE AS SELECT` (CTAS)语句可以快速创建并填充新表。 - 示例命令: ``` create table t1 nologging parallel (degree 2) as select * from t; ``` 4. **Direct-Path插入** - Direct-Path...
通过CTAS(Create Table As Select)语句可以快速创建一个表的备份,不包含原表的约束、索引等,仅复制数据: ```sql CREATE TABLE tb_name_bak AS SELECT * FROM tb_name; ``` ### 约束(Constraint) 除了主键...
在提供的题目中,我们讨论了 `CREATE TABLE AS SELECT` (CTAS) 语句,这是 Oracle SQL 中用于快速创建新表并填充数据的一种方法。CTAS 命令允许用户基于一个查询结果来创建新的表结构。题目中给出的 CTAS 语句如下:...
在实现电子政务全文检索系统时,首先需要创建和维护文本索引,这可以通过Oracle的CTAS(CREATE TABLE AS SELECT)语句或者CTX_DDL包来完成。接着,可以使用Oracle Text的CONTAINS函数或配对的索引查询语法来执行查询...
- CTAS(CREATE TABLE AS SELECT)数据压缩:创建新表时就应用压缩。 - INSERT /*+ APPEND */压缩:用于插入大量数据,适用于批量加载操作。 - ALTER TABLE ... MOVE COMPRESSION:移动表到新的表空间并启用压缩。 -...
文档提到了使用CTAS(Create Table As Select)语句结合dba_objects系统表来创建一个大型的测试表。dba_objects是Oracle中的一个系统表,包含了数据库对象的信息。通过CTAS语句,可以高效地复制数据以构建一个用于...
通过CTAS(CREATE TABLE AS SELECT)操作,可以重新组织表中的数据行,使其与主键索引顺序一致,从而减少磁盘读取时的等待时间。这种优化策略适用于OLTP环境,特别是通过主键索引进行连续查询的场景。然而,对于随机...
- **Row Re-Sequencing**:通过创建表时使用`CTAS`(Create Table As Select)语句,或在Oracle 9i及以上版本中使用分区表和分区索引来优化I/O,尤其是针对大数据量的表,可以显著提高查询速度。 - **数据组织**:...
此外,文件还讨论了如何将数据从一个表插入到另一个表,以及如何使用不同方法合并数据,这些方法包括使用MERGE命令和CTAS(CREATE TABLE AS SELECT)。这些是Oracle中合并数据常用的技术,MERGE命令特别适用于基于...
- **CTAS(子查询建表)**:使用`CREATE TABLE AS SELECT`语句创建新表并填充数据。 - **截取**:删除表中的所有数据但保留表结构。 - `TRUNCATE TABLE table_name;` - **给表加注释**:使用`COMMENT`命令。 - `...
- **调整查询策略**:例如,使用`CTAS`(Create Table As Select)代替常规的插入操作,以优化数据写入模式并减少排序所需的I/O操作。 - **优化数据分布**:合理分配数据块,确保数据在磁盘上的物理布局尽可能与查询...
### Oracle从入门到精通知识点概览 #### 一、SQL基础 **1.1 基本概念** - **Oracle数据库简介**:Oracle是一种广泛使用的多模型数据库管理系统,以其高性能、高可靠性和强大的功能著称。 - **数据库系统**:包括...
- 在执行DML操作前,使用CTAS(Create Table As Select)语句备份数据。 **5.4 INSERT时需写全列名** - 明确指定插入的所有列名,防止因后续修改导致的问题。 **5.5 大数据量的DML** - 对于大数据量的操作,应...
- 使用`CREATE TABLE AS SELECT` (CTAS)快速创建新表。 - 表的注释和约束条件用于增强数据完整性和安全性。 - **2.5 视图(VIEW)** - 视图是基于SQL查询的虚拟表,可以简化复杂的查询并提高数据安全性。 - **2.6...
- **解决方案**:可以通过优化查询或使用Create Table As Select (CTAS)等方法来避免不必要的行重新排序,减少I/O开销。 #### SQL语句的调优 - **SQL语句优化**:SQL语句的编写方式直接影响其执行效率。通过改进...