约束:保证数据库有某些特定的商业逻辑,维护数据的完整性:约束、触发器、应用程序(过程、函数)
Oracle中,约束分为5种
1、非空约束:如果给某个字段定义了not null,name在插入数据的时候,就必须为给字段提供数据。
--创建表的时候添加非空约束
create table user_table(
username varchar2(20) not null,
password varchar2(20)
);
--修改表的时候添加非空约束
alter table table_name modify 字段名 字段类型 not null;
--删除非空约束
alter table table_name modify 字段名 字段类型 null;
主键约束(primary key):主键是定位表中单个行的方式,可以唯一标识表中的数据,关系型数据库每一张表都应该有主键,主键可以是一个字段也可以是多个字段
1、主键列必须非空且唯一
2、每张表只能有一个主键,不过这个主键可以由多个字段共同组成(联合主键)
--在创建表的时候添加主键约束
--列级约束
create table student_table(
student_id number(10) primary key,
student_name varchar2(20)
);
表级约束
create table student_table(
student_id number(10),
student_name varchar2(20),
constraint pk_student_id primarykey(student_id)
);
user_constraints
sql developer
--修改表的时候添加主键约束
alter table table_name add constraint 约束的名字 primary key(.....);
--删除主键约束
alter table tablename drop constraint 约束的名字 alter table tablename drop primary key;
alter table tablename disable|enable constraint 约束的名字;
外键(foreign key):
用于联系主表和从表之间的关系,外键定义在从表上的,
要求外键数据必须在主表的主键列中存在或者为null;
--在创建表的时候设置外键约束
列级约束:
create tablebriup_dept( --主表
deptno number(2) primary key,
dname varchar2(20),
loc varchar2(20)
);
create tablebriup_emp( --从表
ename varchar2(20) constraint 约束的名字 not null,
deptno number(2) references briup_dept(deptno)
);
表级约束:
create tablebriup_emp( --从表
ename varchar2(20) not null,
deptno number(2),
constraint fk_emp_deptno_dept_deptno foreign key references briup_dept(deptno) [on delete cascade];
);
--删除外键约束
alter table tablename drop constraint 约束的名字 alter table tablename disable|enable constraint 约束的名字;
4、唯一约束
unique
--创建表的时候添加唯一约束
create table test(
username varchar2(20) unique
);
create table test(
username varchar2(20),
constraint 约束的名字 unique(字段);
);
--在修改的时候
alter table table_name add constraint 约束的名字 unique(.....);
--删除唯一约束
alter table tablename drop constraint 约束的名字 alter table tablename disable|enable constraint 约束的名字;
5、检查约束
--在创建的时候添加检查约束
create table emp(
sex varchar2(20) default '男' check(sex in ('男' ,'女')),
sal number(5) check(sal>0)
);
--修改
alter table table_name add constraint 约束的名字 check(条件);
--删除
alter table tablename drop constraint 约束的名字 alter table tablename disable|enable constraint 约束的名字;