Данное занятие посвящено основным манипуляциям с данными в SQL. То есть речь пойдет о DML (Data Manipulation Language), операциях вставки, удаления, изменения и выборки данных.
Для того, что бы манипулировать с нашими данными в дальнейшем, нам нужно их добавить в таблицы. Для этого используется INSERT INTO
INSERT INTO <table>
(column1, column2, column3...columnN)
VALUES
(value1, value2, value3...valueN)
где:
Например
MariaDB [test]> INSERT INTO person (date_of_birth, name, surname, father_name) VALUES("2000-03-15", "Ivan", "Ivanoff", "Petrovich");
Query OK, 1 row affected (0.10 sec)
Для проверки используем запрос выборки SELECT
в простейшей форме. Подробнее о выборке будет ниже:
MariaDB [test]> SELECT * from person;
+-----------+---------------+------+---------+-------------+
| person_id | date_of_birth | name | surname | father_name |
+-----------+---------------+------+---------+-------------+
| 1 | 2000-03-15 | Ivan | Ivanoff | Petrovich |
+-----------+---------------+------+---------+-------------+
1 row in set (0.00 sec)
Как можно заметить, не обязательно указывать все поля таблицы для заполнения; более того, некоторые поля лучше не указывать. В данном случае это автоинкремент,
который на то и авто, что бы заполняться автоматически при добавлении в таблицу. Поля, которые не указаны в INSERT
, заполняются их значениями по умолчанию, которые
можно задать при создании таблицы.
Обычный синтаксис INSERT INTO (columns) VALUES(values)
не очень нагляден, особенно когда колонок много, так как имена колонок находятся далеко от значений;
при редактировании такого запроса часто бывают ошибки, например вставка данных не в ту колонку. Зато эта форма удобна для пакетной вставки и вставки данных из
запроса выборки.
Более наглядным является синтаксис:
INSERT INTO <table> SET
column1 = value1,
column2 = value2,
.....
columnN = valueN
Данный синтаксис очень сильно похож на обычное присвоение в языках программирования.
Например
MariaDB [test]> INSERT INTO person SET date_of_birth = "1999-05-25", name = 'Vasiliy', surname = 'Pupkin', father_name = 'Petrovich';
Query OK, 1 row affected (0.00 sec)