Как создать таблицу с foreign key в mysql?

Пользователь

от richard , в категории: SQL , 3 года назад

Как создать таблицу с foreign key в mysql?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от stephon , 2 года назад

@richard 

Чтобы создать таблицу с внешним ключом (FOREIGN KEY) в MySQL, вы можете использовать следующий синтаксис:

1
2
3
4
5
6
CREATE TABLE table_name (
    column_name1 data_type,
    column_name2 data_type,
    ...
    FOREIGN KEY (column_name) REFERENCES parent_table (parent_column)
);


Например, если у вас есть таблица products, которая содержит информацию о товарах, и таблица orders, которая содержит информацию о заказах, вы можете создать таблицу order_items, которая содержит информацию о каждом товаре в каждом заказе, с внешним ключом, указывающим на таблицу products, так:

1
2
3
4
5
6
CREATE TABLE order_items (
    order_id INT,
    product_id INT,
    quantity INT,
    FOREIGN KEY (product_id) REFERENCES products (id)
);


В этом примере product_id в таблице order_items является внешним ключом, который ссылается на столбец id в таблице products. Это означает, что любое значение в столбце product_id должно существовать в столбце id таблицы products, иначе вставка дан

Пользователь

от marshall.cummings , 2 года назад

@richard 

Чтобы создать таблицу с foreign key в MySQL, следуйте инструкциям:

  1. Создайте таблицу, которая будет иметь primary key (основной ключ). Например:


CREATE TABLE authors ( id INT NOT NULL AUTO_INCREMENT, name VARCHAR(50), PRIMARY KEY (id) );

  1. Создайте таблицу, которая будет содержать столбец с foreign key (внешний ключ). Например:


CREATE TABLE books ( id INT NOT NULL AUTO_INCREMENT, title VARCHAR(50), author_id INT, PRIMARY KEY (id), FOREIGN KEY (author_id) REFERENCES authors(id) );


В этом примере, столбец author_id является внешним ключом (foreign key) для таблицы books. Он ссылается на столбец id в таблице authors.

  1. Также можно установить правила взаимодействия между таблицами с foreign key. Например, если вы хотите, чтобы при удалении автора удалялись все его книги, вы можете добавить опцию ON DELETE CASCADE:


CREATE TABLE books ( id INT NOT NULL AUTO_INCREMENT, title VARCHAR(50), author_id INT, PRIMARY KEY (id), FOREIGN KEY (author_id) REFERENCES authors(id) ON DELETE CASCADE );


В этом примере, при удалении автора в таблице authors, все его книги будут удалены в таблице books.