Условная выборка. Псевдонимы столбцов. Сортировка записей

Условная выборка

Ситуация, когда требуется изменить количество выводимых строк, встречается гораздо чаще, чем ситуация, когда требуется изменить число и порядок выводимых столбцов. Для ввода в SQL-запрос такого рода ограничений в операторе SELECT предназначено ключевое слово WHERE, после которого следует логическое условие. Если запись удовлетворяет такому условию, она попадет в результат выборки, в противном случае такая запись отбрасывается.

Рассмотрим пример запроса, извлекающего из таблицы catalogs записи, чей первичный ключ id_catalog больше (оператор >) 4.

Использование конструкции WHERE

Использование конструкции WHERE

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

Помимо оператора > имеется еще несколько операторов, представленных в таблице.

Логические операторы

Оператор Описание
a > b Возвращает true, если аргумент а больше b, и false — в противном случае
a < b Возвращает true, если аргумент а меньше b, и false — в противном случае
a > = b Возвращает true, если аргумент а больше или равен аргументу b, и false — в противном случае
a < = b Возвращает true, если аргумент а меньше или равен аргументу b, и false — в противном случае
a = b Возвращает true, если аргумент а равен аргументу b, и false — в противном случае
a < > b Возвращает true, если аргумент а не равен аргументу b, и false — в противном случае
a! = b Аналогичен оператору < >
a < = > b

Оператор эквивалентности; по своему действию аналогичен оператору равенства = , однако допускает в качестве одного из аргументов NULL

Следует отметить, что логические операторы возвращают true(истину) и false(ложь) в стиле языка программирования С, т.е. без использования специальных констант и обозначений. За ложь считается 0, а за истину любое число, отличное от нуля. В этом легко убедиться, если вывести логическое выражение в результирующую таблицу.

Вывод логических значений в результирующую таблицу

Вывод логических значений в результирующую таблицу

Условие может быть составным и объединяться при помощи логических операторов. Рассмотрим пример, где будет использоваться составное условие: первичный ключ должен быть больше 3 и меньше или равен 5. Для объединения этих условий используется оператор AND(И).

Примечание. Помимо оператора AND(И), для объединения логических выражений может использоваться оператор OR(ИЛИ).

Использование составного логического условия

Использование составного логического условия

В таблицах представленных ниже, изложены правила, по которым операторы AND и OR объединяют свои операнды.

Оператор AND

Операнд/результат

Значения

Первый операнд true true false false
Второй операнд true false true false
Результат true false false false

Как видно из таблицы оператор AND возвращает true только в том случае, если оба его операнда принимают истинное значение true.

Оператор OR

Операнд/результат

Значение

Первый операнд true true false false
Второй операнд true false true false
Результат true true true false

Как видно из таблицы, оператор OR возвращает false только в том случае, если оба его операнда принимают значение false.

Помимо бинарных логических операторов AND и OR СУБД MySQL поддерживает унарный оператор отрицания NOT. Оператор возвращает истину для ложного аргумента и ложь для истинного. Рассмотрим пример, в котором демонстрируется использование оператора NOT.

Использование оператора NOT

Использование оператора NOT

Помимо операторов AND и OR язык SQL предоставляет еще один логический оператор: исключающее ИЛИ — XOR. Правила, по которым работает оператор, представлены в таблице.

Оператор XOR

Операнд/результат

Значение

Первый операнд true true false false
Второй операнд true false true false
Результат false true true false

