データベースの整合性
データベースの制約は、データベースの整合性を確保することである、データベースの整合分割エンティティの整合性、および整合性のフィールドを参照します
エンティティ整合性
エンティティ整合性は、テーブルの主キーフィールドは空にすることはできませんことを要求して繰り返すことはできません。
ドメインの整合性
有効範囲内のデータテーブルのドメインの整合性の要件。
参照整合性
参照整合性は、関連するデータ・テーブルの一貫性を保証します。
制約を使用します
制約は、データの整合性とテーブルの一貫性が分かれていることを確実にするためである主キー制約、外部キー制約、制約をチェックし、唯一の制約、非NULL制約五種類。
主キー制約
各データ・テーブル内の1つのプライマリキー制約、主キー制約は、複数の列を有することができます。
-- 添加主键约束
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)
条件をチェック状態ビットは、そのような条件は、18〜25年齢> 18歳の年齢<25で定義されています
唯一の制約
データ上の唯一の制約列の一意性、及び同様の主キー制約を確保するが、唯一の制約は、複数を有していてもよいです
-- 添加检查约束
alter table table_name add constraint constraint_name unique(condition)
非空制約
値を持っている必要があります列に非NULL制約を確認してください
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='用户名';