- •Разработка баз данных средствами MySql
- •Содержание
- •Введение
- •1. Основы работы в субд MySql
- •Системы управления базами данных
- •Основные характеристики MySql
- •Команда create database
- •Работа с таблицами
- •Синтаксис команды create table
- •Удаление таблиц
- •Синтаксис команды drop table
- •Типы данных
- •Числовые данные
- •Строковые данные
- •Календарные данные
- •Тип данных null
- •Выбор типа данных
- •1 Вариант.
- •2 Вариант.
- •3 Вариант.
- •2. Работа с таблицами. Ввод, извлечение, поиск и удаление данных Запись данных в таблицы
- •Заполните таблицу employee_data 5-10 записями. Запрос данных из таблицы MySql
- •Выборка данных с помощью условий
- •Операторы больше и меньше
- •Поиск текстовых данных по шаблону
- •Предложение group by и having
- •Удаление записей из таблицы
- •Задание 1
- •Задание 2
- •Задание 3
- •3. Логические операции в MySql
- •Операторы in и between
- •Упорядочивание данных
- •Ограничение количества извлекаемых данных
- •Извлечение подмножеств
- •Ключевое слово distinct
- •Изменение записей
- •Задание 1
- •Задание 2
- •Задание 3
- •Вычисление среднего значения
- •Именование столбцов
- •Подсчет числа записей
- •Группировка данных
- •5. Математические функции в MySql. Строковые функции. Работа с датой Математические функции MySql
- •Строковые функции
- •Ascii(строка)
- •Concat(строка1, строка2, ...)
- •Особенности типа данных Date
- •Операции с датами
- •Определение диапазонов
- •Использование Date для сортировки данных
- •Выбор данных с помощью Date
- •Текущие даты
- •Тип столбца Null
- •Задание 1
- •Задание 2
- •Задание 3
- •6. Переменные и временные таблицы. Многотабличные запросы
- •7. Вложенные запросы в MySql
- •8. Хранимые процедуры и функции
- •9. Курсоры в MySql. Представления. Конструкции управления потоком данных
- •10. Анализ и моделирование предметной области
- •1. Выбор и текстовое описание предметной области
- •2. Разработка концептуальной er-модели предметной области
- •3. Определение функциональных требований
- •11. Проектирование базы данных
- •1. Создание логической реляционной модели базы данных
- •2. Нормализация логической реляционной модели базы данных
- •1Нф (Первая Нормальная Форма)
- •2Нф (Вторая Нормальная Форма)
- •3Нф (Третья Нормальная Форма)
- •12. Проектирование физической модели бд и ее реализация
- •1. Создание физической модели базы данных
- •2. Реализация физической модели базы данных в коде
- •13. Наполнение и тестирование бд
- •1. Наполнение базы данных
- •2. Тестирование базы данных
- •14. Создание приложения к бд в среде delphi 7, с использованием AnyDac framework 1.7.0
- •1. Начало работы
- •2. Связь с таблицами
- •3. Отображение таблицы на форме
- •4. Компонент adQuery
- •5. Экспорт данных в Excel
- •6. Работа с внешними ключами
- •Рекомендуемая литература
- •Разработка баз данных средствами MySql
- •460844, Г. Оренбург, ул. Советская, 19
Предложение group by и having
Чтобы вывести среднюю зарплату сотрудников (стандартная функция AVG() позволяет вычислять средние значения) в различных подразделениях (должностях), используется предложение GROUP BY, например:
select title, AVG(salary)
from employee_data
GROUP BY title;
Оператор HAVING не может выступать как самостоятельный и всегда используется в связке с GROUP BY. Он позволяет выбирать по условию в рамках заданной группы. Предположим теперь, что требуется вывести только те подразделения, где средняя зарплата более 100000. Это можно сделать с помощью предложения HAVING.
select title, AVG(salary)
from employee_data
GROUP BY title
HAVING AVG(salary) > 100000;
Следует заметить, что нельзя реализовать эту задачу, если поместить условие в оператор WHERE, так как он не поддерживает математические функции. Т.е. нельзя будет написать WHERE AVG(salary) > 100000.
Удаление записей из таблицы
Для удаления записей из таблицы можно использовать оператор DELETE.
Оператор удаления DELETE требует задания имени таблицы и необязательных условий.
DELETE from имя_таблицы [WHERE условия];
Примечание: Если никакие условия не будут заданы, то удаляются все данные в таблице.
Предположим, один из специалистов по мультимедиа 'Василий Иванов' уволился из компании. Надо удалить его запись.
DELETE from employee_data
WHERE f_name = 'Василий' and l_name = 'Иванов';
Задание 1
1. Напишите оператор SQL для создания новой базы данных с именем addressbook
2. Какой оператор используется для получения информации о таблице? Как используется этот оператор?
3. Как получить список всех баз данных, доступных в системе?
4. Напишите оператор для записи следующих данных в таблицу employee_data
Имя: Рудольф
Фамилия: Курочкин
Должность: Программист
Возраст: 34
Стаж работы в компании: 2
Зарплата: 95000
Надбавки: 17000
email: rudolf@yandex.ru
5. Приведите две формы оператора SELECT, которые будут выводить все данные из таблицы employee_data.
6. Как извлечь данные столбцов f_name, email из таблицы employee_data?
7. Напишите оператор для вывода данных из столбцов salary, perks и yos таблицы employee_data.
8. Как извлечь данные столбцов salary, l_name из таблицы employee_data?
Задание 2
1. Напишите оператор SELECT для извлечения идентификационного номера сотрудников, которые старше 30 лет.
2. Напишите оператор SELECT для извлечения имен и фамилий всех Web-разработчиков.
3. Что выведет следующий оператор SELECT:
SELECT * from employee_data where salary <=100000;
4. Как вывести зарплаты и надбавки сотрудников, которые получают в качестве надбавок более 16000?
5. Перечислите имена всех сотрудников (фамилия, а затем имя), которые занимают должность бухгалтера.
Задание 3
1. Перечислить всех сотрудников, фамилии которых начинаются с буквы P.
2. Добавить в таблицу поле ОТДЕЛ и заполнить для соответствующих записей. Вывести имена всех сотрудников в отделе продаж.
3. Что выведет следующий оператор?
SELECT f_name, l_name, salary from
employee_data where f_name like '%к%';
4. Перечислить фамилии и должности всех программистов.
5. Вывести подразделения и средний возраст, где средний возраст больше 30.