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

Что такое автоматическое увеличение?

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

При использовании автоматического увеличения?

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

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

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

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

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

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

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

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

category_id category_name замечания
1 комедия Фильмы с юмором
2 романтик Любовные истории
3 эпический Истории из фильмов
4 Ужастик НОЛЬ
5 Научная фантастика НОЛЬ
6 Триллер НОЛЬ
7 действие НОЛЬ
8 Романтическая комедия НОЛЬ

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

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

category_id category_name замечания
1 комедия Фильмы с юмором
2 романтик Любовные истории
3 эпический Истории из фильмов
4 Ужастик НОЛЬ
5 Научная фантастика НОЛЬ
6 Триллер НОЛЬ
7 действие НОЛЬ
8 Романтическая комедия НОЛЬ
9 Мультфильмы НОЛЬ

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

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

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

Резюме

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

Ответить

Хотите присоединиться к обсуждению?
Не стесняйтесь вносить свой вклад!

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *