Базы данных MySQL/MariyDB и проверка выполнения SQL-запросов

Задачи:

  • скачать программный комплекс Openserver;
  • создать базу данных поступления товаров на склад;
  • проверить выполнение SQL-запросов.

Ход работы

Предметную областью системы является учет поступления товаров на склад.

Создадим базу данных «SKLAD» для учета поступления товаров на склад. База данных состоит из трех сущностей:

  • Товар («Tovar»);
  • Поставщик («Postav»);
  • Приход («Prihod»).

Физическое описание сущностей базы данных приведено в таблице:

НазваниеКлючОписаниеТипДлинаЗначение по умолчанию
idtovarPKномер товараint11NOT NULL AUTO_INCREMENT
name название товараvarchar50NOT NULL
edizm единица измеренияvarchar10NULL
zena цена за единицу измеренияint5NULL
Атрибуты сущности «tovar»
НазваниеКлючОписаниеТипДлинаЗначение по умолчанию
idpostavPKномер поставщикаint11NOT NULL  AUTO_INCREMENT
name наименование поставщикаvarchar50NOT NULL
gorod город поставщикаvarchar20NULL
ulica улица поставщикаvarchar20NULL
telef телефон поставщикаvarchar15NULL
Атрибуты сущностей «postav»
НазваниеКлючОписаниеТипДлинаЗначение по умолчанию
idprihodPKномер приходаint11NOT NULL AUTO_INCREMENT
idtovarFKномер товараint11NOT NULL
idpostavFKномер поставщикаint11NOT NULL
datprih дата приходаdate NOT NULL
kolvo количествоint4NOT NULL
Атрибуты сущности «prihod»

Для сущностей базы данных «Товары» и «Поставщики» первичный ключами являются поля idtovar и idpostav, а для сущности «Приход товаров» — idprihod.

Сконфигурируем и запустим приложение OpenServer для работы с сервером баз данных MySQL или MariyDB. Вначале выберем рабочую версию сервера баз данных:

Внешний вид конфигурации OpenServer

Для реализации сущностей воспользуемся стандартной утилитой mysql, входящей в стандартный комплект сервера баз данных. При запуске утилиты необходимо указать следующие параметры:

  • -h сетевое имя сервера, для локальной машины localhost, либо IP адрес 127.0.0.1;
  • -u пользователь базы данных, администратор базы данных root;
  • -p пароль пользователя базы данных.

Запустим консоль Openserver

Консоль OpenServer

Запустим утилиту со следующими параметрами командной строки:

mysql.exe -h localhost -u root

Введем пароль доступа к серверу баз данных, пользователь root. Пароль у пользователя root не задан.

В результате в окне приложения mysql.exe появиться сообщение:

Метка «mysql>» обозначает, что программа mysql готова к вводу команд.

Для получения сведений о существующих базах данных на сервере необходимо выполнить команду show databases:

mysql> show databases;
+------------+
| Database   |
+------------+
| mysql      |
| test          |
+------------+
2 rows in set (0.00 sec)

Для реализации собственной базы данных необходимо выполнить запрос на создание базы данных:

create database sklad;

Обратимся к базе данных с помощью команды USE:

use sklad

, в результате появится сообщение

Database changed

Для получения сведений о существующих таблицах баз данных sklad необходимо выполнить команду show tables:

mysql> show tables;
+----------------+
| Tables_in_sklad |
+----------------+
0 row in set (0.00 sec)

Для создания таблиц базы данных, например tovar, postav, prihod воспользуемся оператором SQL-языка create table:

create table tovar (
idtovar int(11) not null auto_increment,
name varchar(50) default null,
edizm varchar(10) default null,
zena int(4) default null,
primary key  (idtovar)
)
collate='utf8_general_ci'
engine=innodb;

create table postav (
idpostav int(11) not null auto_increment,
name varchar(50) default null,
gorod varchar(20) default null,
ulica varchar(20) default null,
telef varchar(15) default null,
primary key  (idpostav)
)
collate='utf8_general_ci'
engine=innodb;

create table prihod (
idprihod int(11) not null auto_increment,
idtovar int(11) default null,
datprih date default null,
kolvo int(4) default null,
idpostav int(11) default null,
primary key (idprihod),
constraint `fk_prihod_postav` foreign key (`idpostav`) references `postav` (`idpostav`),
  constraint `fk_prihod_tovar` foreign key (`idtovar`) references `tovar` (`idtovar`)
)
collate='utf8_general_ci'
engine=innodb;

Для добавления одиночных записей используется оператор INSERT необходимо задать шаблон, состоящий из названий полей заполняемой таблицы.

insert into tovar (name,edizm,zena) values (‘утюг evgo’,’шт’, 45);

Информация извлекается из таблиц при помощи оператора SELECT. В классическом варианте вызова SELECT из таблицы извлекаются сразу все данные:

select * from tovar;

Ниже в таблице приведены тестовые SQL-запросы, которые будут использованы в клиентском приложении.

Примеры реализации SQL-запросов в MySQL

Формулировка запросаSQL-запрос
1найти товары дороже 10 рублей.select name as ‘наименование ‘ from tovar where zena>10
2найти поставщиков в москве.select name as ‘поставщик ‘,ulica as ‘улица‘, telef as ‘телефон‘ from postav where gorod= москва
3найти товары, поступившие на склад 01.04.2003.select tovar.name as ‘наименование’, kolvo as ‘количество’, postav.name as ‘поставщик’, telef as ‘телефон’ from postav, prihod, tovar where tovar.idtovar=prihod.idtovar and prihod.idpostav=postav.idpostav and datprih= ‘2003-04-01’
4найти адреса поставщиков производящие товар «молоко сгущенное”.select distinct postav.name as ‘поставщик’, ulica as ‘улица’, telef as ‘телефон’ from postav, tovar, prihod where tovar.idtovar=prihod.idtovar and prihod.idpostav=postav.idpostav and tovar.name= ‘молоко сгущенное’
5найти сумму стоимости товаров поступивших на склад.select name as ‘наименование’, sum(kolvo*zena) as ‘сумма‘ from tovar, prihod where tovar.idtovar=prihod.idtovar group by name

Набрав в командной строке утилиты mysql команду describe сервер предоставляет информацию о столбцах таблицы.

Набрав в командной строке утилиты mysql команду quit происходит разрыв соединения с сервером:

quit

, в результате появится сообщение выхода

bye

Leave a Comment