mysql数据库 外键约束

article/2025/5/20 14:19:42

外部关键字

在以后我们统一将外部关键字叫做外键,外键就是另一张表中的主键

问:外键有啥用啊?
答:外键的主要作用就是保持数据的一致性,完整性。

再问:怎么保证的呢?
答:看图。

 

如图有两张表,classIdT_Student的外键,是T_class 表的主键, 如果我们要删除T_class 表中classId1的字段,程序是会报错的,因为t_student表中有数据和classId1的字段关联了,是不能删除的,这样子就保证了数据的一致性和完整性

继续问:那怎么才能删除呢?
接着答:需要先删除T__student表中classId1的两个字段。

如何给表添加外部关键字

MySQL中给表中字段添加外键约束的语法规则如下:

 
  1. CONSTRAINT 外键名 FOREIGN KEY 字段名 REFERENCES 主表名(主键名)

举个例子:现在有两张表,t_empt_dept如下。

t_dept表

字段名称数据类型备注
deptIdINT部门编号
nameVARCHAR(22)部门名称
locationVARCHAR(50)部门位置

t_emp表

字段名称数据类型备注
idINT员工编号
nameVARCHAR(22)员工姓名
deptIdINT部门ID(外键类型必须和对应主键类型一直)

我们来创建两张表,并给员工表(t_emp)添加外键:

  1. CREATE TABLE t_dept
    (
    deptId INT PRIMARY KEY,
    name VARCHAR(22),
    location VARCHAR(50)
    );
    
    CREATE TABLE t_emp
    (
    id INT PRIMARY KEY,
    name VARCHAR(22),
    deptId INT,
    CONSTRAINT fk_emp_dept1 FOREIGN KEY(deptId) REFERENCES t_dept(deptId)
    );

实际操作如图:

 

编程要求

创建两张表如下,给t_student表添加外键约束,外键为classId,外键名称为fk_stu_class1

表t_class

字段名称数据类型备注
idINT班级Id,主键
nameVARCHAR(22)班级名称

表t_student

字段名称数据类型备注
idINT学号,主键
nameVARCHAR(22)学生姓名
classIdINT班级ID,外键
mysql> create database MyDb-> ;
Query OK, 1 row affected (0.01 sec)mysql> use MyDb;
Database changedmysql> create table t_class(-> id int primary key,-> name varchar(22)-> );Query OK, 0 rows affected (0.00 sec)mysql> desc t_class;+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id    | int(11)     | NO   | PRI | NULL    |       |
| name  | varchar(22) | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------
mysql> CREATE TABLE t_student(-> id int primary key,-> name varchar(22),-> classId int,-> CONSTRAINT fk_stu_class1 FOREIGN KEY(classId) REFERENCES t_class(id)-> );
Query OK, 0 rows affected (0.01 sec)

在创建表之前你需要先创建数据库:MyDb,并且将两张表创建在MyDb数据库中


http://chatgpt.dhexx.cn/article/IlKlFyqW.shtml

相关文章

为啥禁用外键约束

【阿里JAVA规范】 :不得使用外键与级联,一切外键概念必须在应用层解决 阿里巴巴为什么这么规定? 1.每次做DELETE 或者UPDATE都必须考虑外键约束,会导致开发的时候很痛苦,测试数据极为不方便,也就是说插入一条主记录的…

Mysql外键约束怎么删除

记录一下碰到的问题。由于我是使用PowerDesigner来建mysql物理模型的,为了表与表之间的关系更加清楚,我给他们连线了。之后我就用它生成的SQL语句在navicat把表建出来,我看见没问题就直接用了,毕竟初学者嘛,嘿嘿。 到我…

mysql怎么写主外键_mysql主外键约束怎么写?

mysql主键约束的写法:“CREATE TABLE 表名(字段名 数据类型 PRIMARY KEY)”;mysql外键约束的写法:“CREATE TABLE 表名(FOREIGN KEY 字段名 REFERENCES 主表名 主键列)”。 mysql主键约束 主键(PRIMARY KEY)的完整称呼是“主键约束”,是 MySQL 中使用最为频繁的约束。一般情…

mysql外键约束怎么写_mysql外键约束怎么写

mysql外键约束的写法:【[CONSTRAINT ] FOREIGN KEY 字段名 REFERENCES 主键列1】。外键约束是表的一个特殊字段,经常与主键约束一起使用。 在 CREATE TABLE 语句中,通过 FOREIGN KEY 关键字来指定外键。 (推荐学习:mysql教程) 具体的语法格式如下:[CONSTRAINT ] FOREIGN K…

选型必看:RabbitMQ 七战 Kafka,差异立现

点击上方 "程序员小乐"关注, 星标或置顶一起成长 每天凌晨00点00分, 第一时间与你相约 每日英文 Sometimes you just have to pick yourself up and carry on. 有时候,你只能自己振作起来,继续努力下去。 每日掏心话 夜晚想要矫情的时候&#…

小程序上传发布版本配置以及登录报错

