Кафедра ИТКафедра ИТ
Обучение
  • О кафедре
  • Направления подготовки
  • Друзья и партнеры
  • Структура кафедры
  • Обращение к студентам
  • Официальный сайт «ВШП»
GitHub
Обучение
  • О кафедре
  • Направления подготовки
  • Друзья и партнеры
  • Структура кафедры
  • Обращение к студентам
  • Официальный сайт «ВШП»
  • Практикум №1 - Связи между таблицами

Практикум №1 - Связи между таблицами

Связи один-к-одному

1. Задача - Персональные данные

Условия

Регистрационные данные пользователей хранятся в таблице users, а персональные данные в users_p. Таблицы связаны друг с другом отношением один-к-одному так, что первичные ключи совпадают.

Получите идентификатор, имя и фамилию для пользователей зарегистрировавшихся (date_joined) после полуночи 1 января 2016 года с паспортами серия которых начинается на 32.

Отсортируйте данные по фамилии пользователей.

Структура БД
Дамп
SET foreign_key_checks = 0;
DROP TABLE IF EXISTS users;
DROP TABLE IF EXISTS users_p;
SET foreign_key_checks = 1;
CREATE TABLE users (
    id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
    first_name VARCHAR(50) NULL,
    last_name VARCHAR(50) NULL,
    age INTEGER NULL,
    date_joined DATETIME NULL
);
INSERT INTO users (id, first_name, last_name, age, date_joined)
VALUES
    (1, 'Дмитрий', 'Федьков', 18, '2015-04-08 12:34:41'),
    (2, 'Светлана', 'Иванова', 30, '2015-04-08 12:31:16'),
    (3, 'Никита', 'Трутнев', 17, '2016-01-12  08:00:03'),
    (4, 'Денис', 'Кац', 22, '2016-03-30 23:57:11'),
    (5, 'Алена', 'Сорокина', 16, '2016-04-01 00:10:23'),
    (6, 'Василий', 'Федьков', 44, '2016-12-23 18:36:45'),
    (7, 'Ярослав', 'Сорокин', 17, '2017-04-08 12:31:18'),
    (8, 'Денис', 'Белый', 23, '2017-04-08 12:36:17'),
    (9, 'Анатолий', 'Дейчман', 21, '2017-04-08 11:22:34'),
    (10, 'Юлия', 'Фёдорова', 29, '2017-04-07 12:34:42'),
    (11, 'Андрей', 'Ройзман', 30, '2017-04-08 12:35:09'),
    (12, 'София', 'Турыгина', 15, '2017-04-05 07:12:41'),
    (13, 'Анастасия', 'Татаренкова', 21, '2017-03-12 08:00:23'),
    (14, 'Валерий', 'Редько', 29, '2017-04-08 12:34:59');
CREATE TABLE users_p (
    id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
    series VARCHAR(50) NULL,
    number VARCHAR(50) NULL
);
INSERT INTO users_p (id, series, number)
VALUES
    (1, '3205', '847414'),
    (2, '4582', '748294'),
    (3, '3209', '184851'),
    (4, '5514', '981455'),
    (5, '3201', '184755'),
    (6, '5614', '194710'),
    (7, '9831', '184751'),
    (8, '4561', '856194'),
    (9, '3135', '817414'),
    (10, '3276', '174651'),
    (11, '4532', '249584'),
    (12, '1401', '736144'),
    (13, '4104', '194714'),
    (14, '1409', '184619');
Таблицы
users
idfirst_namelast_nameagedate_joined
1ДмитрийФедьков182015-04-08 12:34:41
2СветланаИванова302015-04-08 12:31:16
3НикитаТрутнев172016-01-12 08:00:03
4ДенисКац222016-03-30 23:57:11
5АленаСорокина162016-04-01 00:10:23
6ВасилийФедьков442016-12-23 18:36:45
7ЯрославСорокин172017-04-08 12:31:18
8ДенисБелый232017-04-08 12:36:17
9АнатолийДейчман212017-04-08 11:22:34
10ЮлияФёдорова292017-04-07 12:34:42
11АндрейРойзман302017-04-08 12:35:09
12СофияТурыгина152017-04-05 07:12:41
13АнастасияТатаренкова212017-03-12 08:00:23
14ВалерийРедько292017-04-08 12:34:59
users_p
idseriesnumber
13205847414
24582748294
33209184851
45514981455
53201184755
65614194710
79831184751
84561856194
93135817414
103276174651
114532249584
121401736144
134104194714
141409184619
Решение задачи
SELECT users.id, users.first_name, users.last_name
FROM users, users_p
WHERE
  users.id = users_p.id
    AND
  users.date_joined > '2016-01-01 00:00:00'
    AND
  users_p.series LIKE '32%'
