Многострочечный оператор INSERT
Многострочечный оператор INSERT
совпадает по форме с однострочечным оператором. В нем используется ключевое слово VALUES
, после которого добавляется не один, а несколько списков expression
.
Примечание. Как и в однострочной версии оператора INSERT
, допускается использование ключевого слова IGNORE
для игнорирования записей, значения уникальных индексов которые совпадают с одним из уже имеющихся в таблице значений.
Рассмотрим пример, где добавляются сразу пять записей при помощи одного оператора INSERT. Для записи будем использовать таблицу catalogs в базе данных wet.
Многострочечный оператор INSERT
Изменение состава столбцов в многострочечном операторе INSERT
Удаление данных
Время от времени возникает задача удаления записей из базы данных, для которой предназначены следующие два оператора:
DELETE
— удаление всех или части записей из таблицы;TRUNCATE TABLE
— удаление всех записей из таблицы.
Оператор DELETE имеет следующий синтаксис:
DELETE FROM table_name
WHERE definition
ORDER BY . . .
LIMIT rows
Оператор DELETE
удаляет из таблицы table_name
записи, удовлетворяющие заданным в definition
условиям, и возвращает число удаленных записей.
Рассмотрим пример, где из таблицы catalogs
удаляются записи, значение первичного ключа id_catalogs
которых меньше 1.
Если в операторе DELETE
отсутствует условие WHERE
, из таблицы удаляются все записи.
Удаление всех записей таблицы tbl
Применение ограничений LIMIT
позволяет задать максимальное количество уничтожаемых записей. Рассмотрим пример, где удаляется не более 2 записей таблицы catalogs
.
Удаление записей из таблицы catalogs
Оператор TRUNCATE TABLE
, в отличии от оператора DELETE
, полностью очищает таблицу и не допускает условного удаления. То есть оператор TRUNCATE TABLE
аналогичен оператору DELETE
без условия WHERE
и ограничения LIMIT
. В отличие от оператора DELETE
удаление происходит гораздо быстрее, т.к. при этом не выполняется перебор каждой записи
Примечание. Оптимизатор запросов СУБД MySQL автоматически использует оператор TRUNCATE TABLE
, если оператор DELETE
не содержит WHERE
-условия или конструкции LIMIT
.
Рассмотрим пример, использования оператора TRUNCATE TABLE
для удаления записей в таблице tb3
.
Удаление всех записей из таблицы tb3
Обновление записей
Операция обновления позволяет менять значения полей в уже существующих записях. Для обновления данных предназначены операторы UPDATE
и REPLACE
. Первый обновляет отдельные поля в уже существующих записях, когда оператор REPLACE
больше похож на INSERT
, за исключением того, что если старая запись в данной таблице имеет то же значение индекса UPDATE
или PRIMARY KEY
, что и новая, то старая запись перед занесением новой записи будет удалена.
Оператор UPDATE имеет следующий синтаксис:
UPDATE [IGNORE] table_name
SET col1 = expr1 [, col2 = expr2 . . .]
[WHERE definition]
[ORDER BY . . .]
[LIMIT rows]
Сразу послеключевого слова UPDATE
в инструкции указывается таблица table_name
, которая подвергается изменению. В предложении SET
перечисляются столбцы, которые подвергаются обновлению, и устанавливаются их новые значения. Необязательное условие WHERE
позволяют задать критерий отбора строк — обновлению будут подвергаться только те строки, которые удовлетворяют условию definition
.
Примечание. Если в столбец с уникальными значениями (напрмер, столбец с первичным ключем) делается попытка вставки уже существующего значения, это оканчивается сообщением об ошибке. Подавить генерацию ошибки этого типа позволяет использование ключевого слова IGNORE
, однако обновление, которое привело бы к дублированию уникальных значений, не осуществляется в этом случае.
Восстановим таблицу catalogs
базы данных wet
, если она была удалена в процессе работы.
Таблица catalogs
Заменим название элемента каталога Процессоры
на Процессоры (Intel)
.
Обновление таблицы catalogs
Оператор REPLACE
работает аналогично INSERT
, за исключением того, что если старая запись в данной таблице имеет то же значение индекса UPDATE
или PRIMARY KEY
, то применение команды REPLACE
не имеет смысла, т.к. ее действие при этом идентично команде INSERT
.
Синтаксис оператора REPLACE
аналогичен синтаксису оператора INSERT
:
REPLACE [INTO] table_name [(col_name, . . .)] VALUES (expression, . . .), ( . . .), . . .
В таблицу table_name
вставляются значения, определяемые в списке после ключевого слова VALUES
. Задать порядок столбцов можно при помощи необязательного списка col_name
, следующего за именем таблицы table_name
. Как и в случае оператора INSERT
, оператор REPLACE
допускает многострочный формат.
Рассмотрим пример, где в таблицу catalogs
добавляется пять новых записей.
Примечание. Многотабличный синтаксис для оператора REPLACE
и INSERT
не предусмотрен.
Использование оператора REPLACE
Выборка данных
Команда SELECT предназначена для извлечения строк данных из одной или нескольких таблиц и имеет следующий синтаксис:
SELECT column, . . .
[FROM table_name WHERE definition]
[ORDER BY col_name [ASC|DESC], . . . ]
[LIMIT [offset], rows];
Где, column
— имя выбираемого столбца. Можно указать несколько столбцов через запятую. Если необходимо выбрать все столбцы, можно просто внести символ звездочки (*
). Ключевое слово FROM
указывает таблицу table_name
, из которой извлекаются записи. Ключевое слово WHERE
определяет, так как и в операторе DELETE
, условия отбора строк. Ключевое слово ORDER BY
сортирует строки запросов по столбцу col_name
в прямом (ASC
) или обратном порядке (DESC
). Ключевое слово LIMIT
сообщает MySQL овызове только rows запросов, начиная с позиции offset
.
Выборка данных при помощи оператора SELECT
В данном примере, выборка произошла из двух столбцов id_catalog
и name
, т.е. из всех созданных в данной таблице столбцов.
Использование символа *(все столбцы)
В данном случае произошла выборка всех столбцов из таблицы catalogs
.
Частичная выборка
В этом случае выведен один столбец с первичным ключем name
.
Использование ключевого слова LIMIT
В результате запроса выделены первые 3 записи из 8.
Оператор LIMIT может также принимать два целочисленных аргумента. В этом случае последний аргумент задает максимальное количество возвращаемых строк, а первый сообщает MySQL, начиная с какой строки производить отсчет.
Альтернативная форма задания LIMIT
Оператор WHERE
применяется в команде SELECT
точно также, как и в команде DELETE
. Выберем из таблицы только те записи, у которых значение id_catalog
больше 3.
Условный вариант оператора SELECT
С помощью оператора SELECT
мы можем изменить порядок следования столбцов в результирующей таблице или выбрать только часть столбцов.
Изменение порядка выводимых столбцов
Комментарии(0)
Для добавления комментариев надо войти в систему и авторизоватьсяКомментирование статей доступно только для зарегистрированных пользователей:Зарегистрироваться