Вторник, 19.03.2024
Справочники по программированию.
Меню сайта
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Форма входа
Рейтинг@Mail.ru

Методы вставки данных

Для добавления данных в таблицы используются несколько методов:

с помощью оператора INSERT и значения VALUES;
с помощью оператора INSERT и значения SET;
с помощью оператора LOAD DATA;
с помощью утилиты mysqlimport из файла, в консоли сервера.

Добавление с помощью оператора с помощью утилиты INSERT VALUES

Оператор INSERT имеет следующий синтаксис:

INSERT INTO tablename VALUES(value1, value2, value3…)

Порядок указания параметров VALUES должен соответствовать порядку столбцов в таблице, проверить которые можно командой:

mysql> desc tablename;

Выделять значения можно как двойными кавычками ” “, так и одинарными  – ‘ ‘. Столбцы, имеющие атрибут AUTO_INCREMENT заполняются значением NULL. Можно использовать множественный ввод для разных строк одной таблицы, указав значения через запятую:

INSERT INTO tablename VALUES(value1, value2, value3…), (value4, value5, value6…);

Для первого примера – используем созданную в первой части статьи таблицу main_list и добавим в неё такие данные:

mysql> INSERT INTO main_list VALUES(NULL, ‘Alexsander‘, ‘Sunko‘, ‘+380661111111‘, ‘Kiev‘, ‘name@gmail.com‘, NULL, ‘222333444‘, NULL, ‘Y‘);
Query OK, 1 row affected (0.41 sec)

И посмотрим – что получилось:

mysql> SELECT * FROM main_list;
+————+————+———–+—————+——+————————-+——-+———–+————+———–+
| contact_id | first_name | last_name | phone         | city | email                   | skype | icq       | birth_date | real_type |
+————+————+———–+—————+——+————————-+——-+———–+————+———–+
|          1 | Alexsander | Sunko| +380661111111| Kiev | name@gmail.com | NULL  | 222333444| NULL       | Y         |
+————+————+———–+—————+——+————————-+——-+———–+————+———–+
1 row in set (0.00 sec)

Добавим вторую запись для Sunko в таблицу main_socials, в которой укажем ссылку на его профайл Вконтакте:

mysql> INSERT INTO main_socials VALUES(NULL, ‘1‘, ‘http://vk.com/asunko‘, NULL);
Query OK, 1 row affected (0.01 sec)

Посмотрим:

mysql> SELECT * FROM main_socials;
+———-+————+—————————+————-+
| entry_id | contact_id | vk_id                     | facebook_id |
+———-+————+—————————+————-+
|        1 |          1 | http://vk.com/asunko| NULL        |
+———-+————+—————————+————-+

Добавление с помощью оператора SET

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

mysql> INSERT INTO main_socials SET entry_id=NULL, contact_id=”7“, vk_id=”http://vk.com/agool“, facebook_id=”NULL”;
Query OK, 1 row affected (0.01 sec)

Проверим:

mysql> SELECT * FROM main_socials;
+———-+————+—————————+————-+
| entry_id | contact_id | vk_id                     | facebook_id |
+———-+————+—————————+————-+
|        1 |          1 | http://vk.com/asunko| NULL        |
|        2 |         16 | http://vk.com/agool| NULL        |
+———-+————+—————————+————-+
2 rows in set (0.00 sec)

Однако, с помощью оператора SET нельзя вставлять несколько строк, в отличии от схемы INSERT VALUES.

Больше про оператор INSERT можно прочитать тут>>>.

Добавление из файла с помощью LOAD DATA

Столбцы в файле должны быть разделены табуляцией (не пробелом!). Использовать кавычки не нужно. Значения VALUES располагаются как и при обычном методе INSERT VALUES – по очереди имеющихся столбцов в таблице.

Например – содержимое файла main_list.txt:

$ cat main_list.txt
INSERT INTO main_list VALUES(NULL       Alexandr       Gool       +380675556677   Kiev    NULL    NULL    222555888       NULL    Y       );
INSERT INTO main_list VALUES(NULL       Vladimir        Trestor +380977778899   Kiev    NULL    NULL    NULL    NULL    Y       );

Выполним запрос:

mysql> LOAD DATA LOCAL INFILE “main_list.txt” into TABLE main_list;
Query OK, 2 rows affected, 7 warnings (0.00 sec)
Records: 2  Deleted: 0  Skipped: 0  Warnings: 7

Если сервер выдал ошибку такого плана:

ERROR 1148 (42000): The used command is not allowed with this MySQL version

Добавьте в конфигурационный файл сервера MySQL my.cnf в блок [client] строку:

local-infile=1

и перезапустите сервер.

Больше информации о LOAD DATA INFILE можно найти тут>>>.

Добавление из файла с помощью mysqlimport

Фактически, mysqlimport просто выполняет оператор LOAD DATA на сервере.

Требования к файлу такие же, как и при использовании LOAD DATA и были описаны выше.

–debug-info использовать не обязательно, тут он просто для примера.

# mysqlimport –local –debug-info -u setevoy -p contacts main_list.txt
Enter password:
contacts.main_list: Records: 2  Deleted: 0  Skipped: 0  Warnings: 7

User time 0.00, System time 0.00
Maximum resident set size 2804, Integral resident set size 1236
Non-physical pagefaults 201, Physical pagefaults 0, Swaps 0
Blocks in 0 out 0, Messages in 6 out 6, Signals 0
Voluntary context switches 20, Involuntary context switches 7

Посмотрим, что получилось:

mysql> SELECT * FROM main_list;
+————+————+———–+—————+——+————————-+——-+———–+————+———–+
| contact_id | first_name | last_name | phone         | city | email                   | skype | icq       | birth_date | real_type |
+————+————+———–+—————+——+————————-+——-+———–+————+———–+
|          1 | Alexsander | Sunko | +380661111111| Kiev | name@gmail.com | NULL  | 222333444| NULL       | Y         |
|          7 | Alexandra  | Gool      | +380675556677  | Kiev | NULL                    | NULL  | 222555888 | 0000-00-00 | Y         |
|          8 | Vladimir   | Trestor| +380977778899  | Kiev | NULL                    | NULL  |         0 | 0000-00-00 | Y         |
+————+————+———–+—————+——+————————-+——-+———–+————+———–+

Больше про mysqlimport можно прочитать тут>>>.

Для удаления ошибчной или лишней записи – используйте такой запрос:

mysql> DELETE FROM main_list WHERE contact_id=”14“;
Query OK, 1 row affected (0.02 sec)

В следующей части будут расммотрены другие возможности при работе с MySQL – выборка и сортировка значений из таблиц.

Поиск
Друзья сайта
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz
  • Copyright MyCorp © 2024
    Бесплатный хостинг uCoz
    Рейтинг@Mail.ru