数据库的完整性
数据库约束是保证数据库完整性的方法 ,数据库完整性分为实体完整性、域完整性和参照完整性
实体完整性
实体完整性要求表中的主键字段不能为空且不能重复;
域完整性
域完整性要求表中数据都在有效范围内;
参照完整性
参照完整性保证了相关联的表的数据一致性;
约束的使用
约束是保证表中数据完整性和一致性的手段,分为主键约束、外键约束、检查约束、唯一约束、非空约束五种;
主键约束
主键约束在每个数据表中只有一个,但主键约束可以有多个列组成;
-- 添加主键约束
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='用户名';
原文地址:https://www.cnblogs.com/f1ynn/p/11619468.html
时间: 2024-11-11 20:03:43