Вопрос № 16 Язык SQL. Оператор Select. Однотабличные запросы.
Оператор select реализует любые запросы на базе одной или нескольких таблиц. Один оператор select реализует все операции реляционной алгебры. Общий вид оператора:
Оператор select возвращает в качестве результата отношение. Однако это отношение не удовлетворяет ограничениям реляционной модели т.к. оно может содержать одинаковые строки. Кроме того, результатом может быть и пустое отношение, а также значения вычисляемые.
Фраза all означает, что в результирующем отношении включены все строки и в том числе строки – дубликаты. Если не указать ни all ни distinct будет all.
distinct – строки – дубликаты из результирующего отношения вычеркиваются.
* - в результирующее отношение войдут все столбцы исходных таблиц.
Если задан список, в результирующее отношение войдут только те столбцы, которые перечислены в списке. Список столбцов может создавать столбец вычисляемый т.е. не существующий в исходных таблицах. После выражения определяющего способ получения такого столбца можно задать его имя as From из каких таблиц осуществляется извлечение данных. В списке таблицы перечисляются через запятую.
where для однотабличных запросов реализует операцию выборки, т.е. в результирующее отношение включаются только те строки, которые удовлетворяют заданному условию.
В запросах на базе нескольких таблиц все исходные таблицы сначала соединяются в единую таблицу и во фразе where указываются условия соединения, как правило, естественное соединение.
group by создает группы строк с одинаковыми значениями в заданных столбцах. По этим группам можно получить некоторые итоги.
having осуществляет отбор групп в соответствии с заданными условиями.
order by обеспечивает упорядочение строк результирующего отношения по значениям заданных столбцов.
Однотабличный запрос.
1) выборка всех строк и столбцов
Пример:
2) Выборка отдельных столбцов
Пример:
Получить список наименований типов страховых случаев
Отбор строк с помощью фразы where
во фразе where условие выборки строк может быть задано разными способами:
• С помощью операций отношения >, = ,5
where data between ’01.01.2011’and’31.12.2011’
Вывести коды и фамилии клиентов и общую сумму их договоров за 2011г для таких клиентов, которые заключили больше 2-х договоров за этот период.
Упорядочение строк результирующего отношения
Пример:
вывести сведения о договорах, упорядочивая их по датам, внутри дат по типам договоров и суммам.
Оператор select реализует любые запросы на базе одной или нескольких таблиц. Один оператор select реализует все операции реляционной алгебры. Общий вид оператора:
select [all/distinct] * /
from
[where ]
[group by
[hewing ]]
[order by ]
from
[where ]
[group by
[hewing ]]
[order by ]
Оператор select возвращает в качестве результата отношение. Однако это отношение не удовлетворяет ограничениям реляционной модели т.к. оно может содержать одинаковые строки. Кроме того, результатом может быть и пустое отношение, а также значения вычисляемые.
Фраза all означает, что в результирующем отношении включены все строки и в том числе строки – дубликаты. Если не указать ни all ни distinct будет all.
distinct – строки – дубликаты из результирующего отношения вычеркиваются.
* - в результирующее отношение войдут все столбцы исходных таблиц.
Если задан список, в результирующее отношение войдут только те столбцы, которые перечислены в списке. Список столбцов может создавать столбец вычисляемый т.е. не существующий в исходных таблицах. После выражения определяющего способ получения такого столбца можно задать его имя as From из каких таблиц осуществляется извлечение данных. В списке таблицы перечисляются через запятую.
where для однотабличных запросов реализует операцию выборки, т.е. в результирующее отношение включаются только те строки, которые удовлетворяют заданному условию.
В запросах на базе нескольких таблиц все исходные таблицы сначала соединяются в единую таблицу и во фразе where указываются условия соединения, как правило, естественное соединение.
group by создает группы строк с одинаковыми значениями в заданных столбцах. По этим группам можно получить некоторые итоги.
having осуществляет отбор групп в соответствии с заданными условиями.
order by обеспечивает упорядочение строк результирующего отношения по значениям заданных столбцов.
Однотабличный запрос.
1) выборка всех строк и столбцов
Пример:
select * from klient
select code, fio, address from klient
select code, fio, address from klient
2) Выборка отдельных столбцов
Пример:
Получить список наименований типов страховых случаев
select naim from tip
Отбор строк с помощью фразы where
во фразе where условие выборки строк может быть задано разными способами:
• С помощью операций отношения >, = ,5
where data between ’01.01.2011’and’31.12.2011’
Вывести коды и фамилии клиентов и общую сумму их договоров за 2011г для таких клиентов, которые заключили больше 2-х договоров за этот период.
select kod_kl, sum(summa) as sum
from dogovor
group by kod_kl
having count(*)>5
where data between ’01.01.2011’and’31.12.2011’
from dogovor
group by kod_kl
having count(*)>5
where data between ’01.01.2011’and’31.12.2011’
Упорядочение строк результирующего отношения
order by
Пример:
вывести сведения о договорах, упорядочивая их по датам, внутри дат по типам договоров и суммам.
select *
from dogovor order by data,kod_tip,summa
from dogovor order by data,kod_tip,summa