MySQL AUTO_INCREMENT с примерами

Что такое автоинкремент?

Автоинкремент — это функция, которая работает с числовыми типами данных. Он автоматически генерирует последовательные числовые значения каждый раз, когда запись вставляется в таблицу для поля, определенного как автоматическое приращение.

Когда использовать автоматическое увеличение?

На уроке по нормализации базы данных мы рассмотрели, как данные можно хранить с минимальной избыточностью, сохраняя данные во множество небольших таблиц, связанных друг с другом с помощью первичных и внешних ключей.

MySQL AUTO_INCREMENT с примерами

Первичный ключ должен быть уникальным, поскольку он однозначно идентифицирует строку в базе данных. Но как мы можем гарантировать, что первичный ключ всегда уникален? Одним из возможных решений было бы использование формулы для генерации первичного ключа, которая проверяет наличие ключа в таблице перед добавлением данных. Это может сработать хорошо, но, как вы можете видеть, подход стандартен.plex и не надежный. Чтобы избежать такого общенияplexЧтобы гарантировать, что первичный ключ всегда уникален, мы можем использовать функцию автоматического увеличения MySQL для генерации первичных ключей. Автоинкремент используется с типом данных INT. Тип данных INT поддерживает как знаковые, так и беззнаковые значения. Беззнаковые типы данных могут содержать только положительные числа. Рекомендуется определить беззнаковое ограничение для первичного ключа автоматического увеличения.

Синтаксис автоматического увеличения

Давайте теперь посмотрим на скрипт, используемый для создания таблицы категорий фильмов.

CREATE TABLE `categories` (
  `category_id` int(11) AUTO_INCREMENT,
  `category_name` varchar(150) DEFAULT NULL,
  `remarks` varchar(500) DEFAULT NULL,
  PRIMARY KEY (`category_id`)
);

Обратите внимание на «AUTO_INCREMENT» в поле Category_id. Это приводит к тому, что идентификатор категории автоматически генерируется каждый раз, когда в таблицу вставляется новая строка. Он не предоставляется при вставке данных в таблицу, MySQL генерирует его.

По умолчанию начальное значение AUTO_INCREMENT равно 1, и оно будет увеличиваться на 1 для каждой новой записи.

Давайте рассмотрим текущее содержимое таблицы категорий.

SELECT * FROM `categories`;

Выполнение приведенного выше сценария в рабочей среде MySQL для myflixdb дает нам следующее:wing результаты.

category_id category_name remarks
1 Comedy Movies with humour
2 Romantic Love stories
3 Epic Story acient movies
4 Horror NULL
5 Science Fiction NULL
6 Thriller NULL
7 Action NULL
8 Romantic Comedy NULL

Давайте теперь добавим новую категорию в таблицу категорий.

INSERT INTO  `categories` (`category_name`) VALUES ('Cartoons');

Выполнение приведенного выше сценария для myflixdb в Рабочая среда MySQL дает нам следующееwing результаты показаны ниже.

category_id category_name remarks
1 Comedy Movies with humour
2 Romantic Love stories
3 Epic Story acient movies
4 Horror NULL
5 Science Fiction NULL
6 Thriller NULL
7 Action NULL
8 Romantic Comedy NULL
9 Cartoons NULL

Обратите внимание, что мы не указали идентификатор категории. MySQL автоматически сгенерировал его для нас, поскольку идентификатор категории определяется как автоматическое приращение.

Если вы хотите получить последний идентификатор вставки, сгенерированный MySQL, вы можете использовать для этого функцию LAST_INSERT_ID. Показанный ниже скрипт получает последний сгенерированный идентификатор.

SELECT LAST_INSERT_ID();

Выполнение приведенного выше сценария дает последнее число автоматического приращения, сгенерированное запросом INSERT. Результаты показаны ниже.

MySQL АВТО_ИНКРЕМЕНТ

Выводы

  • Атрибут автоматического увеличения, если он указан в столбце с числовыми типами данных, генерирует числа последовательно каждый раз, когда в базу данных добавляется новая строка.
  • Автоматическое приращение обычно используется для генерации первичных ключей.
  • Определенный тип данных при автоматическом приращении должен быть достаточно большим, чтобы вместить множество записей. Определение TINYINT в качестве типа данных для поля автоматического увеличения ограничивает количество записей, которые можно добавить в таблицу, до 255, поскольку любые значения, превышающие это значение, не будут приняты типом данных TINYINT.
  • Считается хорошей практикой указывать беззнаковое ограничение для первичных ключей автоматического увеличения, чтобы избежать отрицательных чисел.
  • Когда строка удаляется из таблицы, ее автоматически увеличенный идентификатор не используется повторно. MySQL продолжает последовательно генерировать новые числа.
  • По умолчанию начальное значение AUTO_INCREMENT равно 1, и оно будет увеличиваться на 1 для каждой новой записи.
  • Чтобы последовательность AUTO_INCREMENT начиналась с другого значения, используйте AUTO_INCREMENT = 10.