1. 概念和分类

1.1 约束的概念

  • 约束是作用于表中列上的规则,用于限制加入表的数据
  • 约束的存在保证了数据库中数据的正确性、有效性和完整性

1.2 约束的分类

java唯一约束异常 java约束是什么_mysql

  • 非空约束: 关键字是 NOT NULL
    保证列中所有的数据不能有null值。
    例如:id列在添加 马花疼 这条数据时就不能添加成功。
  • 唯一约束:关键字是 UNIQUE
    保证列中所有数据各不相同。
    例如:id列中三条数据的值都是1,这样的数据在添加时是绝对不允许的。
  • 主键约束: 关键字是 PRIMARY KEY
    主键是一行数据的唯一标识,要求非空且唯一。一般我们都会给没张表添加一个主键列用来唯一标识数据。
    例如:上图表中id就可以作为主键,来标识每条数据。那么这样就要求数据中id的值不能重复,不能为null值。
  • 检查约束: 关键字是 CHECK
    保证列中的值满足某一条件。
    例如:我们可以给age列添加一个范围,最低年龄可以设置为1,最大年龄就可以设置为300,这样的数据才更合理些。
    MySQL不支持检查约束
  • 默认约束: 关键字是 DEFAULT
    保存数据时,未指定值则采用默认值。
    例如:我们在给english列添加该约束,指定默认值是0,这样在添加数据时没有指定具体值时就会采用默认给定的0。
-- 员工表
CREATE TABLE emp (
	id INT PRIMARY KEY auto_increment, -- 员工id,主键且自增长
	ename VARCHAR(50) NOT NULL UNIQUE, -- 员工姓名,非空且唯一
	joindate DATE NOT NULL, -- 入党日期,非空
	salary DOUBLE(7,2) NOT NULL, -- 工资,非空
	bonus DOUBLE(7,2) DEFAULT 0 -- 奖金,如果没有奖金默认为0
);
  • 外键约束: 关键字是 FOREIGN KEY
    外键用来让两个表的数据之间建立链接,保证数据的一致性和完整性。
-- 创建表时添加外键约束 
CREATE TABLE emp(
	id int primary key auto_increment,
	name varchar(20),
	age int,
	dep_id int,
	
	-- 添加外键 dep_id,关联 dept 表的id主键
	CONSTRAINT fk_emp_dept FOREIGN KEY(dep_id) REFERENCES dept(id)
	
);
-- 建完表后添加外键约束 
alter table emp add CONSTRAINT fk_emp_dept FOREIGN key(dep_id) REFERENCES dept(id);
-- 删除外键
alter table emp drop FOREIGN KEY fk_emp_dept;