ресурс для начинающих веб-разработчиков
комплексные веб-услуги по созданию сайтов

Справочный материал по основным языкам программирования и верстки сайтов.

Готовая методика создания простых и сложных динамичных сайтов, с использованием PHP и MySQL.

Использование веб-редактора Adobe Dreamweaver в разработке сайтов.

Использование графических редакторов Adobe Flash, Adobe Photoshop, Adobe Fireworks в подготовке веб-графики.

Разработка веб-сайтов под "ключ".

Разработка отдельных фрагментов сайтов, консультации по вопросам верстки веб-страниц и веб-программирования.

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

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

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

Ситуация, когда требуется изменить количество выводимых строк, встречается гораздо чаще, чем ситуация, когда требуется изменить число и порядок выводимых столбцов. Для ввода в 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), но поскольку по умолчанию записи сортируются в прямом порядке, данное ключевое слово часто опускается.