Oracle建表关键字解释

引自:http://www.banping.com/2009/07/08/oracle_create_table/

建表一般来说是个挺简单的事情,但是Oracle的建表语句有很多可选的参数,有些我们可能平时不太用,用的时候又不知道怎么用,这里就写一个较完整的建表的例子:

CREATE TABLE banping

(id  NUMBER(5)

CONSTRAINT banping_id_pk PRIMARY KEY,

last_name VARCHAR2(10)

CONSTRAINT banping_last_name_nn NOT NULL,

first_name VARCHAR2(10) NOT NULL UNIQUE,

userid VARCHAR2(8)

CONSTRAINT banping_userid_uk UNIQUE,

start_date DATE DEFAULT SYSDATE,

title VARCHAR2(10),

dept_id NUMBER(7)

CONSTRAINT banping_dept_id_fk REFERENCES dept(id),

salary NUMBER(11,2),

user_type VARCHAR2(4)

CONSTRAINT banping_user_type_ck CHECK

(user_type IN('IN','OUT')),

CONSTRAINT banping_uk_title UNIQUE (title,salary)

)

INITRANS 1 MAXTRANS 255

PCTFREE  20  PCTUSED  50

STORAGE( INITIAL  1024K  NEXT  1024K  PCTINCREASE  0  MINEXTENTS  1  MAXEXTENTS  5)

TABLESPACE  data

;

解释说明如下:

语法

CREATE  TABLE  [schema.]table

(column  datatype [, column  datatype] … )

[TABLESPACE  tablespace]

[PCTFREE  integer]

[PCTUSED  integer]

[INITRANS  integer]

[MAXTRANS  integer]

[STORAGE  storage-clause]

[LOGGING | NOLOGGING]

[CACHE | NOCACHE] ];

Schema:表的所有者

Table:表名

Column:字段名

Datatype:字段的数据类型

Tablespace:表所在的表空间

Pctfree:为了行长度增长而在每个块中保留的空间的量(以占整个空间减去块头部后所剩余空间的百分比形式表示),当剩余空间不足pctfree时,不再向该块中增加新行。

Pctused:在块剩余空间不足pctfree后,块已使用空间百分比必须小于pctused后,才能向该块中增加新行。

INITRANS:在块中预先分配的事务项数,缺省值为1

MAXTRANS:限定可以分配给每个块的最大事务项数,缺省值为255

STORAGE:标识决定如何将区分配给表的存储子句

LOGGING:指定表的创建将记录到重做日志文件中。它还指定所有针对该表的后续操作都将被记录下来。这是缺省设置。

NOLOGGING:指定表的创建将不被记录到重做日志文件中。

CACHE:指定即使在执行全表扫描时,为该表检索的块也将放置在缓冲区高速缓存的LRU列表最近使用的一端。

NOCACHE:指定在执行全表扫描时,为该表检索的块将放置在缓冲区高速缓存的LRU列表最近未使用的一端。

STORAGE子句:

INITIAL:初始区的大小

NEXT:下一个区的大小

PCTINCREASE:以后每个区空间增长的百分比

MINEXTENTS:段中初始区的数量

MAXEXTENTS:最大能扩展的区数

如果已为表空间定义了MINIMUM EXTENT,则表的区大小将向上舍入为MINIMUM EXTENT值的下一个较高的倍数。

外键关联的表dept的id列必须是唯一的或者是自身的主键,如不是可以用以下语句填加:

alter table dept  add constraint dept_id_pk primary key(id)

块空间使用参数可用来控制对数据段和索引段空间的使用:

控制并发性参数:

INITRANS和MAXTRANS指定初始的和最大的事务位置数,这些事务位置在索引块或者数据块内创建。事务位置用来存储在某一事件点上正在对

块进行更改的事务的信息。一个事务只占用一个事务位置,即使它正在更改多行或者多个索引条目。

INITRANS对数据段的缺省值为1,对索引段的缺省值为2,以保证最低程度的并发。例如,如果INITRANS设为3,则保证至少3个事务可以同时对

块进行更改。如果需要,也可以从块空闲空间内分配其它事务位置,以允许更多的事务并发修改块内的行。

MAXTRANS的缺省值为255,它设置可更改数据块或者索引块的并发事务数的限制。设置后,该值限制事务位置对空间的使用,从而保证块内有足够的空间

供行或者索引数据使用。

控制数据空间使用的参数:

数据段的PCTFREE指定每个数据块中保留空间的百分比,用于因更新块内的行而导致的增长。PCTFREE的缺省值为10%。

数据段的PCTUSED代表Oracle服务器试图为表内的每个数据块维持的已用空间的最低百分比。如果一个块的已用空间低于PCTUSED,则将这块放

回到空闲列表中。段的空闲列表示容纳将来所插入内容的可选择块的列表。根据缺省,每个段在创建时都有一个空闲列表。PCTUSED的缺省值为40%。

PCTFREE和PCTUSED都按可用数据空间百分比来计算,可用数据空间是从整个块大小减去块头空间后剩余的块空间。

块空间使用参数只能针对段指定,而不能在表空间级别设置。

下面步骤介绍对PCTFREE=20且PCTUSED=40的数据段如何管理块内空间:

1.向块中插入行,直到块内的空闲空间小等于20%。当行所占用的块内数据空间达到80%(100-PCTFREE)或者更多后,即无法再向该块进行插入。

2.剩余的20%可在行大小增长时使用。例如,更新初始为NULL的列并分配一个值。这样,由于更新,块使用率可能超过80%。

