Изменение количества и порядка следования столбцов
Рассмотрим запросы на выборку данных на примере таблицы catalogs (листинг 4.24). Таблица имеет два поля: первичный ключ id_catalog и название каталога name. Выбрать все записи таблицы tbl можно при помощи запроса, представленного в листинге 7.1
Если требуется вывести все столбцы таблицы, необязательно перечислять их имена после ключевого слова select, достаточно заменить этот список символом "*" (все столбцы).
К списку столбцов в операторе select прибегают в том случае, если необходимо изменить порядок следования столбцов в результирующей таблице или выбрать только часть столбцов.
В листинге 7.3 в запросе к таблице catalogs изменяется порядок следования столбцов, а в запросе к таблице orders из пяти столбцов таблицы извлекаются только три.
В списке select_expr наряду с именем столбца допустимо использование констант, например, числа 5 и строки comments. В этом случае каждая строка результирующий таблицы содержит поля 5 и comments (листинг 7.4).
Условия
Ситуация, когда необходимо изменить количество выводимых строк, ветре гораздо чаще, чем когда требуется изменить число и порядок выводимых сто Для ввода в SQL-запрос такого рода ограничений в операторе select предназначено специальное ключевое слово where, после которого следует логическое условие. Если запись удовлетворяет такому условию, она попадает в результат выборки, в противном случае такая запись отбрасывается.
Так, в листинге 7.5 приводится пример запроса, извлекающего из таблицы с записи, чей первичный ключ id_catalog больше (оператор ">") 2.
Условие может быть составным и объединяться при помощи логических операторов. В листинге 7.6 используется составное условие: первичный ключ должен быть больше двух и меньше или равен 4. Для объединения этих двух условий используется оператор and (И).
Как видно из листинга 7.6, в результирующей таблице возвращаются записи в диапазоне от 3 до 4. Такого же эффекта можно добиться применением конструкции between min and max, возвращающей записи, значения столбца id_catalog для которых лежат в диапазоне от min до max (листинг 7.7)
Существует конструкция, противоположенная конструкции between— not between которая возвращает записи, не попадающие в интервал между min и max (листинг 7.8).
Иногда требуется извлечь записи, удовлетворяющие не диапазону, а списку, например, записи с id_catalog из списка (1,2,5), как показано в листинге 7.9. Для этого предназначена конструкция in.
В конструкции where могут использоваться не только числовые столбцы. В листинге 7.10 из таблицы catalogs извлекается запись, соответствующая каталогу "Процессоры".
Как видно из листинга 7.10, сравнение строк в MySQL не зависит от регистра.
В листинге 7.11 из таблицы orders извлекаются записи, соответствующие сделкам, осуществленным за февраль 2005 года.
В качестве логических выражений могут выступать и константы. Любое число, отличное от нуля, считается истинным выражением, т. е. удовлетворяющим запросу, а — ложью, т. е. не удовлетворяющим запросу.
Как видно из листинга 7.12, если первый запрос аналогичен select * from catalogs. то второй запрос всегда возвращает пустую таблицу.
Сортировка
Как видно из листингов, результат выборки представляет собой записи, которые располагаются в порядке, в котором они хранятся в базе данных. Однако часто требуете» отсортировать значения по одному из столбцов. Это осуществляется при помощи конструкции order by, которая следует после выражения select. После конструкции order by указывается столбец, по которому следует сортировать данные.
Как видно из листинга 7.13, первый запрос сортирует результат выборки по полю id_catalog, а второй по полю name.
Сортировку записей можно производить и по нескольким столбцам. Пусть требуется извлечь из таблицы products записи, соответствующие товарным позициям, количество которых на складе count от 4 до 8 с сортировкой по полю count. Для краткости выведем только столбцы count и mark (оценка товарной позиции).
Как видно из листинга 7.14, сортировка по полю count прошла успешно, однако оценки mark во втором столбце расположены в хаотическом порядке. Для сортировки результатов по двум столбцам их следует указать сразу после ключевого слова order by через запятую (листинг 7.15). Записи сортируются по полю count и, если встречается несколько записей с совпадающим полем count, сортируются по полю mark. Число столбцов, следующих за конструкцией order by, не ограничено.
Поумолчанию сортировка производится в прямом порядке, записи располагаются начиная с наименьшего значения и заканчивая наибольшим.
Изменить порядок сортировки на обратный можно при помощи ключевого слова desc (листинг 7.17).
Для прямой сортировки также существует ключевое слово asc, но поскольку по умолчанию записи сортируются в прямом порядке, данное ключевое слово часто опускают.
Дата добавления: 2020-11-18; просмотров: 413;