ORDER BY users.last_name

2. Задача - Обновление пользователя

Условия

В таблице users хранится базовая информация о пользователях, а в таблице users_details — подробная. Таблицы связаны отношением один-к-одному так, что первичные ключи в таблицах совпадают.

Обновите данные о пользователе c id равным 8: измените email на karina.n@domain.com, а фамилию на Некифорова.

Выполните все изменения в одном SQL запросе.

Структура БД
Дамп
SET foreign_key_checks = 0;
DROP TABLE IF EXISTS users;
DROP TABLE IF EXISTS users_details;
SET foreign_key_checks = 1;
CREATE TABLE users (
    id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
    email VARCHAR(50) NULL
);
INSERT INTO users (id, email)
VALUES
    (1, 'user1@domain.com'),
    (2, 'user2@domain.com'),
    (3, 'user3@domain.com'),
    (4, 'user4@domain.com'),
    (5, 'user5@domain.com'),
    (6, 'user6@domain.com'),
    (7, 'user7@domain.com'),
    (8, 'user8@domain.com'),
    (9, 'user9@domain.com'),
    (10, 'user10@domain.com');
CREATE TABLE users_details (
    id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
    first_name VARCHAR(50) NULL,
    last_name VARCHAR(50) NULL,
    age INTEGER NULL
);
INSERT INTO users_details (id, first_name, last_name, age)
VALUES
    (1, 'Виктор', 'Алтушев', 20),
    (2, 'Светлана', 'Иванова', 17),
    (3, 'Елена', 'Абрамова', 18),
    (4, 'Василиса', 'Кац', 15),
    (5, 'Антон', 'Сорокин', 22),
    (6, 'Алёна', 'Алясева', 28),
    (7, 'Дмитрий', 'Калякин', 21),
    (8, 'Карина', 'Белая', 30),
    (9, 'Анастасия', 'Дейчман', 16),
    (10, 'Юлия', 'Фёдорова', 25);
Таблицы
users
idemail
1user1@domain.com
2user2@domain.com
3user3@domain.com
4user4@domain.com
5user5@domain.com
6user6@domain.com
7user7@domain.com
8user8@domain.com
9user9@domain.com
10user10@domain.com
users_details
idfirst_namelast_nameage
1ВикторАлтушев20
2СветланаИванова17
3ЕленаАбрамова18
4ВасилисаКац15
5АнтонСорокин22
6АлёнаАлясева28
7ДмитрийКалякин21
8КаринаБелая30
9АнастасияДейчман16
10ЮлияФёдорова25
Решение задачи
UPDATE users, users_details
SET
  users.email = 'karina.n@domain.com',
  users_details.last_name = 'Некифорова'
WHERE
  users.id = users_details.id
    AND
  users.id = 8

Связи один-ко-многим

3. Задача - Завершенные заказы

Условия

Таблицы users и orders связанны отношением один-ко-многим.
orders содержит внешний ключ user_id, который ссылается на id пользователя.

Получите из таблиц дату и стоимость каждого выполненного заказа, а также фамилию и имя пользователя, который этот заказ оформил.

Информацию отсортируйте по дате заказа, дату выведите в формате ДД.ММ.ГГГГ в поле date.

