Добавил:
rushevamar@mail.ru Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
BD шпорки.doc
Скачиваний:
112
Добавлен:
17.06.2021
Размер:
4.62 Mб
Скачать
  1. Язык sql: выборка данных из таблиц. Использование агрегатных функций и вычисляемых полей

SELECT[DISTINCT] {*|<имя_поля>[<,имя_поля>…]}

FROM<имя_поля>[<,имя_поля>…]

[WHERE<предикат>]

[GROUP BY < имя_поля > [, < имя_поля >…]]

[Having<предикат>]

[ORDER BY < имя_поля > [, < имя_поля >…]]

(только первые 2 обязательные)

В отличие от предыдущих команд, которые не возвращают результата, команда на выборку возвращает результирующий набор данных

SELECT *

FROM студент,

SELECT фамилия, год_рождения

FROM студент,

SELECT *

FROM студент,

WHERE №группы = 473602

С помощью зарезервированного слова DISTINCT устраняются повторы строк в результирующем наборе данных:

SELECT DISTINCT год_рождения

FROM студент

WHERE №группы = 473602

В предложении ORDER BY указываются поля по которым выполняется сортировка строк результирующего набора данных ( в порядке убывания их приоритета).

С помощью ASC и DESC можно указать соответственно возраст или убывающий порядок сортировки для которого поля, входящего в предложение ORDER BY (по умолчанию – сортировка по возрастанию(ASC)).

SELECT *

FROM студент

ORDER BY год_рождения DESC, фамилия

Использование агрегатных функций

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

COUNT –подсичтать число строк или значения поля, отличных от нуля.

SUM -суммарное значение

AVG-среднее значение

MAX/MIN – max и min значение

SELECT COUNT (*), COUNT (год_рождения),

COUNT (DISTINCT год_рождения)

FROM студент

WHERE №группы = 473602

SELECT MIN(оценка), AVG(оценка), MAX(оценка), SUM(оценка)

FROM экзамен

WHERE семестр = 3 AND №зачетки = 12345;

Использование вычислительных полей

Вычисляемые поля- поля, содержащиеся в результирующем наборе данных, но отсутствующие в таблицах и представления БД.

SELECT фамилия, год_рождения – год_рождения AS возраст_поступления

FROM студент

WHERE №группы = 473602

AS( можно задать или вычисл. поля)

SELECT фамилия, год_поступления – год_рождения AS возраст_поступления

FROM студент

WHERE №группы = 473602

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

При этом знак + используется для контрапенации(соединения, слиния) текстовых значений.

SELECT AVG(год_поступленеия – год_рождения)

AS средний возраст

FROM студент

  1. Язык sql: группировка строк набора данных

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

SELCT факультет, COUNT(*)

FROM группа

GROUP BY факультет

SELECT год_рождения, COUNT(*)

FROM группа

WHERE №группы = 473602

GROUP BY год_рождения

SELECT предмет, семестр, MIN(оценка), AVG(оценка), MAX(оценка)

FROM экзамен

GROUP BY предмет, семестр

SELECT год_поступления, COUNT(*)

FROM студент

WHERE год_поступления >= 2008

GROUP BY год_поступления

В предложении SELECT, как правило, фигурируют поля, содержащиеся в предложении GROUP BY, а также поля, используемые для подсчета итоговых данных.

Команда выборки данных группировкой может включать в себя предложение HAVING, которое, как и предложение WHERE , задает условия отбора для отдельных строк, то HAVING – для групп строк, определяемых предложением GROUP BY. Поэтому в YFVING обязательно должна быть указана хотя бы 1 из агрегатных функций, фигурирующих в SELECT, в то время как, в WHERE это нудопустимо. Т.о. результирующий набор данных формируется в 2 этапа:

  1. сначала выполняется обычная группировка и подсчет итоговых данных

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

HAVING

SELECT факультет, COUNT(*)

FROM группа

GROUP BY факультет

HAVING COUNT(*) <=15

SELECT год_поступления, COUNT(*)

FROM студент

WHERE год_поступления >= 2002

GROUP BY год_поступления

HAVING COUNT(*) > 15

Соседние файлы в предмете Базы данных