
- •1. Реализация баз данных
- •1.1. Обзор существующих систем управления базами данных
- •1.1.1. Основные функции субд
- •1.1.2. Классификация субд
- •1.2. Субд начального уровня – MySql
- •1.2.1. Введение в MySql
- •1.2.2. Подготовка к работе с MySql
- •1.2.3. Создание базы данных, основы работы с таблицами MySql
- •1.2.4. Типы данных столбцов MySql
- •1.2.5. Работа с таблицами MySql
- •1.2.6. Логические операторы MySql
- •1.2.7. Команды обработки данных MySql
- •1.2.8. Математические функции MySql
- •1.2.9. Работа с датой и временем в MySql
- •1.2.10. Работа со строками в MySql
- •1.2.11. Дополнительные функции MySql
- •1.3. Субд корпоративного уровня – ms sql Server
- •1.3.1. Общая теория запросов sql
- •1.3.2. Имена в sql
- •1.3.3. Типы данных
- •1.3.4. Константы
- •1.3.5. Выражения
- •1.3.6. Встроенные функции
- •1.3.7. Отсутствующие значения (значения null)
- •1.3.8. Простые запросы sql на выборку данных
- •1.3.9. Предложение select
- •1.3.10. Предложение from
- •1.3.11. Вычисляемые столбцы
- •1.3.12. Выборка всех столбцов (инструкция select *)
- •1.3.13. Повторяющиеся строки (предикат distinct)
- •1.3.14. Отбор строк (предложение where)
- •1.3.15. Условия отбора
- •1.3.16. Составные условия отбора (операторы and, or и not)
- •1.3.17. Сортировка результатов запроса (предложение order by)
- •1.3.18. Правила выполнения однотабличных запросов
- •1.3.19. Сложные запросы
- •1.3.20. Запросы на объединение и повторяющиеся строки
- •1.3.21. Запросы на объединение и сортировка
- •1.3.22. Вложенные запросы на объединение
- •1.3.23. Многотабличные запросы на выборку
- •1.3.24. Запросы с использованием отношения предок/потомок
- •1.3.25. Запросы на выборку к трём и более таблицам
- •1.3.26. Объединение таблиц по неравенству
- •1.3.27. Особенности многотабличных запросов
- •1.3.28. Самообъединения
- •1.3.29. Производительность при обработке многотабличных запросов
- •1.3.30. Умножение таблиц
- •1.3.31. Правила выполнения многотабличных запросов на выборку
- •1.3.32. Внешнее объединение таблиц
- •1.3.33. Левое и правое внешние объединения
- •1.4. Способы взаимодействия программных средств в субд
- •1.4.1. Доступ к базе данных на стороне сервера
- •1.4.2. Доступ к базе данных на стороне клиента
- •1.5. Современные тенденции развития субд
- •1.5.1. Введение
- •1.5.2. Как предсказать тенденции развития субд
- •1.5.3. Эволюционный подход
- •1.5.4. Тенденции развития
- •1. Виртуализация ресурсов и grid-технологии
- •2. Встраивание Information Life Cycle Management (ilm) в субд
- •3. Самоуправление, самодиагностика, самолечение
- •4. Real Application Testing – механизмы промышленного тестирования версий и изменений
- •5. Совершенствование архитектур максимальной доступности
- •6. Включение измерения времени в субд
- •7. Поддержка новых типов данных (xml, rfid, Semantic Web, геном, медицина, быстрые lob и т.Д.)
- •8. Умные механизмы сжатия и дедублирования
- •9. Совершенствование методов защиты данных
- •10. In-memory субд реального времени как кэш для коммерческих субд
- •11. Облачные вычисления (Cloud computing)
- •12. Машины баз данных
- •1.5.5. Заключение
- •2. Эксплуатация баз данных
- •2.1. Настройка и администрирование субд
- •2.1.1. Администрирование MySql
- •2.1.2. Администрирование ms sql Server
- •2.2. Повышение надёжности баз данных
- •2.2.1. Обеспечение сохранности данных в MySql
- •2.2.2. Обеспечеие сохранности данных в ms sql Server
- •2.3. Повышение производительности баз данных
- •2.3.1. Повышение производительности MySql
- •2.3.2. Повышение производительности ms sql Server
- •2.4. Повышение безопасности бд
- •2.4.1. Безопасность MySql
- •2.4.2. Безопасность ms sql Server
- •2.5. Модернизация бд в процессе эксплуатации
- •2.5.1. Расширение возможностей MySql
- •2.5.2. Распределённые базы данных
1.2.7. Команды обработки данных MySql
Поиск минимального и максимального значений
В MySQL имеются встроенные функции для вычисления минимального и максимального значений.
SQL имеет 5 агрегатных функций.
MIN(): минимальное значение
MAX(): максимальное значение
SUM(): сумма значений
AVG(): среднее значений
COUNT(): подсчитывает число записей
В этом параграфе мы рассмотрим поиск минимального и максимального значений столбца.
Минимальное значение
select MIN(salary) from employee_data;
На рисунке приведен результат запроса.
Рисунок 1.2.7.1 – Поиск минимальной зарплаты
Максимальное значение
select MAX(salary) from employee_data;
На рисунке приведен результат запроса.
Рисунок 1.2.7.2 – Поиск максимальной зарплат
Поиск среднего значения и суммы
Суммирование значений столбца с помощью функции SUM
Агрегатная функция SUM() вычисляет общую сумму значений в столбце. Для этого необходимо задать имя столбца, которое должно быть помещено внутри скобок.
Давайте посмотрим, сколько компания BigFoot тратит на зарплату своих сотрудников.
select SUM(salary) from employee_data;
На рисунке приведен результат запроса.
Рисунок 1.2.7.2 – Сумма всех зарплат
Аналогично можно вывести общую сумму надбавок, выдаваемых сотрудникам.
select SUM(perks) from employee_data;
На рисунке приведен результат запроса.
Рисунок 1.2.7.3 – Сумма всех надбавок
Можно найти также общую сумму зарплаты и надбавок.
select sum(salary) + sum(perks) from employee_data;
На рисунке приведен результат запроса.
Рисунок 1.2.7.4 – Общая сумма зарплаты и надбавок
Здесь показаны также дополнительные возможности команды SELECT. Значения можно складывать, вычитать, умножать или делить. В действительности можно записывать полноценные арифметические выражения.
Вычисление среднего значения
Агрегатная функция AVG() используется для вычисления среднего значения данных в столбце.
select avg(age) from employee_data;
На рисунке приведен результат запроса.
Рисунок 1.2.7.5 – Средний возраст сотрудников
Пример выше вычисляет средний возраст сотрудников компании BigFoot, а следующий выводит среднюю зарплату.
select avg(salary) from employee_data;
На рисунке приведен результат запроса.
Рисунок 1.2.7.6 – Средняя зарплата сотрудников
Именование столбцов
MySQL позволяет задавать имена для выводимых столбцов. Поэтому вместо f_name или l_name и т.д. можно использовать более понятные и наглядные термины. Это делается с помощью оператора AS.
select avg(salary) AS
'Средняя зарплата' from
employee_data;
На рисунке приведен результат запроса.
Рисунок 1.2.7.7 – Вывод средней зарплаты с использованием псевдо-имен столбцов.
Такие псевдо-имена могут сделать вывод более понятным для пользователей. Важно только помнить, что при задании псевдо-имен с пробелами необходимо заключать такие имена в кавычки. Вот еще один пример:
select (SUM(perks)/SUM(salary) * 100)
AS 'Процент надбавок' from
employee_data;
На рисунке приведен результат запроса.
Рисунок 1.2.7.8 – Вывод процента зарплаты, которую сотрудники получают в качестве надбавок с использованием псевдо-имен
Подсчет числа записей
Агрегатная функция COUNT() подсчитывает и выводит общее число записей. Например, чтобы подсчитать общее число записей в таблице, выполните следующую команду.
select COUNT(*) from employee_data;
На рисунке приведен результат запроса.
Рисунок 1.2.7.9 – Общее количество записей
Как мы уже знаем, знак * означает "все данные".
Теперь давайте подсчитаем общее число сотрудников, которые занимают должность "программист".
select COUNT(*) from employee_data
where title = 'программист';
На рисунке приведен результат запроса.
Рисунок 1.2.7.10 – Общее количество сотрудников-программистов
Группировка данных
Предложение GROUP BY позволяет группировать аналогичные данные. Поэтому, чтобы вывести все уникальные должности в таблице, можно выполнить команду
select title from employee_data
GROUP BY title;
На рисунке приведен результат запроса.
Рисунок 1.2.7.11 – Все уникальные должности сотрудников
Вот как можно подсчитать число сотрудников имеющих определенную должность.
select title, count(*)
from employee_data GROUP BY title;
На рисунке приведен результат запроса.
Рисунок 1.2.7.12 – Количество сотрудников по должностям
В предыдущей команде MySQL сначала создает группы различных должностей, а затем выполняет подсчет в каждой группе.
Сортировка данных
Теперь давайте найдем и выведем число сотрудников, имеющих различные должности, и отсортируем их с помощью ORDER BY.
select title, count(*) AS Number
from employee_data
GROUP BY title
ORDER BY Number;
На рисунке приведен результат запроса.
Рисунок 1.2.7.13 – Количество сотрудников по должностям с сортировкой