Структура БД
Дамп
SET foreign_key_checks = 0;
DROP TABLE IF EXISTS users;
DROP TABLE IF EXISTS orders;
SET foreign_key_checks = 1;
CREATE TABLE users (
    id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
    first_name VARCHAR(50) NULL,
    last_name VARCHAR(50) NULL,
    age INTEGER NULL
);
INSERT INTO users (id, first_name, last_name, age)
VALUES
    (1, 'Вероника', 'Петрова', 20),
    (2, 'Светлана', 'Иванова', 17),
    (3, 'Елена', 'Абрамова', 18),
    (4, 'Василиса', 'Кац', 15),
    (5, 'Алёна', 'Сорокина', 22),
    (6, 'Алёна', 'Федькова', 28),
    (7, 'Лиана', 'Сорокин', 21),
    (8, 'Карина', 'Белая', 30),
    (9, 'Анастасия', 'Дейчман', 16),
    (10, 'Юлия', 'Фёдорова', 25);
CREATE TABLE orders (
    id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
    user_id INTEGER NULL,
    date DATETIME NULL,
    amount INTEGER NULL,
    status VARCHAR(50) NULL
);
INSERT INTO orders (id, user_id, date, amount, status)
VALUES
    (1, 3, '2014-01-23 17:04:04', 4500, 'completed'),
    (2, 1, '2014-03-12 12:12:43', 700, 'completed'),
    (3, 10, '2014-12-31 08:53:25', 1240, 'new'),
    (4, 7, '2015-01-04 18:23:09', 500, 'completed'),
    (5, 1, '2015-01-04 18:25:27', 8700, 'cancelled'),
    (6, 4, '2015-01-12 09:23:14', 1350, 'completed'),
    (7, 10, '2015-01-14 17:16:39', 600, 'new'),
    (8, 1, '2015-02-01 13:32:17', 680, 'completed'),
    (9, 3, '2014-02-16 14:44:05', 1400, 'completed'),
    (10, 5, '2015-02-28 02:00:47', 4300, 'cancelled'),
    (11, 10, '2015-03-12 08:30:23', 8000, 'completed'),
    (12, 2, '2015-04-01 13:04:47', 980, 'completed'),
    (13, 2, '2015-04-14 23:21:25', 1600, 'completed');
Таблицы
users
idfirst_namelast_nameage
1ВероникаПетрова20
2СветланаИванова17
3ЕленаАбрамова18
4ВасилисаКац15
5АлёнаСорокина22
6АлёнаФедькова28
7ЛианаСорокин21
8КаринаБелая30
9АнастасияДейчман16
10ЮлияФёдорова25
orders
iduser_iddateamountstatus
132014-01-23 17:04:044500completed
212014-03-12 12:12:43700completed
3102014-12-31 08:53:251240new
472015-01-04 18:23:09500completed
512015-01-04 18:25:278700cancelled
642015-01-12 09:23:141350completed
7102015-01-14 17:16:39600new
812015-02-01 13:32:17680completed
932014-02-16 14:44:051400completed
1052015-02-28 02:00:474300cancelled
11102015-03-12 08:30:238000completed
1222015-04-01 13:04:47980completed
1322015-04-14 23:21:251600completed
Решение задачи
SELECT
  DATE_FORMAT(orders.date,'%d.%m.%Y') AS date,
  orders.amount,
  users.last_name,
  users.first_name
FROM users, orders
WHERE
  orders.user_id = users.id
    AND
  orders.status = 'completed'
ORDER BY orders.date ASC

4. Задача - Товары с категориями и брендами

Условия

В базе данных есть три таблицы: products, categories и brands.

Выведите id и название товара, его цену, название категории и название бренда для товаров, которые есть на складе.

Название товара выведите в поле name, категорию в category, бренда в brand.

Отсортируйте данные по цене, а затем по id товара.

Структура БД
Дамп
SET foreign_key_checks = 0;
DROP TABLE IF EXISTS brands;
DROP TABLE IF EXISTS categories;
DROP TABLE IF EXISTS products;
CREATE TABLE brands (
    id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(50) NULL
);
INSERT INTO brands (id, name)
VALUES
    (1, 'Mango'),
    (2, 'Love Republic'),
    (3, 'Zarina'),
    (4, 'Imajeans'),
    (5, 'OLBE'),
    (6, 'OPIMU'),
    (7, 'FinFlare'),
    (8, 'Sasha Rozhdestvenskaya'),
    (9, 'Katomi'),
    (10, 'Oodji');
