数据库的主键和外键

news/2025/2/12 4:06:11/

概念介绍

数据库中的主键(Primary Key)和外键(Foreign Key)是用于建立数据表之间关系的两个重要概念,让我用通俗易懂的话解释它们:

主键(Primary Key)

  • 主键就像是每个数据表中的身份证,用来唯一标识每一行数据。
  • 主键的作用是确保表中的每一行都有一个独特的标识,就像每个人都有独一无二的身份证号码。
  • 主键通常是一个列(字段),而且它的值不能重复,每一行都必须有不同的主键值。
  • 主键用于快速查找和定位特定行的数据,就像你用身份证号码来查找一个人的信息一样。

外键(Foreign Key)

  • 外键是一种关系,它建立在两个不同的数据表之间,通常用于将表与其他表关联起来。
  • 外键的作用是在一个表中引用另一个表中的数据行,就像一个表中的数据与另一个表中的数据有关联。
  • 外键通常是一个列,它包含了另一个表的主键值,以便建立两个表之间的连接。
  • 外键用于建立表与表之间的关系,例如,你可以通过外键将用户的信息与订单的信息关联起来,以知道哪个用户下了哪些订单。

总之,主键是用来唯一标识一个表中每一行数据的,而外键用于建立不同表之间的关联关系,以便在数据库中连接和查询相关的数据。主键就像每个数据行的唯一身份证,而外键是一种联系方式,将不同的数据表联系在一起。

举例说明

让我们通过一个简单的示例来说明主键和外键的概念。

示例数据库表格1: Users(用户信息)

+----+------------+-------------+
| ID | Username   | Email       |
+----+------------+-------------+
| 1  | user1      | user1@example.com |
| 2  | user2      | user2@example.com |
| 3  | user3      | user3@example.com |
+----+------------+-------------+

示例数据库表格2: Orders(订单信息)

+----+---------+-------------+
| ID | User_ID | Product     |
+----+---------+-------------+
| 101 | 1     | Product A   |
| 102 | 1     | Product B   |
| 103 | 2     | Product C   |
| 104 | 3     | Product D   |
+----+---------+-------------+

在上面的示例中:

  • Users 表格包含了用户的信息,每一行都有一个唯一的标识 ID 作为主键。这个主键用来唯一标识每个用户,就像每个人都有不同的身份证号码。

  • Orders 表格包含了订单的信息,其中的 User_ID 列是外键。它引用了 Users 表格中的主键 ID。这意味着每个订单都与一个特定的用户关联,通过 User_ID 列与 Users 表格中的用户进行关联。

举个例子,如果我们想知道 “User1”(位于 Users 表格中)下了哪些订单,我们可以通过 User_ID 外键在 Orders 表格中查找相关的订单,因为 User1 的主键是 1,并且 User_ID 外键为 1 的订单是 “User1” 下的订单。

这就是主键和外键在数据库中的应用。主键用于唯一标识表中的每一行,而外键用于在不同的表格之间建立关联,以便在数据库中进行数据查询和连接。


http://www.ppmy.cn/news/1150445.html

相关文章

Sui主网升级至V1.11.2版本

Sui主网现已升级至V1.11.2版本,同时Sui协议升级至27版本。其他升级要点如下: 对于一些更高级别的交易,更改了一些gas费设置,使其gas费消耗的更快。这些更改不影响以前在网络上运行的任何交易,只是为了确保在开始大量使…

软件外包开发流程

软件外包是将软件开发任务委托给外部供应商或团队的一种常见做法。以下是软件外包的一般流程以及需要注意的问题,希望对大家有所帮助。北京木奇移动技术有限公司,专业的软件外包开发公司,欢迎交流合作。 软件外包流程: 确定需求&…

Docker简单案例

我们安装完Docker之后就可以练习了. 镜像 案例1-拉取、查看镜像 1)首先去镜像仓库搜索nginx镜像,比如 : Docker Hub Container Image Library | App Containerization 搜索我们想要拉取的镜像 , 例如: nginx 复制命令: docker pull nginx …

Stm32_标准库_10_TIM_显示时间日期

利用TIM计数耗费1s,启动中断,秒表加一 时间显示代码: #include "stm32f10x.h" // Device header #include "Delay.h" #include "OLED.h"uint16_t num 0; TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure; NVIC_I…

2023年中国基因载体CDMO行业发展趋势分析:基因载体CDMO市场蓬勃发展[图]

基因载体合同开发和制造组织服务(CDMO)可为基因药物的开发及生产提供工艺研究阶段、临床级生产、商业化生产的相关服务,其中工艺研究阶段主要包括工艺开发、细胞库建立、稳定性研究、质量研究及控制等服务;临床研究阶段主要包括临…

提升自媒体影音创作效率,这 10 款 AI 工具打工人必备!

随着AI工具的不断涌现,自媒体影音创作的效率也得到了提升,本次为大家介绍10款AI影音工具,为你的自媒体创作助力! 还是先上一张脑图: 自媒体必备AI工具 1. Runway AI视频编辑工具,支持文字转视频 目前最…

linux系统部署jar脚本编译

一 shell脚本 #启动参数 START_OPTS=$3#AppName=biz-score-service ##!/bin/bash SpringBoot=$2#JVM参数 JVM_OPTS="-Dname=$SpringBoot -Duser.timezone=Asia/Shanghai -Xms512M -Xmx512M -XX:PermSize=512M -XX:MaxPermSize=512M -XX:+HeapDumpOnOutOfMemoryError -XX…

深度学习基础知识 Dataset 与 DataLoade的用法解析

深度学习基础知识 Dataset 与 DataLoade的用法解析 1、Dataset2、DataLoader参数设置:1、pin_memory2、num_workers3、collate_fn分类任务目标检测任务 1、Dataset 代码: import torch from torch.utils import dataclass MyDataset(torch.utils.data.D…