韩顺平oracle视频笔记七

Oracle数据的完整性
用于确保数据遵从一定的商业和逻辑规则,在Oracle中数据的完整性可以使用约束、触发器、应用程序(过程、函数)三种方法来实现。

Oracle中约束有如下五种:
not null插入的时候不能为空
unique不能重复,但是可以为空
primary key不能重复,而且不能为null
(一个表最多只能有一个主键,但是可以有多个unique)
foreign key外键
check用于强制数据必须满足的条件,假定sal列值在1000-2000之间如果不在就会出错

商店售货系统表设计案例

create table goods(
goodsId char(36) primary key,
goodsName varchar2(36),
unitprice number(10,2) check (unitprice>0),
category varchar2(36),
provider varchar2(36)
);

create table customer(
customerId char(36) primary key,
name varchar2(36) not null,
address varchar2(100),
email varchar2(50) unique,
sex char(2) default '男' check (sex in('男','女')),
cardId char(18)
);

create table purchase(
customerId char(36) references customer(customerId),
goodsId char(36) references goods(goodsId),
nums number(5) check(nums between 1 and 30)
);

 备注:在使用外键的时候,一定要保证外键一定是另外一张表的主键,如果另外一张表没有声明为主键则创建表会报错的

商品名称不能为空
alter table goods modify goodsName not null;
增加身份证不能重复
alter table customer add constraint cardunique unique(cardId)
增加客户的住址只能是"海淀","朝阳","东城","西城","通州"等
alter table customer add constraint addresscheck check(address in('东城','西城'))

删除约束
alter table customer drop constraint addresscheck;

alter table 表明 drop primary key cascade;

列级定义(在定义列的同时定义约束)
create table department(
dept_id number(2) constraint pk_department primary key,
name varchar2(12),
loc varchar2(12)
);
表级定义(定义了所有列后再定义约束,not null只能在列级定义)
create table employee(
emp_id number(4),
name varchar2(15),
dept_id number(2),
constraint pk_employee primary key(emp_id),
constraint fk_department foreign key(dept_id) references department(dept_id)
);

猜你喜欢

转载自hbiao68.iteye.com/blog/1472941
今日推荐