CREATE TABLE categories (
    id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(50) NULL
);
INSERT INTO categories (id, name)
VALUES
    (1, 'Джинсы'),
    (2, 'Куртки'),
    (3, 'Платья'),
    (4, 'Жилетки'),
    (5, 'Юбки'),
    (6, 'Комплекты'),
    (7, 'Брюки'),
    (8, 'Водолазки'),
    (9, 'Косухи'),
    (10, 'Джеггинсы'),
    (11, 'Плащи'),
    (12, 'Леггинсы');
CREATE TABLE products (
    id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(50) NULL,
    brand_id INT NOT NULL,
    category_id INT NOT NULL,
    count INT NULL,
    price INT NULL,
    sizes SET('32','34','36','38','40','42','44','46','48','50','52','M','L','S','XL','XS','2XL','4XL') NULL
);
INSERT INTO products (id, name, brand_id, category_id, count, price, sizes)
VALUES
    (1, 'Джинсы Mango Lonny 2', 1, 1, 3, 2990, '34,36,38,42'),
    (2, 'Куртка Magno Nico 2', 1, 2, 2, 4999, 'S,M,L'),
    (3, 'Платье Love Republic', 2, 3, 7, 3699, '40,46,48'),
    (4, 'Джинсы Mango Kim2', 1, 1, 3, 2499, '34,36,38,40'),
    (5, 'Жилет Zarina', 3, 4, 7, 2519, '42,46,50,52'),
    (6, 'Юбка Mango Park', 1, 5, 2, 3999, '34,36,38,40'),
    (7, 'Комплект Mango (джинсы Lonny 2 и косуха)', 1, 6, 4, 11900, '36,38,M,L,S'),
    (8, 'Джинсы Imajeans', 4, 1, 6, 1842, '34,36,38,42'),
    (9, 'Брюки OLBE', 5, 7, 5, 2898, '44,46,48'),
    (10, 'Джинсы Mango Jane2', 1, 1, 4, 200, '32,34,40'),
    (11, 'Водолазка OPIMU', 6, 8, 12, 1527, 'M,XL,L,S'),
    (12, 'Косуха Mango', 1, 9, 4, 9990, 'M,L,S'),
    (13, 'Джинсы Uptown2 (Mango)', 1, 1, 7, 3499, '34,36,38,40,42'),
    (14, 'Жилет FinFlare', 7, 4, 3, 6999, 'M,L,XL,2XL'),
    (15, 'Джинсы Mango Soho2', 1, 1, 0, 1999, '34,36,38'),
    (16, 'Джеггинсы Sasha Rozhdestvenskaya', 8, 10, 5, 1691, '42,46,48,50'),
    (17, 'Плащ Mango SHERLOCK', 1, 11, 1, 6499, 'XS,S,M,L'),
    (18, 'Юбка Katomi', 9, 5, 8, 3199, '34,40,42'),
    (19, 'Джинсы Mango Noa2', 1, 1, 2, 2499, '32,34,36,38,40,42,44'),
    (20, 'Леггинсы Oodji', 10, 12, 0, 349, 'M,L,S');
SET foreign_key_checks = 1;
Таблицы
products
idnamebrand_idcategory_idcountpricesizes
1Джинсы Mango Lonny 2113299034,36,38,42
2Куртка Magno Nico 21224999S,M,L
3Платье Love Republic237369940,46,48
4Джинсы Mango Kim2113249934,36,38,40
5Жилет Zarina347251942,46,50,52
6Юбка Mango Park152399934,36,38,40
7Комплект Mango (джинсы Lonny 2 и косуха)1641190036,38,M,L,S
8Джинсы Imajeans416184234,36,38,42
9Брюки OLBE575289844,46,48
10Джинсы Mango Jane211420032,34,40
11Водолазка OPIMU68121527M,XL,L,S
12Косуха Mango1949990M,L,S
13Джинсы Uptown2 (Mango)117349934,36,38,40,42
14Жилет FinFlare7436999M,L,XL,2XL
15Джинсы Mango Soho2110199934,36,38
16Джеггинсы Sasha Rozhdestvenskaya8105169142,46,48,50
17Плащ Mango SHERLOCK11116499XS,S,M,L
18Юбка Katomi958319934,40,42
19Джинсы Mango Noa2112249932,34,36,38,40,42,44
20Леггинсы Oodji10120349M,L,S
categories
idname
1Джинсы
2Куртки
3Платья
4Жилетки
5Юбки
6Комплекты
7Брюки
8Водолазки
9Косухи
10Джеггинсы
11Плащи
12Леггинсы
brands
idname
1Mango
2Love Republic
3Zarina
4Imajeans
5OLBE
6OPIMU
7FinFlare
8Sasha Rozhdestvenskaya
9Katomi
10Oodji
Решение задачи
SELECT
  products.id,
  products.name AS name,
  categories.name AS category,
  brands.name AS brand