Оператор XOR можно эмулировать при помощи логических операторов по формуле: (a AND (NOT b) OR ((NOT a) and b).

Для выборки записей из определенного интервала используется оператор BETWEEN min AND max, возвращающий записи, значения которых лежат в диапазоне от min до max.

Использование оператора BETWEEN

Использование оператора BETWEEN

В результирующую таблицу возвращаются записи в диапазоне от 3 до 6.

Существует конструкция, протиположная конструкции BETWEEN — это NOT BETWEEN, которая возвращает записи, не попавшие в интервал между min и max.

Использование конструкции NOT BETWEEN

Использование конструкции NOT BETWEEN

Иногда требуется извлечь записи, удовлетворяющие не диапазону, а списку, например, записи с id_catalog из списка (1, 3, 5). Для этого предназначена конструкция IN.

Использование оператора IN

Использование оператора IN

Конструкция NOT IN является противоположной оператору IN и возвращает 1(истина), если проверяемое значение не входит в список, и 0 (ложь), если оно присутствует в списке.

Использование конструкции NOT IN

Использование конструкции NOT IN

В конструкции WHERE могут использоваться не только числовые столбцы. Рассмотрим пример, где из таблицы catalogs извлекается запись, соответствующая элементу каталога Процессоры.

Работа с текстовыми полями

Работа с текстовыми полями

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

expr LIKE pat

Оператор часто используется в конструкции WHERE и возвращает 1 (истину), если выражение expr соответствует выражению pat, и 0 — в противном случае. Главное преимущество оператора LIKE перед оператором равенства заключается в возможности использования специальных символов, приведенных в таблице.

Специальные символы, используемые в операторе LIKE

Символ Описание
% Соответствует любому количеству символов, даже их отсутствию
- Соответствует ровно одному символу

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

Извлечение из таблицы catalogs записей, названия которых заканчиваются на "ы"

Извлечение из таблицы catalogs записей, названия которых заканчиваются на

Оператор NOT LIKE противоположен по действию оператору LIKE и имеет следующий синтаксис:

expr NOT LIKE pat

Оператор возвращает 0, если выражение expr соответствует выражению pat, и 1 — в противном случае. Таким образом, с его помощью можно извлечь записи, которые не удовлетворяют указанному условию.

Использование оператора NOT LIKE

Использование оператора NOT LIKE

Псевдонимы столбцов

Имена вычмсляемых столбцов, формируемые выражениями или функциями, часто достаточно длинны и не удобны для использования в прикладных программах, выполняющих доступ к элементам в результирующей таблице по имени столбца. В SELECT-запросе столбцу можно назначить новое имя при помощи оператора AS. Рассмотрим пример, где результату функции DATE_FORMAT() присваивается новый псевдоним pritdate.

Добавим в таблицу catalogs новый столбец putdate.

Добавим в таблицу catalogs новый столбец putdate.

Использование оператора AS

Использование оператора AS

Сортировка записей

Как видно из предыдущих примеров, результат выборки представляет собой записи, которые располагаются в порядке, в котором они храняться в базе данных. Однако часто требуется отсортировать значения по одному из столбцов. Это осуществляется с помощью конструкции ORDER BY, которая следует за выражением SELECT. После конструкции ORDER BY указывается столбец (или столбцы), по которым следует сортировать данные.

Рассмотрим пример, где первый запрос сортирует результат выборки по полю id_catalog, а второй по полю name.

Использование конструкции ORDER BY

Использование конструкции ORDER BY

По умолчанию сортировка производится в прямом порядке, однако добавив после имени столбца ключевое слово DESC, можно добиться сортировки в обратном порядке.

Обратная сортировка

Обратная сортировка

Сортировку записей можно производить и по нескольким столбцам. У нас уже имеется таблица tbl, состоящая из трех столбцов: id, putdate, lastdate. Переименуем столбец id в id_catalog.

Переименуем столбец id в id_catalog.

Развернем таблицу tbl.

Таблица tbl

Таблица tbl

Рассмотрим пример, где производится сортировка таблицы tbl сначала по полю id_catalog, а затем по полю putdate.

Сортировка таблицы по двум столбцам

Сортировка таблицы по двум столбцам

Записи в таблице tbl сначала сортируются по столбцу id_catalog, а совпадающие в рамках одного значения id_catalog записи сортируются по полю putdate в обратном порядке. Следует отметить, что ключевое слово DESC относится к полю putdate.

Для того, чтобы отсортировать оба столбца в обратном порядке, потребуется снабдить ключевым словом как столбец id_catalog, так и putdate.

Обратная сортировка по двум столбцам

Обратная сортировка по двум столбцам

Для прямой сортировки также существует ключевое слово ASC (в противовес ключевому слову DESC), но поскольку по умолчанию записи сортируются в прямом порядке, данное ключевое слово часто опускается.


Обсудить на форуме Обсудить на форуме

  • Memori.ru Memori.ru
  • Tweet
  • Опубликовать в Моем Мире Мой Мир
  • FriendFeed
  • Другие |
назадвверхвперед
Rambler's Top100