Link Search Menu Expand Document
27 Июня 2023 г.

Вставка данных c помощью INSERT

Вставка по формуле таблица - столбцы - значения

# Вставка одного значения  
INSERT INTO history (`table`) VALUES ('test_table') # в неуказанные столбцы будет вставлен NULL
INSERT INTO history (`table`,row_id,user_id,time, description) VALUES ('test_table',1,8,1234567,'description')
INSERT INTO history VALUES (NULL,'test_table',1,8,1234567,'description')
# Выражение во вставляемом значении, можно и так    
INSERT INTO history VALUES (NULL,'test_table',1,(8*4),1234567,'description')    

# Так же существует такой синтаксис    
INSERT INTO history SET `table`='table';
INSERT INTO history SET `table`='table',row_id=1,user_id=24,time=1234546,description='description';    
    
# Вставка нескольких значений
INSERT INTO history VALUES (NULL,'test_table',1,8,1234567,'description'),(NULL,'test_table2',1,8,1234567,'description'),(NULL,'test_table3',1,8,1234567,'description')
INSERT INTO history VALUES (NULL,'test_table',1,8,1234567,'description'),(NULL,NULL,1,8,1234567,'description'),(NULL,NULL,NULL,NULL,NULL,'description') # Заполняем нулями пустые поля

# Вставка из другой таблицы
# Порядок тут такой, нужно выполнить запрос на SELECT выбирающий данные для вставки с точным указаним полей, далее выполнить INSERT
INSERT INTO history (row_id,user_id, time) (SELECT row_id,user_id,time FROM history WHERE `table` = 'clients')
# Таблица может быть вообще другой
INSERT INTO history (`table`, row_id, user_id) (SELECT doc_type,doc_id,sum FROM invoice WHERE doc_type = 3)
# Если у поля есть значение по умолчанию, то если мы не укажем его в INSERT, будет подставлено значение по умолчанию

# Игнорирование ошибки вставки. Допустим вносим дублирующий id, получим 1062 - Duplicate entry '104096' for key 'PRIMARY', добавим IGNORE чтобы подавить ошибку
INSERT IGNORE INTO history VALUES (104096,'test_table',1,77,1234567,'description')

# Вставка или обновление при дубликате, команда REPLACE, здесь упомяну про нее как универсальная команда вставки и обновления
REPLACE history VALUES (104096,'test_table1',1,77,1234567,'description') # Если записи нет, она будет добавлена, если есть обновлена

Возник вопрос или предложение пиши на почту alexsey_89@bk.ru или в Телеграмм канал

Дата публикации: 27 Июня 2023 г.

Содержание


Наверх

Последнее изменение страницы: 27 Июня 2023 г.