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

Anonim

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

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

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

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

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

За замовчуванням початкове значення для AUTO_INCREMENT дорівнює 1, і воно збільшується на 1 для кожного нового запису

Давайте вивчимо поточний зміст таблиці категорій.

SELECT * FROM `categories`;

Виконання вищезазначеного сценарію в робочому середовищі MySQL проти 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 у робочому середовищі 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. Результати наведені нижче.

Резюме

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