{企业管理表格}管理表
1-2
Oracle中的方案对象类型
• Table :表 • Index :索引 • View: 视图 • Synonym:同义词 (方案对象的一个别名,简化访问,提高安全) • Sequence:序列 (命名的顺序编号生成器) • Procedure、function、trigger等
存储过程、函数、触发器 (是用户利用PL/SQL编写的命名的程序块)
• 如果SCOTT用户创建了表EMP,那么SCOTT 就是表EMP的所有者,SCOTT访问SCOTT用 户下的EMP表时不用在表名前面加上表的所有 者:SELECT * FROM EMP;
• 如果其他用户要访问表EMP,要在表名前面加 上表的所有者:SELECT * FROM scott.emp; 否则会显示“没有此表”。
1-7
15.2 数据完整性与约束条件
• 数据完整性是关系数据库模型的基本原则,是用户在 表上定义的一系列规则或约束条件,以及在表之间定 义的一系列相互关系。数据完整性的作用,简单地说 ,就是强制要求数据库中只能接受正确的、合理的数 据,防止错误的或无效的数据被插入到表中。
• 分三种类型: • 实体完整性:主键的各个属性都不能为空值。 • 参照完整性:外键或者取空值,或者等于被参 照关系中的主键的某个值。 • 用户自定义完整性:属性(或属性组)的取值 应当满足用户定义的约束条件。
1-3
本章内容
• 表概述 • 数据完整性与约束条件 • 管理表的策略 • 管理表
创建表、更改表、删除表及删减表 • 管理约束 • 查看表信息及约束信息 • OEM中管理表
1-4
15.1 表概述
• 表是Oracle数据库最基本的对象,其他 许多数据库对象(如索引、视图)都以 表为基础。表被用于实际存储数据。表 中有列,列中存储多行数据。在关系数 据库中,不同表中的数据彼此之间可能 存在一定的关系。
• 一般情况下,带有索引的标准表的表数据及其索引数据 分别存放在对应的表段和索引段中,当在where子句中 引用索引列时,首先定位索引数据并取得对应记录的 ROWID,然后根据ROWID取得表的数据。
• 建立索引表时,Oracle会将表数据及其主键索引的数据 一起放到索引段中。当在WHERE子句中引用主键列时, Oracle可以直接根据主键索引值取得表行数据。所以, 如果要经常基于主键列检索表数据,那么Oracle建议使用 索引表。
1-27
• Create table ext_department
• (DeptId number(9),
• DeptNo char(2),
• Name varchar2(20),
• Address varchar2(30)
•)
• Organization external
• (type ORACLE_LOADER
1-13
创建标准表
create table department ( deptid number(9) not null, deptno char(2) default 01 not null, name varchar2(20), address varchar2(30), constraint pk_deptid primary key(deptid) validate, constraint uniq_name unique(name) novalidate, constraint chk_address check
(address in ('1号楼','2号楼','3号楼','4号楼')) validate)
1-14
临时表
• Oracle 的临时表分为事务型和会话型。
• 事务型临时表 就是指在事务处理过程中插入的 记录只在事务提交或回滚之前有效,一旦事务 完成,表中的记录便被自动清除。
• 会话型临时表 指临时表中的数据在本次会话期 间一直有效,直到会话结束。会话结束后表中 针对此次会话的数据会自动清空。
• 当在临时表上执行DML操作时,既不会加锁也 不会将数据变化写到重做日志中。因此不能用 临时表保存永久数据。
1-15
创建临时表
Create global temporary table table_name ( …) on mit delete rows | on mit preserve rows
• 外部表ext_department里面已经有数据了, 我们就可以把这些数据导入到真正的 Oracle的表中。
如:insert into department select * from ext_department;
• 可以使用user_external_tables来查看当前用 户可以使用的外部表。
据装载到Oracle数据库中。
1-26
创建外部表
• Step0: 在C:\准备一个department.txt的文件。 • Step1: 建立目录对象。
conn sys/o123 as sysdba; create directory dept_dir as 'C:\'; • Step2: 创建外部表(create table语句) 包括两部分,一部分描述表列的数据类型,另 外一部分描述OS文件数据与表列对应关系。 • Step3: 使用外部表。
列数据所预留空间的百分比。如果数据块剩余空间低于 PCTHRESHOLD设置,Oracle会将其他数据存放到溢出 段。 • OVERFLOW TABLESPACE指定溢出段所在表空间。 • INCLUDING:当有溢出情况时,指定控制哪些非键值列 与键值列存储在一起。
1-23
• INCLUDING clumn:该选项用来控制哪些非键列要 与键列存储在一起。
• 从用户角度看,表是一张二维表,即: 表由行和列两部分组成,表通过行和列 来组织数据。通常称表中的一行为一条 记录,称表中的一列为一个字段。
1-5
表和列的命名规则
长度30个字节之内。 必须以字母开头。 由字母、数字、_、#、$组成。 不能使用保留字。 非法的命名,可以用“”引着。 一个表内列名要唯一。 表名在名称空间内必须唯一。
1-22
• 执行上述语句后,会建立索引表IOT1,其键列和非键列 会存放到主键约束所对应的索引段PK_ID中,而溢出数 据则会存放到溢出段SYS_IOT_OVER_n(n:索引表的对 象号)中。
• 定义索引表时,主键约束和ORGANIZATION INDEX选 项时必须指定的。
选项的作用如下: • ORGANIZATION INDEX:用于指定创建一个索引表, • PCTHRESHOLD:用于指定数据块中为键列和部分非键
• 如果要在其他方案中建表,则要求用户必须具 有CREATE ANY TABLE系统权限。
• 创建表时,Oracle会为该表分配相应的表段。 表段的名称与表名完全相同,并且所有的数据 都会被存放在该表段中。
• 要求表的创建者必须指定表空间上具有空间配 额或具有UNLIMITED TABLESPACE系统权限 。
• Default directory dept_dir
• Access parameters
• (records delimited by newline
• Fields terminated by ‘,’
1-28
• Missing field values are null
1-29
department.txt
• 其中: • global temporary table指定表的类型为临时表。 • on commit delete rows指定表为事务临时表。
• on commit preserve rows指定表为会话临时表。
1-16
事务临时表例子:ຫໍສະໝຸດ 1-17会话临时表的例子:
1-18
索引表
• 对于标准表而言,其数据以无序方式存储;而对于索引 表来说,其数据以B-树结构来组织,并且其叶子数据块 既包含键列数据,也包含非键列数据。
1-6
Oracle中的数据类型
• 字符型 —— char 、nchar
varchar2、nvarchar2
• 大对象数据类型—— clob 、nclob
blob、bfile (二进制)
• 二进制数据类型—— Row、Long Row • 数字型 —— number(p,s) • 时间和日期—— Date,.. • 行数据类型——RowID、URowID
1-19
• 索引表和带索引的标准表是绝对不同的。
1-20
• 索引表的优点: 在执行针对主键查询,索引表远远比具有索引的标 准表要快的多。
• 但索引表不宜存放变动太大的数据。开销太大。
1-21
创建索引表
Create table IOT1 ( id number(9), name varchar2(20), address varchar2(30), note varchar2(40), constraint PK_ID primary key (ID) validate ) organization index pctthreshold 40 including address overflow tablespace users;
1-8
ENAME 的每列 都必须 有一个 值
EMPNO每 行都必须 有惟一的
1-9
DEPTNO的值必须 与表DEPT中的 DEPTNO值匹配
15.2 数据完整性与约束条件
数据完整性
• 实体完整性 • 参照完整性 • 用户自定义完整性
约束条件
• Not Null • Unique • Check • Primary key • Foreign key
1-25
外部表
• Oracle允许以只读方式访问外部表中的数据。 • 外部表指不是数据库中的表,而是操作系统