MySQL 与网络基础 · 外键约束及 TCP/UDP 协议

文章目录

概述

[第一章 · MySQL 外键与约束](#第一章 · MySQL 外键与约束)

[1.1 外键是干啥的?](#1.1 外键是干啥的?)

[1.2 约束 · 字段级别把关](#1.2 约束 · 字段级别把关)

[第二章 · TCP 与 UDP 协议](#第二章 · TCP 与 UDP 协议)

[2.1 TCP · 像打电话一样靠谱](#2.1 TCP · 像打电话一样靠谱)

[2.2 UDP · 像寄信一样快](#2.2 UDP · 像寄信一样快)

[2.3 TCP vs UDP · 一张表分清楚](#2.3 TCP vs UDP · 一张表分清楚)

总结

概述

上回我们讲了 MySQL 的增删改查和用户权限------数据能存了,账号能管了。

但有个问题:你往订单表里插数据的时候,能不能随便写一个用户 ID?万一那个用户压根不存在呢?数据不乱套了。还有,用户的年龄能不能填 -18?能不能填 999?这明显不合理,但 MySQL 默认都让你填。

外键和约束就是专门管这两件事的------让数据长点脑子,别什么乱七八糟的都往里塞。

数据存好了,问题又来了:你的 Python 程序在本地,数据库在云服务器上,它们怎么通信?靠网络。网络传输里有两个最基础的协议:TCPUDP

今天一篇搞定这两块,开整。

第一章 · MySQL 外键与约束

1.1 外键是干啥的?

一句话:防止乱填关联字段。

你有一个 users 表和一个 orders 表,每个订单都属于某个用户。如果 orders.user_id 填了 999users 表里压根没这人,那数据就脏了。

外键的作用:插入订单时,必须保证 user_idusers 表里真实存在,否则直接拒绝。

sql

复制代码
CREATE TABLE orders (
    id INT PRIMARY KEY,
    user_id INT,
    amount DECIMAL(10,2),
    FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
);

FOREIGN KEY (user_id) REFERENCES users(id) 的意思是:orders.user_id 必须是 users.id 里有的值,不能瞎填。

外键的两个常用选项:

选项 效果
ON DELETE CASCADE 用户删了,订单自动跟着删,省得你手动清理
ON DELETE SET NULL 用户删了,订单的 user_id 自动变成 NULL,留着当历史记录

1.2 约束 · 字段级别把关

除了外键,MySQL 还有五种内置约束,帮你在字段级别把关:

约束 作用 示例
NOT NULL 不准空着 name VARCHAR(50) NOT NULL
UNIQUE 不能重复 email VARCHAR(100) UNIQUE
PRIMARY KEY 主键(唯一 + 非空) id INT PRIMARY KEY
DEFAULT 默认值 age INT DEFAULT 18
CHECK 自定义条件 age INT CHECK (age >= 0 AND age <= 150)

最容易被忽略的是 CHECK------它能挡住明显不合理的数据,比如负数的年龄。让你的表自己替你把关,不用每次插数据都靠人工提醒。

第二章 · TCP 与 UDP 协议

2.1 TCP · 像打电话一样靠谱

TCP 是面向连接的、可靠的、按序到达的传输协议。

先建立连接再通信(三次握手) 丢包就重传,保证数据完整先发的先到,不会乱序

什么时候用 TCP? 需要数据完整、准确、不丢的时候:

场景 原因
网页(HTTP/HTTPS) 网页缺一块就显示不全
文件传输(FTP) 文件丢一个字节就坏了
MySQL 连接 数据不能丢

2.2 UDP · 像寄信一样快

UDP 是无连接的、不可靠的、不保证顺序的传输协议。

不用握手,直接发 丢了就丢了,不重传先发的不一定先到速度快,开销小

什么时候用 UDP? 追求速度快、延迟低的场景:

场景 原因
视频直播 偶尔花一帧无所谓,卡顿才烦人
在线游戏 延迟比丢包更致命
DNS 查询 丢包了再问一次就行

2.3 TCP vs UDP · 一张表分清楚

对比 TCP UDP
连接 有连接(先握手) 无连接(直接发)
可靠性 可靠,丢包重传 不可靠,丢了不管
顺序 按序到达 可能乱序
速度
场景 网页、文件、数据库 直播、游戏、视频

总结

今天的内容分两块:

MySQL 外键与约束------外键管关联字段不乱填,CHECK 挡不合理数据进门,NOT NULL 不让你空着手。几条约束加上去,MySQL 就从"无脑存数据的仓库"变成了"替你操心的管理员"。

TCP 与 UDP------TCP 像打电话,先拨号再说话,保证对方听清每一句;UDP 像寄信,写地址扔邮筒,不管收没收到。要可靠选 TCP,要速度选 UDP。

下期见。🗄️🌐

相关推荐
Multipath7121 小时前
多链路聚合设备的大型户外活动的通信保障方案
大数据·运维·网络·5g·安全
发量惊人的中年网工1 小时前
游戏开服就被DDoS攻击怎么办?开服7分钟服务器被打穿的复盘与防护清单
运维·服务器·网络·安全·游戏
不过普通话一乙不改名1 小时前
补充:权限与角色
mysql
枫彩1 小时前
WorkBuddy 做A股自动复盘实战:数据校验、工具调用与定时报告
大数据·网络·数据库·a股·mcp·workbuddy
薛定猫AI2 小时前
【深度解析】DeepSeek Harness:可插拔智能体运行时如何连接大模型与真实计算机
java·运维·网络
我爱cope2 小时前
【计算机网络 | 网络层6:IPv4 数据报格式:TTL、分片、首部校验和分别有什么用?】
网络·学习·计算机网络
蒲锘2 小时前
DevOps 实验阶段四:Infra 节点 + MySQL + Spring Boot 容器化
spring boot·mysql·docker
裕晟资质规划2 小时前
首次办理军工保密资质:咨询服务选择要点与全流程交付清单(评估框架)
大数据·运维·服务器·网络·数据库·经验分享
爱研究的小梁2 小时前
专网与公网隔离,多套网络如何实现异构网络打通融合
网络·信息与通信