钉钉小程序编写完之后需要上传先附上操作地址https://oa.dingtalk.com/?redirecthttp%3A%2F%2Foa.dingtalk.com%2Fomp%2Fapi%2Fmicro_app%2Fadmin%2Flanding%3Fcorpid%3Dopen-dev.dingtalk.com%26redirect_url%3Dhttp%3A%2F%2Fopen-dev.dingtalk.com%2F#/login。 首先需要确认…

2021-08-25

omp版本swan linux netcdf export CCgcc export CXXg export FCgfortran export F77gfortran export F90gfortran perl switch.pl -unix -pun -netcdf make config nf –config --all 查看netcdf fortran库安装位置 Fflags 写在FLAGS_SER后面 Flibs 写在else Libs_ser后面 –…

【小技巧】如何安装下载MATLAB最新的工具箱

小伙伴们,在使用matlab的时候,经常会遇到某些函数无法找到而导致程序报错,通常情况,一般是由于该函数是MATLAB一些工具箱中的函数,而原始版本的MATLAB是没有这个工具箱的,所以导致报错。那么如何查看当前版…

数字化时代,如何做好用户体验与应用性能管理

引言 随着数字化时代的到来,各个行业的应用系统从传统私有化部署逐渐转向公有云、行业云、微服务,这种变迁给运维部门和应用部门均带来了较大的挑战。基于当前企业 IT 运维均为多部门负责,且使用多种运维工具,因此,当…

omp的一个不错的文章

实验平台:win7, VS2010 1. 介绍 平行计算机可以简单分为共享内存和分布式内存,共享内存就是多个核心共享一个内存,目前的PC就是这类(不管是只有一个多核CPU还是可以插多个CPU,它们都有多个核心和一个内存&a…

matlab 支撑集,基于OMP算法的快速压缩感知图像重构

引用本文 马博珩, 彭艺. 基于OMP算法的快速压缩感知图像重构[J].云南大学学报(自然科学版), 2017,39(2): 207-211. MA Bo-heng, PENG Yi. Fast compressed sensing image reconstruction based on OMP algorithm[J]. Journal of Yunnan University(Natural Sciences), 2017,39(…

使用omp并行技术实现快排加速

快排基本原理: 快速排序可以说是最为常见的排序算法,冒泡排序时间复杂度达到了O(N2),而桶排序容易造成浪费空间。快排(Quicksort)就成为了不错的选择。 1、原理:快排需要找一个数作…

粒子群算法Fortran代码(OMP并行)

粒子群算法可用于解决强非线性优化问题,原理较为简单(参加:最优化算法之粒子群算法(PSO)_青萍之末的博客-CSDN博客_粒子群算法),这里给出Fortran代码实现模块( module POS)。该代码适用于任意参数个数的情况&#xff0…

基于C语言实现并行程序设计

资源下载地址:https://download.csdn.net/download/sheziqiong/86771681 资源下载地址:https://download.csdn.net/download/sheziqiong/86771681 lab1 分别用omp和mpi实现树型求和和蝶式求和 树型omp实现思路:对每一层的计算并行化&#xf…

0成本睡后收入!从0教你搭建外卖红包CPS小程序

外卖返利小程序源码; 轻松部署搭建,小程序服务号数据互通; 对接美团官方; 佣金比例自定义分配; 三级分佣,所有资金数据一目了然; 拉新立减最低4.9元购月卡; 签到20天免费领取会员卡; 提现秒到账&#xff01…

SLAM前端之ndt_omp使用

ndt_omp(部分参考https://zhuanlan.zhihu.com/p/48853182) 简介: koide3/ndt_omp。继承自pcl ndt,并做了多线程等优化。参考:koide3/ndt_omp 环境需求: 1) 需要编译安装pcl-1.8.1或以上版本。因为ndt_omp是继承自pcl ndt的。 …

正交匹配追踪算法OMP

浅谈压缩感知&#xff08;九&#xff09;&#xff1a;正交匹配追踪算法OMP </h1><div class"clear"></div><div class"postBody">主要内容&#xff1a; OMP算法介绍 OMP的MATLAB实现 OMP中的数学知识 一、OMP算法介绍 来源&#…

OMP算法代码学习

版权声明&#xff1a;本文为博主原创文章&#xff0c;转载请注明出处&#xff0c;谢谢&#xff01; https://blog.csdn.net/jbb0523/article/details/45130793 </div><link rel"stylesheet" href"https://csdnimg.cn/release/phoenix/…

美团饿了么返利公众号小程序搭建(付源码)

外卖返利小程序源码; 轻松部署搭建&#xff0c;小程序服务号数据互通&#xff1b; 对接美团官方; 佣金比例自定义分配; 三级分佣&#xff0c;所有资金数据一目了然&#xff1b; 拉新立减最低4.9元购月卡&#xff1b; 签到20天免费领取会员卡&#xff1b; 提现秒到账&#xff01…

OMP算法笔记

OMP算法笔记 OMP算法整理&#xff08;以备自己后期查阅&#xff0c;集合了几篇博主的文章&#xff09; &#xff08;1&#xff09;数理知识基础–投影矩阵 详见&#xff1a; 作者&#xff1a;nineheaded_bird 来源&#xff1a;CSDN 原文&#xff1a;https://blog.csdn.net/teng…