этих столбцов. Более подробную информацию о вставке значений в таблицу и о режимах взаимодействия с сервером MySQL вы можете найти в подразделе «Вставка отдельных строк». Задать новое значение вы можете также с помощью выражения, использующего прежние значения в строке. Например, удвоить рейтинги для всех клиентов можно с помощью команды

UPDATE Customers SET rating = rating*2;

• WHERE <Условие отбора> – укажите условие отбора, чтобы изменения были применены только к тем строкам таблицы, которые удовлетворяют этому условию. Если условие отбора не задано, изменения будут применены ко всем строкам таблицы. Условия отбора мы рассматривали в подразделе «Условия отбора». В условиях отбора можно использовать вложенный запрос (см. подраздел «Вложенные запросы»), который не должен обращаться к самой модифицируемой таблице.

• ORDER BY <Имя столбца> [ASC или DESC] – при необходимости вы можете указать, в каком порядке применять изменения к строкам таблицы. Обычно порядок применения изменений не влияет на результат выполнения операции. Однако в некоторых случаях последовательность действий может быть важна. Например, если вы установили предельное количество изменяемых строк (см. следующий пункт), то некоторые строки, удовлетворяющие условию отбора, могут остаться неизменными, а какие именно это будут строки – зависит от последовательности применения изменений. Другим подобным случаем является обновление значений первичного ключа или уникального индекса, которые не должны содержать повторяющихся значений, а наличие или отсутствие повторяющихся значений в столбце может зависеть от порядка применения изменений.

• LIMIT <Количество строк> – при необходимости вы можете указать максимальное количество строк таблицы, которые могут быть изменены командой UPDATE. Если это количество измененных строк достигнуто, операция завершается, даже если в таблице еще остались строки, которые удовлетворяют условию отбора и не были изменены.

...

Примечание

При обновлении значения первичного ключа в родительской таблице выполняются проверки целостности данных (см. описание параметров внешнего ключа в пункте «Ключевые столбцы и индексы»).

Следующая команда, которую мы рассмотрим, – это команда REPLACE, осуществляющая либо добавление, либо замещение строк таблицы. Она имеет те же параметры, что и команда INSERT (см. подраздел «Вставка отдельных строк»):

REPLACE [INTO] <Имя таблицы>

[(<Список столбцов>)]

VALUES

(<Список значений 1>),

(<Список значений 2>),

(<Список значений N>);

Если в строке, вставляемой в таблицу с помощью команды REPLACE, значение первичного ключа или уникального индекса не совпадает ни с одним из уже существующих значений, то эта команда работает так же, как команда INSERT (если в таблице нет ни первичного ключа, ни уникального индекса, то команда REPLACE всегда работает как команда INSERT). Если же в таблице есть строка с таким же значением первичного ключа или уникального индекса, то перед добавлением новой строки прежняя строка удаляется. Например, выполнив команду

REPLACE INTO Products

VALUES

(3,'Соковыжималка Мосбытприбор СШ-800',

'Цвет: кремовый. Мощность: 350 Вт',1299.99);

мы тем самым заменим в таблице Products (Товары) прежнюю строку с идентификатором 3, содержавшую информацию о кофеварке (см. листинг 2.5 выше), новой строкой, также имеющей идентификатор 3, но содержащей информацию о соковыжималке.

Отмечу, что в команде REPLACE, в отличие от команды UPDATE, нельзя задавать новые значения с помощью выражений, вычисляемых с использованием прежних значений, хранившихся в строке. Если вы укажете в команде REPLACE такое выражение, то вместо прежнего значения будет подставлено значение данного столбца по умолчанию.

И, наконец, последняя команда, которую мы рассмотрим, – команда удаления строк таблицы:

DELETE FROM <Имя таблицы>

[WHERE <Условие отбора>]

[ORDER BY <Имя столбца> [ASC или DESC]]

[LIMIT <Количество строк>];

Например, информацию о клиенте по фамилии Петров вы можете удалить из таблицы Customers с помощью команды

DELETE FROM Customers WHERE id = 534;

Параметры команды DELETE аналогичны соответствующим параметрам команды UPDATE. В результате выполнения этой команды будут удалены строки таблицы, удовлетворяющие условию отбора, а если условие отбора не задано, – все строки таблицы. При этом с помощью параметра LIMIT можно указать предельное количество удаляемых строк, а с помощью параметра ORDER BY – последовательность удаления строк.

...

Примечание

При удалении строк родительской таблицы выполняются проверки целостности связи (см. описание параметров внешнего ключа в пункте «Ключевые столбцы и индексы»).

Итак, мы освоили операции изменения и удаления строк таблицы: команды UPDATE (обновление), REPLACE (замещение) и DELETE (удаление). Подведем итоги второй главы.

2.7. Резюме

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

Следующая глава расширит ваши возможности по поиску и обработке данных. В ней будут рассмотрены функции и операторы, с помощью которых вы сможете создавать более сложные и мощные запросы.

Глава 3 Операторы и функции языка SQL

В этой главе вы познакомитесь с функциями и операторами, с помощью которых можно создавать выражения – формулы, вычисляющие какое-либо значение (числовое, логическое, символьное и др.). Наиболее часто выражения используются в SQL-запросах: как для вычисления значений, выводимых запросом, так и в условиях отбора. С помощью выражений можно также задавать условия отбора в SQL- командах UPDATE и DELETE, значения, добавляемые в таблицу, в командах INSERT и UPDATE и многое другое.

Отличие операторов от функций заключается, по существу, только в форме записи. Аргументы функции записываются после имени функции в скобках через запятую, в то время как аргументы оператора (операнды) могут располагаться по обе стороны от значка или имени оператора. Поэтому, рассматривая операторы и функции, мы будем подразделять их на группы, руководствуясь их назначением, а не внешними различиями.

В первую очередь мы рассмотрим наиболее часто используемую группу операторов – операторы, осуществляющие проверку какого-либо условия.

3.1. Операторы и функции проверки условий

В этом разделе вы узнаете об операторах, которые предназначены для создания условий отбора, а именно: об операторах, выполняющих сравнение двух или нескольких величин, и о логических операторах, позволяющих создавать комбинированные условия.

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

Вначале мы рассмотрим операторы сравнения.

Операторы сравнения

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

• 1 (TRUE) – истинное значение, которое свидетельствует о том, что сравнение верно, условие выполнено;

• 0 (FALSE) – ложное значение, которое свидетельствует о том, что сравнение неверно, условие не выполнено;

• NULL – неопределенное значение, которое свидетельствует о том, что проверить условие невозможно, поскольку один из операндов равен NULL.

...

Примечание

Иногда проверить условие можно несмотря на то, что один из операндов равен NULL (см., например, описание операторов BETWEEN и IN в этом подразделе); в этом случае возвращается значение 1 или 0.

Начнем с рассмотрения оператора, проверяющего равенство двух операндов.

Оператор x = y

Оператор «равно» возвращает следующие значения:

• 1 (TRUE) – если х и y совпадают;

• 0 (FALSE) – если х и y различны;

• NULL – если по крайней мере один из операндов равен NULL.

Например, выберите из таблицы Customers (Клиенты) строки, в

Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

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

Отметить Добавить цитату