数据库常用命令之外键(foreign key)之多对一(总结,基础)

2023-11-19

我是小白,刚接触MySQL不久,现阶段正在学习,为此在CSDN上留下自己的学习笔记。如果有错误的地方还请大家见谅,评论或者私发我错误地方哦,谢谢大家,嘿嘿~

此篇将记录外键的相关知识,上篇内容为对一张表的约束条件(传送门:创建表的完整性语法

外键(foreign key):百度百科

引言:

       要使两张表形成关联,外键只能引用外表中的列的值或使用空值。可以保持数据一致性,完整性,主要目的是控制存储在外键表中的数据。

      如果公共关键字在一个关系中是主关键字,那么这个公共关键字被称为另一个关系的外键。由此可见,外键表示了两个关系之间的相关联系。以另一个关系的外键作主关键字的表被称为主表,具有此外键的表被称为主表的从表。外键又称作外关键字。

员工表(关联表),部门表(被关联表) 

对上表进行关联

foreign key注意:

1、被关联的字段必须是一个key,通常是id字段

2、创建表时:必须先建立被关联的表,才能建立关联表

建表(先创建部门表)

建立部门表:

create table dep(
id int primary key auto_increment,
dep_name varchar(20),
dep_info varchar(20)
);

建立员工表:

create table emp(
id int primary key auto_increment,
name varchar(20),
age int,
dep_id int,
constraint fk_emp_dep
foreign key(dep_id) references dep(id)
);

运行截图

语法

    constraint  外键名字  foreign  key(当前表需要关联的id:此处为dep_id)   references   被关联的表名:此处为dep(被关联表的id,此处为id)

注:

1.constraint 外键名字:也可以不写,外键名字自己取,此处取为fk_emp_dep

2."constraint fk_emp_dep
foreign key(dep_id) references dep(id)"

可以写在一行,constraint fk_emp_dep foreign key(dep_id) references dep(id),这里为了美观写为了两行。

插入值(先插入部门值)

插入部门值:

insert into dep(dep_name,dep_info) values
('python','python_course'),
('mysql','mysql_course'),
('math','math_course');

插入员工值:

insert into emp(name,age,dep_id) values
('江',21,1),
('顾',18,2),
('盛',17,3),
('停',35,1),
('方',36,3);

运行截图

查询:select * from emp,dep where emp.dep_id = dep.id order by emp.id asc;

运行截图

注:

1.where emp.dep_id = dep.id:使员工表的dep_id与被关联表部门表的dep.id相对应。

2.order by emp.id asc:按正序排列显示。

删除

1.删除外键

一般不用删除外键,外键是考虑好之后建立的,如果一定要删除的话,语句为:

        alter table 表名 drop foreign key  外键名字;

此处不进行演示,感兴趣的话可以私下验证。

2.删除表

要先删除关联表再删除被关联表。

        drop table emp;

        drop table dep;

运行截图

3.删除记录

要删除部门表里面的一个id需要先把它被关联的字段删除

        delete from emp where dep_id =2;

        delete from dep where id =2;

运行截图

如果要更新或删除同步,员工表设置成更新删除同步需要加 on update cascade on delete cascade

重新建立表,插入值

建立员工表:

create table emp(
    -> id int primary key auto_increment,
    -> name varchar(20),
    -> age int,
    -> dep_id int,
    -> foreign key(dep_id) references dep(id)
    -> on update cascade on delete cascade
    -> );

运行截图

此篇为外键之多对一。

如果您感觉有用的话,请点赞评论收藏哦,非常感谢,好人一生平安!!

祝大家天天开心❀❀❀❀❀❀*★,°*:.☆( ̄▽ ̄)/$:*.°★* 。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

数据库常用命令之外键(foreign key)之多对一(总结,基础) 的相关文章

随机推荐

  • linux文件代理高速下载,告别龟速下载!

    原始下载链接 wget https github com SwinTransformer storage releases download v1 0 0 swin tiny patch4 window7 224 pth 高速下载 wget
  • windows注册表参数(%1,%2,%v)

    windows注册表是不区分大小写的 参数 含义 1 文件路径 2 系统默认的打印机 3 文件扇区 4 端口 D 文件路径 L 文件长路径 V 文件路径 W 当前文件的父目录的路径 参考 https blog csdn net meng s
  • 唯一化算法

    源代码git地址 对于无序列表的唯一化算法 从前往后依次处理节点p 在p的前驱中查找 通过find函数 值相同者 则调用remove函数将相同者删除 template
  • 1093: 数1的个数

    存限制 128 MB 题目描述 给定一个十进制正整数n 1 n 10000 写下从1到n的所有整数 然后数一下其中出现的数字 1 的个数 例如当n 2时 写下1 2 这样只出现了1个 1 当n 12时 写下1 2 3 4 5 6 7 8 9
  • Qt stylesheet border-color属性,QFontMetrics Class

    一 border color border color 属性设置四条边框的颜色 此属性可设置 1 到 4 种颜色 border color 属性是一个简写属性 可设置一个元素的所有边框中可见部分的颜色 或者为 4 个边分别设置不同的颜色 请
  • 程序员常用命令集,只收集名字 ^^

    export PATH home hanmeimei local bin PATH which ls file helloworld objdump help objdump h s d exit o ldd helloworld ulim
  • ROS里程计:navigation/Tutorials/RobotSetup/Odom

    ROS里程计 navigation Tutorials RobotSetup Odom 通过ROS发布里程表信息 1 通过ROS发布里程表信息 2 nav msgs Odometry消息 3 使用tf发布Odometry转换 4 编写代码
  • IDEA中web项目c3p0-config.xml文件的配置及存放目录

    IDEA中web项目c3p0 config xml文件的配置及存放目录 今天在IDEA上折腾了很长一段时间 始终连接不上数据库 日志总是说找不到mysql 这是我的测试代码 Test public void fun2 throws SQLE
  • windows下java swt实现操作redis的客户端工具

    原文 windows下java swt实现操作redis的客户端工具 源代码下载地址 http www zuidaima com share 1902705862708224 htm redisclient 1 0 正式发布 适用于多个 R
  • ip广播系统服务器软件,【网络广播服务器软件IP网络广播软件数字广播软件】 - 太平洋安防网...

    参数说明 品牌 万凯wankai 详细描述 具备 版权局颁发的计算机软件 标准TCP IP网络协议 安装于连接以太网的计算机 IP广播的网络终端具有 立的ID号与IP地址 可以单 接收服务器的个性化定时播放节目 定时播放的操作 可以通过电脑
  • Hibernate之inverse和cascade详解

    继Hibernate学习笔记整理之后 发现inverse和cascade这两个属性在配置过程中比较含糊 仔细比较一下是有些地方比较像 所以很容易搞糊涂 借助此文来阐述下inverse和cascade的区别 什么是inverse 默认值为fa
  • centos8安装postgresql步骤

    1 安装源 1 sudo yum y install epel release 2 postgresql官网发布的postgresql对应的安装源 sudo yum install y https download postgresql o
  • There are multiple modules with names that only differ in casing.

    问题 在 npm run dev 后 控制台出现警告 没有出现链接 但是在浏览器上直接输入地址http localhost 8080 又可显示界面 There are multiple modules with names that onl
  • 华为机试HJ55 挑7

    HJ55 挑7 Python 题目 解题思路 代码 结果 题目 解题思路 1 多组输入 需要循环 2 循环查找到输入数值即可 字符串查找用in 能否整除 求余后判断是否 0 3 最后打印找到的数字的列表长度 代码 def func n in
  • 逐行对比LLaMA2和LLaMA模型源代码

    几个小时前 2023年7月18日 Meta发布了允许商用的开源模型LLaMA2 笔者逐行对比了LLaMA2模型源代码 和LLaMA相比 几乎没有改动 细节如下 是否改动 LLaMA2 LLaMA 模型整体构架 无 Transformer T
  • 面试必考真题

    1 输入一个链表 反转链表后 输出新链表的表头 package com csu marden public class Demo1 public static void main String args Node head new Node
  • 解决“17: 错误:程序中有游离的‘\240’,\302’

    参考链接 https blog csdn net asuphy article details 54602426 执行如下命令即可 sed i s o240 o302 g dy haikang test cpp
  • Invalid bound statement (not found):

    BUG描述 在执行动态SQL出现问题 原因 mapper接口中的方法名和mapper xml中的id标签不一致 解决方案 修改mapper接口中的方法名 使其对应到mapper xml中的id标签 参考资料
  • openssl的x509命令简单入门

    openssl的x509命令简单入门 openssl是一个强大的开源工具包 它能够完成完成各种和ssl有关的操作 命令说明 openssl help 会得到如下的提示 openssl Error help is an invalid com
  • 数据库常用命令之外键(foreign key)之多对一(总结,基础)

    我是小白 刚接触MySQL不久 现阶段正在学习 为此在CSDN上留下自己的学习笔记 如果有错误的地方还请大家见谅 评论或者私发我错误地方哦 谢谢大家 嘿嘿 此篇将记录外键的相关知识 上篇内容为对一张表的约束条件 传送门 创建表的完整性语法