# SQL
Данное занятие посвящено основным манипуляциям с *данными* в SQL. То есть речь пойдет о **DML** (**Data Manipulation Language**), операциях вставки, удаления,
изменения и выборки данных.
## Вставка
Для того, что бы манипулировать с нашими данными в дальнейшем, нам нужно их добавить в таблицы. Для этого используется `INSERT INTO`
```mysql
INSERT INTO
(column1, column2, column3...columnN)
VALUES
(value1, value2, value3...valueN)
```
где:
- **columnN** - имена колонок таблицы для вставки данных
- **valueN** - значения соответствующих колонок.
**Например**
```mysql
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` в простейшей форме. Подробнее о выборке будет ниже:
```mysql
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)` не очень нагляден, особенно когда колонок много, так как имена колонок находятся далеко от значений;
при редактировании такого запроса часто бывают ошибки, например вставка данных не в ту колонку. Зато эта форма удобна для пакетной вставки и вставки данных из
запроса выборки.
### Вставка: альтернативный синтаксис.
Более наглядным является синтаксис:
```mysql
INSERT INTO SET
column1 = value1,
column2 = value2,
.....
columnN = valueN
```
Данный синтаксис очень сильно похож на обычное присвоение в языках программирования.
**Например**
```mysql
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)
```
## Изменение