Как добавить строку в таблицу mysql
Перейти к содержимому

Как добавить строку в таблицу mysql

  • автор:

Основные операции с данными

Для добавления данных в БД в MySQL используется команда INSERT , которая имеет следующий формальный синтаксис:

INSERT [INTO] имя_таблицы [(список_столбцов)] VALUES (значение1, значение2, . значениеN)

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

Например, пусть в базе данных productsdb есть следующая таблица Products:

CREATE DATABASE productsdb; USE productsdb; CREATE TABLE Products ( Id INT AUTO_INCREMENT PRIMARY KEY, ProductName VARCHAR(30) NOT NULL, Manufacturer VARCHAR(20) NOT NULL, ProductCount INT DEFAULT 0, Price DECIMAL NOT NULL );

Добавим в эту таблицу одну строку с помощью следующего кода:

INSERT Products(ProductName, Manufacturer, ProductCount, Price) VALUES ('iPhone X', 'Apple', 5, 76000);

В данно случае значения будут передаваться столбцам по позиции. То есть стобцу ProductName передается строка «iPhone X», столбцу Manufacturer — строка «Apple» и так далее.

Важно, чтобы между значениями и типами данных столбцов было соответствие. Так, столбец ProductName представляет тип varchar , то есть строку. Соответственно этому столбцу мы можем передать строковое значение в одинарных кавычках. А стобец ProductCount представляет тип int , то есть целое число, поэтому данному столбцу нужно передать целые числа, но никак не строки.

После удачного выполнения в MySQL Workbench в поле вывода должны появиться зеленый маркер и сообщение «1 row(s) affected»:

INSERT и добавление данных в MySQL

Необязательно при добавлении данных указывать значения абсолютно для всех столбцов таблицы. Например, в примере выше не указано значение для стобца Id. Но поскольку для данного столбца определен атрибут AUTO_INCREMENT , то его значение будет автоматически генерироваться.

Также мы можем опускать при добавлении такие столбцы, которые поддерживают значение NULL или для которых указано значение по умолчанию, то есть для них определены атрибуты NULL или DEFAULT . Так, в таблице Products столбец ProductCount имеет значение по умолчанию — число 0. Поэтому мы можем при добавлении опустить этот столбец, и ему будет передаваться число 0:

INSERT Products(ProductName, Manufacturer, Price) VALUES ('Galaxy S9', 'Samsung', 63000);

С помощью ключевых слов DEFAULT и NULL можно указать, что в качестве значения будет использовать значение по умолчанию или NULL соответственно:

INSERT Products(ProductName, Manufacturer, Price, ProductCount) VALUES ('Nokia 9', 'HDM Global', 41000, DEFAULT);
INSERT Products(ProductName, Manufacturer, Price, ProductCount) VALUES ('Nokia 9', 'HDM Global', 41000, NULL);

Множественное добавление

Также мы можем добавить сразу несколько строк:

INSERT Products(ProductName, Manufacturer, Price, ProductCount) VALUES ('iPhone 8', 'Apple', 51000, 3), ('P20 Lite', 'Huawei', 34000, 4), ('Galaxy S8', 'Samsung', 46000, 2);

В данном случае в таблицу будут добавлены три строки.

SQL INSERT INTO

Команда INSERT добавляет строки в таблицу или представление основной таблицы.

Синтаксис команды Sql INSERT INTO

Синтаксис команды Insert

Основные ключевые слова и параметры команды INSERT

  • schema — идентификатор полномочий, обычно совпадающий с именем некоторого пользователя
  • table view — имя таблицы, в которую строки должны быть вставлены; если указано представление, то строки вставляются в основную таблицу представления
  • subquery_1 — подзапрос, который сервер обрабатывает тем же самым способом как представление
  • column — столбец таблицы или представления, в который для каждой вставленной строки вводится значение из фразы VALUES или подзапроса; если один из столбцов таблицы опускается из этого списка, значением столбца для вставленной строки является значение по умолчанию столбца, определенное при создании таблицы. Если полностью опускается список столбца, предложение VALUES или запрос должен определить значения для всех столбцов в таблице
  • VALUES — определяет строку значений, которые будут вставлены в таблицу или представление; значение должно быть определено в предложении VALUES для каждого столбца в списке столбцов
  • subquery_2 — подзапрос, который возвращает строки, вставляемые в таблицу; выборочный список этого подзапроса должен иметь такое же количество столбцов, как в списке столбцов утверждения INSERT

