Лекция Основные функции субд система управления базами данных (субд)



жүктеу 469 Kb.
бет10/12
Дата04.07.2023
өлшемі469 Kb.
#43098
түріЛекция
1   ...   4   5   6   7   8   9   10   11   12
ТЕМЫ ЛЕКЦИОННЫХ ЗАНЯТИЙ

Лекция 10. Агрегация

Функция агрегации принимает на вход множество значений, выдавая на выходе одно. Наиболее часто используемая функция агрегации - это``count()``. Она получает набор строк и возвращает их количество.


В качестве параметра может использоваться любое SQL выражение. Наиболее часто используется шаблон *, означающий «все столбцы». В отличии от большинства функций агрегации count() не вычисляет значение своего аргумента, а просто считает сколько раз он был вызван:

SELECT count(*)


FROMemployee

count

18

Другая функция агрегации может вернуть нам среднее количество сотрудников в офисах. Для этого нам также потребуется использовать конструкцию GROUP BY в подзапросе:
SELECT avg(emp_count)
FROM (SELECTcount(*) AS emp_count
FROM employee
GROUP BY dep_id) AS emp_counts

count

2

Примечание
Запрос в этом примере производит подсчёт только по отделам, в которых есть сотрудники. Для включения в расчёты отделы без сотрудников нужно использовать более сложный подзапрос.


Лекция 11. Группировка данных

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



На изображении выше строки разделены на 3 подгруппы по некоему полю «a». Затем применена функция SUM() к полю «b» в каждой из этих групп.
В качестве примера совместного использования агрегации и конструкции GROUP BY рассчитаем количество сотрудников в каждом отделе:

SELECT count (*)


FROM employee GROUP BY dep_id

count

dep_id

2

1

10

2

6

3

9

4

Having
Для фильтрации сгруппированных агрегированных значений применяется конструкция HAVING. Например, можно изменить вывод примера выше: отфильтровать отделы, в которых количество сотрудников больше семи:
SELECT count(*) as emp_count
FROM employee
GROUP BY dep_id
HAVING emp_count>7

count

dep_id

10

2

9

4

Выборка.
Рассмотрим, как команда SELECT ведёт себя при комбинации всех вышеописанных конструкций.
Для примера возьмём следующий набор строк:

Employee

emp_id

emp_name

dep_id

1

wally

1

2

dilbert

1

3

jack

2

4

ed

3

5

wendy

1

6

dogbert

4

7

boss

3

К которому будет применён вот этот код:


SELECT count(emp_id) as emp_count, dep_id
FROM employee
WHERE dep_id=1 OR dep_id=3 OR dep_id=4
GROUPBY dep_id
HAVING emp_count>1
ORDER BY emp_count, dep_id
Конструкция FROM определяет таблицы, из которых будут выбраны строки. В нашем примере это таблица employee:
...FROM employee...

emp_id

emp_name

dep_id

1

wally

1

2

dilbert

1

3

jack

2

4

ed

3

5

wendy

1

6

dogbert

4

7

boss

3

Каждая строка проверяется на соответствие условию, описанному в блоке WHERE. Только строки, прошедшие эту проверку, подвергаются дальнейшей обработке:
...WHEREdep_id=1 OR dep_id=3 OR dep_id=4...

emp_id

emp_name

dep_id

1

wally

1

2

dilbert

1

4

ed

3

5

wendy

1

6

dogbert

4

7

boss

3

Затем производится фоновая группировка по какому-либо критерия с помощью конструкции GROUP BY. Дальнейшая обработка производится уже над этими группами. Для текущего примера это выглядит следующим образом:
...GROUPBY dep_id...

«group»

emp_id

emp_name

dep_id

dep_id=1

1

wally

1


2

dilbert

1


5

wendy

1

dep_id=3

4

ed

3


7

boss

3

dep_id=4

6

dogbert

4

Затем функции агрегации применяются к каждой группе строк. В примере функция count() применяется к полю emp_id. Это значит, что для группы «1» она получит «1», «2» и «5», в качестве значений. Функции count() нет дела до того, какие значения в неё были переданы. И можно для упрощения передать *, что означает «все столбцы». Тем не менее, большинству функций агрегации важно, что именно передаётся в них в качестве параметров. Потому хорошей практикой считается определение тех столбцов, которые передаются в качестве параметров. Результат нашего примера выглядит примерно так:
...count(emp_id) AS emp_count...

emp_count

dep_id

3

1

2

3

1

4

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

emp_count

dep_id

3

1

2

3

В конце применяется конструкция ORDER BY. Важно помнить, что реляционная математика, заложенная в основу SQL, базируется на понятии множеств. Которые являются по определению неупорядоченными. В обычном случае выборка, агрегация и фильтрация применяются к неупорядоченным строкам. И только в конце, перед отдачей результата пользователю, производится упорядочивание по какому-либо признаку:
...ORDER BY emp_count,dep_id

emp_count

dep_id

2

3

3

1

Лекция 12. Язык управления данными (DCL – Data Control Language)


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


Команды администрирования данных
С помощью команд администрирования данных пользователь осуществляет контроль за выполняемыми действиями и анализирует операции базы данных ; они также могут оказаться полезными при анализе производительности системы. Не следует путать администрирование данных с администрированием базы данных, которое представляет собой общее управление базой данных и подразумевает использование команд всех уровней.
Команды управления транзакциями
Существуют следующие команды, позволяющие управлять транзакциями базы данных: COMMIT, ROLLBACK, SAVEPOINT, SET TRANSACTION.

жүктеу 469 Kb.

Достарыңызбен бөлісу:
1   ...   4   5   6   7   8   9   10   11   12




©g.engime.org 2024
әкімшілігінің қараңыз

    Басты бет
рсетілетін қызмет
халықаралық қаржы
Астана халықаралық
қызмет регламенті
бекіту туралы
туралы ережені
орталығы туралы
субсидиялау мемлекеттік
кеңес туралы
ніндегі кеңес
орталығын басқару
қаржы орталығын
қаржы орталығы
құрамын бекіту
неркәсіптік кешен
міндетті құпия
болуына ерікті
тексерілу мемлекеттік
медициналық тексерілу
құпия медициналық
ерікті анонимді
Бастауыш тәлім
қатысуға жолдамалар
қызметшілері арасындағы
академиялық демалыс
алушыларға академиялық
білім алушыларға
ұйымдарында білім
туралы хабарландыру
конкурс туралы
мемлекеттік қызметшілері
мемлекеттік әкімшілік
органдардың мемлекеттік
мемлекеттік органдардың
барлық мемлекеттік
арналған барлық
орналасуға арналған
лауазымына орналасуға
әкімшілік лауазымына
инфекцияның болуына
жәрдемдесудің белсенді
шараларына қатысуға
саласындағы дайындаушы
ленген қосылған
шегінде бюджетке
салығы шегінде
есептелген қосылған
ұйымдарға есептелген
дайындаушы ұйымдарға
кешен саласындағы
сомасын субсидиялау