Databases

How do I use a foreign key?

Updated 2026-08-14

Quick answer

To use a foreign key, define it in your table schema to establish a relationship with another table's primary key.

Foreign keys are essential for maintaining referential integrity in relational databases by linking tables.

Steps

  1. 1

    Create Tables

    Define your primary table and the related table. For example, create a 'users' table and a 'posts' table where 'posts' references 'users'.

  2. 2

    Add Foreign Key Constraint

    In SQL, use the following syntax: `ALTER TABLE posts ADD CONSTRAINT fk_user FOREIGN KEY (user_id) REFERENCES users(id);` Adjust syntax based on your SQL dialect.

  3. 3

    Insert Data

    Insert data into both tables ensuring that any foreign key values in the 'posts' table correspond to valid 'users' entries.

  4. 4

    Query Data

    Use JOIN statements to retrieve data from both tables, e.g., `SELECT users.name, posts.title FROM users JOIN posts ON users.id = posts.user_id;`

Understanding Foreign Keys

A foreign key is a field (or collection of fields) in one table that uniquely identifies a row of another table. This relationship helps enforce data integrity.

Defining Foreign Keys

When creating a table, specify the foreign key by referencing the primary key of another table. The syntax may vary slightly based on the database system.

Using Foreign Keys in Queries

You can join tables based on foreign key relationships to retrieve related data efficiently.

Watch out for

  • Foreign keys can impact performance due to additional checks on data integrity.
  • Ensure that the data types of the foreign key and referenced primary key match.

FAQ

What happens if I try to insert a foreign key that doesn't exist?

The database will return an error, preventing the insertion to maintain referential integrity.

Can a foreign key reference multiple tables?

No, a foreign key can only reference a primary key from one table at a time.

How do I delete a record with foreign key constraints?

You must first delete any related records in the child table or use cascading deletes if configured.