3.如果由于更新,删除了块内的行或者行大小减少,块使用率可能跌至80%以下。但是,仍然无法向块中插入,直到块使用率跌至PCTUSED以下,在本例中PCTUSED为40%。

4.当块使用率跌至PCTUSED以下后,该块可用于插入。随着向块内插入行,块使用率增长,重复从步骤1开始的循环。

oracle数据库new关键字,Oracle筑表关键字解释相关推荐

  1. oracle表结构修改回滚,87.Oracle数据库SQL开发之 修改表内存——数据库事务的提交和回滚...

    87.Oracle数据库SQL开发之 修改表内存--数据库事务的提交和回滚 数据库事务(transaction)就是一组SQL语句,这组SQL语句时一个逻辑工作单元. 要永久性的记录事务中SQL语句的 ...

  2. Oracle数据库之创建和管理表

    Oracle数据库总结: Oracle数据库之集合运算 Oracle数据库之数据处理 Oracle数据库之建表和管理表 Oracle数据库之对象视图.索引.序列.同义词 建表语法: create ta ...

  3. Oracle数据库迁移:异构传输表空间TTS HP-UX迁移至Redhat Linux 7.7

    墨墨导读:本文来自墨天轮用户"你好我是李白"的投稿,记录一个Oracle数据库迁移过程 :异构传输表空间TTS HP-UX迁移至Redhat Linux 7.7.墨天轮主页:htt ...

  4. 快速清除oracle多个表,Oracle数据库之批量清除一个表的数据,TB级别数据

    本文主要向大家介绍了Oracle数据库之批量清除一个表的数据,TB级别数据,通过具体的内容向大家展现,希望对大家学习Oracle数据库有所帮助. 有个需求,要求清理8TB的数据,只保留一个月的数据,现 ...

  5. oracle建用户之前是否必须建表空间,Oracle数据库-建库、建表空间,建用户

    Oracle数据库-建库.建表空间,建用户 Oracle安装完后,其中有一个缺省的数据库,除了这个缺省的数据库外,我们还可以创建自己的数据库. 对于初学者来说,为了避免麻烦,可以用'Database ...

  6. 数据如何导入oracle数据库,如何用Oracle导入导出工具来实现Oracle数据库移植?

    Oracle数据库作为目前市场的主流数据库之一,许多应用都在其上进行开发,由于Oracle数据库更新换代的原因和不同的应用程序提供商,可能会造成在一个单位的应用中存在Oracle的几种版本,如Orac ...

  7. oracle数据库快照打点,Oracle数据库快照的使用

    Oracle数据库快照的使用 正在看的ORACLE教程是:Oracle数据库快照的使用.oracle数据库的快照是一个表,它包含有对一个本地或远程数据库上一个或多个表或视图的查询的结果.正因为快照是一 ...

  8. oracle数据库基础测试,ORACLE数据库基础测试题oracle数据库复习题.docx

    <ORACLE数据库基础测试题oracle数据库复习题.docx>由会员分享,可在线阅读,更多相关<ORACLE数据库基础测试题oracle数据库复习题.docx(18页珍藏版)&g ...

  9. oracle 连接组件,[2021] node连接oracle数据库示例[使用oracle官方组件]

    [2021] node连接oracle数据库示例[使用oracle官方组件] node 连接 oracle 示例 本示例采用的 oracledb 和 instantclient-basic-windo ...

  10. 视频教程-oracle数据库快速入门-Oracle

    oracle数据库快速入门 十年项目开发经验,主要从事java相关的开发,熟悉各种mvc开发框架. 王振伟 ¥21.00 立即订阅 扫码下载「CSDN程序员学院APP」,1000+技术好课免费看 AP ...

最新文章

  1. 转 让开发自动化: 使用自动化加速部署
  2. python学习札记20210123
  3. Java 大数类BigInteger与BigDecimal详细介绍(配蓝桥杯例题讲解)
  4. mysql教程 api_Mysql入门系列:MySQL可用的API
  5. 网络编程套接字(四)
  6. 在Android初次的前期学习中的二个小例子(2)
  7. java过时_Java 语言的几个缺陷之四: 过时的 JavaBean
  8. 云服务和硬件成微软业绩新增长点
  9. NOR Flash擦写和原理分析 (二)
  10. magento xml配置详解(1)
  11. jbpm hibernate.cfg.xml 连接mysql配置_hibernate.cfg.xml文件连接mySql、Oracle、SqlServer配置...
  12. springboot + h2 + vue + AceEditor + element-ui 数据库管理系统(DMS)- JavaWeb毕业设计|课程设计
  13. win10关闭触摸板自动开启
  14. html ui动画效果图,20种炫酷的菜单线条动画特效UI设计效果_html/css_WEB-ITnose
  15. 【wangeditor富文本编辑器v4版自定义功能】格式刷
  16. J2SE J2EE J2ME名字的来历
  17. 深度 | 苹果略胜微软一筹,为什么说 ARKit 是 AR 的最好选择?
  18. SX1278与STM8L的精美结合。
  19. 教大家强制退出id账号_今天教大家怎么用手机注册自媒体账号之企鹅号。
  20. (Paper)Network in Network网络分析

热门文章

  1. 2022-1-15 牛客C++项目——第二章 Linux 多进程开发
  2. 2021-09-04剑指Offer43.1~n整数中1出现的次数
  3. 现货黄金交易入门知识
  4. Python replace函数
  5. 2006年世界顶级杀毒软件排名
  6. 智慧地球危害中国国家安全
  7. 将网页变成字符串,并保存起来
  8. AntiARP防火墙卸载干净的方法
  9. f4v格式视频转换成MP4格式的方法
  10. 在线阅读实现(文档--swf的转换)