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

Задания

1. Перечислить всех сотрудников, фамилии которых начинаются с буквы P.

2. Вывести имена всех сотрудников в отделе продаж.

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

SELECT f_name, l_name, salary from

employee_data where f_name like '%к%';

4. Перечислить фамилии и должности всех программистов

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

1. select l_name, f_name from employee_data where l_name like 'P%';

2. select f_name, l_name from employee_data where title like '%продавец%';

3. Этот оператор выводит имена, фамилии и заплаты всех сотрудников, у которых имя содержит букву 'к'.

SELECT f_name, l_name, salary from employee_data where f_name like '%к%';

4. SELECT l_name, title from employee_data where title like '%программист%';

Предложение having

Чтобы вывести среднюю зарплату сотрудников в различных подразделениях (должностях), используется предложение GROUP BY, например:

select title, AVG(salary)

from employee_data

GROUP BY title;

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

Рис. 5.16. Вывод средней зарплаты сотрудников по подразделениям

Предположим теперь, что требуется вывести только те подразделения, где средняя зарплата более 100000. Это можно сделать с помощью предложения HAVING.

select title, AVG(salary)

from employee_data

GROUP BY title

HAVING AVG(salary) > 100000;

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

Рис. 5.17. Вывод средней зарплаты определённого диапазона по подразделениям

Задание

Вывести подразделения и средний возраст, где средний возраст больше 30.

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

mysql> select title, AVG(age)

-> from employee_data

-> GROUP BY title

-> HAVING AVG(age) > 30;

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

Рис. 5.18. Вывод подразделения и среднего возраста, где средний возраст больше 30 лет

Удаление записей из таблицы

Для удаления записей из таблицы можно использовать оператор DELETE.

Оператор удаления DELETE требует задания имени таблицы и необязательных условий.

DELETE from имя_таблицы [WHERE условия];

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

Предположим, один из специалистов по мультимедиа 'Василий Пупкин' уволился из компании. Надо удалить его запись.

DELETE from employee_data

WHERE l_name = 'Пупкин';

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

Рис. 5.19. Результат удаления записи из таблицы

Лекция 6.

В этой лекции мы рассмотрим, как выбрать данные на основе условий SQL, представленных с помощью булевых (логических) операторов.

  1. AND

  2. OR

  3. NOT

Использовать их очень просто. Ниже показан оператор SELECT, который выводит имена сотрудников, которые получают более 70000, но меньше 90000.

SELECT f_name, l_name from employee_data

where salary > 70000 AND salary < 90000;

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

Рис. 6.1. Имена сотрудников, которые получают более 70000, но меньше 90000

Давайте выведем список сотрудников, фамилии которых начинаются с буквы К или Л.

SELECT l_name from employee_data where

l_name like 'К%' OR l_name like 'Л%';

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

Рис. 6.2. Сотрудники, фамилии которых начинаются с буквы К или Л

Вот более сложный пример: список имен и возраста сотрудников, фамилии которых не начинаются с К или Л, и которые младше 30 лет.

SELECT f_name, l_name , age from employee_data

where (l_name not like 'К%' OR l_name not like 'Л%') AND age < 30;

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

Рис. 6.3. Список имен и возраста сотрудников, фамилии которых не начинаются с К или Л, и которые младше 30 лет

Обратите внимание на использование скобок в представленном выше операторе. Скобки предназначены для выделения различных логических условий и удаления двусмысленностей.

Оператор NOT поможет при поиске всех сотрудников, которые не являются программистами. (Программисты включают старших программистов, программистов мультимедиа и программистов).

SELECT f_name, l_name, title from employee_data

where title NOT LIKE "%программист%";

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

Рис. 6.4. Поиск всех сотрудников, которые не являются программистами

И последний пример перед упражнениями.

Показать всех сотрудников со стажем работы в компании более 3 лет, которые старше 30 лет.

select f_name, l_name from employee_data

where yos > 3 AND age > 30;

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

Рис. 6.5. Все сотрудники, которые старше 30 лет, и имеют стаж работы более 3 лет

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