概述
演示
案例->
题解->
创建表-->AUTO_INCREMENT是自增
-- --------------------------------约束演示------------------------------------
create table user(
id int primary key auto_increment comment 'id主键',
name varchar(10) not null unique comment '姓名',
age int check ( age > 0 and age <= 120 ) comment '年龄',
status char(1) default '1' comment '状态',
gender char(1) comment '性别'
)comment '用户表';
插入数据-->
-- 插入数据
insert into user(name, age, status, gender) values ('Tom1',19,'1','男'),('Tom2',25,'0','男');
结果--->id由数据库自动维护
当姓名设置null时-->
insert into user(name, age, status, gender) values (null,19,'1','男');
结果--->报错
表中先添加一个Tom3->
再次添加Tom3检查是否可重复-->
insert into user(name, age, status, gender) values ('Tom3',19,'1','男');
结果--->报错
添加一个年龄age合法的数据-->
insert into user(name, age, status, gender) values ('Tom4',80,'1','男');
结果--->为什么主键id是5?因为前面再次添加Tom3时虽然报错但它依然向主键申请了+1
添加一个年龄age不合法的数据-->
insert into user(name, age, status, gender) values ('Tom5',-1,'1','男');
insert into user(name, age, status, gender) values ('Tom5',121,'1','男');
结果--->报错
检查状态默认值-->
insert into user(name, age, gender) values ('Tom5',120,'男');
结果--->
外键约束
概念
外键用来让两张表的数据之间建立连接,从而保证数据的一致性和完整性
例:
演示:
准备数据-->
-- ---------------外键约束--------------
-- 准备数据
create table dept(
id int auto_increment comment 'ID' primary key ,
name varchar(50) not null comment '部门名称'
)comment '部门表';
insert into dept (id, name) values (1,'研发部'),(2,'市场部'),(3,'财务部'),(4,'销售部'),(5,'总经办');
create table emp(
id int auto_increment comment 'ID' primary key ,
name varchar(50) not null comment '姓名',
age int comment '年龄',
job varchar(20) comment '职位',
salary int comment '薪资',
entrydate date comment '入职时间',
managerid int comment '直属领导ID',
dept_id int comment '部门id'
)comment '员工表';
insert into emp (id, name, age, job, salary, entrydate, managerid, dept_id) values
(1,'金庸',66,'总裁',20000,'2000-01-01',null,5),(2,'张无忌',20,'项目经理',12500,'2005-12-05',1,1),
(3,'杨逍',33,'开发',8400,'2000-11-03',2,1),(4,'韦一笑',48,'开发',11000,'2002-02-05',2,1),
(5,'常遇春',43,'开发',10500,'2004-09-07',3,1),(6,'小昭',19,'程序员鼓励师',6600,'2004-10-12',2,1);
结果--->
添加外键-->
-- 添加外键
alter table emp add constraint fk_emp_dept_id foreign key (dept_id) references dept(id);
结果--->
删除部门id为1-->
结果--->报错
删除外键-->
-- 删除外键
alter table emp drop foreign key fk_emp_dept_id;
结果--->
创建外键-->
-- 外键的删除和更新行为
alter table emp add constraint fk_emp_dept_id foreign key (dept_id) references dept(id) on update cascade on delete cascade ;
将研发部id修改为6-->
结果--->
将研发部删除-->
结果--->
创建外键-->
alter table emp add constraint fk_emp_dept_id foreign key (dept_id) references dept(id) on update set null on delete set null ;
将id为1的部门删除-->
结果--->