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

SQL:Primary Key(主键)和Foreign Key(外键)

目录

1. Key(键)

2. Index(索引)

3.Key和Index的区别

4. Primary Key(主键)

5. Foreign Key(外键)

6.主键和外键的关系

温馨提示: 闪电按钮不同的执行功能

首先,我想先介绍一下简单介绍SQL中的Key(键)和Index(索引)。

1. Key(键)

基本概念

定义:Key是数据库表中用于标识或关联数据的特殊列(或列组合)。它像一个“标签”或“身份证”,帮助数据库管理记录。

通俗解释:想象一个大图书馆,书上有编号(Key),用来快速找到某本书或确认它是唯一的。Key是数据库里给每行数据贴上的“识别码”。

2. Index(索引)

基本概念

定义:Index是数据库为表中的一列(或多列)创建的特殊数据结构,加快数据检索速度。

通俗解释:想象图书馆的书目索引,书按编号排序,查书时不用翻遍所有书架,直接找索引上的页码。Index就像给数据库加了个“快速查找表”。

3.Key和Index的区别

目的:

Key(主键、外键、唯一键)主要用于数据完整性和关系。 

Index主要用于查询优化。 

比喻:Key像身份证和户口簿,Index像图书馆的索引卡。 

4. Primary Key(主键)

什么是主键?

定义:主键是一个表中用来唯一标识每行记录的列或列组合。就像每个人的身份证号码,保证没有重复。

通俗解释:想象一个班级花名册,每个人都有一个唯一的学号(比如001、002),主键就是这个学号,确保找不到两个“张三”混淆。 

特点:

  • 唯一性:每行数据的主键值必须不同。

  • 非空:主键不能是NULL,必须有值。

  • 不可变:一旦设好,主键值一般不该改(改了会影响关联)。

举例说明:

这是一张个人信息表。表中分别有ID,名字,姓氏,性别,电话 。从表中我们可以看到,ID是这张表的主键,因为其他列中都有重复的值。它们的值无效,或者是重复的。

5. Foreign Key(外键)

什么是外键?

定义:外键是表A中的一列(或多列),它的值必须指向表B的主键,建立了两表之间的关系。 

通俗解释:想象一个班级花名册(表A)和成绩表(表B),成绩表里有个“学生ID”列,指向花名册里的“学号”(主键),这样就能知道哪个成绩属于哪个学生。外键就像“关系纽带”。 

特点:

  • 引用性:外键值必须是它所引用的主键值之一,或者是NULL(如果允许)。

  • 关联性:通过外键,多个表可以“联手”管理数据。

带有主键的表称为父表(parent table),带有外键的表称为子表(child table) 。

6.主键和外键的关系

  • 联系:外键依赖主键,外键的值必须来自它引用的表的主键,形成了表之间的“父子关系”。

  • 比喻:主键是“户主”的身份证,外键是“家庭成员”持有的户主身份证号码,靠这个联系起家庭(表)。 

这张表显示了订单,客户,产品之间的关系。这个设计模拟了一个咖啡店的订单系统,客户可以购买产品,订单记录谁买了什么。

箭头的方向显示链接,从父表的主键指向子表的外键。 

箭头表示外键关系: 

orders.customer_id → customers.id:订单指向客户。 

orders.product_id → products.id:订单指向产品。 

温馨提示: 闪电按钮不同的执行功能

 在 MySQL Workbench 中,工具栏上有三个与执行 SQL 查询相关的闪电按钮(lightning bolt buttons),它们的功能各不相同。

1. 第一个闪电按钮 

功能:执行整个 SQL 脚本。 

描述:这个按钮会运行 SQL 查询面板(SQL Query Panel)中当前所有内容,无论你是否选中了特定部分。只要面板中有 SQL 语句,它就会从头到尾执行所有语句。 

2. 第二个闪电按钮 

 功能:执行当前选中的 SQL 语句或高亮部分。

描述:这个按钮只执行你在 SQL 查询面板中手动选中的部分。如果没有选中任何内容,它会执行光标当前所在的单个语句(从光标位置到语句的末尾)。 

使用场景:当你只想测试或运行脚本中的一部分时非常有用。例如,你有一个长脚本,但只想运行其中一个 SELECT 查询。 

3. 第三个闪电按钮 

功能:对当前光标下的语句执行 EXPLAIN 分析。 

描述:这个按钮不会直接执行 SQL 语句,而是生成该语句的执行计划(Execution Plan)。执行计划显示 MySQL 如何执行查询,包括使用的索引、表扫描方式等,帮助你优化查询性能。 

使用场景:

  • 当你想分析某个查询的性能瓶颈或优化 SQL 语句时,使用这个按钮。

  • 例如,如果你怀疑某个 SELECT 查询运行缓慢,可以用 EXPLAIN 检查它是否使用了正确的索引。

4.手形按钮 

功能:停止执行的查询。 如果你正在运行一个查询,该查询正在检索成千上万的数据,它可以停止查询而不是继续等待。

应用场景:只在查询时才有效,如果正常状态下点击,不会有任何事发生。


http://www.mrgr.cn/news/97502.html

相关文章:

  • 【加密算法】SM4国密算法原理、C++跨平台实现(含完整代码和示例)
  • TCP/IP五层协议
  • 网易运维面试题及参考答案
  • 激光干涉仪学习
  • Linux-CentOS-7—— 安装MySQL 8
  • 设计模式 四、行为设计模式(1)
  • AI烘焙大赛中的算法:理解PPO、GRPO与DPO最简单的方式
  • Python 之 Pandas 常用操作
  • 项目难点亮点
  • 大数据(5)Spark部署核弹级避坑指南:从高并发集群调优到源码级安全加固(附万亿级日志分析实战+智能运维巡检系统)
  • 英语学习 4.7
  • 红宝书第三十一讲:通俗易懂的包管理器指南:npm 与 Yarn
  • C#结合SQLite数据库使用方法
  • C++11实现一个自旋锁
  • 压测工具开发实战篇(四)——client子窗口功能
  • 本地大模型构建个人知识库(Ragflow)
  • 屏幕空间反射SSR-笔记
  • 【C++】Chapter04<STL部分>:STL标准模板库概要
  • Python数据爬取
  • 从搜索丝滑过渡到动态规划的学习指南