Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
MySQL.docx
Скачиваний:
6
Добавлен:
01.05.2025
Размер:
762 Кб
Скачать
☆

Задания

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

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

SELECT l_name, f_name from employee_data

where title NOT LIKE '%продавец%'

AND age < 30;

3. Вывести все идентификационные номера и имена сотрудников в возрасте между 32 и 40 годами.

4. Выберите имена всех сотрудников в возрасте 32 лет, которые не являются программистами.

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

  1. mysql> select f_name, l_name from employee_data

  2. -> where salary <= 90000

  3. -> AND title NOT LIKE '%программист%';

  4. Команда выводит имена (фамилию, за которой следует имя) сотрудников, которые не работают в отделе продаж и моложе 30 лет.

  5. mysql> SELECT l_name, f_name from employee_data

  6. -> where title NOT LIKE '%продавец%'

-> AND age < 30;

  1. mysql> select emp_id, f_name, l_name from

  2. -> employee_data where age > 32

  3. -> and age < 40;

  4. mysql> select f_name, l_name from employee_data

  5. -> where age = 32 AND

  6. -> title NOT LIKE '%программист%';

Операторы in и between

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

SELECT f_name, l_name, title from

-> employee_data where

-> title = 'разработчик Web' OR

-> title = 'системный адм.';

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

Рис. 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. приведен результат запроса.

Рис. 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;

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