首页 > 数据库 >Mysql-约束

Mysql-约束

时间:2024-05-26 11:29:00浏览次数:39  
标签:外键 约束 dept emp Mysql ID 主表 id

约束

概念:约束是作用于表中字段上的规则,用于限制存储在表中的数据。 目的:保证数据库中数据的正确、有效性和完整性。

约束演示:

外键约束

左侧的 emp 表是员工表,里面存储员工的基本信息,包含员工的 ID 、姓名、年龄、职位、薪资、入职日 期、上级主管ID 、部门 ID ,在员工的信息中存储的是部门的 ID dept_id ,而这个部门的 ID 是关联的部门表dept 的主键 id ,那 emp 表的 dept_id 就是外键, 关联的是另一张表的主键。

语法

1). 添加外键

CREATE TABLE 表名(
字段名 数据类型,
...
[CONSTRAINT] [外键名称] FOREIGN KEY (外键字段名) REFERENCES 主表 (主表列名)
);
ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGN KEY (外键字段名)
REFERENCES 主表 (主表列名) ;

2). 删除外键

ALTER TABLE 表名 DROP FOREIGN KEY 外键名称;
alter table emp drop foreign key fk_emp_dept_id;

删除/更新行为

添加了外键之后,再删除父表数据时产生的约束行为,我们就称为删除 / 更新行为。具体的删除 / 更新行 为有以下几种:
ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGN KEY (外键字段) REFERENCES
主表名 (主表字段名) ON UPDATE CASCADE ON DELETE CASCADE;
1). CASCADE
alter table emp add constraint fk_emp_dept_id foreign key (dept_id) references
dept(id) on update cascade on delete cascade ;
2). 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 ;

多表查询

多表关系

项目开发中,在进行数据库表结构设计时,会根据业务需求及业务模块之间的关系,分析并设计表 结构,由于业务之间相互关联,所以各个表结构之间也存在着各种联系,基本上分为三种: 一对多 ( 多对一 ) 、多对多 、一对一

一对多(多对一)

多对多

一对一

笛卡尔积 : 笛卡尔乘积是指在数学中,两个集合 A 集合 和 B 集合的所有组合情况。 在 SQL 语句中,如何来去除无效的笛卡尔积呢? 我们可以给多表查询加上连接查询的条件即可。

标签:外键,约束,dept,emp,Mysql,ID,主表,id
From: https://blog.csdn.net/weixin_71113035/article/details/139180969

相关文章

  • Django和MySQL与Vue项目之间的数据是如何流动实现交互响应的
    在一个前后端分离的Django和Vue项目中,Django作为后端,MySQL作为数据库,Vue作为前端,数据的流动和交互可以通过API来实现。以下是数据流动的过程及交互的详细说明:1.数据流动过程概述前端发送请求:Vue应用通过HTTP请求向Django后端发送数据请求(例如获取、创建、更新或删除数据)。后......
  • Java项目:校园周边美食探索(java+SpringBoot+Mybaits+Vue+elementui+mysql)
    源码获取:俺的博客首页"资源"里下载! 项目介绍基于Springboot+vue实现的校园周边美食探索及分享平台本系统包含管理员、用户两个角色。管理员:用户管理、美食鉴赏管理、好友管理、收藏管理、系统管理用户:登录、注册、个人中心管理、美食鉴赏管理、好友管理、收藏管理......
  • MySQL报错注入之Xpath报错&floor函数报错
    目录前言Xpath报错注入updatexml()函数extractvalue()函数floor函数报错count与groupby的虚拟表总结前言报错注入的使用场景一般是页面无法正常回显数据库查询的内容,但是会详细显示查询过程的错误信息。如果连错误信息都没有,那就是盲注了。报错注入的原理就是将子查询语句查询......
  • MySQL入门——增删查改(下)
    数据库约束约束类型NOTNULL-指示某列不能存储NULL值。UNIQUE-保证某列的每行必须有唯一的值。DEFAULT-规定没有给列赋值时的默认值。PRIMARYKEY-NOTNULL和UNIQUE的结合。确保某列(或两个列多个列的结合)有唯一标识,有助于更容易更快速地找到表中的一个特定的......
  • MySQL函数
    MySQL数据库提供了很多函数包括:数学函数;字符串函数;日期和时间函数;条件判断函数;系统信息函数;加密函数;格式化函数;mysql高级教程:http://cainiao.guashuw.com/一、数学函数数学函数主要用于处理数字,包括整型、浮点数等。函数作用ABS(x)返回x的绝对值......
  • MySQL Grant命令
    MySQL赋予用户权限命令的简单格式可概括为:grant权限on数据库对象to用户 MySQL高级教程:http://cainiao.guashuw.com/一、grant普通数据用户,查询、插入、更新、删除数据库中所有表数据的权利。grantselectontestdb.*tocommon_user@'%'grantinsertontestdb.*......
  • 宠物服务系统 毕业设计 Springboot+Vue+Mysql+Java
    作者主页:毕业设计精选作者简介:9年JAVA全栈开发经验,专注JAVA技术、系统定制、远程指导,致力于企业数字化转型,CSDN博客专家摘要随着人类生存质量的提升以及生活模式的改变,越来越多的人在闲暇之余饲养宠物,来满足精神上的需求 。从而 使得宠物服务行业也得到了繁荣发展 ......
  • MySQL命令大全
    1、连接Mysql格式:mysql-h主机地址-u用户名-p用户密码1、连接到本机上的MYSQL。首先打开DOS窗口,然后进入目录mysql\bin,再键入命令mysql-uroot-p,回车后提示你输密码.注意用户名前可以有空格也可以没有空格,但是密码前必须没有空格,否则让你重新输入密码。如果刚安装好MYSQL,超级......
  • MySQL权限管理
    一、MySQL权限简介   关于mysql的权限简单的理解就是mysql允许你做你全力以内的事情,不可以越界。比如只允许你执行select操作,那么你就不能执行update操作。只允许你从某台机器上连接mysql,那么你就不能从除那台机器以外的其他机器连接mysql。MySQL高级教程:http://cainiao.guas......
  • (免费领源码)Java/Mysql数据库+53102互联网美食分享平台,计算机毕业设计项目推荐上万套实
    springboot互联网互联网美食分享平台系   院XXXX学科门类XXX专   业 XXX班级XXX学   号XXX姓   名XXX指导菜谱大全 XXX菜谱大全职称XXX2023年2月摘 要大数据时代下,数据呈爆炸式地增长。为了迎合信息化时代的潮流和信息化......