MySQL MariaDB

MySQL Вставити ігнорувати повторюваний ключ

MySQL Вставити ігнорувати повторюваний ключ
У таблицях або наборах результатів часто є суперечливі дані. Виправлення також вимагає багато часу, і часто слід уникати повторних записів. Необхідно виявити повторювані записи та видалити їх із будь-якої таблиці. У цьому розділі буде докладно описано, як уникнути появи повторюваних даних у таблиці та як усунути поточні повторювані записи. У цьому посібнику ви дізнаєтесь, як використовувати речення INSERT IGNORE, щоб уникнути помилки.

Синтаксис:

Ось синтаксис запиту INSERT IGNORE.

>> ВСТАВИТИ ІГНОРУВАТИ в ім'я таблиці (col1, col2, col3) ЦІННОСТІ (список_значень), (список_значень), (список_значень);

ВСТАВІТЬ IGNORE через Workbench:

Відкрийте робочий стіл MySQL 8.0 з вашої системи та підключіть його до екземпляра бази даних.

В області команд вам потрібно створити таблицю “Працівник” із чотирма стовпцями, де один із них повинен бути вказаний як “УНІКАЛЬНИЙ”. Спробуйте подати запит нижче в області запитів навігатора, щоб створити цю таблицю. Виберіть весь запит і клацніть на флеш-знаку, щоб виконати його.

>> СТВОРИТИ ТАБЛИЦУ Співробітник (ID int ПЕРВИННИЙ КЛЮЧ НЕ НУЛЬНИЙ, Ім'я varchar (50) НЕ НУЛЬНИЙ, Вік Varchar (50), Зарплата varchar (50), УНІКАЛЬНИЙ (ID));

Після створення ви можете знайти таблицю «працівник» у списку під опцією «Таблиці» під базою даних «дані».

У поданні сітки ви можете вводити записи, не вводячи жодного запиту. Отже, відкрийте сітчасту таблицю таблиці «працівник» і додайте в неї кілька записів, як показано нижче. Ми ввели всі унікальні записи без дублікатів. Натисніть кнопку «Застосувати», щоб застосувати зміни.

Відкриється нове вікно із відповідними запитами, пов’язаними із записами, які ми ввели вище. Цей екран можна назвати екраном "Огляд". Якщо ви хочете щось змінити, ви можете зробити це тут. В іншому випадку натисніть кнопку Застосувати, щоб виконати запити.

Як бачите, запит виконано успішно, а записи зберігаються в базі даних та його таблиці “Працівник”. Це призвело б до помилки, якби ми додали будь-яке повторюване значення у стовпець “Ідентифікатор”. Натисніть кнопку “Готово”.

Це все стосувалось подання сітки. Тепер ми будемо вставляти записи через область запиту. Тим часом ми цього разу вставляємо повторювані записи, щоб перевірити вихідні дані. Отже, ми спробували подати нижче запит “ВСТАВИТИ”, де ми маємо два списки значень. Обидва списки значень мають однакове значення в стовпці "Ідентифікатор". Виберіть запит і натисніть спалах, щоб виконати запит.

Запит не працюватиме належним чином, і це призведе до помилки через дубльовані значення в команді INSERT, як показано на зображенні.

Тепер спробуйте той самий запит із пропозицією INSERT IGNORE і виконайте його, як представлено.

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

Оновіть сітку таблиці “Працівник”. Запит INSERT IGNORE спрацював наполовину. Він вставив перший список значень у таблицю, але другий список значень було проігноровано через повторне значення “13”.

ВСТАВІТЬ IGNORE через оболонку командного рядка:

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

Тепер настав час створити таблицю. Спробуйте виконати наведену нижче команду. Ми створили таблицю з назвою "міністр", тоді як одна з її колонок має обмеження UNIQUE. Зрозуміло, що стовпець “Ідентифікатор” прийматиме лише унікальні значення, а не повторювані значення.

>> СТВОРИТИ дані ТАБЛИЦІ.міністр (середній INT ПОЧАТКОВИЙ КЛЮЧ УНІКАЛЬНИЙ НЕ ПУСТИЙ, ім'я VARCHAR (45), Місто VARCHAR (45));

Запит працює належним чином, і таблиця створена. Щоб зрозуміти речення INSERT IGNORE, спочатку потрібно побачити, як працює проста команда INSERT. Якщо ви використовуєте команду INSERT для вставки кількох інформаційних даних до таблиці, MySQL призупиняє транзакцію та генерує виняток, якщо під час обробки трапляється помилка. Як наслідок, у таблиці до неї не додано жодних рядків. Давайте вставимо перший запис у таблицю “міністр”, використовуючи поданий нижче запит. Запит буде успішно працювати, оскільки таблиця на даний момент порожня, і немає записів для порівняння.

Оскільки стовпець “Ідентифікатор” є УНІКАЛЬНИМ, коли ми спробуємо інструкцію нижче в оболонці командного рядка, це призведе до помилки. Це тому, що ми додали значення “11” у попередньому запиті, а завдяки UNIQUE ключу це не дозволяє нам додавати повторне значення ще раз.

Отже, перевіряючи таблицю, ми бачимо, що таблиця має лише 1 запис, доданий першим запитом INSERT.

>> ВИБЕРІТЬ * ВІД даних.міністр;

І навпаки, якщо ви використовуєте речення INSERT IGNORE, неправильні рядки даних, які спричиняють помилку, будуть пропущені та будуть вводити лише точні. У наведеній нижче команді ми використовуємо команду INSERT IGNORE, щоб уникнути додавання повторюваних значень у таблицю та не помітити помилку. Як бачите, перший список значень має повторюване значення “11” таке саме, як і в попередньому запиті. Хоча другий список значень є унікальним, він покаже 1 запис, вставлений у таблицю, що є другим списком значень. MySQL також вказує, що було вставлено лише 1 запис, а в повідомленні генерується 1 попередження. Тоді ви можете припустити, що якщо ми використовуємо речення INSERT IGNORE, MySQL надає попередження.

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

>> ВИБЕРІТЬ * ВІД даних.міністр;

Висновок:

Ми зробили всі необхідні приклади INSERT IGNORE щодо повторюваних значень за допомогою MySQL Workbench та клієнтської оболонки командного рядка MySQL.

Як розробити гру на Linux
Десять років тому не так багато користувачів Linux передбачали, що їх улюблена операційна система колись стане популярною ігровою платформою для комер...
Open Source Ports of Commercial Game Engines
Free, open source and cross-platform game engine recreations can be used to play old as well as some of the fairly recent game titles. This article wi...
Кращі ігри командного рядка для Linux
Командний рядок - це не просто ваш найбільший союзник при використанні Linux, він також може бути джерелом розваг, оскільки ви можете використовувати ...