Базы данных MySQL и проверка выполнения 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. Формирование ссылочной целостности реализовано на уровне клиентского приложения при формирование SQL-запросов.

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

-h сетевое имя сервера

-u пользователь БД

-p пароль.

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

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

Из консоли запустим утилиту со следующими параметрами командной строки: >mysql.exeh localhostu 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

Поделитесь своим мнением или задайте вопрос