Опубликован: 16.01.2007 | Уровень: для всех | Доступ: платный
Лекция 6:

Логические операторы

< Лекция 5 || Лекция 6: 123456 || Лекция 7 >

Операторы IN и BETWEEN

Чтобы найти сотрудников, которые являются разработчиками Web или системными администраторами, можно использовать оператор SELECT следующего вида:

SELECT f_name, l_name, title from
    -> employee_data where
    -> title = 'разработчик Web' OR
    -> title = 'системный адм.';

На рис. 6.6. приведен результат запроса.

Поиск сотрудников, которые являются разработчиками Web или системными администраторами

Рис. 6.6. Поиск сотрудников, которые являются разработчиками Web или системными администраторами

В SQL имеется более простой способ сделать это с помощью оператора IN (в множестве). Его использование не представляет никаких трудностей.

SELECT f_name, l_name, title from
    -> employee_data where title
    -> IN ('разработчик Web', 'системный адм.');

Результат будет аналогичен рис. 6.6.

Использование NOT перед IN позволяет вывести данные, которые не входят в множество, определяемое условием IN. Следующий оператор выводит список сотрудников, которые не занимают должность программиста или системного администратора.

SELECT f_name, l_name, title from
    -> employee_data where title NOT IN
    -> ('программист', 'системный адм.');

Оператор BETWEEN используется для определения целочисленных границ. Поэтому вместо age >= 32 AND age <= 40 можно использовать age BETWEEN 32 AND 40.

select f_name, l_name, age from
    -> employee_data where age BETWEEN
    -> 32 AND 40;

На рис. 6.7. приведен результат запроса.

Поиск сотрудников, возраст которых лежит в промежутке от 32-х до 40 лет

Рис. 6.7. Поиск сотрудников, возраст которых лежит в промежутке от 32-х до 40 лет

NOT также можно использовать вместе с BETWEEN, как в следующем операторе, который выводит сотрудников, зарплата которых меньше 90000 или больше 150000.

select f_name, l_name, salary
    -> from employee_data where salary
    -> NOT BETWEEN
    -> 90000 AND 150000;

Задания

1. Найдите всех сотрудников, которые занимают должность "старший программист" и "программист мультимедиа".

2. Выведите список имен сотрудников, зарплата которых составляет от 70000 до 90000.

3. Что делает следующий оператор?

SELECT f_name, l_name, title from
employee_data where title NOT IN
('программист', 'старший программист',
'программист мультимедиа');

4. Вот более сложный оператор, который объединяет BETWEEN и IN. Что он делает?

SELECT f_name, l_name, title, age
from employee_data where
title NOT IN
('программист', 'старший программист',
'программист мультимедиа') AND age
NOT BETWEEN 28 and 32;

Возможные решения

  1. mysql> select l_name, f_name, title
     -> from employee_data where
     -> title IN
     -> ('старший программист',
     -> 'программист мультимедиа');
  2. 2. mysql> select f_name, l_name, salary from
        -> employee_data where salary BETWEEN
        -> 70000 AND 90000;
  3. Выводятся имена и должности всех, кто не является программистом.
    mysql> SELECT f_name, l_name, title from
        -> employee_data where title NOT IN
        -> ('программист', 'старший программист',
        -> 'программист мультимедиа');
  4. Этот оператор выводит список тех, кто не является программистом, и которые младше 28 или старше 32 лет.
    mysql> SELECT f_name, l_name, title, age from
        -> employee_data where title NOT IN
        -> ('программист', 'старший программист',
        -> 'программист мультимедиа') AND
        -> age NOT BETWEEN 28 AND 32;
< Лекция 5 || Лекция 6: 123456 || Лекция 7 >
Александра Каева
Александра Каева
Диляра Кенжебай
Диляра Кенжебай