Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
work_2.doc
Скачиваний:
9
Добавлен:
09.11.2019
Размер:
291.84 Кб
Скачать
    1. Выборка c использованием предложения where.

Допустим, нас интересует OID базы данных BookShop . Его можно получить из системной таблицы pg_database по запросу, в котором указано имя интересующей нас базы данных:

SELECT OID, datname

FROM pg_database

WHERE datname = 'BookShop'

Для отбора нужных строк таблицы в предложении WHERE можно использовать операторы сравнения, которые могут предваряться оператором NOT, создавая, например, отношения "не меньше" и "не больше", а также возможно использование нескольких условий, соединенных логическими операторами AND, OR, AND NOT и OR NOT, что позволяет осуществить более детальный отбор строк. Например, чтобы получить список книг из базы данных BookShop, поставленных за последний месяц, вводим запрос:

SELECT "Код_книги", "Количество", "Дата"

FROM "Поставки"

WHERE ("Дата" >= '1/9/2011') AND ("Дата" < '1/10/2011')

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

Использование between

С помощью BETWEEN ... AND ... (находится в интервале от ... до ...) можно отобрать строки, в которых значение какого-либо столбца находятся в заданном диапазоне. Например, предыдущий запрос можно переписать так:

SELECT "Код_книги", "Количество", "Дата"

FROM "Поставки"

WHERE "Дата" BETWEEN '1/9/2011' AND '1/10/2011'

Можно задать и NOT BETWEEN, если необходимо указать на данные, не принадлежащие некоторому диапазону. Оператор BETWEEN можно заменить предикатом, но он улучшает восприятие и читаемость текстов запросов SQL.

Использование in

В запросе

SELECT *

FROM “Поставщики”

WHERE “Город” IN (‘Киев’, ‘С-Петербург’, ‘Петербург’)

оператор IN является в действительности просто краткой записью последовательности отдельных сравнений, соединенных операторами OR. Предыдущее предложение эквивалентно, очевидно, такому:

SELECT *

FROM “Поставщики”

WHERE “Город”=‘Киев’ OR “Город” =‘С-Петербург' OR “Город”=‘С-Петербург'

Можно также вводить NOT IN (не принадлежит) и использовать вместо списка IN (NOT IN) подзапрос.

Использование like

Обычная форма столбец LIKE текстовая_константа для столбца текстового типа позволяет отыскать все значения указанного столбца, соответствующие образцу, заданному текстовой_константой. Символы этой константы интерпретируются следующим образом:

  • символ «_» заменяет любой одиночный символ,

  • символ «%» заменяет любую последовательность из 0 или более символов,

  • все другие символы означают просто сами себя.

Например, чтобы получить список книг, в названии которых есть подстрока «С++», надо сформировать запрос

SELECT “Код_книги”, “Название”, “Автор”

FROM “Книги”

WHERE “Название” LIKE ‘%C++%"

Выборка null-значений

Если при загрузке данных не введено значение в какое-либо поле таблицы, то СУБД поместит в него NULL-значение. Обнаружить эти значения можно с помощью условий

столбец IS NULL или столбец IS NOT NULL

Например, запрос, приведенный ниже, возвратит строки в таблице Поставщики, в которых отсутствуют сведения в указанных столбцах:

SELECT *

FROM “Поставщики”

WHERE “Адрес” IS NULL OR “Телефон” IS NULL

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]