MySQL AUTO_INCREMENT із прикладами

Що таке автоматичне збільшення?

Auto Increment — це функція, яка працює з числовими типами даних. Він автоматично генерує послідовні числові значення кожного разу, коли запис вставляється в таблицю для поля, визначеного як автоматичне збільшення.

Коли використовувати автоматичне збільшення?

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

MySQL AUTO_INCREMENT із прикладами

Первинний ключ має бути унікальним, оскільки він унікально ідентифікує рядок у базі даних. Але як ми можемо гарантувати, що первинний ключ завжди буде унікальним? Одним із можливих рішень було б використання формули для створення первинного ключа, який перевіряє наявність ключа в таблиці перед додаванням даних. Це може добре працювати, але, як бачите, підхід складний і не надійний. Щоб уникнути такої складності та гарантувати, що первинний ключ завжди унікальний, ми можемо використовувати 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 workbench проти myflixdb дає нам такі результати.

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 in MySQL верстак дає нам такі результати, наведені нижче.

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 AUTO_INCREMENT

Підсумки

  • Атрибут автоматичного збільшення, якщо вказано в стовпці з числовими типами даних, генерує числа послідовно щоразу, коли до бази даних додається новий рядок.
  • Автоматичний приріст зазвичай використовується для генерації первинних ключів.
  • Визначений тип даних на Auto increment має бути достатньо великим, щоб вмістити багато записів. Визначення TINYINT як типу даних для поля автоматичного збільшення обмежує кількість записів, які можна додати до таблиці, лише до 255, оскільки будь-які значення, окрім цього, не будуть прийняті типом даних TINYINT.
  • Вважається хорошою практикою вказувати обмеження без знаку для первинних ключів автоматичного збільшення, щоб уникнути від’ємних чисел.
  • Коли рядок видаляється з таблиці, його автоматично збільшений ідентифікатор не використовується повторно. MySQL продовжує генерувати нові номери послідовно.
  • За замовчуванням початкове значення для AUTO_INCREMENT дорівнює 1, і воно буде збільшуватися на 1 для кожного нового запису
  • Щоб послідовність AUTO_INCREMENT починалася з іншого значення, використовуйте AUTO_INCREMENT = 10