Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
SQL Учебник.doc
Скачиваний:
1
Добавлен:
01.03.2025
Размер:
1.28 Mб
Скачать

Расширенные условия отбора

Под расширенным условием отбора будем понимать фильтрацию не по одному, а по нескольким полям.

Для фильтрации по нескольким столбцам применяются ключевые слова AND и OR. Эти слова можно применять как по отдельности, так и вместе.

Фильтрация с использованием ключевого слова AND и OR

Ключевое слово AND требует выполнения ВСЕХ проверяемых условий.

Ключевое слово OR требует выполнения хотя бы одного из проверяемых условий.

С

Пример:

К таблице "Студенты" применены различные варианты, запросов с расширенными условиями отбора AND и OR.

туденты

Фамилия

Год

Пол

Группа

Воронова

1984

ж

103

Борисов

1987

м

102

Васильев

1985

м

102

Антонова

1983

ж

106

Романова

1984

ж

104

Винтин

1987

м

103

Булычев

1984

м

102

Голубева

1987

ж

104

Жданов

1985

м

107

Результаты представлены ниже:

SELECT Фамилия, Год, Пол

FROM Студенты

WHERE Пол = "ж" AND Год = 1984

Фамилия

Год

Пол

Воронова

1984

ж

Романова

1984

ж

SELECT Фамилия, Год, Пол

FROM Студенты

WHERE Пол = "м" AND Год <= 1985

Фамилия

Год

Пол

Васильев

1985

м

Булычев

1984

м

Жданов

1985

м

Фамилия

Год

Пол

Воронова

1984

ж

Борисов

1987

м

Антонова

1983

ж

Романова

1984

ж

Винтин

1987

м

Голубева

1987

ж

SELECT Фамилия, Год, Пол

FROM Студенты

WHERE Пол = "ж" OR Год = 1987

SELECT Фамилия, Год, Пол

FROM Студенты

WHERE Год = 1983 OR Год = 1984

Фамилия

Год

Пол

Воронова

1984

ж

Антонова

1983

ж

Романова

1984

ж

Булычев

1984

м

Совместная фильтрация с использованием ключевого слова AND и OR, порядок обработки.

Комбинируя ключевыми словами AND и OR, можно формировать запросы различной сложности. Но, при этом следует внимательно следить за последовательностью выполнения логических операторов. Неправильная группировка может привести к неверному результату.

Пример:

Из таблицы "Ведомость", необходимо отобрать, студентов 1-й или 2-й группы, имеющих оценку не ниже 4.

Ведомость

Фамилия

Группа

Оценка

КОНУШИН

1

2

КОЧЕИХИН

2

2

КУЗЬМИН

2

3

КУРЧИН

1

4

ЛЕБЕДЕВ

4

3

ЛЕВШИН

3

4

ЛИСИЦЫН

4

5

ЛУНЕВ

5

4

ЛЮБИН

2

5

МИНАЕВ

1

5

МИТРОФАНОВ

4

4

МОСКВИН

5

5

НЕСТЕРОВ

1

3

ОНИЩУК

2

4

Рассмотрим запрос следующего вида.

Группа

Оценка

1

2

1

4

2

5

1

5

1

3

2

4

SELECT *

FROM Ведомость

WHERE Группа = 1 OR Группа = 2 AND Оценка >=4

Результат оказался неверным из-за приоритета в выполнении логических операторов:

В первую очередь выполнился оператор

Группа = 2 AND Оценка >=4, а потом, к его результатам добавилась вся первая группа, Группа = 1 независимо от оценки.

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

Правильная запись запроса

SELECT *

FROM Ведомость

WHERE (Группа = 1 OR Группа = 2) AND Оценка >=4

Группа

Оценка

1

4

2

5

1

5

2

4

Этот вид запроса отличается от предыдущего наличием скобок.

Сначала отбирается 1-я и 2-я группы и затем, из них отбираются строки с оценкой >=4, что и требовалось по заданию.

Использование ключевых слов OR и IN

Для проверки условий по одному столбцу, вместо оператора OR можно применять оператор IN. Запись запроса, при этом, выглядит более компактно и выполняется быстрее.

Н

Вокзал

Отправление

Киевский

7.40

Курский

9.20

Киевский

7.55

Киевский

8.25

Курский

10.00

Курский

10.30

иже приведены два запроса различных по написанию, но идентичных по результату:

SELECT Вокзал, Отправление

FROM Расписание

WHERE Вокзал = "Киевский" OR Вокзал = "Курский"

SELECT Вокзал, Отправление

FROM Расписание

WHERE Вокзал IN ( "Киевский" , "Курский" )

Использование ключевого слова NOT

Назначение ключевого слова NOT в предложении WHERE - отрицать все, что следует за ним.

Варианты применения ключевого слова NOT.

SELECT Вокзал

FROM Расписание

WHERE NOT Вокзал IN ( "Киевский" , "Курский" )

Вокзал

Ленинградский

Белорусский

Рижский

Павелецкий

SELECT Вокзал

FROM Расписание

WHERE NOT (Вокзал = "Киевский" OR Вокзал = "Курский")

В основном, ключевое слово NOT, применяется для поиска строк не соответствующих требуемым критериям. В этом случае, в запросе, пишется проверка на наличие этих критериев, потом все логическое выражение берется в скобки и отрицается.

SELECT Фамилия, Год, Факультет, Курс

FROM Список

WHERE NOT (Год =1987 AND Факультет ="ЭФ" AND Курс = 3)

Фамилия

Год

Факультет

Курс

Куницын

1987

ЭФ

4

Рыбаков

1986

ВМК

3

Сальников

1986

ЭФ

3

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