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

MySql(十三)

目录

mysql外键约束

准备工作

创建表

插入数据

创建表时添加外键

1..格式

2..创建表student表时,为其添加外键

3.插入数据测试

正常数据

异常数据

3.使用alter添加外键

删除外键

添加外键

4.Mysql外键不生效的原因

修改引擎

phpystudy的mysql位置


mysql外键约束

注:student是从表,class是主表. 在从表中添加外键约束

在从表中添加主表的主键

从表使用 on delete cascade 

        可以在主表删除相关的数据时,把从表相关数据也删除

准备工作

创建表

create table student (id INT PRIMARY KEY AUTO_INCREMENT,student_name VARCHAR(30),student_sex char(1),student_info VARCHAR(500),student_class_id int 
);CREATE table class (class_id INT PRIMARY KEY AUTO_INCREMENT,class_name VARCHAR(20));

插入数据


-- 插入正常数据INSERT into student VALUES
(null, '偷走晚霞的人', '男', '一个学生', 1),
(null, '惜.己', '男', '一个学生', 2),
(null, '小玖', '女', '一个学生', 1),
(null, '张三', '男', '一个学生', 3),
(null, '莉莉', '男', '一个学生', 1),
(null, '雪夜', '男', '一个学生', 2),
(null, '小明', '女', '一个学生', 1),
(null, '小新', '男', '一个学生', 3)
;

创建表时添加外键

1..格式

CONSTRAN 外键约束的名字 FOREIGN KEY (外键字段名) REFERENCES 主表(主键字段)

2..创建表student表时,为其添加外键

DROP TABLE student;
-- 创建student表示为 student_class_id 添加 主表的主键 的约束
create table student (id INT PRIMARY KEY AUTO_INCREMENT,student_name VARCHAR(30),student_sex char(1),student_info VARCHAR(500),student_class_id int ,-- 添加主键约束CONSTRAINT student_class_fk FOREIGN KEY(student_class_id) REFERENCES class(class_id));

3.插入数据测试

正常数据

-- 插入正常数据INSERT into student VALUES
(null, '偷走晚霞的人', '男', '一个学生', 1),
(null, '惜.己', '男', '一个学生', 2),
(null, '小玖', '女', '一个学生', 1),
(null, '张三', '男', '一个学生', 3),
(null, '莉莉', '男', '一个学生', 1),
(null, '雪夜', '男', '一个学生', 2),
(null, '小明', '女', '一个学生', 1),
(null, '小新', '男', '一个学生', 3)
;

异常数据

class_id 不存在的数据

-- 插入不正常的数据
INSERT into student VALUES
(null, '偷走晚霞的人', '男', '一个学生', 5);

外键约束,不能插入主表中没有的数据

1452 - Cannot add or update a child row: a foreign key constraint fails (`test`.`student`, CONSTRAINT `student_class_fk` FOREIGN KEY (`student_class_id`) REFERENCES `class` (`class_id`))

3.使用alter添加外键

删除外键
-- 删除student表中的外键ALTER TABLE student DROP FOREIGN KEY student_class_fk;

添加外键
-- 再次添加外键
ALTER TABLE student ADD FOREIGN KEY(student_class_id) REFERENCES class(class_id);

4.Mysql外键不生效的原因

总:查看存储引擎是不是InnoDB

这里是设置了外键的,仔细检查了语法也没有问题,但是外键不生效。

后面查看了mysql根目录的配置文件,发现自己用的mysql是Mylsam

找到 defult-storage-engine 

修改引擎

在配置文件中修改。(配置文件在mysql安装的根目录)

# default-storage-engine=MyIsam
default-storage-engine=InnoDB

修改完成之后重启mysql

phpystudy的mysql位置

phpystudy可以在phpstudy的根目录下

==》Extension

===》mysql(这个是你自己使用过的mysql)

http://www.xdnf.cn/news/752545.html

相关文章:

  • 测量3D翼片的距离与角度
  • Spring MVC参数绑定终极手册:单多参/对象/集合/JSON/文件上传精讲
  • MATLAB实战:传染病模型仿真实现
  • 刚出炉热乎的。UniApp X 封装 uni.request
  • 鸿蒙OSUniApp离线优先数据同步实战:打造无缝衔接的鸿蒙应用体验#三方框架 #Uniapp
  • 一个完整的日志收集方案:Elasticsearch + Logstash + Kibana+Filebeat (一)
  • 43. 远程分布式测试实现
  • CppCon 2014 学习: C++ Test-driven Development
  • 【C/C++】面试基础题目收集
  • 使用ReactNative加载HarmonyOS Svga动画
  • 西瓜书第十一章——降维与度量学习
  • π0论文阅读
  • 16-前端Web实战(Tlias案例-部门管理)
  • WEBSTORM前端 —— 第3章:移动 Web —— 第4节:移动适配-VM
  • Java函数式编程(上)
  • 【小沐杂货铺】基于Three.JS绘制太阳系Solar System(GIS 、WebGL、vue、react,提供全部源代码)第2期
  • Python UV 环境下的 PyKDL 运动学库安装
  • CSS篇-5
  • docker、ctr、crictl命令简介与使用
  • 基于Python与本地Ollama的智能语音唤醒助手实现
  • 无标注数据如何提升LLM推理能力?熵最小化 提升LLM自信度
  • 概念篇:软件测试
  • 基于springboot的益智游戏系统的设计与实现
  • Hive SQL优化实践:提升大数据处理效率的关键策略
  • MMRL: Multi-Modal Representation Learning for Vision-Language Models(多模态表示学习)
  • comfyui利用 SkyReels-V2直接生成长视频本地部署问题总结 1
  • 2025年计算机领域年度主题:融合创新与技术突破
  • NX753NX756美光科技闪存NX784NX785
  • Java大厂后端技术栈故障排查实战:Spring Boot、Redis、Kafka、JVM典型问题与解决方案
  • 基于微信小程序的云校园信息服务平台设计与实现(源码+定制+开发)云端校园服务系统开发 面向师生的校园事务小程序设计与实现 融合微信生态的智慧校园管理系统开发