# 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) ``` ## Изменение