数据库-MySQL-基础(8)-约束
2023-09-27 14:19:56 时间
目录
概述
1、概念:约束是作用于表中字段上的规则,用于限制存储表中的数据
2、目的:保证数据库中数据的正确、有效性和完整性
3、分类:
4、注意: 约束是作用表中字段上的,可以在创建表 / 修改表时候添加约束
约束演示
案例:根据需求完成表结构的创建
代码
create table user(
id int primary key auto_increment,
name varchar(10) not null unique ,
age int check ( age>0 && age<= 120 ),
status char(1) default 1,
gender char(1)
)comment '用户表';
外键约束
概念
外键用来让俩张表的数据之间建立联系,从而保证数据的一致性和完整性。
创建表代码
--准备数据
create table dept(
id int auto_increment primary key ,
name varchar(10) not null
)comment '部门表';
insert into dept (id, name) values (1,'研发部'),(2,'市场部'),(3,'财务部'),(4,'销售部'),(5,'总经办');
create table emp(
id int auto_increment primary key ,
name varchar(10) not null ,
age int,
job varchar(10),
salary int ,
entrydate datetime,
managerid int comment '直属领导',
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);
注意:目前上述的俩张表,在数据库层面并未建立外键关联,无法保证数据的一致性和完整性 的。
语法
添加外键
CREATE TABLE 表名(
字段名 数据类型,
...
[CONSTRAINT] [外键名称] FOREIGN KEY(外键字段名)REFERENCES 主表(主表列名)
);
ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGN KEY(外键字段名) REFERENCES 主表(主表列名);
代码案例(接上面的例子)
--添加外键
alter table emp add constraint fk_emp_dept_id foreign key (dept_id) references dept(id);
--删除外键
alter table emp drop foreign key fk_emp_dept_id;
当你添加外键了以后如果删除一个表,比如上面案例中出现的1号部门,那么程序就会报错,提示你有外键存在
删除/更新行为
ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGN KEY(外键字段) REFERENCES 主表名(主表字段名) ON UPDATE CASCADE ON DELETE CASCADE;
案例:
使用cascade
alter table emp add constraint fk_emp_dept_id foreign key (dept_id) references dept(id) on update cascade on delete cascade ;
如果删除上面dept部门1表之后,emp表会变成这样
使用set null
alter table emp add constraint fk_emp_dept_id foreign key (dept_id) references dept(id) on update set null on delete set null ;
如果删除上面dept部门1表之后,emp表会变成这样
相关文章
- mysql数据库,如何在登录mysql之后执行操作系统上的SQL脚本?
- MySQL数据库解决乱码 latin1 转 gbk
- ASP.NET实现二维码 ASP.Net上传文件 SQL基础语法 C# 动态创建数据库三(MySQL) Net Core 实现谷歌翻译ApI 免费版 C#发布和调试WebService ajax调用WebService实现数据库操作 C# 实体类转json数据过滤掉字段为null的字段
- EnvironmentError: mysql_config not found
- dos下操作mysql数据库常用命令
- 2020年数据库概念与MySQL的安装与配置-从零基础入门MySQL-mysql8版本
- ubuntu 18.04 安装mysql 遇到语言格式不兼容性问题解决
- Eclipse连接mysql数据库
- 《深入浅出MySQL:数据库开发、优化与管理维护(第2版)》一一1.5 小结
- 安装MySQL-python
- MySQL数据库基础:安装+登入+SQL操作语句+数据库授权、备份、恢复+其他操作
- MySQL数据库:视图View
- oracle数据库兼容mysql的差异写法
- Mysql partition by
- 《零基础入门MySQL数据库》专栏简介
- 【数据库】MySQL概念知识语法-基础篇(DQL),真的很详细,一篇文章你就会了