|
Программирование >> Программный интерфейс приложений
mysql> SELECT last naine, first naine, state FROM president ->WHERE state=VA OR state=MA;
Это TO, что требуется понимать в любом случае как тогда, когда человек пишет запрос сам для себя, так и тогда, когда запрос пишется для заказчика. Я советую сначала точно определить, чего они хотят. Например, вышеуказанный запрос проше сформулировать следуюшим образом: Выбрать президентов, родившихся в штате Вирджиния или в штате Мэриленд . Значение null null - это особенное значение, потому что оно обозначает ситуацию, когда нет значения , его нельзя выбрать как обычное значение, его нельзя сравнить с другим значением, так как это можно сделать с обычными значениями. При сравнении пустого значения с помошью обычного арифметического оператора сравнения будет получен неопределенный результат. mysql> SELECT mjbl. < О, mjbl. = О, NULL != О, №ЛЛ. > О +-+--+- NULL < О NULL = О NULL != О NULL NULL I NULL NULL > 0 NULL I -+ Более того, нельзя сравнить два значения null друг с другом. Это естественно - результат сравнения двух неизвестных значений сам не может быть известен. mysql> SELECT NULL = NULL, NULL != NULL I NULL = NULL NULL != NULL NULL I NULL Для выборки пустых значений требуется особенный синтаксис. Вместо использования символов = или != для проверки равенства или неравенства нужно задавать is null или is not null. Например, мыприсвоили дате смерти живых президентов значение null. Поэтому выбрать их будет проще всего, сделав следующий запрос. mysql> SELECT last name, first name FRCM president WHERE death IS NULL;
Поиск имен, имеющих суффикс, можно осуществить, пользуясь выражением 13 not null. mysql> SELECT last name, first name, suffix -> FROM president WHERE suffix IS NOT NXJLL;
В СУБД MySQL версии 2.23 есть уникальный оператор сравнения < = > , работающий даже при сравнении пустых значений. Два предыдущих запроса можно изменить, воспользовавшись этим оператором. mysql> SELECT last name, first name FROM president WHERE death < = > NULL; +-H-+ I last name I first name I +-+-+ Ford Carter Reagan Bush Clinton Gerald R. James E. Ronald W. George W. William J. mysql> SELECT last name, first name, suffix -> FROM president WHERE suffix < = > NULL;
Сортировка результатов запроса Очень скоро пользователь замечает, что в результате команды select * from tbl name он получает выборку данных из нужной таблицы в том же порядке, в котором она была загружена. Нельзя полностью полагаться, что данные в таблице всегда будут храниться в нужном порядке. В процессе работы с таблицей записи модифицируются, удаляются и добавляются. Удаление записей оставляет дыры неиспользуемого пространства, которые СУБД MySQL попытается заполнить позже по мере добавления записей в таблицу. В принципе при выборке данных сервер не гарантирует их порядок. Для их сортировки предназначено предложение order by. mysql> SELECT last ncuiie, first namG, suffix FROM president -> ORDER BY last name;
Можно задать порядок сортировки столбца по возрастанию или убыванию с ключевыми словами asc или desc. Например, для сортировки имен президентов в обратном (убывающем) порядке можно сделать такой запрос. mysql> SELECT last name, first name, suffix FROM president -> ORDER BY last name DESC;
По умолчанию принимается порядок сортировки по возрастанию. При сортировке столбца, который может содержать пустые значения, они будут поставлены первыми при сортировке по возрастанию и последними при сортировке по убыванию. Сортировка может задаваться по нескольким столбцам, при этом любой столбец может быть отсортирован независимо от других столбцов как в возрастающем порядке, так и в убывающем. Следующий запрос производит выборку строк из таблицы president, отсортированных в убывающем порядке по названию щтата, где родились президенты, и по фамилии в убывающем порядке внутри каждого щтата.
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |