Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Otchet_po_SRS.doc
Скачиваний:
2
Добавлен:
01.05.2025
Размер:
2 Мб
Скачать
☆

Выбор записей:

Выполнить запрос позволяет 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

Эта часть программы предназначена для администрирования базы данных.

Здесь мы можем найти:

  • различную информацию о сервере и клиенте;

  • статус сервиса сервера БД, управление его состоянием, а также настройку сервиса;

  • различные параметры сервера БД;

  • всю информацию о пользователях, их привилегиях и возможность всё это править;

  • активные соединения с БД и активных пользователей;

  • потребление ресурсов компьютера клиентом, а также значения параметров сервера и клиента;

  • протоколы работы сервера;

  • возможность создания резервных копий и их выгрузки.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]