FROM products
JOIN brands ON products.brand_id = brands.id
JOIN categories ON products.category_id = categories.id
WHERE
  products.count > 0
ORDER BY products.price ASC, products.id ASC

Связи многие-ко-многим

5. Задача - Сотрудники компании

Условия

Таблицы users и roles связаны отношением многие ко многим через таблицу users_roles.

Получите список всех ролей и количество сотрудников в каждой роли.

Выведите два поля: role — название должности и members — количество сотрудников в этой должности.

Данные отсортируйте по названию должности.

Структура БД
Дамп
SET foreign_key_checks = 0;
DROP TABLE IF EXISTS roles;
DROP TABLE IF EXISTS users;
DROP TABLE IF EXISTS users_roles;
SET foreign_key_checks = 1;
CREATE TABLE roles (
    id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(50) NULL
);
INSERT INTO roles (id, name)
VALUES
    (1, 'Менеджер'),
    (2, 'Дизайнер'),
    (3, 'Программист'),
    (4, 'Маркетолог'),
    (5, 'Бухгалтер');
CREATE TABLE users (
    id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
    first_name VARCHAR(50) NULL,
    last_name VARCHAR(50) NULL
);
INSERT INTO users (id, first_name, last_name)
VALUES
    (1, 'Виктор', 'Алтушев'),
    (2, 'Светлана', 'Иванова'),
    (3, 'Елена', 'Абрамова'),
    (4, 'Василиса', 'Кац'),
    (5, 'Антон', 'Сорокин'),
    (6, 'Алёна', 'Алясева'),
    (7, 'Антон', 'Белый'),
    (8, 'Игорь', 'Маф'),
    (9, 'Анастасия', 'Дейчман'),
    (10, 'Александр', 'Дмитриев');
CREATE TABLE users_roles (
    user_id INTEGER NOT NULL,
    role_id INTEGER NOT NULL
);
INSERT INTO users_roles (user_id, role_id)
VALUES
    (1, 2),
    (2, 1),
    (3, 2),
    (4, 5),
    (5, 3),
    (6, 4),
    (7, 3),
    (8, 3),
    (1, 1),
    (3, 4),
    (5, 1);
Таблицы
users
idfirst_namelast_name
1ВикторАлтушев
2СветланаИванова
3ЕленаАбрамова
4ВасилисаКац
5АнтонСорокин
6АлёнаАлясева
7АнтонБелый
8ИгорьМаф
9АнастасияДейчман
10АлександрДмитриев
roles
idname
1Менеджер
2Дизайнер
3Программист
4Маркетолог
5Бухгалтер
users_roles
user_idrole_id
12
21
32
45
53
64
73
83
11
34
51
Решение задачи
SELECT
  roles.name as role,
  COUNT(users.id) as members
FROM roles
JOIN users_roles ON users_roles.role_id = roles.id
JOIN users ON users.id = users_roles.user_id
GROUP BY role
ORDER BY role ASC

6. Задача - Самые продаваемые товары

Условия

Рассмотрим базу данных интернет-магазина:

Также orders связана отношением многие ко многим с таблицей products через таблицу orders_details, что дает возможность указывать какие именно товары находятся в заказе.

Получите 5 самых продаваемых товаров (тех, которых больше всего покупали). Учитывайте только выполненные заказы.

Выведите поля: id и название товара, количество проданных товаров (в поле sold), общую стоимость проданных товаров (в поле total).

Данные отсортируйте сперва по полю sold в обратном порядке, а затем по total, также в обратном порядке.

