FOREIGN

简介: 【11月更文挑战第15天】

SQL FOREIGN KEY 约束详解

FOREIGN KEY 约束在 SQL 中用于在两个表之间建立链接(或关系),确保引用的数据的完整性。一个表中的 FOREIGN KEY 指向另一个表中的唯一键(通常是 PRIMARY KEY 或具有 UNIQUE 约束的列)。

特点和使用场景

  • 数据完整性FOREIGN KEY 约束确保引用表中的数据必须在主表中存在,从而维护了数据的引用完整性。
  • 级联操作:可以设置级联更新和级联删除操作,当主表中的数据发生变化时,引用表中的数据可以自动更新或删除。
  • 多表查询FOREIGN KEY 约束使得多表查询(如连接查询)更加可靠和有意义。

SQL FOREIGN KEY 约束语法

在创建表时,可以为特定列定义 FOREIGN KEY 约束,并指定它引用的另一个表和列:

CREATE TABLE table_name
(
    column1 data_type,
    column2 data_type,
    FOREIGN KEY (column2) REFERENCES referenced_table (referenced_column)
);
  • table_name:当前创建的表的名称。
  • column1, column2:列的名称。
  • data_type:列的数据类型。
  • FOREIGN KEY (column2):定义 column2 为外键。
  • REFERENCES referenced_table (referenced_column):指定外键引用的表和列。

代码示例

假设我们有两个表:PersonsOrdersPersons 表包含人员的信息,而 Orders 表包含订单信息,每个订单都与一个人员相关联。

-- 创建 "Persons" 表
CREATE TABLE Persons
(
    P_Id int PRIMARY KEY,
    LastName varchar(255) NOT NULL,
    FirstName varchar(255) NOT NULL,
    Address varchar(255),
    City varchar(255)
);

-- 创建 "Orders" 表
CREATE TABLE Orders
(
    OrderID int PRIMARY KEY,
    P_Id int,
    OrderDate date,
    FOREIGN KEY (P_Id) REFERENCES Persons (P_Id)
);

在这个例子中:

  • Persons 表有一个 P_Id 列,作为主键。
  • Orders 表有一个 P_Id 列,作为外键,它引用了 Persons 表中的 P_Id 列。
目录
相关文章
|
3月前
|
缓存
Foreign Key Optimization
当查询涉及大量不同列组合时,可将不常用数据拆分至独立表中,每个表包含若干列,并通过复制主表的数字ID作为关联纽带。这样每个小表都有一个主键以快速检索数据,并可通过联接操作实现按需查询,减少I/O操作和缓存占用,从而优化查询性能,提升磁盘读取效率。
|
5月前
|
SQL Oracle 关系型数据库
CREATE TABLE 时的 SQL FOREIGN KEY 约束
【7月更文挑战第24天】CREATE TABLE 时的 SQL FOREIGN KEY 约束。
60 5
|
5月前
|
SQL Oracle 关系型数据库
ALTER TABLE 时的 SQL PRIMARY KEY 约束
【7月更文挑战第24天】ALTER TABLE 时的 SQL PRIMARY KEY 约束。
53 3
|
6月前
|
SQL Oracle 关系型数据库
SQL FOREIGN KEY 约束
SQL FOREIGN KEY 约束
36 2
|
SQL 关系型数据库 MySQL
MySQL外键约束(FOREIGN KEY)
MySQL外键约束(FOREIGN KEY)
226 0
|
SQL Oracle 关系型数据库
SQL FOREIGN KEY Constraint on CREATE TABLE
SQL FOREIGN KEY Constraint on CREATE TABLE
94 1
|
SQL 存储 Oracle
Foreign Data Wrappers(FDW) | 学习笔记
快速学习 Foreign Data Wrappers(FDW)
Foreign Data Wrappers(FDW) | 学习笔记
|
关系型数据库 MySQL
Mysql - 删除表时出现: Cannot delete or update a parent row: a foreign key constraint fails
Mysql - 删除表时出现: Cannot delete or update a parent row: a foreign key constraint fails
274 0
|
SQL 索引
Can you create an index on a foreign table?(外部表可以创建索引吗?)
来自google搜索的一段回答 No, you will get an error: ERROR: cannot create index on foreign table "tablename" ********** Error ********** ERROR: cannot create...
1487 0
|
Go 数据库 索引
SQLServer之FOREIGN KEY约束
原文:SQLServer之FOREIGN KEY约束 FOREIGN KEY约束添加规则 1、外键约束并不仅仅可以与另一表的主键约束相链接,它还可以定义为引用另一个表中 UNIQUE 约束的列。 2、如果在 FOREIGN KEY 约束的列中输入非 NULL 值,则此值必须在被引用列中存在;否则,将返回违反外键约束的错误信息。
1340 0

热门文章

最新文章