Утверждение INSERT с фразой VALUES добавляет одиночную строку к таблице. Эта строка содержит значения, определенные фразой VALUES. Утверждение INSERT с подзапросом вместо фразы VALUES добавляет к таблице все строки, возвращенные подзапросом. Сервер обрабатывает подзапрос и вставляет каждую возвращенную строку в таблицу. Если подзапрос не выбирает никакие строки, сервер не вставляет никакие строки в таблицу.

Подзапрос может обратиться к любой таблице или представлению, включая целевую таблицу утверждения INSERT. Сервер назначает значения полям в новых строках, основанных на внутренней позиции столбцов в таблице и порядке значений фразы VALUES или в списке выбора запроса. Если какие-либо столбцы пропущены в списке столбцов, сервер назначает им значения по умолчанию, определенные при создании таблицы.

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

INSERT INTO

INSERT INTO. Пример 1

INSERT INTO dept VALUES (50, «ПРОДУКЦИЯ», «САН-ФРАНЦИСКО»);

INSERT INTO Customers (city, cname, cnum) VALUES (‘London’, ‘Hoffman’, 2001);

INSERT INTO. Пример 2

Нижеприведенная команда копирует данные сотрудников фирмы, комиссионные которых превышают 25% от дохода в таблицу bonus:

INSERT INTO bonus SELECT ename, job, sal, comm FROM emp WHERE comm > 0.25 * sal;

INSERT INTO. Пример 3

Если нужно вставить NULL-значение, необходимо указать его как обычное значение следующим образом:

INSERT INTO Salespeople VALUES (1001,’Peel’,NULL,12);

INSERT INTO. Пример 4

Команду INSERT можно применить для того, чтобы извлечь значения из одной таблицы и разместить их в другой, воспользовавшись для этого запросом. Для этого достаточно заменить предложение VALUES на соответствующий запрос:

INSERT INTO Londonstaff SELECT * FROM Salespeople WHERE city = ‘London’;

MySQL INSERT

Для вставки новых строк в базу данных MySQL используется команда INSERT, примеры команды INSERT приведены ниже:

MySQL INSERT INTO. Пример 1

Вставка новой строки в таблицу table_name.

INSERT INTO table_name VALUES (‘1’, ‘165’, ‘0’, ‘name’);

MySQL INSERT INTO. Пример 2

Вставка новой строки в таблицу table_name с указанием вставки данных в нужные нам колонки.

INSERT INTO table_name VALUES (‘1’, ‘165’, ‘0’, ‘name’);

В базе данных MySQL имеется возможность вставлять множество новых строк, используя одну команду INSERT.

MySQL INSERT INTO Пример 3

Вставка несколько строк в таблицу table_name.

INSERT INTO table_name (tbl_id, chislo, chislotwo, name) VALUES (‘1’, ‘159’, ’34’, ‘name1’), (‘2′, ’14’, ’61’, ‘name2’), (‘3’, ‘356’, ‘8’, ‘name3’);

Как добавить запись в таблицу MySQL

В MySQL для добавления записей в таблицу используется команда INSERT.

Для того, что бы ответить на вопрос: Как добавить запись в таблицу MySQL ?

Рассмотрим общий синтаксис команды INSERT. А после этого разберем на примерах добавление данных в таблицу.

Синтаксис команды выглядит следующим образом:

INSERT [ LOW_PRIORITY | DELAYED ] [ IGNORE ]
[ INTO ] tbl_name [(col_name. )]
VALUES (expression. ),(. ).
INSERT [ LOW_PRIORITY | DELAYED ] [ IGNORE ]
[ INTO ] tbl_name
SET col_name = expression, col_name = expression, .
INSERT [ LOW_PRIORITY | DELAYED ] [ IGNORE ]
[ INTO ] tbl_name [(col_name. )]

Общие положения работы команды INSERT:

— Задает имя таблицы, в которую будет вставлена новая строка. На момент запуска команды INSERT таблица с таким именем должна существовать в базе данных.

— Если указан этот параметр, то вставка новой записи будет отложена до тех пор, пока другие сценарии не закончат чтение из этой таблицы. Надо отметить, что если таблица часто используется, то при указании этого параметра может пройти достаточно много времени, прежде чем данная команда будет выполнена.

— Если указан этот параметр, то после выполнения команды INSERT сценарий сразу же получит ответ от БД о успешной вставке новой записи, а запись будет вставлено только после завершения использования данной таблицы другим сценарием. Это может быть удобно, если требуется высокая скорость работы скрипта. Данный параметр работает только с таблицами типа ISAM и MyISAM. Следуем отметить, что если таблица, в которую происходит вставка записи, в данный момент не используется другими запросами, то команда INSERT DELAYED будет работать медленнее, нежели INSER. Так что рекомендуется использовать параметр DELAYED только при большой нагрузке на таблицу.

— Если некоторые поля таблицы имеют ключи PRIMARY или UNIQUE, и производится вставка новой строки, в которой эти поля имеют дублирующее значение, то действие команды аварийно завершается и выдается ошибка №1062 («Duplicate entry ‘val’ for key N»). Если в команде INSERT указано ключевое слово IGNORE, то вставка записей не прерывается, а строки с дублирующими значениями просто не вставляются.

Рассмотрим простой пример добавления данных в таблицу MySQL подробнее.

Как добавить запись в таблицу MySQL ?

Исходные данные:

У нас уже есть работающая MySQL в которой создана база данных и в ней создана таблица с именем ‘my_table’ и в таблице созданы поля: ‘ID’, ‘name’, ‘surname’, ‘bithday’, где:

  • ID — порядковый номер записи;
  • name — имя пользователя;
  • surname — фамилия;
  • bithday — день рождения.

Обратите внимание !

Название таблицы и полей береме в косые кавычки:

Руководство по SQL: команда MySQL INSERT в подробностях

Команда вставки данных в таблицу востребована во всех реляционных базах данных. В руководстве рассмотрим разные способы вставки данных в таблицу через систему управления базами данных MYSQL.

Содержание:

  1. Простая команда INSERT INTO.
  2. Список столбцов таблицы.
  3. Одновременная вставка нескольких записей.
  4. Ключевое слово SET.
  5. Комбинация команд INSERT и SELECT.
  6. Связка команд INSERT и IGNORE.
  7. Загрузка записей из текстового файла.

1. Простая команда INSERT INTO

Самый простой способ вставить данные в таблицу — команда INSERT INTO table_name VALUES(column1, column2, column_n) . Допустим, что дана таблица users с тремя полями name , age и contact , а также типами varchar , integer и varchar . Применим следующую команду для вставки данных в таблицу users :

INSERT INTO users VALUES("Brave Zombie",18,"987654321");

Из-за синтаксиса команды учитывайте следующее.

  1. Помните порядок столбцов, потому что значения для столбцов указываются по порядку.
  2. Определите значения для всех столбцов.

2. Список столбцов таблицы

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

INSERT INTO users(name, age, contact) VALUES("Brave Zombie", 18, "987654321");

Преимущества команды INSERT с явно указанными столбцами таблицы:

  1. Больше не нужно помнить порядок столбцов.
  2. Не нужно каждый раз предоставлять значения для всех столбцов. Теперь вы можете предоставлять значения только для указанных в запросе столбцов.

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

