Изменение количества и порядка следования столбцов
Выборка данных
Тема 3.7. Выборка данных. Однотабличные запросы.
В данной главе описывается оператор select, позволяющий извлекать данные из таблицы базы данных. Упрощенный синтаксис оператора select выглядит следующим образом:
SELECT select_expr FROM tb1
Каждый запрос начинается с ключевого слова select, после которого следует список полей разделенных запятыми select_expr, которые будут возвращены в результате запроса. Ключевое слово from, указывающее, из какой таблицы извлекаются данные, остаются необязательным и может быть опущено.
Результатом запроса select всегда является таблица, которая ничем не отличается от таблиц, расположенных в базе данных, и называется результирующей таблицей. Более того, как будет показано далее, результаты запроса, выполненного при помощи запроса select, могут быть использованы для создания новой таблицы. Если результаты двух запросов к разным таблицам имеют одинаковый формат, их можно объединить в одну таблицу.
Рассмотрим запросы на выборку данных на примере таблицы 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. то второй запрос всегда возвращает пустую таблицу.