Опубликован: 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 >
Александра Каева
Александра Каева
Здравствуйте! Студент ВУЗа может пройти проф.переподготовку и получить официальный документ?
Диляра Кенжебай
Диляра Кенжебай
для чего предназначены схемы баз данных?
Анатолий Федоров
Анатолий Федоров
Россия, Москва, Московский государственный университет им. М. В. Ломоносова, 1989
Сергей Пантелеев
Сергей Пантелеев
Россия, Москва