INSERT INTO users(name, age)
VALUES
("Brave Zombie",18),
("John John", 18),
("Rama", 19);

3. Одновременная вставка нескольких записей

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

INSERT INTO users(name, age)
VALUES
("Brave Zombie",18),
("John John", 18),
("Rama", 19);

4. Ключевое слово SET

Ключевое слово SET хорошо сочетается с ключевым словом INSERT при вставке записей в таблицы. Крайне читаемая инструкция! Давайте проанализируем следующий пример:

INSERT INTO users SETname="Brave Zombie",age=18,contact="9876543210";

Недостатком ключевого слова SET можно назвать то, что с его помощью нельзя вставить несколько записей за один раз. Для вставки нескольких значений одновременно подойдет ранее изложенный синтаксис SQL-команды INSERT .

5. Комбинация команд INSERT и SELECT

Когда из одной таблицы нужно скопировать данные в другую — пригодится связка команд INSERT и SELECT . Пример с таблицами users и table2 :

INSERT INTO users(name, age, contact)
SELECT name, age, contact
FROM table2;

6. Связка команд INSERT и IGNORE

Работая с большим набором данных, регулярно приходится производить запросы на вставку данных без настоящего изменения таблицы — в таком случае выручит комбинация команд INSERT и IGNORE . Говорят, что пример лучше, чем десять строк объяснения, поэтому рассмотрим команду INSERT IGNORE на примере:

  • Сначала создайте таблицу “сотрудники”, employees , с помощью такого синтаксиса:
INSERT INTO employees(id, name, department_name)
VALUES(1, "John John", "Sales Department");
  • Теперь попробуйте вставить запись в таблицу через следующий запрос:
INSERT IGNORE employees(id, name, department_name)
VALUES(1, "John John", "Marketing Department");

Нетрудно заметить, что приведенный выше запрос не выдает ошибку. Кроме того, при выборе всех записей из таблицы сотрудников, возвращается только одна запись, department_name (имя отдела) которой по-прежнему “Sales Department” , “Отдел продаж”.

7. Загрузка записей из текстового файла

До сих пор в руководстве объяснялось создание таблиц и заполнение их через команду INSERT INTO . Но существуют и другие варианты заполнения таблицы, например команда LOAD DATA .

Предположим, что вы создали таблицу друзей с помощью следующего запроса:

CREATE TABLE friends (
firstname VARCHAR(100),
lastname VARCHAR(100),
contact VARCHAR(10),
birth DATE
);

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

Создайте текстовый файл friends.txt и поместите в него все записи, каждую запись на отдельной строке. Значения разделите табуляцией, а пропущенные значения укажите как \N , например:

'John' '\N' '9876543210' '2000-01-01'

Теперь приведенная ниже команда загрузит текстовый файл friends.txt в таблицу базы данных:

LOAD DATA LOCAL INFILE '/path/friends.txt' INTO TABLE friends;

Если вы пользуетесь операционной системой Windows, то вместо предыдущей команды вам поможет приведенный ниже код:

LOAD DATA LOCAL INFILE '/path/friends.txt' INTO TABLE friends LINES TERMINATED BY '\r\n';

Вы даже сможете явно указать разделитель значений столбцов и маркер конца строки через FIELDS TERMINATED BY и LINES TERMINATED BY соответственно. По умолчанию разделителем значений назначен символ табуляции, а указателем перехода на новую строку — символ перевода строки.

Если MYSQL выдает ошибку при выполнении команды LOAD DATA , возможно, в вашей установке MYSQL по умолчанию не включена возможность работы с локальными файлами. Чтобы изменить параметры, посетите раздел 6.1.6. “Соображения безопасности для LOAD DATA LOCAL” справочного руководства MySQL.

  • Какую СУБД начать изучать в первую очередь?
  • Запросы сразу к нескольким базам данных MySQL
  • 6 SQL-запросов, о которых должен знать каждый дата-инженер

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *