Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
srs_IPOVS_BD.doc
Скачиваний:
41
Добавлен:
05.06.2015
Размер:
1.19 Mб
Скачать

Тема 11. Отбор строк из таблиц. Условия поиска строк

Фраза WHERE задает условие, по которому выбираются строки для выполнения запроса. в предыдущем примере использован следующий формат фразы WHERE:

WHERE [NOT] [<имя таблицы1>.] <имя столбца>

<знак сравнения> [<имя таблицы2>.] <имя столбца>

Условие отбора строк может задаваться с использованием логических операций AND и OR. Например, если нужны данные только о жителях с фамилиями ИВАНОВ и ПЕТРОВ, то фраза WHERE может быть такой:

WHERE Fio=‘ИВАНОВ’ OR Fio=‘ПЕТРОВ’

Помимо логических операций можно использовать предикат IN (находится в, принадлежит). Фраза WHERE в этом случае имеет такой формат:

WHERE [NOT] <выражение> [NOT] IN

(<список значений><подзапрос>)

Например, WHERE Fio IN (‘ИВАНОВ’, ‘ПЕТРОВ’)

Если нужно выдать сведения о всех жителях, кроме Ивановых и Петровых, то запрос можно задать так:

SELECT * FROM person WHERE Fio NOT IN (‘ИВАНОВ’, ‘ПЕТРОВ’)

В условии может быть задан диапазон:

WHERE [NOT] <выражение> [NOT] BETWEEN <нижнее выражение> AND <верхнее выражение>

Например, получить сведения о жителях, родившихся в 1960 году, можно с помощью запроса

SELECT * FROM person WHERE Rdate BETWEEN '01/01/60' AND '31/12/60'

Предусмотрена возможность поиска символьной информации по шаблону (маске). Символ “%” обозначает в шаблоне любую последовательность символов, а символ “_” (подчеркивание) - любой единичный символ. Поиск по шаблону задается фразой

WHERE [NOT] <имя столбца> [NOT] LIKE ‘<шаблон>’

Так, запрос

SELECT * FROM person WHERE Fio LIKE ‘И%’

обеспечит выдачу сведений о всех жителях, фамилии которых начинаются буквой “И”.

Вопросы для самоконтроля

  1. Для чего предназначено предложение SELECT оператора SELECT?

  2. Для чего предназначено предложение FROM оператора SELECT?

  3. Для чего предназначено предложение WHERE оператора SELECT?

Тема 12. Сортировка таблиц

Информация, получаемая в результате выполнения запроса, может быть упорядочена с помощью фразы

ORDER BY <имя столбца><целое>[ASCDESC] [,<имя столбца><целое>[ASCDESC]...]

Вместо имени столбца может записываться целое число, которое задает номер столбца в таблице, считая слева направо.

Если столбцы вычисляемые или являются результатом операции UNION, то вместо имени столбца должен использоваться номер столбца.

Параметр ASCDESC означает вид сортировки (по возрастаниюпо убыванию соответственно). По умолчанию принимается значение ASC.

Если во фразе ORDER BY задается список полей, то это означает упорядочение по составному ключу. Фраза ORDER BY соответствует операции SORT. Столбцы, перечисленные во фразе ORDER BY, должны присутствовать во фразе SELECT.

Тема 13. Использование псевдонимов для обозначения таблиц базы данных. Самосоединение таблиц. Итоговые запросы и агрегатные функции

Вместо длинных имен таблиц в запросах можно использовать их псевдонимы, которые задаются в фразе FROM оператора SELECT:

FROM <имя таблицы> [<псевдоним>] [,<имя таблицы> [<псевдоним>]…]

В качестве псевдонима используется последовательность символов, соответствующая правилам записи имен на языке SQL.

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

SELECT A.Fio,B.Fio FROM person A, person B WHERE A.SumD=B.SumD

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

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

  • Какова сумма общих доходов, получаемых всеми жителями?

  • Каковы минимальный и максимальный размеры общий доходов?

  • Каков средний размер общего дохода?

Запросы такого типа (итоговые запросы) создаются с помощью агрегатных функций и фраз GROUP BY и HAVING оператора SELECT.

Агрегатные функции предназначены для подведения итогов по информации, хранящейся в базе данных. Агрегатная функция принимает в качестве аргумента какой-либо столбец данных целиком, а возвращает одно значение, которое определенным образом подытоживает этот столбец.

Имеется шесть агрегатных функций, которые позволяют получать различные виды итоговой информации:

  • функция SUM( ) вычисляет сумму всех значений, содержащихся в столбце;

  • функция AVG( ) вычисляет среднее всех значений, содержащихся в столбце;

  • функция MIN( ) находит наименьшее среди всех значений, содержащихся в столбце;

  • функция MAX( ) находит наибольшее среди всех значений, содержащихся в столбце;

  • функция COUNT( ) подсчитывает количество значений, содержащихся в столбце;

  • функция COUNT(*) подсчитывает количество строк в таблице результатов запроса.

Например, получить ответы на запросы, перечисленные выше, можно оператором

SELECT SUM(SumD), MIN(SumD), MAX(SumD), AVG(SumD) FROM person

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