Операторы 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; Возможные решения 1. mysql> select l_name, f_name, title 2. -> from employee_data where 3. -> title IN 4. -> ('старший программист', 5. -> 'программист мультимедиа'); 6. 2. mysql> select f_name, l_name, salary from 7. -> employee_data where salary BETWEEN 8. -> 70000 AND 90000;
10.mysql> SELECT f_name, l_name, title from 11. -> employee_data where title NOT IN 12. -> ('программист', 'старший программист', -> 'программист мультимедиа');
14.mysql> SELECT f_name, l_name, title, age from 15. -> employee_data where title NOT IN 16. -> ('программист', 'старший программист', 17. -> 'программист мультимедиа') AND -> age NOT BETWEEN 28 AND 32; Упорядочивание данных Рассмотрим вопрос о том, как можно изменить порядок вывода данных, извлеченных из таблиц MySQL, используя предложение ORDER BY оператора SELECT. Извлекаемые до сих пор данные всегда выводились в том порядке, в котором они были сохранены в таблице. В действительности SQL позволяет сортировать извлеченные данные с помощью предложения ORDER BY. Это предложение требует имя столбца, на основе которого будут сортироваться данные. Давайте посмотрим, как можно вывести имена сотрудников с упорядоченными по алфавиту фамилиями сотрудников (в возрастающем порядке). SELECT l_name, f_name from employee_data ORDER BY l_name; А вот так сотрудников можно отсортировать по возрасту. SELECT f_name, l_name, age from employee_data ORDER BY age; Предложение ORDER BY может сортировать в возрастающем порядке ( ASCENDING или ASC ) или в убывающем порядке ( DESCENDING или DESC ) в зависимости от указанного аргумента. Чтобы вывести список сотрудников в убывающем порядке, можно использовать следующий оператор. SELECT f_name from employee_data ORDER by f_name DESC; Примечание: Возрастающий порядок ( ASC ) используется по умолчанию. Задания 1. Вывести список сотрудников в порядке, определяемом зарплатой, которую они получают. 2. Выведите список сотрудников в убывающем порядке их стажа работы в компании. 3. Что делает следующий оператор? SELECT emp_id, l_name, title, age from employee_data ORDER BY title DESC, age ASC; 4. Вывести список сотрудников (фамилию и имя), которые занимают должность "программист" или "разработчик Web" и отсортировать их фамилии по алфавиту. Возможные решения 1. mysql> SELECT f_name, l_name, salary 2. -> from employee_data 3. -> ORDER BY salary; 4. mysql> SELECT f_name, l_name, yos 5. -> from employee_data 6. -> ORDER by yos DESC;
8. mysql> SELECT emp_id, l_name, title, age 9. -> from employee_data ORDER BY -> title DESC, age ASC; Примечание: Сначала сортируются должности в убывающем порядке. Затем для каждой должности сортируется возраст сотрудников в возрастающем порядке. 10.mysql> SELECT l_name, f_name from employee_data 11. -> where title IN ('программист', 12. -> 'разработчик Web') ORDER BY l_name;
Популярное: Как выбрать специалиста по управлению гостиницей: Понятно, что управление гостиницей невозможно без специальных знаний. Соответственно, важна квалификация... Генезис конфликтологии как науки в древней Греции: Для уяснения предыстории конфликтологии существенное значение имеет обращение к античной... ©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (208)
|
Почему 1285321 студент выбрали МегаОбучалку... Система поиска информации Мобильная версия сайта Удобная навигация Нет шокирующей рекламы |