数据库完整性和约束

数据库的完整性

数据库约束是保证数据库完整性的方法 ,数据库完整性分为实体完整性、域完整性和参照完整性

实体完整性

实体完整性要求表中的主键字段不能为空且不能重复;

域完整性

域完整性要求表中数据都在有效范围内;

参照完整性

参照完整性保证了相关联的表的数据一致性;

约束的使用

约束是保证表中数据完整性和一致性的手段,分为主键约束外键约束检查约束唯一约束非空约束五种;

主键约束

主键约束在每个数据表中只有一个,但主键约束可以有多个列组成;

-- 添加主键约束
alter table table_name add constraints constraint_name primary key(column_name);

-- 移除主键约束
alter table table_name drop constraint constraint_name;

-- 创建表时添加主键
primary key(column_name)

外键约束

外键约束是保证使用外键的数据列与主键约束的数据列一致,可以有多个外键;

-- 创建表时添加外键约束, on delete cascade 代表级联删除
constraint constraint_name foregn key(column_name) reference table_name(column_name)
   on delete cascade;

-- 添加外键约束
alter table table_name add constraint constraint_name foregn key(column_name) 
   reference table_name(column_name) on delete cascade;

-- 移除外键约束
alter table table_name drop constraint constraint_name

检查约束

检查约束是保证列数据的正确性

-- 添加检查约束
alter table table_name add constraint constraint_name check(condition)

condition位检查条件,比如限定年龄在18-25 condition就为 age>18 and age<25

唯一约束

唯一约束保证了列上的数据唯一性,与主键约束类似但是唯一约束可以有多个

-- 添加检查约束
alter table table_name add constraint constraint_name unique(condition)

非空约束

非空约束保证列上必须有值

alter table table_name modify column_name not null

练习

-- system 用户
-- 授权/回收用户Flynn 创建表权限
grant create table to flynn;
revoke create table from flynn;

-- flynn 用户
-- 创建t_user表
create table t_user(
   u_name char(10) not null,
   u_age number(5) not null,
   U_password varchar(20) not null
);

-- 添加主键约束
alter table t_user add constraints pk_uname primary key(u_name);

-- 移除主键约束
alter table t_user drop constraint pk_uname;


select * from t_user;



-- 查询一个用户拥有的对象权限
select * from dba_tab_privs where grantee='用户名';

-- 查询一个用户拥有的系统权限
select * from dba_sys_privs where grantee='用户名';

猜你喜欢

转载自www.cnblogs.com/f1ynn/p/11619468.html