Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лаб4.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
154.11 Кб
Скачать

Визначення умов виборки у функції where.

Синтаксис функції WHERE:

WHERE < ім’я стовпця> <оператор умови> < ім’я стовпця>| <константа>| <список значень>

Умови відбору, що задаються у функції WHERE, можуть бути як простими, так і складними. Для завдання складних умов можуть бути використані предикати OR та AND, які в свою чергу можна поєднувати в одному логічному виразі. Порядок виконання операторів наведений нижче (див. Таблиця 2). Зміна порядку виконання операцій здійснюється за допомогою дужок.

Таблиця 2

Порядок обчислення

Оператор

1

Всі оператори порівняння (див. Таблиця ) IN, LIKE, IS NULL, BETWEEN

2

AND

3

OR

Таблиця 3

п/п

Оператор

Суть оператора

=

Рівне

!= , ^= АБО <>

Не рівне

>

Більше

>=

Більше або рівне

<

Менше

<=

Менше або рівне

[NOT] BETWEEN x AND y

[Не] належить діапазону значень [x;y]

IN (СПИСОК)

Рівне будь-якому елементу списку

Еквівалентне “=ANY”

NOT IN (СПИСОК)

Не рівне жодному елементу списку.

еквівалентно “!=ALL”. Якщо хоч один із елементів списку NULL, то результатом буде FALSE.

ANY

SOME

Порівняння із кожним значенням списку або підзапиту. Повинно слідувати за =, !=, >, <, <=, >=. Приймає значення FALSE, якщо під запит не вибирає жодного рядка

ALL

Порівняння із кожним значенням списку або підзапиту. Повинно слідувати за =, !=, >, <, <=, >=. Приймає значення TRUE, якщо під запит не вибирає жодного рядка

IS [NOT] NULL

Перевірка на NULL. Це єдині оператори, що повинні використовуватися при перевірці значень на NULL.

X [NOT] LIKE ‘y’

TRUE, якщо x [не]задовольняє шаблону ‘y’. В шаблоні ‘y’ символ % відповідає будь-якому рядку символів(можливо порожній);

символ '_'  одному символу;

[]  один символ у вказаному діапазоні;

[^]  один символ поза указаного діапазону.

Приклад 10

Задача.

Вивести список студентів з таблиці Student, що навчаються в групі ФБ-03.

Рішення.

SELECT StName ФИО

FROM Student St inner JOIN SGroup SG

ON St.IDGroup =SG.IDGroup

WHERE NameGroup= ‘ФБ-03’;

Як видно з попереднього приклада функція WHERE може бути використана для виконання з’єднання INNER JOIN.

Приклад 11

Задача.

Вивести ім’я викладача, у якого студенти мали оцінки більше 3.

Рішення.

SELECT TeacherName ФИО

FROM Teacher, Progress

WHERE Teacher.PIN=Progress.PIN

AND Mark>3 ;

Приклад 12

Задача.

Вивести ім’я викладачів з вказаного списку кафедр.

Рішення.

SELECT TeacherName ФИО

FROM Teacher

WHERE DeptName IN (‘ММЗІ, ‘ІБ’);

Тут будуть виводитися всі викладачі кафедр ММЗІ та ІБ.

Ще один предикат, що використовується в запитах достатньо часто, предикат BETWEEN працює з будь-якими типами даних, які можна порівняти. У визначення включені кінцеві точки.

Приклад 13

Задача.

Вивести імена викладачів, що оцінили, хоча б раз, роботу студента на 4 або 5.

Рішення.

SELECT TeacherName ФИО

FROM Teacher, Progress

WHERE Teacher.PIN=Progress.PIN

AND MARK BETWEEN 4 AND 5 ;

Приклад 14

Задача.

Вивести імена викладачів, що потрапляють у вказаний інтервал.

Рішення.

SELECT TeacherName

FROM Teacher

WHERE TeacherName BETWEEN ‘Калина’ AND ‘Петренко’ ;

Приклад 15

Задача.

Вивести імена всіх викладачів, які були прийняті на роботу в період з 1.12.2000 по 12.03.2001р.

Рішення.

SELECT TeacherName ФИО

FROM Teacher

WHERE DateHire BETWEEN ‘09.01.2000’ AND ’12.31.2001’;

Зверніть увагу, що в запиті атрибут DateHire має наступний формат ‘ММ.ЧЧ.РРРР’.

Предикат Like дозволяє перевірити відповідність того чи іншого рядка заданому шаблону. Вираз перед ключовим словом like повинен містити рядок. Після ключового слова Like повинен стояти літерал, який і являться шаблоном для перевірки відповідності.

Приклад 16

Задача.

Вивести імена студентів, що починаються на букву П.

Рішення.

SELECT StName

FRom Student

Where StName Like 'П%'

Якщо в шаблоні потрібно вказати знак % або знак підкреслення по своєму прямому призначенню слід помістити їх в квадратні дужки.

Приклад 17

Задача.

Вивести імена студентів, що містять букву ‘а’, в будь-якій позиції починаючи з другої.

Решение.

SELECT StName

FRom Student

Where StName Like '_%а%'

Приклад 18

Задача.

Вивести назви дисциплін, що містять «пробіл».

Рішення.

SELECT NameSubject

From Subject

Where NameSubject Like '%[ ]%'

Приклад 19

Задача.

Вивести список викладачів з таблиці Teacher, у прізвищах яких зустрічаються букви в діапазоні ‘щ-я’.

Рішення.

select TeacherName ФИО

from Teacher

where TeacerhName like '% [щ-я]%'

Велика група запитів включає в себе умов з запереченням. Існує множина способів задання заперечення (див. Таблиця ) .

Таблиця 4

Оператор

Опис

!=, <>

Не рівне

NOT <ім’я стовпця> =

Значення стовпця не рівне

NOT < ім’я стовпця > >

Значення стовпця не більше ніж

NOT < ім’я стовпця > <

Значення стовпця не менше ніж

NOT BETWEEN

Не лежить в інтервалі

NOT IN

Не міститься у списку

NOT LIKE

Не містить підрядка

IS NOT NULL

Не містить невизначеності

Приклад 20

Задача.

Вивести імена всіх викладачів, окрім викладачів, що працюють на кафедрах, що вказані у списку.

Рішення.

SELECT TeacherName ФИО

FROM Teacher

WHERE DeptName NOT IN (‘ИСТ’);

Приклад 21

Задача.

Вивести імена і номера залікової книжки студентів, у яких не внесені оцінки по тим чи іншим предметам.

Рішення.

SELECT DISTINCT Student.NRecordBook [№ зачётки], STname ФИО

FROM Student, Progress

WHERE Student.NRecordBook= Progress.NRecordBook

AND Mark IS NULL;

Приклад 22

Задача.

Вивести список імена і номера залікової книжки студентів, що мають хоч одну п’ятірку.

Рішення.

SELECT DISTINCT Student.NRecordBook [№ зачётки],StName ФИО

FROM Student, Progress

WHERE Student.NRecordBook = Progress.NRecordBook

AND Mark=5;

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]