Логические операторы
Ограничение количества извлекаемых данных
Далее рассмотрим, как ограничить число записей, выводимых оператором SELECT.
По мере увеличения таблиц возникает необходимость вывода только подмножества данных. Этого можно добиться с помощью предложения LIMIT.
Например, чтобы вывести из таблицы имена только первых пяти сотрудников, используется оператор LIMIT с аргументом равным 5.
SELECT f_name, l_name from employee_data LIMIT 5;
На рис. 6.8. приведен результат запроса.
Это первые пять записей таблицы.
Можно соединить оператор LIMIT с оператором ORDER BY. Таким образом, следующий оператор выведет четверых самых старых сотрудников компании.
SELECT f_name, l_name, age FROM employee_data ORDER BY age LIMIT 4;
На рис. 6.9. приведен результат запроса.
Аналогично можно вывести двух самых молодых сотрудников.
SELECT f_name, l_name, age from employee_data ORDER BY age LIMIT 2;
На рис. 6.10. приведен результат запроса.
Извлечение подмножеств
LIMIT можно использовать также для извлечения подмножества данных, используя дополнительные аргументы.
Общая форма оператора LIMIT имеет следующий вид:
SELECT (что-нибудь) from таблица LIMIT начальная строка, извлекаемое число записей; SELECT f_name, l_name from employee_data LIMIT 6,3;
На рис. 6.11. приведен результат запроса.
Будут извлечены три строки, начиная с седьмой.
Задания
- Найдите имена 5 самых молодых сотрудников компании.
- Извлеките 5 записей, начиная с 10 строки.
- Выведите имя, фамилию и зарплату сотрудника, который получает самую большую зарплату.
- Что делает следующий оператор?
SELECT emp_id, age, perks from employee_data ORDER BY perks DESC LIMIT 10;
Возможные решения
-
mysql> SELECT f_name, l_name, age from -> employee_data ORDER BY age -> LIMIT 5;
-
mysql> SELECT * from employee_data -> LIMIT 10, 5;
-
mysql> select f_name, l_name, salary -> from employee_data -> ORDER BY salary DESC -> LIMIT 1;
- Этот оператор выводит идентификационный номер, возраст и надбавки 10 сотрудников, которые получают наибольшие надбавки.
mysql> SELECT emp_id, age, perks -> from employee_data ORDER BY -> perks DESC LIMIT 10;