关于约束
最近在工作中需要用到约束,对数据库表中的列的取值进行约束,特学习了一下内容
1.为表增加CHECK约束并自定义约束的名称
ALTER TABLE 表名 ADD CONSTRAINT 约束名称 CHECK (约束条件);
ALTER TABLE pol_main ADD CONSTRAINT chk_gp_type CHECK (gp_type = 'G' OR gp_type='P');
ALTER TABLE pol_main ADD CONSTRAINT chk_gp_type CHECK (gp_type IN ('G','P'));
2.根据约束名称删除该约束
ALTER TABLE 表名 DROP CONSTRAINT 约束名称;
ALTER TABLE pol_main DROP CONSTRAINT chk_pol_main_gp_type;
3.根据表名称查询对应该表建立的哪些约束、
oracle数据库:
(结果集列名包含:owner,constraint_name-约束名称,table_name,column_name,position-约束顺序)
select * from user_cons_columns cl WHERE cl.table_name='表名'
select * from user_cons_columns cl WHERE cl.table_name='POL_MAIN'
4.添加非空约束
alter table 表名 modify (列名 列类型 not null);
alter table pol_main modify (addr varchar2(100) not null);
5.删除非空约束
alter table 表名 modify 列名 列类型 null;
alter table pol_amin modify addr varchar2(100) null;
6.查询约束是主键约束还是什么类型的约束:是主键约束 ?:CKECK约束?
oracle数据库:
select constraint_name,constraint_type from user_constraints where table_name='表名';
select constraint_name,constraint_type from user_constraints where table_name='POL_MAIN';
7.添加主键约束
alter table 表名 add constraint 约束名 primary key (列举主键的列名)
alter table SKAT add constraint pk_SKAT primary key (SPRAS,KTOPL,SAKNR)
8.删除主键约束
alter table 表名 drop primary key;
alter table pol_main drop primary key;