关闭

韩顺平oracle视频笔记七

282人阅读 评论(0) 收藏 举报

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)
);

 

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:324571次
    • 积分:8901
    • 等级:
    • 排名:第2227名
    • 原创:1096篇
    • 转载:14篇
    • 译文:0篇
    • 评论:5条
    最新评论