Структура БД
Дамп
SET foreign_key_checks = 0;
DROP TABLE IF EXISTS products;
DROP TABLE IF EXISTS orders;
DROP TABLE IF EXISTS orders_details;
SET foreign_key_checks = 1;
CREATE TABLE products (
    id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(50) NULL,
    count INTEGER NULL,
    price INTEGER NULL
);
INSERT INTO products (id, name, count, price)
VALUES
    (1, 'Стиральная машина', 5, 12000),
    (2, 'Холодильник', 11, 17800),
    (3, 'Микроволновка', 3, 4100),
    (4, 'Пылесос', 2, 4500),
    (5, 'Вентилятор', 8, 700),
    (6, 'Телевизор', 7, 31740),
    (7, 'Тостер', 2, 2500),
    (8, 'Принтер', 4, 3000),
    (9, 'XBOX', 5, 19900),
    (10, 'Флешка 8Gb', 14, 700);
CREATE TABLE orders (
    id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
    user_id INT NULL,
    date DATETIME NULL,
    status VARCHAR(50) NULL
);
INSERT INTO orders (id, user_id, date, status)
VALUES
    (1, 7, '2017-01-04 18:23:09', 'success'),
    (2, 1, '2017-01-04 18:25:27', 'cancelled'),
    (3, 4, '2017-01-12 09:23:14', 'success'),
    (4, 10, '2017-01-14 17:16:39', 'new'),
    (5, 3, '2017-01-23 17:04:04', 'success'),
    (6, 2, '2017-02-01 13:04:47', 'success'),
    (7, 1, '2017-02-01 13:32:17', 'success'),
    (8, 10, '2017-02-12 08:30:23', 'success'),
    (9, 5, '2017-02-12 12:12:43', 'success'),
    (10, 2, '2017-02-14 23:21:25', 'success'),
    (11, 3, '2017-02-16 14:44:05', 'success'),
    (12, 5, '2017-02-28 02:00:47', 'cancelled'),
    (13, 10, '2017-03-02 08:53:25', 'new');
CREATE TABLE orders_details (
    order_id INTEGER NOT NULL,
    product_id INTEGER NOT NULL
);
INSERT INTO orders_details (order_id, product_id)
VALUES
    (1, 1),
    (2, 2),
    (5, 3),
    (13, 10),
    (8, 7),
    (9, 8),
    (2, 4),
    (5, 5),
    (1, 4),
    (2, 6),
    (5, 6),
    (13, 4),
    (9, 1),
    (9, 2),
    (1, 8),
    (2, 10),
    (3, 9),
    (7, 8);
Таблицы
products
idnamecountprice
1Стиральная машина512000
2Холодильник1117800
3Микроволновка34100
4Пылесос24500
5Вентилятор8700
6Телевизор731740
7Тостер22500
8Принтер43000
9XBOX519900
10Флешка 8Gb14700
orders
iduser_iddatestatus
172017-01-04 18:23:09success
212017-01-04 18:25:27cancelled
342017-01-12 09:23:14success
4102017-01-14 17:16:39new
532017-01-23 17:04:04success
622017-02-01 13:04:47success
712017-02-01 13:32:17success
8102017-02-12 08:30:23success
952017-02-12 12:12:43success
1022017-02-14 23:21:25success
1132017-02-16 14:44:05success
1252017-02-28 02:00:47cancelled
13102017-03-02 08:53:25new
orders_details
order_idproduct_id
11
22
53
1310
87
98
24
55
14
26
56
134
91
92
18
210
39
78
Решение задачи
SELECT
  p.id,
  p.name,
  COUNT(o.id) as sold,
  SUM(p.price) as total
FROM products as p
JOIN orders_details as od on p.id = od.product_id
JOIN orders as o on o.id = od.order_id
WHERE
  o.status = 'success'
GROUP BY id
ORDER BY sold DESC, total DESC
LIMIT 5
Последнее обновление: 20.10.2025, 01:37
Следующая
Практикум №2 - Типы данных
© Кафедра информационных технологий ЧУВО «ВШП», 2025. Версия: 0.20.1
Материалы доступны в соответствии с лицензией: