Загрузка данных
Окей, давай спокойно и по шагам. Ничего страшного, что потерялся — сейчас разложу всё по полочкам.
---
Общий план
Ты сейчас в DBeaver, у тебя есть структура таблиц (CREATE TABLE). Чтобы выполнить задания из практики, нужно:
1. Создать таблицы
2. Заполнить их данными (Категории, Товары, Покупки, Детализация)
3. Выполнить 5 запросов из практики
Это три отдельных этапа. Не смешивай их.
---
Этап 1. Создать таблицы
В DBeaver:
1. Открой SQL Editor (правой кнопкой по подключению → SQL Editor → New SQL script).
2. Вставь весь этот код:
```sql
CREATE TABLE Categories (
CategoryID INTEGER PRIMARY KEY,
CategoryName TEXT,
Description TEXT
);
CREATE TABLE Goods (
GoodsID INTEGER PRIMARY KEY,
GoodsName TEXT,
DetailedTracking INTEGER
);
CREATE TABLE Spendings (
SpendingID INTEGER PRIMARY KEY,
CategoryID INTEGER,
ShopName TEXT,
TotalSum REAL,
SpendingDate TEXT
);
CREATE TABLE Goods_Spendings (
GoodsSpendingID INTEGER PRIMARY KEY,
SpendingID INTEGER,
GoodsID INTEGER,
Quantity REAL,
Amount REAL
);
```
3. Нажми Alt+X (выполнить весь скрипт).
4. Слева в дереве должны появиться 4 таблицы.
Если пишет «table already exists» — значит таблицы уже есть, этот шаг можно пропустить.
---
Этап 2. Заполнить таблицы данными
Открой новый SQL Editor и вставь это:
```sql
-- Категории
INSERT INTO Categories VALUES
(1,'Семья','Семейные дела'),
(2,'Дом','Дела по дому'),
(3,'Своё дело','Работа и бизнес'),
(4,'Отдых','Развлечения');
-- Товары
INSERT INTO Goods VALUES
(1, 'Пиво', 1),
(2, 'Вино', 1),
(3, 'Кофе', 1),
(4, 'Хлеб', 0),
(5, 'Молоко', 0),
(6, 'Сыр', 0),
(7, 'Шоколад', 1);
-- Покупки
INSERT INTO Spendings VALUES
(1, 1, 'Пятёрочка', 1500, '2015-05-20'),
(2, 3, 'Лента', 800, '2015-06-03'),
(3, 2, 'Ozon', 2500, '2015-06-10'),
(4, 4, 'Магнит', 1200, '2015-06-15');
-- Детализация покупок (какой товар в какой покупке)
INSERT INTO Goods_Spendings VALUES
(1, 1, 1, 6, 600), -- Пиво в покупке 1
(2, 1, 4, 2, 100), -- Хлеб в покупке 1
(3, 2, 3, 1, 700), -- Кофе в покупке 2
(4, 3, 2, 2, 1600), -- Вино в покупке 3
(5, 4, 7, 3, 900); -- Шоколад в покупке 4
```
Выполни Alt+X. Проверь:
```sql
SELECT * FROM Goods;
SELECT * FROM Spendings;
SELECT * FROM Goods_Spendings;
```
Должны увидеть строки. Если увидел — молодец, переходим к этапу 3.
---
Этап 3. Выполнить 5 заданий практики
Для каждого задания — новый SQL Editor (или просто выделяй нужный запрос мышкой и жми Ctrl+Enter, чтобы выполнить только его).
Задание 1
```sql
SELECT g.GoodsName, gs.Amount
FROM Goods g
JOIN Goods_Spendings gs ON g.GoodsID = gs.GoodsID;
```
Задание 2
```sql
SELECT c.CategoryName, s.ShopName, s.TotalSum
FROM Categories c
JOIN Spendings s ON c.CategoryID = s.CategoryID
WHERE c.CategoryID = 4;
```
Задание 3
```sql
SELECT g.GoodsName, gs.Quantity
FROM Goods g
JOIN Goods_Spendings gs ON g.GoodsID = gs.GoodsID
WHERE g.GoodsName = 'Пиво';
```
Задание 4
```sql
SELECT g.GoodsName, gs.Quantity, s.SpendingDate
FROM Goods g
JOIN Goods_Spendings gs ON g.GoodsID = gs.GoodsID
JOIN Spendings s ON s.SpendingID = gs.SpendingID
WHERE g.GoodsName = 'Пиво';
```
Задание 5
```sql
SELECT c.CategoryName, g.GoodsName, s.ShopName, s.SpendingDate
FROM Categories c
JOIN Spendings s ON c.CategoryID = s.CategoryID
JOIN Goods_Spendings gs ON s.SpendingID = gs.SpendingID
JOIN Goods g ON g.GoodsID = gs.GoodsID;
```
---
Что должно получиться
Задание Что увидишь
1 Товары и их суммы
2 Категория №4 (Отдых), магазин, сумма
3 Пиво и количество
4 Пиво, количество, дата
5 Категория, товар, магазин, дата
---
Если что-то пошло не так
· «no such table» → таблица не создана, вернись к Этапу 1.
· «no such column» → опечатка в имени столбца, сверься со структурой.
· Пустой результат → данные не вставились (Этап 2) или в условии нет подходящих строк.
Скажи, на каком именно шаге застрял — разберём точечно.