Файл: SQL в вопросах и задачах.pdf

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 02.04.2021

Просмотров: 1524

Скачиваний: 4

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
background image

 

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

 


background image

 

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

то

 

состояние

 

неиз в естного

 

утв ер жд ения

 

играет

 

роль

След ов а тельно

итогов ый

 

результа т

 

та кже

 

неиз в естен

 

Е сли

 

р езульта т

 

обоих

 

утв ержд ений

 

неиз в естен

то

 

рез ульта т

 

та кже

 

оста ется

 

неиз в естным

П рим ечание


background image

 

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

М ожно

 

уп ор яд оч ить

 

в ыв од имый

 

сп исок

 

п ред метов

 

обуч ения

 

п о

 

з на ч ениям

 

семестр ов

а

 

в нутри

 

семестров

 

 

п о

 

на именов а ниям

 

п ред метов


background image

 

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.

 

Н а п ишите

 

з а п рос

в ып олняющ ий

 

в ыв од

 

сп иска

 

п ред метов

 

обуч ения

 

в

 


background image

 

50 

п оряд ке

 

а

убыв а ния

 

семестров

 

и

 

б

в оз ра ста ния

 

отв од имых

 

на

 

п р ед мет

 

ч а сов

Поле

 

семестра

 

в

 

в ыход ных

 

д а нных

 

д олжно

 

быть

 

п ер в ым

з а

 

ним

 

д олжны

 

след ов а ть

 

имя

 

п ред мета

 

обуч ения

 

и

 

ид ентифика тор

 

п ред мета

24.

 

Н а п ишите

 

з а п рос

который

 

в ып олняет

 

в ыв од

 

суммы

 

ба ллов

 

в сех

 

студ ентов

 

д ля

 

ка жд ой

 

д а ты

 

сд а ч и

 

э кз а менов

 

и

 

п ред ста в ляет

 

рез ульта ты

 

в

 

п оряд ке

 

убыв а ния

 

э тих

 

сумм

.  

25.

 

Н а п ишите

 

з а п рос

который

 

в ып олняет

 

в ыв од

 

а

сред него

б

минима льного

в

ма ксима льного

 

ба ллов

 

в сех

 

студ ентов

 

д ля

 

ка жд ой

 

д а ты

 

сд а ч и

 

э кз а менов

и

 

п ред ста в ляет

 

результа ты

 

в

 

п оряд ке

 

убыв а ния

 

э тих

 

з на ч ений

.  

2.8. 

В л ож енны е

 

подз апросы

 

SQL 

п оз в оляет

 

исп ользов а ть

 

од ни

 

з а п росы

 

в нутри

 

д ругих

 

з а п росов

то

 

есть

 

в кла д ыв а ть

 

з а п росы

 

д руг

 

в

 

д руга

Пред п оложим

из в естна

 

фа милия

 

студ ента

  (

Петр о в

), 

но

 

неиз в естно

 

з на ч ение

 

п оля

 

STUDENT

_

ID

 

д ля

 

него

Ч тобы

 

из в леч ь

 

д а нные

 

обо

 

в сех

 

оценка х

 

э того

 

студ ента

можно

 

з а п иса ть

 

след ующ ий

 

з а п рос

SELECT

 * 

 

FROM

 

EXAM

_

MARKS

 

 

WHERE

 

STUDENT

_

ID

 = 

 

 

SELECT

 

STUDENT

_

ID 

 

 

 

FROM

 

STUDENT SURNAME

 = 

Петр о в’

); 

К а к

 

р а бота ет

 

з а п рос

 SQL 

со

 

св яз а нным

 

п од з а п росом

?  

 

Выбирается

 

стр ока

 

из

 

та блицы

имя

 

которой

 

ука з а но

 

в о

 

в нешнем

 

з а п р осе

.  

 

Вып олняется

 

п од з а п рос

 

и

 

п олуч енное

 

в

 

рез ульта те

 

его

 

в ып олнения

 

з на ч ение

 

п р именяется

 

д ля

 

а на лиз а

 

э той

 

строки

 

в

 

услов ии

 

п ред ложения

 

WHERE

 

в нешнего

 

з а п роса

.  

 

По

 

рез ульта ту

 

оценки

 

э того

 

услов ия

 

п ринима ется

 

решение

 

о

 

в ключ ении

 

или

 

не

 

в ключ ении

 

строки

 

в

 

соста в

 

в ыход ных

 

д а нных

 

Процед ур а

 

п ов торяется

 

д ля

 

след ующ ей

 

строки

 

та блицы

 

в нешнего

 

з а п р оса