Найти в Дзене
IT_WORLD BLOG

Ключевые столбцы и индексы в MySQL(Урок 6)

Для определения ключевых столбцов и индексов в MySQL используются следующие конструкции: • [ CONSTRAINT<Имя ключа> PRIMARY KEY(список столбцов) к данному параметру по умолчанию присвоено свойство NOT NULL, данный параметр используется чтобы задать первичному ключу имя. Если использовать просто PRIMARY KEY для создания первичного ключа то имя ключа останется по умолчанию а именно PRIMARY. • INDEX [<имя индекса>](<список столбцов>) Создает индекс для определенных столбцов. Индекс это объект который позволяет улучшить производительность запросов благодаря включенным столбцам в состав индекса. Имя индекса задавать необязательно, для типов данных TINYBLOB, TINYTEXT, BLOB, TEXT, MEDIUMBLOB, MEDIUMTEXT, LONGBLOB, LONGTEXT необходимо указывать количество символов в начале значения столбца. • UNIQUE(<название столбца>) Данный параметр запрещает добавлять одинаковые значения в строки столбцов если они есть уже в таблице, но можно добавлять к примеру домашний телефон если он неопределенного зна

Для определения ключевых столбцов и индексов в MySQL используются следующие конструкции:

• [ CONSTRAINT<Имя ключа> PRIMARY KEY(список столбцов) к данному параметру по умолчанию присвоено свойство NOT NULL, данный параметр используется чтобы задать первичному ключу имя. Если использовать просто PRIMARY KEY для создания первичного ключа то имя ключа останется по умолчанию а именно PRIMARY.

• INDEX [<имя индекса>](<список столбцов>) Создает индекс для определенных столбцов. Индекс это объект который позволяет улучшить производительность запросов благодаря включенным столбцам в состав индекса. Имя индекса задавать необязательно, для типов данных TINYBLOB, TINYTEXT, BLOB, TEXT, MEDIUMBLOB, MEDIUMTEXT, LONGBLOB, LONGTEXT необходимо указывать количество символов в начале значения столбца.

• UNIQUE(<название столбца>) Данный параметр запрещает добавлять одинаковые значения в строки столбцов если они есть уже в таблице, но можно добавлять к примеру домашний телефон если он неопределенного значения так как данный параметр по умолчанию работает с свойством NULL. Также для типов данных TINYBLOB, TINYTEXT, BLOB, TEXT, MEDIUMBLOB, MEDIUMTEXT, LONGBLOB, LONGTEXT необходимо указывать количество символов в начале значения столбца.

• FULLTEXT [<название индекса>] (<Список столбцов или один столбец>) Данный параметр создает полнотекстовый индекс для указанных столбцов. Данный индекс улучшает скорость поиска значений для символьных типов данных. Название индекса необязательно вводить так как он генерируется автоматически. Данный параметр можно использовать только с типом таблиц MyISAM. Данный параметр работает с такими типами данных как TEXT, CHAR, MEDIUMTEXT, VARCHAR, TINYTEXT, LONGTEXT.

• SPATIAL [<Название индекса>] (<Список столбцов>) Создает индекс который работает с пространственными и географическими типами данных.

Теперь рассмотрим параметр CONSTRAINT под другим углом:

• CONSTRAINT <внешнего ключа> используется для определения внешнего ключа для таблицы.

• FOREIGN KEY [<Имя индекса>] (<Имя столбца>) Этот параметр используется для связи со внешним столбцом или ключом.

• REFERENCES <Имя родительской таблицы> Данный параметр используется для связи с внешней таблицей. Внешние ключи работают только с типом таблиц InnoDB чтобы привязка была успешной типы данных и количество символов для чисел должны совпадать а для символьных типов данных должны совпадать кодировка и правило сравнения.

Типы данных которые не могут использоваться как внешний ключ: TINYBLOB, TINYTEXT, BLOB, TEXT, MEDIUMBLOB, MEDIUMTEXT, LONGBLOB, LONGTEXT, SERIAL. Также имя внешнего ключа и индекса указывать не обязательно так как он сгенерируется автоматически.

пример использования внешнего ключа:

Мы создаем первую таблицу с которой будет связываться внешний ключ она является основной:

CREATE TABLE учебник
(
id INT,
название VARCHAR(20),
год Date,
PRIMARY KEY(id)
);

Далее создадим таблицу которую свяжем с первой с помощью внешнего ключа:

CREATE TABLE портфель
(
id INT,
книга INT,
FOREIGN KEY(книга) REFERENCES учебник (id)
);

Связь таблиц с помощью внешнего ключа
Связь таблиц с помощью внешнего ключа