Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторные работы - Управление данными.doc
Скачиваний:
49
Добавлен:
09.04.2015
Размер:
144.9 Кб
Скачать

Insert into salespeople

(snum, sname, city, comm) VALUES

(default, "Михаил Обжоров", "Нижний Новгород", "0.10");

ROLLBACK;

/*

9. Проверьте отсутствие вставки данных.

*/

-- ok

/*

10. Замените ROLLBACK на COMMIT. Выполните запрос снова.

*/

START TRANSACTION;

Insert into salespeople

(snum, sname, city, comm) VALUES

(default, "Михаил Обжоров", "Нижний Новгород", "0.10");

COMMIT;

/*

11. Проверьте успешную вставку данных.

*/

-- ok

ЛР № 5

CREATE DATABASE lab_base5;

/*

Вариант 3 — создать базу данных «Магазин бытовой техники»:

• Бренды, категории товаров и товары — каждый товар имеет бренд и относится к какой-либо категории, имеет количество на складе и цену;

• Продавцы торгового зала — от их имени оформляются заказы;

• Заказы — информация о заказах (дата, сумма и т. п.).

======================== Создание таблиц ========================

*/

DROP TABLE IF EXISTS salespeople, products, orders, categories;

CREATE TABLE salespeople

(sid int not null auto_increment,

sname text not null,

comm decimal(5,5),

primary key (sid))

engine = InnoDB Default charset = utf8;

Insert into salespeople

(sid, sname, comm) VALUES

(1, "Иван Жадов", "0.12"),

(2, "Федор Захапов", "0.15"),

(3, "Максим Хитров", "0.14"),

(4, "Алиса Тырь", "0.12");

CREATE TABLE categories

(pcategory_id int not null auto_increment,

pcname text not null,

primary key (pcategory_id))

engine = InnoDB Default charset = utf8;

INSERT INTO categories

(pcategory_id, pcname) VALUES

(1, "Чайники"),

(2, "Микроволновки"),

(3, "Телевизоры");

CREATE TABLE products

(pid int not null auto_increment,

pbrand text,

pcategory_id int,

pname text,

pquantity int,

pcost decimal (15,2),

primary key (pid),

foreign key(pcategory_id) references categories(pcategory_id)

ON UPDATE CASCADE)

engine = InnoDB Default charset = utf8;

INSERT INTO products

(pid, pbrand, pcategory_id, pname, pquantity, pcost) VALUES

(1, "Samsung", 1, "Выхлоп", 3, "650.5"),

(default, "Samsung", 1, "Фонтан", 5, "790.0"),

(default, "Black mesa", 2, "Black mesa-1", 7, "2200.0"),

(default, "Black mesa", 3, "Излучатель-3", 9, "9000.0");

CREATE TABLE orders

(oid int not null auto_increment,

odate DATE,

amt DECIMAL(15,2),

pid int,

sid int,

primary key(oid),

foreign key(pid) references products(pid)

ON DELETE CASCADE ON UPDATE CASCADE,

foreign key(sid) references salespeople(sid)

ON DELETE CASCADE ON UPDATE CASCADE)

engine = InnoDB Default charset = utf8;

INSERT INTO orders

(oid, odate, amt, pid, sid) VALUES

(default, "2009-09-1", "650.5", 1, 1),

(default, "2009-09-10", "790.0", 2, 2),

(default, "2009-10-1", "2200.0", 3, 3),

(default, "2009-11-15", "9000.0", 4, 1),

(default, "2009-12-4", "650.5", 1, 2);

/*

================ Проверка целостности (на всякий случай) ===============

*/

UPDATE salespeople set sid = 12 where sid = 2;

UPDATE products set pid = 22 where pid = 2;

UPDATE orders set oid = 32 where oid = 2;

UPDATE categories set pcategory_id = 42 where pcategory_id = 2;

DELETE FROM salespeople where sid = 1;

DELETE FROM products where pid = 1;

DELETE FROM orders where oid = 3;

/*

======================== Отчёты ========================

Отчёты:

• Список всех брендов с количеством товаров по категориям;

*/

SELECT pbrand, categories.pcname, sum(pquantity)

FROM products, categories

WHERE products.pcategory_id = categories.pcategory_id

GROUP by pid

/*

• Список всех продавцов с количеством сделанных каждым из них заказов;

*/

SELECT sname,

(select count(orders.sid)

from orders

where orders.sid = salespeople.sid)

FROM salespeople

GROUP BY sname;

/*

• Список заказов за сегодняшний день;

*/

SELECT amt, pbrand, pname from orders, products

WHERE odate = date (now()) and orders.pid = products.pid

Литература

1. Казанский Государственный Технологический Университет. Курс лекций «Управление данными» (http://ipm.kstu.ru/ud/).

2. Реализация языка SQL в СУБД MySQL (http://www.data-center.com.ua/support/docs/mysql/sql.shtml).