-
Module1
Creating Tables
表是Oracle数据库中数据存储的基本单元。数据按行和列存储。使用表名(如employees)和一组列定义表。为每个列指定一个列名,例如employee_id、last_name和job_id;数据类型,如VARCHAR2、日期或数字;以及宽度。宽度可以由数据类型预先确定,如日期。如果列是数字数据类型,请定义精度和比例而不是宽度。行是对应于单个记录的列信息的集合。
-
可以为表的每列指定规则。这些规则称为完整性约束。一个例子是非空完整性约束。此约束强制列在每行中包含一个值。
例如:create table DEPARTMENTS ( deptno number, name varchar2(50) not null, location varchar2(50), constraint pk_departments primary key (deptno) );
表可以是声明性的,指定表之间的关系,通常称为引用完整性。为了了解其工作原理,我们可以通过在引用DEPARTMENTS表的EMPLOYEES表中包含外键来创建DEPARTMENTS表的“子”表。例如:
create table EMPLOYEES ( empno number, name varchar2(50) not null, job varchar2(50), manager number, hiredate date, salary number(7,2), commission number(7,2), deptno number, constraint pk_employees primary key (empno), constraint fk_employees_deptno foreign key (deptno) references DEPARTMENTS (deptno) );
外键必须引用主键,因此要创建“子”表,“父”表必须具有外键要引用的主键。
-
Creating Triggers
触发器是存储在数据库中的过程,在发生某些事情时隐式运行或触发。传统上,触发器支持过程代码的执行,在Oracle中,过程SQL称为PL/SQL块。PL代表过程语言。在表或视图上发生插入、更新或删除时。触发数据库和架构上的支持系统和其他数据事件。
触发器经常用于自动填充表主键,下面的触发器示例显示了一个示例触发器。我们将使用内 置函数获取全局唯一标识符或GUID。
-
create or replace trigger DEPARTMENTS_BIU before insert or update on DEPARTMENTS for each row begin if inserting and :new.deptno is nu