MySQL — как вставить новую строку, только если данные не существуют

Mysql Kak Vstavit Novuu Stroku Tol Ko Esli Dannye Ne Susestvuut



MySQL — известная СУБД с открытым исходным кодом для хранения данных в базах данных. Вставка данных в таблицы вашей базы данных является обычной задачей. Иногда пользователи не хотят вставлять повторяющиеся данные, чтобы устранить избыточность. MySQL позволяет пользователям вставлять данные, только если подобные данные еще не существуют.

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

Вставьте новую строку, только если данные не существуют, используя оператор «INSERT IGNORE»

Что ж, ответ на вопрос в заголовке довольно прост и понятен. Просто используйте « ВСТАВЛЯТЬ ключевое слово вместе с « ИГНОРИРОВАТЬ Ключевое слово. Это гарантирует, что новые данные или запрос на вставку будут выполняться только тогда, когда в MySQL не будет найдена предыдущая запись данных. Чтобы получить краткий обзор этого, взгляните на следующий синтаксис:







ВСТАВЛЯТЬ ИГНОРИРОВАТЬ В [ стол - имя ] ( [ столбец1 - имя ] , [ столбец2 - имя ] , [ столбец3 - имя ] ) ЦЕННОСТИ ( [ значение1 ] , [ значение2 ] , [ значение3 ] ) ;

Давайте посмотрим на пример, если пользователь хочет ввести значение строки « 1 », « Джон ' и ' Доу ' в ' Клиент 'таблица для столбцов' Идентификатор , ' Имя ' и ' Фамилия ' соответственно. Запустите этот запрос, чтобы вставить эти значения, если они есть, если строки с этими значениями уже не существует:



ВЫБИРАТЬ * ОТ Клиент;
ВСТАВЛЯТЬ ИГНОРИРОВАТЬ В Клиент ( Идентификатор , Имя , Фамилия ) ЦЕННОСТИ ( 1 , 'Джон' , 'Доу' ) ;

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







Вставьте новую строку, только если данные не существуют, используя предложение «ГДЕ НЕ СУЩЕСТВУЕТ»

В MySQL « ГДЕ НЕ СУЩЕСТВУЕТ ” предотвращает вставку строк, если они уже существуют в таблице, когда она используется в “ ВСТАВИТЬ В ” с подзапросом для определения условия. Когда это предложение используется с подзапросом « (SELECT * FROM [имя таблицы] [имя столбца]=[выражение]); ” проверяет, существует ли в таблице строка, удовлетворяющая условию. Если строка существует, « ГДЕ НЕ СУЩЕСТВУЕТ » вернет ложное значение, а « ВЫБИРАТЬ ” не вернет никаких строк. В результате строка не будет вставлена ​​в таблицу. Синтаксис представлен ниже:

ВСТАВЛЯТЬ В [ стол - имя ] ( [ столбец1 - имя ] , [ столбец2 - имя ] , [ столбец3 - имя ] )
ВЫБИРАТЬ [ значение1 ] , [ значение2 ] , [ значение3 ]
ГДЕ НЕТ СУЩЕСТВУЕТ ( ВЫБИРАТЬ * ОТ [ стол - имя ] [ столбец - имя ] '=' [ выражение ] ) ;

Давайте рассмотрим пример, если пользователь хочет вставить строку в таблицу сотрудников, содержащую значения « 1 », « американский ' и ' Анрио ” в столбцах ” идентификатор », « Название компании ' и ' Контактное лицо ' соответственно. Но только если строка с идентификатором « 1 ” не найден в таблице или не существует. В этом конкретном случае запрос будет выглядеть так:



ВЫБИРАТЬ * ОТ сотрудник;

ВСТАВЛЯТЬ В сотрудник ( идентификатор , Название компании , Контактное лицо )
ВЫБИРАТЬ 1 , 'Американский' , 'Анрио'
ГДЕ НЕТ СУЩЕСТВУЕТ ( ВЫБИРАТЬ * ОТ сотрудник ГДЕ идентификатор '=' 1 ) ;

На выходе отображается новая строка, которая не вставлена ​​как строка с « идентификатор ' равно ' 1 »уже существовал.

Вставьте новую строку, только если данные не существуют, используя предложение «ON DUPLICATE KEY UPDATE».

Ну, еще один способ - использовать « ПРИ ОБНОВЛЕНИИ Дубликата ключа ” в MySQL. Поскольку это предложение будет использоваться с запросом «INSERT INTO», формирующим выполнение «if-else». Это означает, что данные внутри таблицы будут обновляться только в том случае, если они уникальны. В противном случае никаких изменений не произошло бы. Общий синтаксис для этого следующий:

ВСТАВЛЯТЬ В [ стол - имя ] ( [ столбец1 - имя ] , [ столбец2 - имя ] , [ столбец3 - имя ] ) ЦЕННОСТИ ( [ значение1 ] , [ значение2 ] , [ значение3 ] )
НА ДУБЛИК КЛЮЧ ОБНОВЛЯТЬ [ столбец1 - имя ] '=' [ столбец1 - имя ] ;

Давайте посмотрим на пример, чтобы вставить значения в « 2 », « Паскаль », « Никсон », « Лондон », « Великобритания ' и “(171) 555-7788 ' в таблице ' Клиент 'для столбцов' Идентификатор », « Имя », « Фамилия », « город », « страна ' и ' телефон ' соответственно. Если строка еще не существует, она будет вставлена. В противном случае будут обновлены значения, где « Идентификатор=Идентификатор условие соответствует. Запустите этот запрос:

ВЫБИРАТЬ * ОТ Клиент ;
ВСТАВЛЯТЬ В Клиент ( Идентификатор , Имя , Фамилия , город , страна , телефон )
ЦЕННОСТИ ( 2 , 'Паскаль' , 'Никсон' , 'Лондон' , 'ВЕЛИКОБРИТАНИЯ' , «(171) 555-7788» )
НА ДУБЛИК КЛЮЧ ОБНОВЛЯТЬ Идентификатор '=' Идентификатор;

Это таблица перед запуском запроса, вы можете увидеть « Идентификатор ' равно ' 2 ' не существует:

После выполнения запроса этот запрос вставит новые строки в таблицу:

Вы успешно вставили новую строку, так как данные не существовали до выполнения запроса.

Заключение

В MySQL вставляйте новую строку только в том случае, если данные еще не существуют, используя « ВСТАВИТЬ ИГНОРИРОВАТЬ заявление или ' ГДЕ НЕ СУЩЕСТВУЕТ пункт в « ВСТАВИТЬ В ' заявление. Другой способ сделать это — использовать « ПРИ ОБНОВЛЕНИИ Дубликата ключа пункт в « ВСТАВИТЬ В ” для обновления, если строка уже существует. В противном случае добавьте новую строку. В сообщении обсуждалось, как вставить новую строку, только если данные не существуют.