数据库中主键和外键的区别

  • Post category:database

主键和外键是关系数据库中两个重要的概念。

主键

主键(Primary Key)是用于唯一标识每个记录的字段或一组字段的集合。一个表只能有一个主键,没有主键或主键不唯一会导致表中记录无法唯一确定。主键可以是一个或多个字段的组合,并且值必须唯一。主键可以在创建表的时候指定,也可以在表创建后通过修改表结构来添加主键。

主键最常用的类型是整数类型(如 int 或 long),因为它们可以快速地搜索和比较,并可以自动递增。下面是一个示例:

CREATE TABLE users (
  id INT PRIMARY KEY,
  name VARCHAR(100),
  email VARCHAR(100)
);

在上面的示例中,id 字段是主键。每当插入一个新的数据行时,id 字段将自动递增以确保唯一性。如果尝试插入一个具有相同 id 值的行,则将抛出错误。

外键

外键(Foreign Key)是一种用于建立两个表之间关系的字段或组合字段。外键在一个表中指向另一个表的主键,以确保数据的完整性和一致性。外键限制了插入、更新和删除数据的操作,并在操作中自动维护表间的关系。外键用于确保引用表行的存在和有效性。

下面是一个示例:

CREATE TABLE customers (
  id INT PRIMARY KEY,
  name VARCHAR(100),
  email VARCHAR(100)
);

CREATE TABLE orders (
  id INT PRIMARY KEY,
  customer_id INT,
  order_date DATE,
  FOREIGN KEY (customer_id) REFERENCES customers(id)
);

在上面的示例中,orders 表中的 customer_id 字段是一个外键,它指向 customers 表中的 id 字段。这确保了每个订单都已分配给一个有效的客户。如果在客户表中删除一个客户,则与该客户相关联的订单也将被删除或设置为关联的无效值。

总结

主键和外键是关系型数据库中常用的两个概念。主键是一组用于标识每个记录的字段,而外键是建立两个表之间关系的字段。主键是唯一的,没有主键或主键不唯一的表中的记录无法唯一确定。在表中添加外键可以确保表之间的数据完整性和一致性。在设计数据库时,必须正确地定义主键和外键以确保数据的一致性。