数据库中表的约束条件

表的约束条件(CONSTRAINT)
1)主键约束

  主键(Primary Key,简称PK)
  特征:
  主键约束=不能重复+不能为空
  一张表中只能存在一个主键,主键可以是一列,也可以是多列组合(联合主键)。
  主键约束定义方式有两种:
  列级约束和表级约束
  列级约束:
  create table stu_xu(
  id number(4) primary key
  );
  insert into stu_xu values(1001);
  insert into stu_xu values(1001);//不能重复
  insert into stu_xu values(null);//不能为空值
  表级约束:
  create table stu_xu(
  id number(4),
  constraint stu_xu_id_pk primary key(id)
  );
 
  联合主键:
  constraint stu_xu_id_pk primary key(id,no)
 
  //删除表
  drop table stu_xu;
  注意:表级定义约束建议命名规则:
  表名_列名_约束类型名
2)非空约束
  非空约束:NOT NULL,简称(NN)
  注意:非空约束只能在列级上
  列级:
  create table stu_xu(
  id number(4) primary key,
  name varchar2(20) not null
  );
  //删除表
  drop table stu_xu;
  //插入数据
  insert into stu_xu values(1001,'张三');
  //name字段为NULL,记录插入失败
  insert into stu_xu(id) values(1002);
 
  非空约束添加起个名字:
  create table stu_xu(
  id number(4) primary key,
  name varchar2(20) constraint stu_xu_name_nn not null
  );
3)唯一约束
  唯一约束:UNIQUE,简称UK
  唯一约束定义方式两个:列级和表级
  列级:
  create table stu_xu(
  id number(4) primary key,
  name varchar2(20) not null,
  email varchar2(30) unique
  );
  //删除表
  drop table stu_xu;
  //插入数据
  insert into stu_xu values(1001,'张三','[email protected]');
  insert into stu_xu values(1002,'李四','[email protected]');// 违反唯一约束条件
  insert into stu_xu values(1003,'张三',null);
  //email字段NULL重复插入没有问题
  insert into stu_xu values(1004,'王五',null);
 
  表级:
  create table stu_xu(
  id number(4),
  name varchar2(20) not null,
  email varchar2(30),
  constraint stu_xu_id_pk primary key(id),
  constraint stu_xu_email_uk unique(email)
  );
 
4)检查约束
  检查约束:CHECK,简称CK
  检查约束定义方式两个:列级和表级
  列级:
  create table stu_xu(
  id number(4) primary key,
  name varchar2(20) not null,
  email varchar2(30) unique,
  sex char(1) check(sex in('F','M'))
  );
  //删除表
  drop table stu_xu;
  //插入数据
  insert into stu_xu values(1001,'张三','[email protected]','男');//实际值: 2, 最大值: 1
  insert into stu_xu values(1002,'李四','[email protected]','A');//违反检查约束条件
  insert into stu_xu values(1003,'王五','[email protected]','F');
 
  表级:
  create table stu_xu(
  id number(4),
  name varchar2(20) not null,
  email varchar2(30),
  sex varchar2(1),
  constraint stu_xu_id_pk primary key(id),
  constraint stu_xu_email_uk unique(email),
  constraint stu_xu_sex_ck check(sex in('F','M'))
  );
5)外键约束
  外键约束:FOREIGN KEY,简称FK
  外键约束定义在两张表的两个字段上 ,用于保证相关的两个字段之间的关系。
  create table temp_dept(
  deptno number(4) primary key,
  dname varchar2(20) not null
  );
 
  create table temp_emp(
  empno number(4) primary key,
  ename varchar2(10) not null,
  deptno number(4),
  foreign key(deptno) references temp_dept(deptno)
  );
  //在员工表中插入一条记录
  insert into temp_emp values(1001,'张三',10);//违反完整约束条件
 
  //先创建10号部门数据,然后在员工表中插入10号部门的员工
  insert into temp_dept values(10,'研发部');
  insert into temp_emp values(1001,'张三',10);
  create table temp_emp(
  empno number(4) primary key,
  ename varchar2(10) not null,
  deptno number(4),
  constraint temp_emp_deptno_fk foreign key(deptno) references temp_dept(deptno)
  );//temp_emp_deptno_fk不能重复

猜你喜欢

转载自blog.csdn.net/qq_42591048/article/details/80913904