- •Лабораторные работы 1,2.
- •1. 1. Основные характеристики субд MySql.
- •1.2. Установка MySql
- •Проверка исходных требований
- •Выбор версии
- •1.4.Основные команды создания баз данных, основы работы с таблицами
- •Создание базы данных в Windows
- •Удаление баз данных.
- •1. 5. Типы данных столбцов
- •Требования к памяти для символьных типов приведены в таблице.
- •2.1. Запись данных в таблицы
- •В системе Windows
- •2.2. Запрос данных из таблицы MySql select
- •Выборка данных с помощью условий
- •Операторы больше и меньше
- •Поиск текстовых данных по шаблону с помощью предложения where и оператора like.
- •2.3. Логические операторы
- •Операторы in и between
- •2.4 Команды обработки данных: поиск максимального, минимального и среднего значений, нахождение суммы и количества записей Поиск минимального и максимального значений
- •Именование столбцов as
- •Подсчет числа записей
- •Предложения group by и having
- •Удаление записей из таблицы
- •Упорядочивание данных order by
- •Ограничение количества извлекаемых данных
- •Ключевое слово distinct
- •Вложенные запросы
- •Изменение записей update
- •3.1. Математические функции MySql
- •3.2.Работа с датой и временем
- •3.3. Работа со строками
- •Insert(строка, позиция, длина, новая_строка)
- •Instr(строка, подстрока)
- •Функции сравнения строк
- •3.4. Дополнительные функции MySql
- •Битовые функции
- •Прочие функции
- •3.3.4.9 Использование нескольких таблиц
- •3.3.4.6 Работа с значениями null
- •3.3.4.9 Использование нескольких таблиц
- •Делаем дамп (бэкап) базы данных, используя утилиту mysqldump
Предложения group by и having
Предложение GROUP BY позволяет группировать аналогичные данные.
Поэтому, чтобы вывести все уникальные должности в таблице, можно выполнить команду
select title from employee_data GROUP BY title;
Все уникальные должности сотрудников
Можно видеть, что это аналогично использованию DISTINCT.
Вот как можно подсчитать число сотрудников имеющих определенную должность.
select title, count(*) from employee_data GROUP BY title;
В этой команде MySQL сначала создает группы различных должностей, а затем выполняет подсчет в каждой группе
Количество сотрудников по должностям
Выведем среднюю зарплату сотрудников в различных подразделениях (должностях),
select title, AVG(salary) from employee_data GROUP BY title;
Вывод средней зарплаты сотрудников по подразделениям
Предположим теперь, что требуется вывести только те подразделения, где средняя зарплата более 100000. Это можно сделать с помощью предложения HAVING.
select title, AVG(salary) from employee_data GROUP BY title HAVING AVG(salary) > 100000;
Вывод средней зарплаты определённого диапазона по подразделениям
Пример
Вывести подразделения и средний возраст, где средний возраст больше 30.
select title, AVG(age) from employee_data GROUP BY title HAVING AVG(age) > 30;
Вывод подразделения и среднего возраста, где средний возраст больше 30 лет
Удаление записей из таблицы
Для удаления записей из таблицы можно использовать оператор DELETE.
Оператор удаления DELETE требует задания имени таблицы и необязательных условий.
DELETE from имя_таблицы [WHERE условия];
Примечание: Если никакие условия не будут заданы, то удаляются все данные в таблице.
Предположим, один из специалистов по мультимедиа 'Василий Пупкин' уволился из компании. Надо удалить его запись.
DELETE from employee_data WHERE l_name = 'Пупкин';
Результат удаления записи из таблицы
Упорядочивание данных order by
Рассмотрим вопрос о том, как можно изменить порядок вывода данных, извлеченных из таблиц 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) используется по умолчанию.
Теперь давайте найдем и выведем число сотрудников, имеющих различные должности, и отсортируем их с помощью ORDER BY.
select title, count(*) AS Number from employee_data GROUP BY title ORDER BY Number;
Количество сотрудников по должностям с сортировкой
Провести сортировку с учетом регистра символов можно при помощи команды BINARY:
ORDER BY BINARY(поле).
