SQL-基础 --约束

219 阅读1分钟

约束的概念和分类

1、约束的概念:

  • 约束是作用于表中列上的规则,用于限制加入表的数据

  • 约束的存在保证了数据库中数据的正确性、有效性和完整性

2、约束的分类

image.png

  • Tips:MySQL不支持检查约束

image.png

image.png

image.png

image.png

DROP TABLE if EXISTS emp;

CREATE table emp(
  id int primary key auto_increment, -- 限制员工id填写 主键且自增长(主键:primary key(主键只能定义一个)) (自增长:auto_increment (当列是数字类型并且唯一))
	name varchar(10) not null unique, -- 限制员工名字填写 非空且唯一(非空:not null) (唯一:unique)
	joindate date not null, -- 限制员工入职时间填写 非空
	salary double(7,2) not null,-- 限制员工工资填写  非空
	bonus double(7,2) default 0 -- 限制员工奖金填写 (默认约束:default 将没有填写的值设置成默认值));
	INSERT into emp(id,name,joindate,salary,bonus) values(NULL,'赵六','1999-02-18',5000,300);
	SELECT id,name,joindate,salary,bonus FROM emp;

特殊一点的外键约束

image.png

CREATE table staff(
		 id int PRIMARY KEY auto_increment,
     name varchar(20),
		 age int,
		 dep_id int,
		 -- 添加外键约束 dep_id关联dep表的id主键(必须要有主键才能关联)
		 constraint fk_staff_dep FOREIGN key(dep_id) references dep(id)
);
CREATE table dep(
			id int PRIMARY KEY auto_increment, -- 主键
			dep_name varchar(20),
			address varchar(50)
);

-- 创建表之后添加外键约束
-- alter TABLE staff add CONSTRAINT fk_staff_dep foreign key(dep_id)REFERENCES dep(id);

insert into staff(name,age,dep_id) values('张三',20,1),('李四',20,1),('王五',20,1),('赵六',20,2),('孙七',20,2),('周八',20,2);
insert into dep(dep_name,address) VALUES('研发部','杭州'),('销售部','深圳');				
select name,age,dep_id from staff;
select id,dep_name,address from dep;

ALTER table staff DROP FOREIGN key fk_staff_dep;		-- 删除外键约束