MySQL Запрос INSERT INTO: как добавить строку в таблицу (пример)

⚡ Умное резюме

MySQL Запрос INSERT INTO добавляет новые строки в таблицу, либо путем явного указания целевых столбцов, либо путем предоставления значения для каждого столбца. Правильное экранирование строк, чисел и дат определяет, сохранятся ли сохраненные данные в неизменном виде.

  • 📥 Основной синтаксис: INSERT INTO `table_name`(column_1,column_2) VALUES (value_1,value_2) создает одну новую строку в указанной таблице.
  • 🔤 Правило цитирования: Строковые значения и значения дат должны заключаться в одинарные кавычки; числовые значения указываются без кавычек.
  • 0️⃣ «Ловушка ведущего нулевого уровня»: Номер телефона без кавычек считывается как число, поэтому ведущий ноль незаметно отбрасывается.
  • 🔀 Порядок столбцов: Порядок столбцов в запросе не имеет значения, при условии, что каждое значение соответствует соответствующему столбцу.
  • 🕳️ Пропущенные столбцы: Столбцы, не упомянутые в операторе, получают значение NULL или их объявленное значение по умолчанию.
  • 📑 От стола к столу: Оператор INSERT INTO … SELECT копирует строки между таблицами, если структура столбцов совпадает.

Что такое ВСТАВИТЬ В?

ВСТАВИТЬ В Используется для хранения данных в таблицах. Команда INSERT создает новую строку в таблице для хранения данных. Данные обычно предоставляются прикладными программами, работающими поверх базы данных.

Основной синтаксис

Давайте посмотрим на основной синтаксис INSERT INTO. MySQL команда:

INSERT INTO `table_name`(column_1,column_2,...) VALUES (value_1,value_2,...);

ВОТ

  • INSERT INTO `table_name` — это команда, которая сообщает MySQL сервер для добавления новой строки в таблицу с именем `table_name.`
  • (column_1,column_2,…) указывает столбцы, которые будут обновлены в новом MySQL строка
  • VALUES (value_1,value_2,…) определяет значения, которые будут добавлены в новую строку.

При предоставлении значений данных для вставки в новую таблицу следует учитывать следующее:

  • Строковые типы данных – все строковые значения должны быть заключены в одинарные кавычки.
  • Числовые типы данных – все числовые значения следует указывать напрямую, без заключения в одинарные или двойные кавычки.
  • Типы данных даты — значения даты заключаются в одинарные кавычки в формате «ГГГГ-ММ-ДД».

Вставка нескольких строк одновременно

Одна инструкция INSERT может содержать несколько строк. Разделяйте каждое множество значений запятой. Одна инструкция работает быстрее, чем множество, поскольку индекс обновляется только один раз.

INSERT INTO `categories`(`category_name`,`remarks`) VALUES
('Documentary', 'Factual films'),
('Musical', 'Song driven films');

MySQL Пример запроса INSERT INTO

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

Полные имена Дата рождения пол Физический адрес почтовый адрес Контактный номер Ваш e-mail
Леонард Хофштадтер M Вудкрест 0845738767
Шелдон Купер M Вудкрест 0976736763
Раджеш Кутраппали M Вудкрест 0938867763
Лесли Винкль 14/02/1984 M Вудкрест 0987636553
Говард Воловиц 24/08/1981 M Южный парк Почтовый ящик 4563 0987786553 lwolowitz@email.me

Давайте вставим данные по одной строке за раз, начиная с Леонарда Хофстадтера. Мы будем рассматривать номер телефона как числовой тип данных и не заключать его в одинарные кавычки.

INSERT INTO `members` (`full_names`,`gender`,`physical_address`,`contact_number`) VALUES ('Leonard Hofstadter','Male','Woodcrest',0845738767);

При выполнении приведенного выше скрипта из контактного номера Леонарда удаляется цифра 0, поскольку это значение рассматривается как числовое, и ведущий ноль не имеет значения.

Чтобы избежать подобных проблем, значение необходимо заключить в одинарные кавычки, как показано ниже.

INSERT INTO `members` (`full_names`,`gender`,`physical_address`,`contact_number`) VALUES ('Sheldon Cooper','Male','Woodcrest', '0976736763');

⚠️ Совет: Номера телефонов, почтовые индексы и аналогичные идентификаторы следует хранить в текстовом столбце, например, типа VARCHAR. Числовые столбцы не могут содержать ведущий ноль.

Изменение порядка столбцов

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

INSERT INTO `members` (`contact_number`,`gender`,`full_names`,`physical_address`) VALUES ('0938867763','Male','Rajesh Koothrappali','Woodcrest');

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

Теперь добавим запись о Лесли, в которой указана дата рождения. Дата должна быть заключена в одинарные кавычки в формате «ГГГГ-ММ-ДД».

INSERT INTO `members` (`full_names`,`date_of_birth`,`gender`,`physical_address`,`contact_number`) VALUES ('Leslie Winkle','1984-02-14','Male','Woodcrest', '0987636553');

Опущение списка столбцов

Все приведенные выше запросы присваивали имена столбцам и сопоставляли их со значениями. Если мы укажем значения для ВСЕХ столбцов в таблице, список столбцов можно опустить. MySQL вставить запрос.

