References for SQL
References в SQL - это связи между таблицами в базе данных, которые позволяют связывать данные по определенным полям. Это называется внешним ключом (foreign key).
Например, если у вас есть таблица клиентов и таблица заказов, то вы можете использовать внешний ключ, чтобы связать каждый заказ с конкретным клиентом. В этом случае у таблицы заказов будет поле со ссылкой на поле с идентификатором клиента в таблице клиентов.
Пример создания внешнего ключа в SQL:
CREATE TABLE `clients` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `orders` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`client_id` int(10) unsigned NOT NULL,
`amount` decimal(10,2) NOT NULL,
PRIMARY KEY (`id`),
CONSTRAINT `fk_order_client`
FOREIGN KEY (`client_id`) REFERENCES `clients` (`id`)
ON UPDATE CASCADE
ON DELETE RESTRICT
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
В примере выше мы создали таблицы `clients` и `orders`. Затем мы создали в таблице `orders` поле `client_id`, которое ссылается на поле `id` в таблице `clients`. Здесь мы использовали ключевое слово `REFERENCES`, чтобы определить связь между таблицами.
Также мы указали дополнительные параметры для внешнего ключа: `ON UPDATE CASCADE` означает, что если мы обновим значение в таблице `clients`, то это обновление пропишется и в связанных записях в таблице `orders`, и `ON DELETE RESTRICT` означает, что мы не сможем удалить запись из таблицы `clients`, если на нее ссылается какая-то запись в таблице `orders`.
В итоге мы можем использовать связь между таблицами для того, чтобы легко находить заказы, сделанные конкретным клиентом:
SELECT * FROM `orders` WHERE `client_id` = 1;
Здесь мы находим все заказы, сделанные клиентом с идентификатором 1.
Таким образом, использование references в SQL позволяет связывать данные в разных таблицах и делать более сложные запросы, которые хранятся в базе данных.