📜  主键和外键的区别(1)

📅  最后修改于: 2023-12-03 15:06:18.363000             🧑  作者: Mango

主键和外键的区别

在数据库设计中, 主键和外键都是相当重要的概念. 它们可以使数据库表之间建立关联.

主键

一个数据库表可以有一个或多个列来唯一标识其它行. 这个标识就称为主键. 主键是一种对数据行唯一性约束的方式.

主键的特点:

  • 值不能为空
  • 值是唯一的
  • 表中每一行都必须有一个主键

主键可以有以下类型:

  • 单列主键
  • 复合主键(由多列组成)
  • 自增长主键(由系统自动生成的唯一标识)
-- 创建带有自增长主键的表
CREATE TABLE students (
  id INT PRIMARY KEY AUTO_INCREMENT,
  name VARCHAR(50),
  age INT
);
外键

与主键不同, 外键是指一个表中的某个列, 它的值引用另一张表的主键值.

外键的特点:

  • 外键值可以为 NULL
  • 外键值必须在关联表的主键中存在

外键的作用是建立表与表之间的关联, 以保证数据的完整性和一致性.

-- 创建带有外键的表
CREATE TABLE orders (
  id INT PRIMARY KEY AUTO_INCREMENT,
  customer_id INT,
  product_id INT,
  FOREIGN KEY (customer_id) REFERENCES customers(id)
);

在上述示例中, 订单表中的 customer_id 列引用了客户表中的 id 列, 这就创建了一个关系. 这种关系称为父与子之间的关系.

主键和外键的区别
  • 主键标识了一行数据, 外键建立了表与表之间的关系
  • 主键是对数据行唯一性约束的方式, 外键是引用关系的方式
  • 表中每一行必须有一个主键, 但可以有多个外键
  • 主键值必须是唯一的, 外键值可以为 NULL

总之, 主键和外键都是数据库设计中非常重要的概念, 它们有助于保证数据的完整性和一致性, 并帮助我们建立表与表之间的关联.