Руководство по SQL. Добавление записей.

Для добавления новых записей в таблицу базы данных (далее – БД) мы используем SQL выражение INSERT INTO.

Общий вид выражения имеет следующий вид:


INSERT INTO имя_таблицы (колонка1, колонка2 ...)
VALUES (значение1, значение2 ...);

Пример:
Предположим, что у нас есть пустая таблица developers, которая имеет следующий вид:


mysql> desc developers;
+------------+--------------+------+-----+---------+-------+
| Field      | Type         | Null | Key | Default | Extra |
+------------+--------------+------+-----+---------+-------+
| ID         | int(11)      | NO   | PRI | NULL    |       |
| NAME       | varchar(100) | NO   |     | NULL    |       |
| SPECIALTY  | varchar(100) | YES  |     | NULL    |       |
| EXPERIENCE | int(11)      | NO   |     | NULL    |       |
| SALARY     | int(11)      | YES  |     | NULL    |       |
+------------+--------------+------+-----+---------+-------+
5 rows in set (0.00 sec)

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


INSERT INTO developers (ID, NAME, SPECIALTY, EXPERIENCE, SALARY)
 VALUES (1, 'Eugene Suleimanov', 'Java', 2, 2000);

INSERT INTO developers (ID, NAME, SPECIALTY, EXPERIENCE, SALARY) 
VALUES (2, 'Peter Romanenko', 'C++', 3, 3500);

INSERT INTO developers (ID, NAME, SPECIALTY, EXPERIENCE, SALARY) 
VALUES (3, 'Andrei Komarov', 'JavaScript', 2, 2100);

INSERT INTO developers (ID, NAME, SPECIALTY, EXPERIENCE, SALARY) 
VALUES (4, 'Konstantin Geiko', 'C#', 2, 2000);

INSERT INTO developers (ID, NAME, SPECIALTY, EXPERIENCE, SALARY) 
VALUES (5, 'Asya Suleimanova', 'UI/UX', 2, 1800);

Мы также можем добавить шестую запись используя синтаксис приведённый ниже:


INSERT INTO developers 
VALUES (6, 'Ludmila Geiko', 'UI/UX', 2, 1800);

После поочерёдного выполнения данного запроса наша таблица будет содержать такие данные:


mysql> SELECT * FROM developers;
+----+-------------------+------------+------------+--------+
| ID | NAME              | SPECIALTY  | EXPERIENCE | SALARY |
+----+-------------------+------------+------------+--------+
|  1 | Eugene Suleimanov | Java       |          2 |   2000 |
|  2 | Peter Romanenko   | C++        |          3 |   3500 |
|  3 | Andrei Komarov    | JavaScript |          2 |   2100 |
|  4 | Konstantin Geiko  | C#         |          2 |   2000 |
|  5 | Asya Suleimanova  | UI/UX      |          2 |   1800 |
|  6 | Ludmila Geiko     | UI/UX      |          2 |   1800 |
+----+-------------------+------------+------------+--------+
6 rows in set (0.00 sec)

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


INSERT INTO имя_оригинальной_таблицы (колонка1, колонка2 ... )
   SELECT колонка1, колонка2 ... 
   FROM имя_второй_таблицы
   [WHERE условие];

Создадим таблицу developers_copy


CREATE TABLE developers_copy AS 
SELECT ID, NAME, SPECIALTY, EXPERIENCE, SALARY FROM developers;

В результате мы получим таблицу developers_copy, которая имеет следующий вид:


mysql> DESC developers_copy;
+------------+--------------+------+-----+---------+-------+
| Field      | Type         | Null | Key | Default | Extra |
+------------+--------------+------+-----+---------+-------+
| ID         | int(11)      | NO   |     | NULL    |       |
| NAME       | varchar(100) | NO   |     | NULL    |       |
| SPECIALTY  | varchar(100) | YES  |     | NULL    |       |
| EXPERIENCE | int(11)      | NO   |     | NULL    |       |
| SALARY     | int(11)      | YES  |     | NULL    |       |
+------------+--------------+------+-----+---------+-------+
5 rows in set (0.00 sec)

Теперь вставим в эту таблицу данные из оригинальной таблицы developers:


mysql> INSERT INTO developers_copy SELECT * FROM developers WHERE ID < 4;
Query OK, 3 rows affected (0.04 sec)
Records: 3  Duplicates: 0  Warnings: 0

После этого наша таблица developers_copy будет содержать следующие данные:


mysql> SELECT * FROM developers_copy;
+----+-------------------+------------+------------+--------+
| ID | NAME              | SPECIALTY  | EXPERIENCE | SALARY |
+----+-------------------+------------+------------+--------+
|  1 | Eugene Suleimanov | Java       |          2 |   2000 |
|  2 | Peter Romanenko   | C++        |          3 |   3500 |
|  3 | Andrei Komarov    | JavaScript |          2 |   2100 |
+----+-------------------+------------+------------+--------+
3 rows in set (0.00 sec)

На этом мы заканчиваем изучение способов добавления данных в таблицы БД.
В следующей статье мы рассмотрим способ чтения данных из существующих таблиц в БД.