DML инструкции в клиенте MySQL.exe INSERT

DML – Data Manipulation Language. Согласно книге Д. Осипова “Базы данных и Delphi”. Итак, базис языка строится на 3 командах

INSERT – вставка новых записей;

UPDATE – редактирование записей в таблице;

DELETE – удаление записей в таблице;

Итак, начнём эксперименты с СУБД MYSQL и консольным клиентом MySQL.exe В данном посте посмотрим как работает оператор INSERT

INSERT

Если пользоваться официальным синтаксисом с сайта mysql.exe, то INSERT может быть 3 разновидностей.

При этом, INSERT INTO – для вставки одной записи, INSERT SELECT – для вставки сразу нескольких записей.

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

Но нельзя указать:

Итак, продолжим работать с созданной в программе workbench базой sql_groupby. Вы можете легко создать свою базу данных для экспериментов. Для начала посмотрим описание одной из таблиц sales

1

Описание столбцов даст нам корректный синтаксис для команд вставки INSERT. Попробуем вставить новую запись методом INSERT… VALUES…

2
Обратите внимание, что в команде я указал 2 поля, а не 3. Пропустил автоинкрементное поле. При вставке оно заполнилось само. Если попробовать заполнить только 1 поле, то, скорее всего – будет ошибка, так как все поля Not NULLed – не нулевые. И Default value мы не назначали. То есть в каждом поле должно быть какое-то значение.

3
MySQL позволяет вставлять сразу несколько записей. Это особенно удобно, когда нужно вставить несколько записей, в рамках одной транзакции.

4_1

 

Insert и Default-ные значения

Если вместо ключевого слова VALUES написать DEFAULT VALUES, тогда в таблице окажутся значения по умолчанию, а в тех полях, для которых не определены DEFAULT VALUES, окажутся значения NULL. Проверим это, выставив предварительно, в программе WorkBench дефолтные значения.

5

Итак, значения по умолчанию выставили. Далее пробуем в MySQL.exe заполнить только одно поле, второе – заполнится значением по умолчанию;

6

В книге Д. Осипова, я прочитал, что можно вставить только дефолтные значения таким образом

Insert into TableName Default Values

Но, к сожалению мой сервер такую команду не принял.

7

То есть, чтобы вставить всю строку дефолтной, нужно прописать…

8

INSERT ... SELECT

Как уже упоминалось ранее – данные операторы помогают вносить в одну таблицу записи из другой, при условии, что типы данных соответствующих полей совпадают. Для того, чтобы проверить данный факт – просто создадим дубль одной из таблиц в программе WorkBench.

Поэкспериментируем… Я создал дубль таблицы Sales и назвал её SalesCopy, внёс 3 записи с ключами 1,2,3… Такие же ключи есть в таблице Sales…Интересно как поведёт себя система при попытке вставить записи с повторяющимися ключами…

9

 

Пробуем вставить записи в таблицу Sales из таблицы SalesCopy…

10

 

Итак, система не дала вставить записи, так как повторялись ключи. А также потому, что мы пытались вставить все поля, включая Primary_id. Теперь исправим данный недостаток другим запросом;

11

 

То есть, всё что мы сделали – изменили запрос и всё сработало как нужно. Чтобы убедиться в этом – сделаем запрос select для таблицы Sales;

12


[block id=”mysql-first-steps”]

This entry was posted in SQL инструкции, Без рубрики, Начальный уровень. Bookmark the permalink.