Задачи:
- скачать программный комплекс Openserver;
- создать базу данных поступления товаров на склад;
- проверить выполнение SQL-запросов.
Ход работы
Предметную областью системы является учет поступления товаров на склад.
Создадим базу данных «SKLAD» для учета поступления товаров на склад. База данных состоит из трех сущностей:
- Товар («Tovar»);
- Поставщик («Postav»);
- Приход («Prihod»).
Физическое описание сущностей базы данных приведено в таблице:
Название | Ключ | Описание | Тип | Длина | Значение по умолчанию |
idtovar | PK | номер товара | int | 11 | NOT NULL AUTO_INCREMENT |
name | название товара | varchar | 50 | NOT NULL | |
edizm | единица измерения | varchar | 10 | NULL | |
zena | цена за единицу измерения | int | 5 | NULL |
Название | Ключ | Описание | Тип | Длина | Значение по умолчанию |
idpostav | PK | номер поставщика | int | 11 | NOT NULL AUTO_INCREMENT |
name | наименование поставщика | varchar | 50 | NOT NULL | |
gorod | город поставщика | varchar | 20 | NULL | |
ulica | улица поставщика | varchar | 20 | NULL | |
telef | телефон поставщика | varchar | 15 | NULL |
Название | Ключ | Описание | Тип | Длина | Значение по умолчанию |
idprihod | PK | номер прихода | int | 11 | NOT NULL AUTO_INCREMENT |
idtovar | FK | номер товара | int | 11 | NOT NULL |
idpostav | FK | номер поставщика | int | 11 | NOT NULL |
datprih | дата прихода | date | NOT NULL | ||
kolvo | количество | int | 4 | NOT NULL |
Для сущностей базы данных «Товары» и «Поставщики» первичный ключами являются поля idtovar и idpostav, а для сущности «Приход товаров» — idprihod.
Сконфигурируем и запустим приложение OpenServer для работы с сервером баз данных MySQL или MariyDB. Вначале выберем рабочую версию сервера баз данных:
Для реализации сущностей воспользуемся стандартной утилитой mysql, входящей в стандартный комплект сервера баз данных. При запуске утилиты необходимо указать следующие параметры:
- -h сетевое имя сервера, для локальной машины localhost, либо IP адрес 127.0.0.1;
- -u пользователь базы данных, администратор базы данных root;
- -p пароль пользователя базы данных.
Запустим консоль 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