数据库-MySQL-基础(8)-约束

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 目录概述 约束演示外键约束删除/更新行为

目录

概述

约束演示

外键约束

删除/更新行为


概述

1、概念:约束是作用于表中字段上的规则,用于限制存储表中的数据

2、目的:保证数据库中数据的正确、有效性和完整性

3、分类:

image.png4、注意: 约束是作用表中字段上的,可以在创建表 / 修改表时候添加约束


约束演示

案例:根据需求完成表结构的创建

image.png

代码

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);

image.png

注意目前上述的俩张表,在数据库层面并未建立外键关联,无法保证数据的一致性和完整性  的。

语法

添加外键

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号部门,那么程序就会报错,提示你有外键存在


删除/更新行为

image.png

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表会变成这样

image.png

使用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表会变成这样

image.png


相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
相关文章
|
3月前
|
人工智能 运维 关系型数据库
数据库运维:mysql 数据库迁移方法-mysqldump
本文介绍了MySQL数据库迁移的方法与技巧,重点探讨了数据量大小对迁移方式的影响。对于10GB以下的小型数据库,推荐使用mysqldump进行逻辑导出和source导入;10GB以上可考虑mydumper与myloader工具;100GB以上则建议物理迁移。文中还提供了统计数据库及表空间大小的SQL语句,并讲解了如何使用mysqldump导出存储过程、函数和数据结构。通过结合实际应用场景选择合适的工具与方法,可实现高效的数据迁移。
618 1
|
19天前
|
存储 安全 关系型数据库
MySQL数据库约束条件概述及其重要性讨论。
正确地实现并管理好各类紧缩条件将直接影响到企业信息管理水平与服务质量,在当今大数据背景下更显得格外重要;任何设计师都需要深刻理解其原理与运作机晰承担起责任使得所托管资料安全稳固同时又具备良好伸缩灵活度迎合日益复杂商务需求变动.
74 11
|
3月前
|
SQL 关系型数据库 MySQL
Go语言数据库编程:使用 `database/sql` 与 MySQL/PostgreSQL
Go语言通过`database/sql`标准库提供统一数据库操作接口,支持MySQL、PostgreSQL等多种数据库。本文介绍了驱动安装、连接数据库、基本增删改查操作、预处理语句、事务处理及错误管理等内容,涵盖实际开发中常用的技巧与注意事项,适合快速掌握Go语言数据库编程基础。
227 62
|
2月前
|
SQL 存储 关系型数据库
MySQL功能模块探秘:数据库世界的奇妙之旅
]带你轻松愉快地探索MySQL 8.4.5的核心功能模块,从SQL引擎到存储引擎,从复制机制到插件系统,让你在欢声笑语中掌握数据库的精髓!
|
2月前
|
SQL Oracle 关系型数据库
比较MySQL和Oracle数据库系统,特别是在进行分页查询的方法上的不同
两者的性能差异将取决于数据量大小、索引优化、查询设计以及具体版本的数据库服务器。考虑硬件资源、数据库设计和具体需求对于实现优化的分页查询至关重要。开发者和数据库管理员需要根据自身使用的具体数据库系统版本和环境,选择最合适的分页机制,并进行必要的性能调优来满足应用需求。
90 11
|
2月前
|
SQL 关系型数据库 MySQL
【赵渝强老师】MySQL中的数据库对象
本教程详细介绍了MySQL数据库中的常见对象,包括表、索引、视图、事件、存储过程和存储函数的创建与管理。内容涵盖表的基本操作、索引的使用、视图简化查询、事件调度功能等,并通过具体示例演示相关SQL语句的使用方法。
|
SQL Java 数据库连接
MySQL---数据库从入门走向大神系列(十五)-Apache的DBUtils框架使用
MySQL---数据库从入门走向大神系列(十五)-Apache的DBUtils框架使用
303 0
MySQL---数据库从入门走向大神系列(十五)-Apache的DBUtils框架使用
|
SQL 关系型数据库 MySQL
MySQL---数据库从入门走向大神系列(六)-事务处理与事务隔离(锁机制)
MySQL---数据库从入门走向大神系列(六)-事务处理与事务隔离(锁机制)
219 0
MySQL---数据库从入门走向大神系列(六)-事务处理与事务隔离(锁机制)
|
存储 SQL 关系型数据库
MySQL---数据库从入门走向大神系列(五)-存储过程
MySQL---数据库从入门走向大神系列(五)-存储过程
207 0
MySQL---数据库从入门走向大神系列(五)-存储过程
|
数据库
MySQL---数据库从入门走向大神系列(四)-子查询、表与表之间的关系(3)
MySQL---数据库从入门走向大神系列(四)-子查询、表与表之间的关系
270 0
MySQL---数据库从入门走向大神系列(四)-子查询、表与表之间的关系(3)

推荐镜像

更多