Oracle 数据库表(常见的表)
数据库表(常见的表)
堆组织表:普通表
索引组织表:iot
嵌套表
临时表
外部表
1 表
一个表最多1000列,oracle会把列大于254的行存储在多个单独的行段中,
表中的行是无限的,
术语:
段:
表:表段保存一个数据库表的数据
表分区:这种段类型用于分区
索引:这种段类型保存索引结构
索引分区:类似于表分区
嵌套表:为嵌套表指定段的类型
回滚段:undo数据就存在这里
段空间管理
Hwm高水位线
2 堆组织表
全表扫描时,会按命中的顺序来读取数据,而不是以插入的顺序。
创建一个表
create table t
( x int primary key,
y date,
z clob
)
查看起详细的创建信息
select dbms_metadata.get_ddl( 'TABLE', 'T' ) from dual;
CREATE TABLE "SCOTT"."T"
( "X" NUMBER(*,0),
"Y" DATE,
"Z" CLOB,
PRIMARY KEY ("X")
USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255
STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
TABLESPACE "USERS" ENABLE
) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
TABLESPACE "USERS"
LOB ("Z") STORE AS (
TABLESPACE "USERS" ENABLE STORAGE IN ROW CHUNK 8192 PCTVERSION 10
NOCACHE LOGGING
STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT))
3 索引组织表iot
Iot就是存储在一个索引结构中的表,iot的数据则按主键存储和排序,iot中数据就是索引,索引就是数据,
想保证数据存储在某个位置上,或者希望数据已某种特定的顺序物理存储,就适合用iot。
Create table t(I number,x number) ORGANIZATION INDEX
4 嵌套表
create table dept
(deptno number(2) primary key,
dname varchar2(14),
loc varchar2(13))
create table emp
(empno number(4) primary key,
ename varchar2(10),
job varchar2(9),
mgr number(4) references emp,
hiredate date,
sal number(7, 2),
comm number(7, 2),
deptno number(2) references dept );
create or replace type emp_type –创建一个type
as object
(empno number(4),
ename varchar2(10),
job varchar2(9),
mgr number(4),
hiredate date,
sal number(7, 2),
comm number(7, 2) );
create or replace type emp_tab_type
as table of emp_type
/
create table dept_and_emp
(deptno number(2) primary key,
dname varchar2(14),
loc varchar2(13),
emps emp_tab_type
) nested table emps store as emps_nt;
alter table emps_nt add constraint
emps_empno_unique unique(empno)
insert into dept_and_emp
select dept.*,
CAST( multiset( select empno, ename, job, mgr, hiredate, sal, comm
from SCOTT.EMP
where emp.deptno = dept.deptno ) AS emp_tab_type )
from SCOTT.DEPT
multiset 关键字告诉oracle这个子查询想返回多行,
cast用于提示oracle把返回的结果集作为一个集合类型,
5 临时表
临时表用于保存事务或会话期间的中间结果集,临时表保存的数据只对于当前会话可见,所有会话都看不见其他会话的数据,即使commit,别的会话也看不到它的数据,关于临时表,不存在多用户并发问题,
临时表会从当前登录用户的临时表空间分配存储空间,
事务临时表与会话临时表
create global temporary table temp_table_session
on commit preserve rows
as
select * from scott.emp where 1=0
------ 基于会话
create global temporary table temp_table_transaction
on commit delete rows
as
select * from scott.emp
---------where 1=0,where1=1,都一样,ddl,有commit
----- 基于事务
insert into temp_table_session select * from scott.emp;.
insert into temp_table_transaction select * from scott.emp;
提交则数据消失
select session_cnt, transaction_cnt
from ( select count(*) session_cnt from temp_table_session ), ( select count(*) transaction_cnt from temp_table_transaction );
select (select count(*) session_cnt from temp_table_session ),( select count(*) transaction_cnt from temp_table_transaction ) from dual
临时表可以有永久表的很多属性,可以有触发器,检查约束,索引等,
不能使用完整性约束,不能有nested属性,不能是iot,不能分区,不能通过analyze表命令生成统计信息,
临时表的缺点之一是优化器不能正常的得到临时表表的真实统计信息(cbo),
可以在进程中使用临时表
临时表会生成少量的redo,但是确实还会生成redo,没办法避免,为回滚数据生成的,如果只是对临时表执行insert,select,生成的redo几乎注意不到
10g后动态采样,动态采样在查询解析时完成,
select table_name, last_analyzed, num_rows from user_tables;
查看统计的信息,分析的时间
SQL> select table_name, last_analyzed, num_rows from user_tables where table_name='EMP';
TABLE_NAME LAST_ANALYZE NUM_ROWS
------------------------------ ------------ ----------
EMP 24-MAY-13 14
exec dbms_stats.gather_schema_stats( user );
on commit delete rows; 会收不到统计信息
Oracle 数据库表(常见的表)的更多相关文章
- 【转】Oracle - 数据库的实例、表空间、用户、表之间关系
[转]Oracle - 数据库的实例.表空间.用户.表之间关系 完整的Oracle数据库通常由两部分组成:Oracle数据库和数据库实例. 1) 数据库是一系列物理文件的集合(数据文件,控制文件,联机 ...
- 使用Oracle数据库,对某个表频繁更新
使用Oracle数据库,对某个表频繁更新,查询时要联合这张表,查询速度非常慢,有什么解决办法? 一般的pc机oracle更新的效率均可达到500+/s, 可能的问题,你更新这个不会是每次都新建jdbc ...
- Oracle 数据库、实例、表空间、用户、数据库对象
Oracle是一种数据库管理系统,是一种关系型的数据库管理系统.通常情况了我们称的“数据库”,包含了物理数据.数据库管理系统.内存.操作系统进程的组合体,就是指这里所说的数据库管理系统. 完整的Ora ...
- 利用powerDesigner15.1连接oracle数据库并自动生成表结构
利用powerDesigner15.1连接oracle数据库并自动生成表结构 参考:http://blog.csdn.net/qq_24531461/article/details/76713802 ...
- oracle数据库管理系统常见的错误(一)
oracle数据库管理系统常见的错误之一如下: Listener refused the connection with the following error:ORA-12519, TNS:no a ...
- Oracle数据库体系结构及创建表结构
Oracle服务器主要由实例.数据库.程序全局区和前台进程组成,其中实例就是用来提供管理数据库的功能:数据库由数据库文件组成,用来存储系统数据:实例可以进一步划分为系统全局区(SGA)和后台进程(PM ...
- Oracle - 数据库的实例、表空间、用户、表之间关系
完整的Oracle数据库通常由两部分组成:Oracle数据库和数据库实例. 1) 数据库是一系列物理文件的集合(数据文件,控制文件,联机日志,参数文件等): 2) Oracle数据库实例则是一组Ora ...
- sql developer Oracle 数据库 用户对象下表及表结构的导入导出
Oracle数据库表数据及结构的导入导出 导出的主机与即将导入到的目标主机的tablespace 及用户名需一直!!!!!
- Oracle 数据库字典 sys.obj$ 表中关于type#的解释
sys.obj$ 表是oracle 数据库字典表中的对象基础表,所有对象都在该表中有记录,其中type#字段表明对象类型,比如有一个表 test ,则该对象在sys.obj$ 中存在一条记录,name ...
- Oracle数据库体系结构(7) 表空间管理1
表空间是Oracle数据库最大的逻辑存储结构,有一系列段构成.Oracle数据库对象存储结构的管理主要是通过表空间的管理实现的. 1.表空间的分类 表空间根据存储类型不同分为系统表空间和非系统表空间 ...
随机推荐
- RSA签名 python PHP demo 例子
python RSA+MD5签名demo: #!/usr/bin/env python2.7 #coding:utf-8 import base64 from Crypto.PublicKey imp ...
- eclipse maven 项目 maven build 无反应
eclipse maven 项目 使用maven build ,clean 等命令均无反应,控制台无任何输出 1.打开Window --> Preferences --> Java --& ...
- Logistic回归python实现
2017-08-12 Logistic 回归,作为分类器: 分别用了梯度上升,牛顿法来最优化损失函数: # -*- coding: utf-8 -*- ''' function: 实现Logistic ...
- sqoop学习2(数据导入与导出)
最近学习了下这个导数据的工具,但是在export命令这里卡住了,暂时排不了错误.先记录学习的这一点吧 sqoop是什么 sqoop(sql-on-hadoop):是用来实现结构型数据(如关系型数据库) ...
- python练习_sed替换
python练习_sed替换 需求: 做一个sed替换小程序,实现在windows下可以与实现linux中sed替换的功能 支持正则(re模块) 以下代码实现的功能与思路: 功能: (1)支持文件内容 ...
- codevs1796 社交网络
Description 在社交网络(socialnetwork)的研究中,我们常常使用图论概念去解释一些社会现象.不妨看这样的一个问题. 在一个社交圈子里有n个人,人与人之间有不同程度的关系.我们将这 ...
- 微信小程序申请。很蛋疼的流程。
微信小程序申请. 营业执照,食品许可证,身份证正面,身份证反面. 1.先要申请服务号. 需要一个QQ邮箱,申请服务号. 填写各种信息,营业执照信息. 法人信息. 管理员用自己人的.方便开发操作. 申请 ...
- review34
Thread类与线程的创建 让线程启动时使用我们自己创建run()的两种方式:一种是继承Thread类,实现其中的run()方法,然后用继承的类用无参构造方法创建对象就可以了.第二种是实现Runnab ...
- 从性能的角度谈SQL Server聚集索引键的选择
简介 在SQL Server中,数据是按页进行存放的.而为表加上聚集索引后,SQL Server对于数据的查找就是按照聚集索引的列作为关键字进行了.因此对于聚集索引的选择对性能的影响就变得十分重要 ...
- jsp: jstl标签库
jstl标签库,通过maven配置: <!-- jstl标签的支持 --> <dependency> <groupId>javax.servlet</grou ...