INSERT INTO `members` VALUES (9,'Howard Wolowitz','Male','1981-08-24',
'SouthPark','P.O. Box 4563', '0987786553', 'lwolowitz@email.me');

Давайте теперь воспользуемся Оператор SELECT чтобы просмотреть все строки в таблице участников.

SELECT * FROM `members`;
Количество членов полные имена пол Дата рождения Физический адрес почтовый адрес контактный_ номер e-mail
1 Джанет Джонс F 21-07-1980 Первая улица, участок № 4 Частная сумка 0759 253 542 janetjones@yagoo.cm
2 Джанет Смит Джонс F 23-06-1980 Мелроуз 123 NULL, NULL, jj@fstreet.com
3 Роберт Фил M 12-07-1989 3-я улица, 34 NULL, 12345 rm@ttreet.com
4 Глория Уильямс F 14-02-1984 2-я улица, 23 NULL, NULL, NULL,
5 Леонард Хофштадтер M NULL, Вудкрест NULL, 845738767 NULL,
6 Шелдон Купер M NULL, Вудкрест NULL, 0976736763 NULL,
7 Раджеш Кутраппали M NULL, Вудкрест NULL, 0938867763 NULL,
8 Лесли Винкль M 14-02-1984 Вудкрест NULL, 0987636553 NULL,
9 Говард Воловиц M 24-08-1981 Южный парк Почтовый ящик 4563 0987786553 lwolowitz@email.me

Обратите внимание, что из контактного номера Леонарда Хофстадтера исчез первый ноль, как и ожидалось. В приведенных номерах он сохранился.

Вставка в таблицу из другой таблицы

Команда INSERT также может использоваться для вставки данных в таблицу из другой таблицы. Основной синтаксис показан ниже.

INSERT INTO table_1 SELECT * FROM table_2;

Теперь создадим фиктивную таблицу для категорий фильмов, которая будет называться categories_archive. Ниже приведён скрипт. создает таблицу.

CREATE TABLE `categories_archive` ( `category_id` int(11) AUTO_INCREMENT, `category_name` varchar(150) DEFAULT NULL, `remarks` varchar(500) DEFAULT NULL, PRIMARY KEY (`category_id`))

Выполните приведенный выше скрипт для создания таблицы. Теперь давайте вставим все строки из таблицы categories в таблицу categories archive.

INSERT INTO `categories_archive` SELECT * FROM `categories`;

Для корректной работы этого скрипта структура таблиц должна быть одинаковой. Более надежный скрипт сопоставляет имена столбцов в целевой таблице с именами столбцов в таблице, содержащей данные, как показано ниже.

INSERT INTO `categories_archive`(category_id,category_name,remarks) SELECT category_id,category_name,remarks FROM `categories`;

Выполнение приведенного ниже запроса SELECT дает следующие результаты.

SELECT * FROM `categories_archive`;
ид_категории category_name замечания
1 комедия Фильмы с юмором
2 Романтический Любовные истории
3 Эпический Сюжетные древние фильмы
4 Хоррор NULL,
5 Научная фантастика NULL,
6 Триллер NULL,
7 Экшн NULL,
8 Романтическая комедия NULL,
9 Мультфильмы NULL,
10 Мультфильмы NULL,

Пример PHP: вставка в MySQL Таблица

Функция mysqli_query используется для выполнения SQL Запросы из PHP. Он выполняет операторы INSERT, SELECT, UPDATE и DELETE и имеет следующий синтаксис.

mysqli_query($db_handle,$query);

ВОТ,

  • «mysqli_query(…)» — это функция, выполняющая SQL-запросы.
  • "$query" — это SQL-запрос, который необходимо выполнить.
  • “$db_handle” — это ссылка для подключения к серверу, возвращаемая функцией mysqli_connect.

Пример

$servername = "localhost";
$username = "alex";
$password = "yPXuPT";
$dbname = "afmznf";

// Create connection
$conn = mysqli_connect($servername, $username, $password, $dbname);

// Check connection
if (!$conn) {
    die("Connection failed: " . mysqli_connect_error());
}

$sql = "INSERT INTO addkeyworddata(link, keyword) VALUES ('https://www.guru99.com/','1000')";

if (mysqli_query($conn, $sql)) {
    echo "New record created successfully" . '<br>';
} else {
    echo "Error: " . $sql . "<br>" . mysqli_error($conn);
}

Часто задаваемые вопросы (FAQ)

MySQL Отклоняет запрос с ошибкой дублирования записи. Используйте INSERT IGNORE, чтобы пропустить строку без уведомления, или INSERT … ON DUPLICATE KEY UPDATE, чтобы обновить существующую строку.

Выполните запрос SELECT LAST_INSERT_ID() сразу после вставки или вызовите функцию mysqli_insert_id($conn) в PHP. Она вернет ключ AUTO_INCREMENT, сгенерированный для последней строки в вашем собственном соединении.

Никогда не объединяйте пользовательский ввод в строку запроса. Используйте подготовленные запросы с привязанными параметрами, чтобы значения передавались отдельно от исходных данных. SQL и не могут выполняться как команды.

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

Сначала вставьте его в тестовую копию. Строки, сгенерированные ИИ, могут нарушать работу внешних ключей, превышать длину столбцов или создавать некорректные даты. Запустите пакет в транзакции, чтобы его можно было отменить.

Подведем итог этой публикации следующим образом: