Общие сведения
Ключи в базе данных SQL — это специальные поля или наборы полей, которые помогают идентифицировать и устанавливать связи между записями в разных таблицах. Они обеспечивают уникальность, поддерживают целостность данных и позволяют выполнять эффективные запросы и манипуляции с данными.
В базе данных MySQL используются внутренние (PRIMARY KEY, INDEX KEY, UNIQUE KEY) и внешние ключи (FOREIGN KEY). Давайте подробнее рассмотрим каждый из них.
Первичный ключ (PRIMARY KEY)
PRIMARY KEY — это особое поле в таблице, которое позволяет однозначно идентифицировать каждую запись в таблице. Это поле должно быть уникальным, не пустым и может содержать только одно значение в таблице. PRIMARY KEY используется для хранения уникальных идентификаторов объектов, перечисленных в таблице.
CREATE TABLE users (
user_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(30) NOT NULL,
email VARCHAR(50) NOT NULL,
birthdate DATE NOT NULL,
registration_date DATETIME NOT NULL
);
В этом примере поле user_id является первичным ключом, который уникально идентифицирует каждую запись пользователя.
Индекс (INDEX KEY)
INDEX KEY — это индекс, который ускоряет поиск данных в таблице. Индекс представляет собой поле или комбинацию полей, по которым оптимизирован поиск. Индекс занимает место на диске, поэтому индексировать нужно только те поля, по которым происходит выборка.
CREATE INDEX idx_customer_name ON Customers (CustomerName);
В этом примере создаётся индекс idx_customer_name для таблицы Customers на основе столбца CustomerName. Теперь при выполнении запросов, использующих условие WHERE CustomerName = ‘значение’, индекс будет использоваться для ускорения поиска и повышения производительности запроса.
Уникальный ключ (UNIQUE KEY)
UNIQUE KEY — это ограничение, которое гарантирует уникальность всех значений в столбце таблицы. Это ключевое ограничение, которое применяется к одному или нескольким столбцам таблицы и предотвращает появление повторяющихся значений. Уникальные ключи используются для поддержания целостности и надёжности базы данных, а также для хранения информации в организованном виде.
CREATE TABLE Customers (
Id INT PRIMARY KEY AUTO_INCREMENT,
Age INT,
FirstName VARCHAR(20),
LastName VARCHAR(20),
Phone VARCHAR(13) UNIQUE
);
В этом примере столбец Phone будет содержать только уникальные значения, и мы не сможем добавить в таблицу две строки с совпадающими значениями для этого столбца.
Внешний ключ (FOREIGN KEY)
Внешний ключ (FOREIGN KEY) — ссылка на первичный ключ другой таблицы, которая обеспечивает связь между таблицами и гарантирует ссылочную целостность данных. Внешний ключ может иметь значение NULL и состоять из одного столбца или комбинации столбцов.
CREATE TABLE orders (
order_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
customer_id INT NOT NULL,
FOREIGN KEY (customer_id) REFERENCES customers(customer_id)
);
В этом примере столбец customer_id в таблице orders является внешним ключом, который ссылается на столбец customer_id в таблице customers. Это обеспечивает связь между заказами и клиентами и гарантирует ссылочную целостность данных.