当前位置: 首页 > article >正文

MySQL record 05 part

外键
注意,外键所在的表一般被称为从表,被引用的表被称为主表
直接删除主表会报错,因为主表被从表(有外键的那个表)所引用,所以,删除主表(被引用数据的表)之前,要先删除子表(外键所在的表),然后再去删除主表,就不会报错了。
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
图中的注意第二条,所示外键名是不允许加引号的,不管是单引号也好还是双引号也好,都不允许。
在这里插入图片描述
通过外键去引用别的表中对应列的数据,之所以叫外键,是因为通过此键可以外接到其他表中的数据。

在这里插入图片描述

september2024the11thWednsday


创建外键语句:

ALTER TABLE student ADD CONSTRAINT fk_id FOREIGN KEY(gid) REFERENCES
grade(id);

创建外键后,通过表创建语句查看表的详细结构,结果如下:

CREATE TABLE student ( sid int NOT NULL, sname varchar(36)
DEFAULT NULL, gid int NOT NULL, PRIMARY KEY (sid), KEY
fk_id (gid), CONSTRAINT fk_id FOREIGN KEY (gid) REFERENCES
grade (id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4
COLLATE=utf8mb4_0900_ai_ci

创建外键时,关于外键的语句:
KEY `fk_id` (`gid`),   
CONSTRAINT `fk_id` FOREIGN KEY (`gid`) 
REFERENCES `grade` (`id`)

在这里插入图片描述

删除外键语句:

ALTER TABLE student DROP FOREIGN KEY fk_id;

删除外键后,通过表创建语句查看表的详细结构,结果如下:

CREATE TABLE student ( sid int NOT NULL, sname varchar(36)
DEFAULT NULL, gid int NOT NULL, PRIMARY KEY (sid), KEY
fk_id (gid) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4
COLLATE=utf8mb4_0900_ai_ci
在这里插入图片描述

删除外键后,剩下的关于外键的语句:
KEY `fk_id` (`gid`) 

添加外键约束的参数说明:

这里是引用
cascade,小瀑布;层叠
这里可以理解为级联,意思是,改动一个表,另一个表也会被影响,注意,这里的改动,分为两个方向,一个是删除,另一个是更新,可以分别指定,即可以单独只指定删除,或者单独只指定更新,也可以同时指定删除和更新 。
在这里插入图片描述
例如,指定删除为级联(cascade)操作 ,指定更新为约束(restrict)操作

september2024the14thSaturday

删除外键

这里是引用
在这里插入图片描述
在这里插入图片描述

关联表的关系:
在这里插入图片描述
September15th2024Sunday


交叉连接:

在这里插入图片描述
在这里插入图片描述
本例交叉连接的结果是:
把所有的员工放入所有的部门中,4个部门中每个部门都有4个员工,所以是4x4=16条数据记录,
也可以从员工的角度看,那就是,每个员工都同时归属于4个部门,
在这里插入图片描述


内连接

在这里插入图片描述
employee:
在这里插入图片描述
department:
在这里插入图片描述
内连接查询:
SELECT employee.name,department.dname FROM department JOIN employee ON department.did=employee.did;
在这里插入图片描述

注意,在日常的查询语句中,各个字段之间一定要加上逗号,否则查询报错,如下:
SELECT employee.name,department.dname FROM department JOIN employee ON department.did=employee.did;
字段间有逗号的,语句会顺利执行,
SELECT employee.name department.dname FROM department JOIN employee ON department.did=employee.did;
字段间没有逗号的,语句执行时会报错,


外连接查询:

左外连接,以左表为主,
这里是引用示为空
右外连接,以右表为主,
在这里插入图片描述
不管左外还是右外,
1.谁在右侧,就以谁为主,
2.符合 ON 条件的记录,主表里的统统显示出来,从表规则是有的就显示,没有的要标记为NULL


复合条件连接查询:

在这里插入图片描述
举例:
SELECT employee.name,employee.age,department.dname FROM department JOIN employee ON department.did=employee.did ORDER BY age;
在这里插入图片描述


子查询

这里是引用
带有子查询的select语句,子查询会被小括号包起来,将先进行子查询,然后以拿到的结果作为过滤条件再继续查询,子查询先儿子再爸爸,
注意,子查询必须被小括号包围。

september2024the17thTuesday


http://www.kler.cn/news/308987.html

相关文章:

  • mysql5.7常用操作命令手册
  • 是时候对企业数字化转型进行一次复盘了
  • idea 编辑器常用插件集合
  • 如何恢复已删除的远程分支
  • 项目中遇到的问题
  • MyBatisPlus 使用 IPage 分页
  • 神经网络-MNIST数据集训练
  • 回归预测|基于鲸鱼WOA优化最小二乘支持向量机数据回归预测模型Matlab程序 含基础LSSVM程序 有对比 WOA-LSSVM
  • 深度学习计算
  • 【笔记】二维DP
  • 浅谈C#之AutoResetEvent和ManualResetEvent
  • 【HTML】Html标签
  • Redis 入门 - 收官
  • 一款.NET开源的i茅台自动预约小助手
  • Python热频随机森林分类器算法模型模拟
  • mac系统安装最新(截止2024.9.13)Oracle JDK操作记录
  • C++速通LeetCode简单第10题-翻转二叉树
  • Flink难点和高阶面试题:Flink的状态管理机制如何保证数据处理的准确性和完整性
  • 一步到位:通过 Docker Compose 部署 EFK 进行 Docker 日志采集
  • FastAPI--如何自定义Docs UI,包括多个APP、静态资源、元数据等
  • kotlin的密封类
  • springboot+redis+缓存
  • 二十种编程语言庆祝中秋节
  • CesiumJS+SuperMap3D.js混用实现通视分析
  • SprinBoot+Vue基于推荐算法的智能书店的设计与实现
  • 车载软件架构 --- SOA设计与应用(下)
  • grafana升级指南
  • vue table id一样的列合并
  • 深度学习和机器学习的区别
  • linux-安全管理-用户认证