Выбор записей:
Выполнить запрос позволяет SQL-команда
SELECT <Поле1>, <Поле2>, …
FROM <Имя таблицы>
[ WHERE <Условие1> ]
[ GROUP BY <Имя поля1> ] [ HAVING <Условие2> ]
[ ORDER BY <Имя поля2> [DESC]]
[ LIMIT <Начало>, <Количество записей> ]
Кроме того, команда SELECT позволяет использовать следующие функции, называемые агрегатными функциями:
COUNT(<Поле>) — количество непустых (то есть не имеющих значение NULL) записей в указанном поле;
MIN(<Поле>) — минимальное значение в указанном поле;
MAX(<Поле>) — максимальное значение в указанном поле;
SUM(<Поле>) — сумма значений в указанном поле;
AVG(<Поле>) — средняя величина значений в указанном поле.
Выведем общее количество заказов:
SELECT COUNT(`id_Orders`) FROM `Orders`;
Этот SQL-запрос выведет 5. Теперь найдем минимальную сумму заказа:
SELECT MIN(`Sum`) FROM `Orders`;
В результате мы получим 3100. А теперь выясним максимальную сумму заказа:
SELECT MAX(`Sum`) FROM `Orders`;
И получим ответ 7200.
Выбор записей из нескольких таблиц:
SQL-команда SELECT позволяет выбирать записи сразу из нескольких таблиц одновременно. Для этого нужно перечислить все таблицы через запятую в конструкции FROM. В конструкции WHERE через запятую указываются пары полей, являющиеся связуемыми для таблиц. Причем в условии и перечислении полей вначале указывается имя таблицы, а затем через точку имя поля.
Для примера выведем таблицу Customers, но вместо индекса города укажем его название:
SELECT `Customers`.`Name`, `Customers`.`Address`, `City`.`City`,
`Customers`.`Phone` FROM `Customers`, `City`
WHERE `Customers`.`id_City`=`City`.`id_City`;
Связывать таблицы можно также с помощью оператора JOIN. Для примера выведем таблицу Customers, но вместо индекса города укажем его название:
SELECT `Customers`.`Name`, `Customers`.`Address`, `City`.`City`,
`Customers`.`Phone`
FROM `Customers` JOIN `City`
WHERE `Customers`.`id_City`=`City`.`id_City`;
Вместо инструкции WHERE можно использовать инструкцию ON. Например:
SELECT `Customers`.`Name`, `Customers`.`Address`, `City`.`City`,
`Customers`.`Phone`
FROM `Customers` JOIN `City`
ON `Customers`.`id_City`=`City`.`id_City`;
Если необходимо указать дополнительное условие выборки, то это делают в инструкции WHERE.
Для примера выведем информацию о клиентах с фамилией Иванов:
SELECT `Customers`.`Name`, `Customers`.`Address`, `City`.`City`,
`Customers`.`Phone`
FROM `Customers` JOIN `City`
ON `Customers`.`id_City`=`City`.`id_City`
WHERE `Customers`.`Name` LIKE 'Иванов %';
Оператор JOIN можно использовать также для объединения нескольких таблиц. В качестве примера выведем нашу первоначальную таблицу:
SELECT `c`.`Name`, `c`.`Address`, `ct`.`City`, `c`.`Phone`, `t`.`Tovar`,
`o`.`Date_orders`, `t`.`Price`, `oi`.`Col`
FROM `Customers` AS `c` JOIN `City` AS `ct` JOIN `Tovar` AS `t`
JOIN `Orders` AS `o` JOIN `Orders_Items` AS `oi`
ON `c`.`id_City`=`ct`.`id_City` AND
`oi`.`id_Orders`=`o`.`id_Orders` AND
`t`.`id_Tovar`=`oi`.`id_Tovar` AND
`o`.`id_Customer`=`c`.`id_Customer`
ORDER BY `o`.`id_Orders`;
ПРИМЕЧАНИЕ
Оператор JOIN имеет два синонима: CROSS JOIN и INNER JOIN.
Добавим нового клиента в таблицу Customers и выведем общее количество заказов каждого клиента:
INSERT INTO `Customers` VALUES
(NULL, 'Сидоров Олег Николаевич', 'Передовиков, 12', 1, '529-15-63');
SELECT `Customers`.`Name`, COUNT(`Orders`.`id_Orders`)
FROM `Customers` JOIN `Orders` USING (`id_Customer`)
GROUP BY `Orders`.`id_Customer`;
Получим следующий результат:
Иванов Иван Иванович 4
Петров Сергей Николаевич 1
Как видно из примера, этот запрос вывел только клиентов, сделавших хотя бы один заказ. Так как господин Сидоров не сделал ни одного заказа, то в таблице Orders отсутствует запись о нем. Чтобы получить всех клиентов, необходимо использовать левостороннее объединение с помощью инструкции LEFT JOIN. Объединение выглядит следующим образом:
<Таблица1> LEFT [OUTER] JOIN <Таблица2> ON
<Таблица1>.<Поле1>=<Таблица2>.<Поле2>
Если названия полей в таблицах одинаковые, то вместо инструкции ON можно использовать инструкцию USING:
<Таблица1> LEFT [OUTER] JOIN <Таблица2> USING (<Поле>)
При левостороннем объединении возвращаются записи, соответствующие условию <Таблица1>.<Поле1>=<Таблица2>.<Поле2>, а также записи из таблицы <Таблица1>, которым нет соответствия в таблице <Таблица2> (при этом поля из таблицы <Таблица2> будут иметь значение NULL).
Выведем общее количество заказов каждого клиента с помощью левостороннего объединения:
SELECT `Customers`.`Name`, COUNT(`Orders`.`id_Orders`) AS `total`
FROM `Customers` LEFT JOIN `Orders` USING (`id_Customer`)
GROUP BY `Orders`.`id_Customer`
ORDER BY `total` DESC;
Получим следующий результат:
Иванов Иван Иванович 4
Петров Сергей Николаевич 1
Сидоров Олег Николаевич 0
Кроме левостороннего объединения можно использовать правостороннее объединение с помощью инструкции RIGHT JOIN. Объединение выглядит следующим образом:
<Таблица1> RIGHT [OUTER] JOIN <Таблица2> ON
<Таблица1>.<Поле1>=<Таблица2>.<Поле2>
Если названия полей в таблицах одинаковые, то вместо инструкции ON можно использовать инструкцию USING:
<Таблица1> RIGHT [OUTER] JOIN <Таблица2> USING (<Поле>)
При правостороннем объединении возвращаются записи, соответствующие условию <Таблица1>.<Поле1>=<Таблица2>.<Поле2>, а также записи из таблицы <Таблица2>, которым нет соответствия в таблице <Таблица1> (при этом поля из таблицы <Таблица1> будут иметь значение NULL).
Выведем общее количество заказов каждого клиента с помощью правостороннего объединения:
SELECT `Customers`.`Name`, COUNT(`Orders`.`id_Orders`) AS `total`
FROM `Orders` RIGHT JOIN `Customers` USING (`id_Customer`)
GROUP BY `Orders`.`id_Customer`
ORDER BY `total` DESC;
В этом примере мы просто поменяли местами таблицы в инструкции FROM:
FROM `Orders` RIGHT JOIN `Customers`
Удаление таблицы и базы данных:
Удалить таблицу позволяет SQL-команда:
DROP TABLE <Имя таблицы>;
Удалить всю базу данных позволяет SQL-команда:
DROP DATABASE <Имя базы данных>;
Скриншот ERR Diagram
Скриншот MySQL Workbench Administrator
Эта часть программы предназначена для администрирования базы данных.
Здесь мы можем найти:
различную информацию о сервере и клиенте;
статус сервиса сервера БД, управление его состоянием, а также настройку сервиса;
различные параметры сервера БД;
всю информацию о пользователях, их привилегиях и возможность всё это править;
активные соединения с БД и активных пользователей;
потребление ресурсов компьютера клиентом, а также значения параметров сервера и клиента;
протоколы работы сервера;
возможность создания резервных копий и их выгрузки.
