first commit
This commit is contained in:
Executable
+687
@@ -0,0 +1,687 @@
|
||||
USE PortDB;
|
||||
|
||||
INSERT INTO
|
||||
Purposes (Name, Description)
|
||||
VALUES (
|
||||
'Перевезення сировини',
|
||||
'Перевезення різноманітних сировинних матеріалів на виробництво.'
|
||||
),
|
||||
(
|
||||
'Експорт товарів',
|
||||
'Вивезення готової продукції за кордон для продажу.'
|
||||
),
|
||||
(
|
||||
'Імпорт сировини',
|
||||
'Закупівля різноманітних сировинних матеріалів з-за кордону.'
|
||||
),
|
||||
(
|
||||
'Транспортування контейнерів',
|
||||
'Перевезення контейнерів із товаром між портами.'
|
||||
),
|
||||
(
|
||||
'Доставка харчових продуктів',
|
||||
'Перевезення продуктів харчування великими суднами.'
|
||||
),
|
||||
(
|
||||
'Енергетичні цілі',
|
||||
'Транспортування палива та енергетичних ресурсів морем.'
|
||||
),
|
||||
(
|
||||
'Будівельні матеріали',
|
||||
'Перевезення будівельних матеріалів для проектів на узбережжі.'
|
||||
),
|
||||
(
|
||||
'Масова перевезення',
|
||||
'Транспортування великих обсягів товарів для оптових партнерів.'
|
||||
),
|
||||
(
|
||||
'Транзитне сполучення',
|
||||
'Проходження через території кількох країн у маршруті доставки.'
|
||||
);
|
||||
|
||||
INSERT INTO
|
||||
CargoTypes (Name)
|
||||
VALUES ('Контейнери'),
|
||||
('Рідини'),
|
||||
('Сипучі матеріали'),
|
||||
('Сталеві вироби'),
|
||||
('Деревинні матеріали'),
|
||||
('Харчові продукти'),
|
||||
('Технічне обладнання'),
|
||||
('Автомобілі'),
|
||||
('Товари загального вжитку'),
|
||||
('Спеціальні вантажі');
|
||||
|
||||
INSERT INTO
|
||||
ShipTypes (Name)
|
||||
VALUES ('Балкер'),
|
||||
('Контейнеровоз'),
|
||||
('Танкер'),
|
||||
('Ро-Ро (Roll-on/Roll-off)'),
|
||||
('Бункеровоз'),
|
||||
('Круїзний лайнер'),
|
||||
('Багатоцільовий корабель'),
|
||||
('Трал'),
|
||||
('Лінійний корабель'),
|
||||
(
|
||||
'Вантажівка-перевізник (Ferry)'
|
||||
),
|
||||
('Пасажирський корабель');
|
||||
|
||||
INSERT INTO
|
||||
Country (Name)
|
||||
VALUES ('Австралія'),
|
||||
('Австрія'),
|
||||
('Азербайджан'),
|
||||
('Албанія'),
|
||||
('Алжир'),
|
||||
('Ангола'),
|
||||
('Андорра'),
|
||||
('Аргентина'),
|
||||
('Арменія'),
|
||||
('Афганістан'),
|
||||
('Багамські Острови'),
|
||||
('Бангладеш'),
|
||||
('Барбадос'),
|
||||
('Бахрейн'),
|
||||
('Беліз'),
|
||||
('Бельгія'),
|
||||
('Бенін'),
|
||||
('Білорусь'),
|
||||
('Болгарія'),
|
||||
('Болівія'),
|
||||
('Боснія і Герцеговина'),
|
||||
('Ботсвана'),
|
||||
('Бразилія'),
|
||||
('Бруней'),
|
||||
('Буркіна-Фасо'),
|
||||
('Бурунді'),
|
||||
('Бутан'),
|
||||
('В\'єтнам'),
|
||||
('Габон'),
|
||||
('Гаїті'),
|
||||
('Гайана'),
|
||||
('Гамбія'),
|
||||
('Гана'),
|
||||
('Гваделупа'),
|
||||
('Гватемала'),
|
||||
('Гвінея'),
|
||||
('Гвінея - Бісау'),
|
||||
('Гондурас'),
|
||||
('Гренада'),
|
||||
('Греція'),
|
||||
('Грузія'),
|
||||
('Гренландія'),
|
||||
('Данія'),
|
||||
(
|
||||
'Демократична Республіка Конго'
|
||||
),
|
||||
('Джибуті'),
|
||||
('Домініка'),
|
||||
('Домініканська Республіка'),
|
||||
('Еквадор'),
|
||||
('Екваторіальна Гвінея'),
|
||||
('Еритрея'),
|
||||
('Есватіні'),
|
||||
('Естонія'),
|
||||
('Ефіопія'),
|
||||
('Єгипет'),
|
||||
('Ємен'),
|
||||
('Замбія'),
|
||||
('Західна Сахара'),
|
||||
('Зімбабве'),
|
||||
('Ізраїль'),
|
||||
('Індія'),
|
||||
('Індонезія'),
|
||||
('Ірак'),
|
||||
('Іран'),
|
||||
('Ірландія'),
|
||||
('Ісландія'),
|
||||
('Іспанія'),
|
||||
('Італія'),
|
||||
('Йорданія'),
|
||||
('Казахстан'),
|
||||
('Кайманові Острови'),
|
||||
('Камбоджа'),
|
||||
('Камерун'),
|
||||
('Канада'),
|
||||
('Катар'),
|
||||
('Кенія'),
|
||||
('Киргизстан'),
|
||||
('Кіпр'),
|
||||
('Кірібаті'),
|
||||
('Китай'),
|
||||
('Колумбія'),
|
||||
('Коморські Острови'),
|
||||
('Конго'),
|
||||
('Північна Корея'),
|
||||
('Південна Корея'),
|
||||
('Косово'),
|
||||
('Коста - Рика'),
|
||||
('Куба'),
|
||||
('Кувейт'),
|
||||
('Лаос'),
|
||||
('Латвія'),
|
||||
('Лесото'),
|
||||
('Литва'),
|
||||
('Ліберія'),
|
||||
('Ліван'),
|
||||
('Лівія'),
|
||||
('Ліхтенштейн'),
|
||||
('Люксембург'),
|
||||
('Маврикій'),
|
||||
('Мавританія'),
|
||||
('Мадагаскар'),
|
||||
('Македонія'),
|
||||
('Малаві'),
|
||||
('Малайзія'),
|
||||
('Малі'),
|
||||
('Мальдіви'),
|
||||
('Мальта'),
|
||||
('Марокко'),
|
||||
('Мартиніка'),
|
||||
('Маршаллові Острови'),
|
||||
('Мексика'),
|
||||
('Мозамбік'),
|
||||
('Молдова'),
|
||||
('Монако'),
|
||||
('Монголія'),
|
||||
('М\'янма (Бірма)'),
|
||||
('Намібія'),
|
||||
('Науру'),
|
||||
('Непал'),
|
||||
('Нігер'),
|
||||
('Нігерія'),
|
||||
('Нідерланди'),
|
||||
('Нікарагуа'),
|
||||
('Німеччина'),
|
||||
('Нова Зеландія'),
|
||||
('Норвегія'),
|
||||
('ОАЕ'),
|
||||
('Оман'),
|
||||
('Пакистан'),
|
||||
('Палау'),
|
||||
('Палестина'),
|
||||
('Панама');
|
||||
|
||||
INSERT INTO
|
||||
Positions (Name)
|
||||
VALUES ('Директор'),
|
||||
('Менеджер з логістики'),
|
||||
('Капітан корабля'),
|
||||
('Інженер-механік'),
|
||||
('Оператор порту'),
|
||||
('Фінансовий аналітик'),
|
||||
('Керівник вантажоперевезень'),
|
||||
(
|
||||
'Технік з обслуговування суден'
|
||||
),
|
||||
('Митний брокер'),
|
||||
('Логістичний асистент');
|
||||
|
||||
INSERT INTO
|
||||
ContactTypes (Name)
|
||||
VALUES ('Телефон'),
|
||||
('Електронна пошта'),
|
||||
('Факс'),
|
||||
('Поштова адреса'),
|
||||
('Skype'),
|
||||
('WhatsApp'),
|
||||
('Веб-сайт'),
|
||||
('Телеграм');
|
||||
|
||||
INSERT INTO
|
||||
ServiceTypes (Name, Description)
|
||||
VALUES (
|
||||
'Технічний огляд',
|
||||
'Комплексне технічне обстеження та оцінка стану судна.'
|
||||
),
|
||||
(
|
||||
'Ремонт двигуна',
|
||||
'Виконання ремонтних робіт та технічного обслуговування суднового двигуна.'
|
||||
),
|
||||
(
|
||||
'Мальовничі роботи',
|
||||
'Фарбування та зовнішній оздоблювальний ремонт корпусу судна.'
|
||||
),
|
||||
(
|
||||
'Технічне обслуговування електроніки',
|
||||
'Проведення робіт з налаштування та ремонту електронних систем на судні.'
|
||||
),
|
||||
(
|
||||
'Заміна обладнання',
|
||||
'Встановлення нового суднового обладнання та видалення застарілого.'
|
||||
),
|
||||
(
|
||||
'Очищення та змазування',
|
||||
'Профілактичне очищення та змащення механізмів та обладнання судна.'
|
||||
);
|
||||
|
||||
INSERT INTO
|
||||
Voyages (CountryFromId, CountryToId)
|
||||
SELECT (
|
||||
SELECT Id
|
||||
FROM Country
|
||||
ORDER BY RAND()
|
||||
LIMIT 1
|
||||
) as CountryFromId, (
|
||||
SELECT Id
|
||||
FROM Country
|
||||
ORDER BY RAND()
|
||||
LIMIT 1
|
||||
) as CountryToId
|
||||
FROM (
|
||||
SELECT 1
|
||||
UNION
|
||||
SELECT 2
|
||||
UNION
|
||||
SELECT 3
|
||||
UNION
|
||||
SELECT 4
|
||||
UNION
|
||||
SELECT 5
|
||||
) as Numbers;
|
||||
|
||||
INSERT INTO
|
||||
Persons (
|
||||
Passport,
|
||||
FirstName,
|
||||
LastName,
|
||||
PositionId
|
||||
)
|
||||
VALUES (
|
||||
'AA123456',
|
||||
'Іван',
|
||||
'Петров',
|
||||
1
|
||||
),
|
||||
(
|
||||
'BB789012',
|
||||
'Марія',
|
||||
'Іванова',
|
||||
2
|
||||
),
|
||||
(
|
||||
'CC345678',
|
||||
'Олег',
|
||||
'Сидоров',
|
||||
3
|
||||
),
|
||||
(
|
||||
'DD901234',
|
||||
'Наталія',
|
||||
'Коваленко',
|
||||
4
|
||||
),
|
||||
(
|
||||
'EE567890',
|
||||
'Андрій',
|
||||
'Смирнов',
|
||||
5
|
||||
),
|
||||
(
|
||||
'FF123890',
|
||||
'Тетяна',
|
||||
'Біліченко',
|
||||
6
|
||||
),
|
||||
(
|
||||
'GG456789',
|
||||
'Дмитро',
|
||||
'Мельник',
|
||||
7
|
||||
),
|
||||
(
|
||||
'HH678901',
|
||||
'Катерина',
|
||||
'Соколова',
|
||||
8
|
||||
),
|
||||
(
|
||||
'II234567',
|
||||
'Валентин',
|
||||
'Жуков',
|
||||
9
|
||||
),
|
||||
(
|
||||
'JJ890123',
|
||||
'Ольга',
|
||||
'Морозова',
|
||||
10
|
||||
),
|
||||
(
|
||||
'KK345678',
|
||||
'Анна',
|
||||
'Кравченко',
|
||||
5
|
||||
),
|
||||
(
|
||||
'LL901234',
|
||||
'Олександр',
|
||||
'Лисенко',
|
||||
8
|
||||
),
|
||||
(
|
||||
'MM567890',
|
||||
'Євгенія',
|
||||
'Денисенко',
|
||||
2
|
||||
);
|
||||
|
||||
INSERT INTO
|
||||
ContactInfo (
|
||||
Content,
|
||||
PersonId,
|
||||
ContactTypeId
|
||||
)
|
||||
VALUES ('+123456789', 1, 1),
|
||||
('email@example.com', 2, 2),
|
||||
('123 Main Street', 3, 3),
|
||||
('SkypeID123', 4, 4),
|
||||
('WhatsAppNumber', 5, 5),
|
||||
(
|
||||
'http://www.example.com',
|
||||
6,
|
||||
6
|
||||
),
|
||||
('TelegramUsername', 7, 7),
|
||||
('FaxNumber', 8, 8),
|
||||
('info@example.com', 9, 1),
|
||||
('555-1234', 10, 2),
|
||||
('456 Secondary Street', 11, 3),
|
||||
('SkypeID456', 12, 4),
|
||||
('TelegramUser567', 13, 7),
|
||||
('ViberNumber', 1, 5),
|
||||
(
|
||||
'http://www.example2.com',
|
||||
2,
|
||||
6
|
||||
),
|
||||
('FaxNumber2', 3, 8);
|
||||
|
||||
INSERT INTO
|
||||
Users (Password, PersonId)
|
||||
VALUES ('strongpassword1', 1),
|
||||
('securepass123', 2),
|
||||
('myp@ssw0rd', 3),
|
||||
('pass4you', 4),
|
||||
('secret123', 5);
|
||||
|
||||
INSERT INTO
|
||||
Docks (Name, MaxLength, MaxWidth)
|
||||
VALUES ('Причал 1', 100, 20),
|
||||
('Причал 2', 120, 25),
|
||||
('Причал 3', 150, 30),
|
||||
('Причал 4', 90, 15),
|
||||
('Причал 5', 110, 18),
|
||||
('Причал 6', 130, 22),
|
||||
('Причал 7', 140, 28),
|
||||
('Причал 8', 160, 35),
|
||||
('Причал 9', 105, 17),
|
||||
('Причал 10', 125, 23),
|
||||
('Причал 11', 115, 19),
|
||||
('Причал 12', 95, 14),
|
||||
('Причал 13', 145, 27),
|
||||
('Причал 14', 155, 33),
|
||||
('Причал 15', 165, 38);
|
||||
|
||||
INSERT INTO
|
||||
Ships (
|
||||
Name,
|
||||
Length,
|
||||
Width,
|
||||
Capacity,
|
||||
ShipTypeId,
|
||||
VoyageId,
|
||||
DockId
|
||||
)
|
||||
VALUES (
|
||||
'Корабель 1',
|
||||
50.5,
|
||||
10.5,
|
||||
500,
|
||||
1,
|
||||
1,
|
||||
1
|
||||
),
|
||||
(
|
||||
'Корабель 2',
|
||||
60.2,
|
||||
12.8,
|
||||
700,
|
||||
2,
|
||||
2,
|
||||
2
|
||||
),
|
||||
(
|
||||
'Корабель 3',
|
||||
55.0,
|
||||
11.0,
|
||||
600,
|
||||
3,
|
||||
3,
|
||||
3
|
||||
),
|
||||
(
|
||||
'Корабель 4',
|
||||
45.8,
|
||||
9.5,
|
||||
450,
|
||||
4,
|
||||
4,
|
||||
4
|
||||
),
|
||||
(
|
||||
'Корабель 10',
|
||||
59.9,
|
||||
12.0,
|
||||
690,
|
||||
10,
|
||||
10,
|
||||
10
|
||||
),
|
||||
(
|
||||
'Корабель 11',
|
||||
57.2,
|
||||
11.2,
|
||||
590,
|
||||
11,
|
||||
11,
|
||||
11
|
||||
),
|
||||
(
|
||||
'Корабель 12',
|
||||
63.8,
|
||||
13.8,
|
||||
770,
|
||||
5,
|
||||
12,
|
||||
12
|
||||
),
|
||||
(
|
||||
'Корабель 13',
|
||||
52.4,
|
||||
10.8,
|
||||
540,
|
||||
3,
|
||||
9,
|
||||
13
|
||||
),
|
||||
(
|
||||
'Корабель 14',
|
||||
49.0,
|
||||
9.8,
|
||||
480,
|
||||
6,
|
||||
8,
|
||||
14
|
||||
),
|
||||
(
|
||||
'Корабель 15',
|
||||
66.5,
|
||||
14.0,
|
||||
820,
|
||||
8,
|
||||
5,
|
||||
15
|
||||
);
|
||||
|
||||
INSERT INTO
|
||||
Employees (PersonId)
|
||||
SELECT id
|
||||
FROM Persons
|
||||
ORDER BY RAND()
|
||||
LIMIT 5;
|
||||
|
||||
INSERT INTO
|
||||
Services (
|
||||
Date,
|
||||
Done,
|
||||
ShipId,
|
||||
ServiceTypeId
|
||||
)
|
||||
SELECT
|
||||
NOW() - INTERVAL FLOOR(RAND() * 365) DAY AS Date,
|
||||
ROUND(RAND()) AS Done,
|
||||
(
|
||||
SELECT id
|
||||
FROM Ships
|
||||
ORDER BY RAND()
|
||||
LIMIT 1
|
||||
) AS ShipId,
|
||||
ROUND(RAND() * 6) + 1 AS ServiceTypeId
|
||||
FROM (
|
||||
SELECT id
|
||||
FROM `ShipTypes`
|
||||
LIMIT 5
|
||||
) AS t;
|
||||
|
||||
INSERT INTO
|
||||
ServiceEmployee (EmployeeId, ServiceId)
|
||||
SELECT ROUND(RAND() * 5) + 1 AS EmployeeId, ROUND(RAND() * 5) + 1 AS ServiceId
|
||||
FROM (
|
||||
SELECT id
|
||||
FROM Services
|
||||
LIMIT 5
|
||||
) AS t;
|
||||
|
||||
INSERT INTO
|
||||
DockEmplyee (DockId, EmployeeId)
|
||||
VALUES (1, 1),
|
||||
(2, 2),
|
||||
(3, 3),
|
||||
(4, 1),
|
||||
(5, 5);
|
||||
|
||||
INSERT INTO
|
||||
CrewPersons (PersonId, ShipId)
|
||||
SELECT ROUND(RAND() * (13 - 6) + 6) AS PersonId, (
|
||||
SELECT id
|
||||
FROM Ships
|
||||
ORDER BY RAND()
|
||||
LIMIT 1
|
||||
) AS ShipId
|
||||
FROM (
|
||||
SELECT id
|
||||
FROM `Ships`
|
||||
LIMIT 10
|
||||
) AS t;
|
||||
|
||||
INSERT INTO
|
||||
Cargoes (
|
||||
Quantity,
|
||||
CargoTypeId,
|
||||
ShipId,
|
||||
PurposeId
|
||||
)
|
||||
SELECT
|
||||
ROUND(RAND() * 100) + 1 AS Quantity,
|
||||
(
|
||||
SELECT id
|
||||
FROM CargoTypes
|
||||
ORDER BY RAND()
|
||||
LIMIT 1
|
||||
) AS CargoTypeId,
|
||||
(
|
||||
SELECT id
|
||||
FROM Ships
|
||||
ORDER BY RAND()
|
||||
LIMIT 1
|
||||
) AS ShipId,
|
||||
(
|
||||
SELECT id
|
||||
FROM Purposes
|
||||
ORDER BY RAND()
|
||||
LIMIT 1
|
||||
) AS PurposeId
|
||||
FROM (
|
||||
SELECT id
|
||||
FROM Ships
|
||||
LIMIT 10
|
||||
) AS t;
|
||||
|
||||
SELECT Ships.Name, Voyages.CountryFromId
|
||||
FROM Ships
|
||||
JOIN Voyages ON Ships.VoyageId = Voyages.Id
|
||||
WHERE
|
||||
Voyages.CountryFromId = (
|
||||
SELECT id
|
||||
FROM `Country`
|
||||
ORDER BY RAND()
|
||||
LIMIT 1
|
||||
);
|
||||
|
||||
-- Вибірка кількості кораблів, що перебувають в кожному причалі:
|
||||
|
||||
SELECT Docks.Name AS DockName, COUNT(Ships.Id) AS ShipCount
|
||||
FROM Docks
|
||||
LEFT JOIN Ships ON Docks.Id = Ships.DockId
|
||||
GROUP BY
|
||||
Docks.Id;
|
||||
|
||||
-- Знаходження найбільшого та найменшого корабля за місткістю
|
||||
|
||||
SELECT MAX(Ships.Capacity) AS MaxCapacity, MIN(Ships.Capacity) AS MinCapacity
|
||||
FROM Ships;
|
||||
|
||||
-- Вибірка інформації про всі обслуговування, які ще не виконані
|
||||
|
||||
SELECT
|
||||
Services.Id,
|
||||
Services.Date,
|
||||
Ships.Name AS ShipName,
|
||||
ServiceTypes.Name AS ServiceTypeName
|
||||
FROM
|
||||
Services
|
||||
JOIN Ships ON Services.ShipId = Ships.Id
|
||||
JOIN ServiceTypes ON Services.ServiceTypeId = ServiceTypes.Id
|
||||
WHERE
|
||||
Services.Done = 0;
|
||||
|
||||
-- Список працівників та кількість обслуговувань, які вони виконали
|
||||
|
||||
SELECT Employees.Id, Persons.FirstName, Persons.LastName, COUNT(ServiceEmployee.ServiceId) AS ServicesCount
|
||||
FROM
|
||||
Employees
|
||||
JOIN Persons ON Employees.PersonId = Persons.Id
|
||||
LEFT JOIN ServiceEmployee ON Employees.Id = ServiceEmployee.EmployeeId
|
||||
GROUP BY
|
||||
Employees.Id;
|
||||
|
||||
-- Список вантажів разом із цілями та назвою корабля:
|
||||
|
||||
SELECT Cargoes.Id, Purposes.Name AS PurposeName, Ships.Name AS ShipName, Cargoes.Quantity
|
||||
FROM Cargoes
|
||||
JOIN Purposes ON Cargoes.PurposeId = Purposes.Id
|
||||
JOIN Ships ON Cargoes.ShipId = Ships.Id;
|
||||
|
||||
-- Загальний кількість вантажів, що відправляється з кожної країни:
|
||||
|
||||
SELECT Country.Name AS CountryName, SUM(Cargoes.Quantity) AS TotalCount
|
||||
FROM
|
||||
Voyages
|
||||
JOIN Country ON Voyages.CountryFromId = Country.Id
|
||||
JOIN Ships ON Voyages.Id = Ships.VoyageId
|
||||
JOIN Cargoes ON Ships.Id = Cargoes.ShipId
|
||||
GROUP BY
|
||||
Country.Id;
|
||||
Reference in New Issue
Block a user