ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 02.04.2021
Просмотров: 1524
Скачиваний: 4
46
Е сли
а р гументом
функции
яв ляется
ст о лбец
,
сод ержа щ ий
п устое
з на ч ение
,
то
COUNT
в ер нет
ч исло
стр ок
,
не
сод ер жа щ их
п устые
з на ч ения
,
и
к
которым
п рименимо
оп ред еленное
услов ие
или
груп п иров а ние
.
Е сли
бы
меха низ м
NULL
не
был
д оступ ен
,
то
неп р именимые
и
отсутств ующ ие
з на ч ения
п ришлось
бы
искл юч а ть
с
п омощ ью
конструкции
WHERE
.
Пов ед ение
функции
COUNT
(*)
не
з а в исит
от
п устых
з на ч ений
.
О на
в оз в ратит
общ ее
колич еств о
стр ок
в
та блице
.
2.5.2.
В л ия ние
NULL
-
з начений
в
ф ункц ии
AVG
Ср ед нее
з на ч ение
множеств а
ч исел
ра в но
сумме
ч исел
,
д еленной
на
ч исло
э лементов
множеств а
.
О д на ко
,
если
некоторые
э лементы
п усты
,
то
есть
их
з на ч ения
неиз в естны
или
не
сущ еств уют
,
то
д еление
на
колич еств о
в сех
э лементов
множеств а
п рив ед ет
к
неп ра в ильному
рез ульта ту
.
Функция
AVG
в ыч исляет
сред нее
з на ч ение
в сех
и зв ест ны х
з на ч ений
множеств а
э лементов
,
то
есть
э та
функция
п од сч итыв а ет
сумму
и зв ест ны х
з на ч ений
и
д елит
ее
на
колич еств о
эт и х
з на ч ений
,
а
не
на
общ ее
колич еств о
з на ч ений
,
сред и
котор ых
могут
быть
NULL
-
з на ч ения
.
Е сли
столбец
состоит
только
из
п устых
з на ч ений
,
то
функция
AVG
та кже
в оз в ратит
NULL
.
2.6.
Р ез ул ь т ат
дей ствия
т рехз начны х
усл овны х
операт оров
У слов ные
оп ераторы
п ри
отсутств ии
п устых
з на ч ений
в оз в ра щ а ют
либо
TRUE
(
и сти н а
),
либо
FALSE
(
ло ж ь
).
Е сли
же
в
столбце
п рисутств уют
п устые
з на ч ения
,
то
может
быть
в оз в ра щ ено
и
третье
з на ч ение
:
UNKNOWN
(
н еи звестн о
).
В
э той
схеме
,
на п р имер
,
услов ие
WHERE
A
=
2
,
гд е
А
–
имя
столбца
,
з на ч ения
которого
могут
быть
неиз в естны
,
п ри
A
=
2
буд ет
соотв етств ов а ть
TRUE
,
п ри
A
=
4
в
резул ьта те
буд ет
п олуч ено
з на ч ение
FALSE
,
а
п р и
отсутств ующ ем
з на ч ении
A
(
NULL
-
з на ч ение
)
рез ульта т
буд ет
UNKNOWN
.
Пустые
з на ч ения
ока з ыв а ют
в лияние
на
исп ользов а ние
логич еских
оп ера торов
NOT
,
AND
и
OR
.
Опера тор
NOT
47
О быч ный
уна р ный
оп ератор
NOT
обра щ а ет
оценку
TRUE
в
FALSE
и
на оборот
.
О д на ко
NOT
NULL
п о
п режнему
буд ет
в оз в ра щ а ть
п устое
з на ч ение
NULL
.
При
э том
след ует
отлич а ть
случ а й
NOT
NULL
от
услов ия
IS
NOT
NULL
,
которое
яв ляется
п ротив оп оложностью
IS
NULL
,
отд еляя
из в естные
з на ч ения
от
неиз в естных
.
Опера тор
AND
•
Е сли
рез ульта т
д в ух
услов ий
,
объед иненных
оп ератором
AND
,
из в естен
,
то
п рименяются
п ра в ила
булев ой
логики
,
то
есть
п р и
обоих
утв ержд ениях
TRUE
соста в ное
утв ержд ение
та кже
буд ет
TRUE
.
Е сли
же
хотя
бы
од но
из
д в ух
утв ержд ений
буд ет
FALSE
,
то
соста в ное
утв ер жд ение
буд ет
FALSE
.
•
Е сли
рез ульта т
од ного
из
утв ержд ений
неиз в естен
,
а
д ругой
оценив а ется
ка к
TRUE
,
то
состояние
неиз в естного
утв ержд ения
яв ляется
оп ред еляющ им
,
и
,
след ов а тельно
,
итогов ый
рез ульта т
та кже
неиз в естен
.
•
Е сли
рез ульта т
од ного
из
утв ержд ений
неиз в естен
,
а
д ругой
оценив а ется
ка к
FALSE
,
итогов ый
результа т
буд ет
FALSE
.
•
Е сли
р езульта т
обоих
утв ержд ений
неиз в естен
,
то
рез ульта т
та кже
оста ется
неиз в естным
.
Опера тор
OR
•
Е сли
рез ульта т
д в ух
услов ий
,
объед иненных
оп ера тором
OR
,
из в естен
,
то
п рименяются
п рав ила
булев ой
логики
,
а
именно
:
если
хотя
бы
од но
из
д в ух
утв ержд ений
соотв етств ует
TRUE
,
то
и
соста в ное
утв ер жд ение
буд ет
TRUE
,
если
оба
утв ержд ения
оценив а ются
ка к
FALSE
,
то
соста в ное
утв ержд ение
буд ет
FALSE
.
•
Е сли
рез ульта т
од ного
из
утв ержд ений
неиз в естен
,
а
д ругой
оценив а ется
ка к
TRUE
,
итогов ый
результа т
буд ет
TRUE
.
•
Е сли
рез ульта т
од ного
из
утв ержд ений
неиз в естен
,
а
д ругой
оценив а ется
ка к
FALSE
,
то
состояние
неиз в естного
утв ер жд ения
играет
роль
.
След ов а тельно
,
итогов ый
результа т
та кже
неиз в естен
.
•
Е сли
р езульта т
обоих
утв ержд ений
неиз в естен
,
то
рез ульта т
та кже
оста ется
неиз в естным
.
П рим ечание
.
48
О тсутств ующ ие
(
NULL
)
з на ч ения
целесообраз но
исп ользов а ть
в
столбца х
,
п ред на з на ч енных
д л я
а грегиров а ния
,
ч тобы
из в леч ь
п реимущ еств а
из
сп особа
обработки
п устых
з на ч ений
в
функциях
COUNT
и
AVG
.
Практич ески
в о
в сех
оста льных
случ а ях
п устых
з на ч ений
след ует
из бега ть
,
та к
ка к
п ри
их
на лич ии
сущ еств енно
усложняется
кор ректное
п остр оение
услов ий
отбора
,
п рив од я
иногд а
к
неп ред ска з уемым
рез ульта та м
в ыборки
.
Д ля
инд ика ции
же
отсутств ующ их
,
неп рименимых
или
п о
ка кой
-
то
п рич ине
неиз в естных
д а нных
можно
исп ользов а ть
з на ч ения
п о
умолч а нию
,
уста на в лив а емые
з а ранее
(
на п ример
,
с
п омощ ью
кома нд ы
CREATE
TABLE
(
раз д ел
4.1).
2.7.
Упоря дочение
вы ходны х
пол ей
(
ORDER
BY
)
К а к
уже
отмеч а лось
,
з а п иси
в
та блица х
реляционной
ба з ы
д а нных
неуп оряд оч ены
.
О д на ко
,
д а нные
,
в ыв од имые
в
результа те
в ып олнения
з а п роса
,
могут
быть
уп оряд оч ены
.
Д ля
э того
исп ользуется
оп ер а тор
ORDER
BY
,
который
п оз в оляет
уп оряд оч ив а ть
в ыв од имые
з а п иси
в
соотв етств ии
со
з на ч ениями
од ного
или
нескольких
в ыбранных
столбцов
.
При
этом
можно
з а д а ть
в оз раста ющ ую
(
ASC
)
или
убыв а ющ ую
(
DESC
)
п ослед ов а тельность
сортир ов ки
д ля
ка жд ого
из
столбцов
.
По
умолч а нию
п р инята
в оз р а ста ющ а я
п ослед ов а тельность
сортиров ки
.
За п рос
,
п оз в оляющ ий
в ыбрать
в се
д а нные
из
та блицы
п ред метов
обуч ения
SUBJECT
,
с
уп оряд оч ив а нием
п о
на именов а ниям
п ред метов
,
в ыгляд ит
след ующ им
обра з ом
:
SELECT
*
FROM
SUBJECT
ORDER BY
SUBJ
_
NAME
;
Тот
же
сп исок
,
но
уп оряд оч енный
в
обратном
п оряд ке
,
можно
п ол уч ить
з а п росом
:
SELECT
*
FROM
SUBJECT
ORDER BY
SUBJ
_
NAME
DESC
;
М ожно
уп ор яд оч ить
в ыв од имый
сп исок
п ред метов
обуч ения
п о
з на ч ениям
семестр ов
,
а
в нутри
семестров
–
п о
на именов а ниям
п ред метов
.
49
SELECT
*
FROM
SUBJECT
ORDER BY
SEMESTR
,
SUBJ
_
NAME
;
Пред ложение
ORDER
BY
может
исп ользов а ться
с
GROUP
BY
д ля
уп оряд оч ив а ния
груп п
з а п исей
.
Пр и
э том
оп ератор
ORDER
BY
в
з а п росе
в сег д а
д о лж ен
бы т ь
последним
.
SELECT
SUBJ
_
NAME
,
SEMESTR
,
MAX
(
HOUR
)
FROM
SUBJECT
GROUP BY
SEMESTR
,
SUBJ
_
NAME
ORDER BY
SEMESTR
;
При
уп оряд оч ив а нии
в место
на именов а ний
столбцов
можно
ука з ыв а ть
их
номера
,
имея
,
од на ко
,
в
в ид у
,
ч то
в
д а нном
случ а е
э то
–
номера
столбцов
,
ука з а нные
п ри
оп ред елении
в ыход ных
д а нных
в
з а п росе
,
а
не
номера
столбцов
в
та блице
.
Полем
с
номером
1
яв ляется
п ерв ое
п оле
,
ука з а нное
в
п ред ложении
ORDER
BY
–
неза в исимо
от
его
расп оложения
в
та блице
.
SELECT
SUBJ
_
ID
,
SEMESTR
FROM
SUBJECT
ORDER BY
2
DESC
;
В
э том
з а п росе
в ыв од имые
з а п иси
буд ут
уп оряд оч ены
п о
п ол ю
SEMESTR
.
Е сли
в
п оле
,
которое
исп ользуется
д ля
уп оряд оч ив а ния
,
сущ еств уют
NULL-
з на ч ения
,
то
в се
они
р а з мещ а ются
в
конце
или
п ред шеств уют
в сем
оста льным
з на ч ениям
э того
п оля
.
УП Р АЖ НЕ НИ Я
21.
Пред п оложим
,
ч то
стип енд ия
в сем
студ ента м
ув елич ена
на
20%.
Н а п ишите
з а п рос
к
та блице
STUDENT
,
в ып олняющ ий
в ыв од
номера
студ ента
,
фа милию
студ ента
и
в елич ину
ув елич енной
стип енд ии
.
Выход ные
д а нные
уп оряд оч ить
:
а
)
п о
з на ч ению
п ослед него
столбца
(
в елич ине
стип енд ии
);
б
)
в
а лфа в итном
п оряд ке
фа милий
студ ентов
.
22.
Н а п ишите
з а п рос
,
который
п о
та блице
EXAM_MARKS
п оз в оляет
на йти
а
)
ма ксима льные
и
б
)
минима льные
оценки
ка жд ого
студ ента
и
в ыв од ит
их
в месте
с
ид ентифика тором
студ ента
.
23.
Н а п ишите
з а п рос
,
в ып олняющ ий
в ыв од
сп иска
п ред метов
обуч ения
в
50
п оряд ке
а
)
убыв а ния
семестров
и
б
)
в оз ра ста ния
отв од имых
на
п р ед мет
ч а сов
.
Поле
семестра
в
в ыход ных
д а нных
д олжно
быть
п ер в ым
,
з а
ним
д олжны
след ов а ть
имя
п ред мета
обуч ения
и
ид ентифика тор
п ред мета
.
24.
Н а п ишите
з а п рос
,
который
в ып олняет
в ыв од
суммы
ба ллов
в сех
студ ентов
д ля
ка жд ой
д а ты
сд а ч и
э кз а менов
и
п ред ста в ляет
рез ульта ты
в
п оряд ке
убыв а ния
э тих
сумм
.
25.
Н а п ишите
з а п рос
,
который
в ып олняет
в ыв од
а
)
сред него
,
б
)
минима льного
,
в
)
ма ксима льного
ба ллов
в сех
студ ентов
д ля
ка жд ой
д а ты
сд а ч и
э кз а менов
,
и
п ред ста в ляет
результа ты
в
п оряд ке
убыв а ния
э тих
з на ч ений
.
2.8.
В л ож енны е
подз апросы
SQL
п оз в оляет
исп ользов а ть
од ни
з а п росы
в нутри
д ругих
з а п росов
,
то
есть
в кла д ыв а ть
з а п росы
д руг
в
д руга
.
Пред п оложим
,
из в естна
фа милия
студ ента
(
“
Петр о в
”
),
но
неиз в естно
з на ч ение
п оля
STUDENT
_
ID
д ля
него
.
Ч тобы
из в леч ь
д а нные
обо
в сех
оценка х
э того
студ ента
,
можно
з а п иса ть
след ующ ий
з а п рос
:
SELECT
*
FROM
EXAM
_
MARKS
WHERE
STUDENT
_
ID
=
(
SELECT
STUDENT
_
ID
FROM
STUDENT SURNAME
=
‘
Петр о в’
);
К а к
р а бота ет
з а п рос
SQL
со
св яз а нным
п од з а п росом
?
•
Выбирается
стр ока
из
та блицы
,
имя
которой
ука з а но
в о
в нешнем
з а п р осе
.
•
Вып олняется
п од з а п рос
и
п олуч енное
в
рез ульта те
его
в ып олнения
з на ч ение
п р именяется
д ля
а на лиз а
э той
строки
в
услов ии
п ред ложения
WHERE
в нешнего
з а п роса
.
•
По
рез ульта ту
оценки
э того
услов ия
п ринима ется
решение
о
в ключ ении
или
не
в ключ ении
строки
в
соста в
в ыход ных
д а нных
.
•
Процед ур а
п ов торяется
д ля
след ующ ей
строки
та блицы
в нешнего
з а п р оса
.