一个创建基本表的例子:
1. CREATE TABLE "LDY"."TEST"
2. ("ID" NUMBER(10) NOT NULL,
3. "NAME" VARCHAR2(20) NOT NULL,
4. "SAL" NUMBER(10, 2) DEFAULT 1000 NOT NULL,
5. "DEPT" CHAR(25),
6. "MGR" NUMBER(10) NOT NULL,
7. CONSTRAINT "TEST_PK" PRIMARY KEY("ID")
8. USING INDEX
9. TABLESPACE "INDX"
10. STORAGE
11. ( INITIAL 10K NEXT 10K
12. MINEXTENTS 1 MAXEXTENTS 13
13. PCTINCREASE 5
14. FREELISTS 3 FREELIST GROUPS 2)
15. PCTFREE 10
16. INITRANS 2
17. MAXTRANS 10,
18. CONSTRAINT "TEST_CK" CHECK(sal>1000),
19. CONSTRAINT "TEST_FK" FOREIGN KEY("MGR")
20. REFERENCES "LDY"."EMP"("EMPLOYEE_ID")
21. ON DELETE CASCADE)
22. TABLESPACE "TBS2"
23. PCTFREE 30
24. PCTUSED 70
25. INITRANS 2
26. MAXTRANS 10
27. STORAGE
28. ( INITIAL 10K NEXT 20K
29. MINEXTENTS 2 MAXEXTENTS 65535
30. PCTINCREASE 5
31. FREELISTS 6 FREELIST GROUPS 7
32. BUFFER_POOL KEEP)
33. PARALLEL ( DEGREE 3)
34. NOLOGGING
35. CACHE
36. MONITORING
解释:
1. 创建一个基本表,schema为LDY,表名为TEST。
2. 创建第一个字段ID,字段类型为NUMBER,大小为10,并且该字段不能为空。
3. 创建第二个字段NAME,字段类型为VARCHAR2,大小为20,并且该字段不能为空。
4. 创建第三个字段SAL,字段类型为NUMBER,大小为10,精度为2,该字段有一个默认值1000,并且该字段不能为空。
5. 创建第四个字段DEPT,字段类型为CHAR,大小为25,该字段可以为空。
6. 创建第五个字段MGR,字段类型为NUMBER,大小为10,并且该字段不能为空。
7. 创建一个约束,约束名自定义为TEST_PK,如果不加约束名,也不要加CONSTRAINT关键字,这样系统会自动生成一个唯一约束名标识该约束。该约束类型为主键约束,作用的字段为ID,也可以为一个组合约束,也可以多个字段为一个主键,一个表只能有一个主键约束。在这里定义的是表级约束,若定义列级约束,可以直接跟在创建列后创建,作用多个字段只能定义为表级约束。
8. 因为主键包括了唯一值约束和非空值约束,所以建立了主键将会自动创建一个唯一索引,可以为这个唯一索引指定存储的索引表空间。
9. 指定了表空间INDX。
10. STORAGE子句用于定与所创建对象相关的存储参数,这里是在INDX表空间的存储参数。
11. INITIAL定义索引中第一个扩展区的大小。NEXT定义索引中下一个扩展区的大小。
12. MINEXTENTS定义分配给索引的最小扩展区数目。MAXEXTENTS定义分配给索引的最大扩展区数目。
13. PCTINCREASE定义在每个扩展区操作之后NEXT参数应该增加的百分比。
14. FREELISTS定义分配给对象的空闲表的数目。FREELIST GROUPS定义分配给对象的空闲表组的数目。
备注:从9i开始使用了自动段管理,FREELISTS和FREELIST GROUPS参数的指定都被忽略。
15. PCTFREE表示在已存在的行中指出一个块需要保留百分之多少的空间用来更新。当一个块所使用的空间达到或超过PCTFREE值,则从空闲表中删除该块并不再使用这个块(默认值为10)。
16. INITRANS定义在每个数据块中分配的并发事务项的初始数目。其最大值取决于块大小。如果有大量的并发操作,则可以改变这个值,而数据库也可以按照需要动态地添加事务项(默认值为2)。
17. MAXTRANS指出允许更新给定数据块并发事务的最大数目(默认值基于块大小的变量)。
18. 创建一个CHECK约束,约束名称为TEST_CK,检查的内容为sal>1000。
19. 创建一个外键约束,名称为TEST_FK,该约束定义在了本表的MGR字段上。
20. 外键参考的是schema为LDY的表EMP的EMPLOYEE_ID字段,这表示本表的MGR字段上的所有内容在LDY的表EMP的EMPLOYEE_ID字段中都必须存在。
21. ON DELETE CASCADE表示级联删除,即当删除所引用的父表记录时,删除子表中相关的记录,也可以设置为级联置空ON DELETE SET NULL,默认情况是没有以上两个,则父表中被引用的记录将不能被删除。
22. 指定该表存储的表空间,必须要有该表空间资源的权限。
23. PCTFREE表示在已存在的行中指出一个块需要保留百分之多少的空间用来更新。当一个块所使用的空间达到或超过PCTFREE值,则从空闲表中删除该块并不再使用这个块(默认值为10)。
24. PCTUSED表示如果可用的空间降低到PCTUSED属性所定义的值以下,则之前由于达到或超出PCTFREE阈值而从空闲表中删除的块将会重新添加进表中(默认值为40)。
备注:PCTFREE和PCTUSED总和不能超过100。
25. INITRANS定义在每个数据块中分配的并发事务项的初始数目。其最大值取决于块大小。如果有大量的并发操作,则可以改变这个值,而数据库也可以按照需要动态地添加事务项(默认值为1)。
26. MAXTRANS指出允许更新给定数据块并发事务的最大数目(默认值随块大小的变化而变化)。
27. STORAGE子句用于定与所创建对象相关的存储参数。
28. INITIAL定义表中第一个扩展区的大小。NEXT定义表中下一个扩展区的大小。
29. MINEXTENTS定义分配给表的最小扩展区数目。MAXEXTENTS定义分配给表的最大扩展区数目。
30. PCTINCREASE定义在每个扩展区操作之后NEXT参数应该增加的百分比。
31. FREELISTS定义分配给对象的空闲表的数目。FREELIST GROUPS定义分配给对象的空闲表组的数目。
备注:从9i开始使用了自动段管理,FREELISTS和FREELIST GROUPS参数的指定都被忽略。
32. BUFFER_POOL定义在Oracle数据库中分配给对象的缓冲池(保留缓冲池KEEP,再循环缓冲池RECYCLE或者默认的缓冲池DEFAULT)。
33. PARALLEL表示配置表的并行化,没有加次项则不并行。括号内的DEGREE表示并行值,也可以用默认DEFAULT。
34. NOLOGGING表示无时间记录,不生成重做日志,更新较快,但不可恢复。LOGGING生成重做日志,更新较慢,但可恢复。一般情况下,不加此项。
35. CACHE表示将经常访问的数据放在缓冲区高速缓存的顶端。NOCACHE将极少访问的数据放在缓冲区高速缓存的末尾。
36. MONITORING表示监视,收集表上的修改统计信息。没有次项则表示不监视,不收集表上的修改统计信息。