Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
54 changes: 54 additions & 0 deletions 11th hometask/1th task/dump_logs.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
-- MySQL dump 10.13 Distrib 8.0.23, for Win64 (x86_64)
--
-- Host: 127.0.0.1 Database: shop
-- ------------------------------------------------------
-- Server version 8.0.23

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!50503 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;

--
-- Table structure for table `logs`
--

DROP TABLE IF EXISTS `logs`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!50503 SET character_set_client = utf8mb4 */;
CREATE TABLE `logs` (
`id` int unsigned NOT NULL AUTO_INCREMENT,
`table` varchar(45) NOT NULL,
`primary_key` int unsigned NOT NULL,
`name` varchar(255) NOT NULL,
`datetime` datetime NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=ARCHIVE AUTO_INCREMENT=15 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Dumping data for table `logs`
--

LOCK TABLES `logs` WRITE;
/*!40000 ALTER TABLE `logs` DISABLE KEYS */;
INSERT INTO `logs` VALUES (1,'test',1,'test','2021-04-27 21:08:31'),(2,'catalogs',0,'test_catalogs','2021-04-27 21:20:25'),(3,'products',0,'test_users','2021-04-27 21:21:29'),(4,'users',0,'test_users','2021-04-27 21:21:52'),(5,'products',0,'test_products','2021-04-27 21:23:49'),(6,'catalogs',0,'test_catalogs_2','2021-04-27 21:29:22'),(7,'catalogs',0,'test_2','2021-04-27 21:29:58'),(8,'products',12,'test_3','2021-04-27 21:33:13'),(9,'users',9,'test_2','2021-04-27 21:36:08'),(10,'catalogs',7,'test_3','2021-04-27 21:36:22'),(11,'products',12,'test_4','2021-04-27 21:36:34'),(12,'users',9,'test_3','2021-04-27 21:37:32'),(13,'catalogs',7,'test_4','2021-04-27 21:37:39'),(14,'products',12,'test_5','2021-04-27 21:37:46');
/*!40000 ALTER TABLE `logs` ENABLE KEYS */;
UNLOCK TABLES;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;

/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;

-- Dump completed on 2021-04-27 21:39:22
10 changes: 10 additions & 0 deletions 11th hometask/1th task/trigger_catalogs.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
CREATE DEFINER=`SergeyZ06`@`%` TRIGGER `catalogs_AFTER_INSERT` AFTER INSERT ON `catalogs` FOR EACH ROW BEGIN
INSERT INTO `shop`.`logs` (`table`, `primary_key`, `name`, `datetime`)
VALUES ('catalogs',
NEW.id,
-- (SELECT `AUTO_INCREMENT`
-- FROM INFORMATION_SCHEMA.TABLES
-- WHERE TABLE_SCHEMA = 'shop'
-- AND TABLE_NAME = 'catalogs'),
NEW.name, NOW());
END
10 changes: 10 additions & 0 deletions 11th hometask/1th task/trigger_products.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
CREATE DEFINER=`SergeyZ06`@`%` TRIGGER `products_AFTER_INSERT` AFTER INSERT ON `products` FOR EACH ROW BEGIN
INSERT INTO `shop`.`logs` (`table`, `primary_key`, `name`, `datetime`)
VALUES ('products',
NEW.id,
-- (SELECT `AUTO_INCREMENT`
-- FROM INFORMATION_SCHEMA.TABLES
-- WHERE TABLE_SCHEMA = 'shop'
-- AND TABLE_NAME = 'products'),
NEW.name, NOW());
END
10 changes: 10 additions & 0 deletions 11th hometask/1th task/trigger_users.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
CREATE DEFINER=`SergeyZ06`@`%` TRIGGER `users_AFTER_INSERT` AFTER INSERT ON `users` FOR EACH ROW BEGIN
INSERT INTO `shop`.`logs` (`table`, `primary_key`, `name`, `datetime`)
VALUES ('users',
NEW.id,
-- (SELECT `AUTO_INCREMENT`
-- FROM INFORMATION_SCHEMA.TABLES
-- WHERE TABLE_SCHEMA = 'shop'
-- AND TABLE_NAME = 'users'),
NEW.name, NOW());
END
19 changes: 19 additions & 0 deletions 11th hometask/2th task.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
-- 2. (по желанию) Создайте SQL-запрос, который помещает в таблицу users миллион записей.

-- В теории это должно работать, но по факту MySQL сервер падает после ~200000 записей.
-- Auto Increment стал равен 196616, после этого произошла ошибка "Error Code: 2013. Lost connection to MySQL server during query".

SET @@CTE_MAX_RECURSION_DEPTH = 1000000;

INSERT INTO `users` (`name`)
WITH RECURSIVE t1 AS (
SELECT 1 AS a
UNION ALL
SELECT a + 1
FROM t1
WHERE a < 1000000
)
SELECT CONCAT('test_user_', t1.a)
FROM t1;

SELECT * FROM shop.users;
16 changes: 16 additions & 0 deletions 11th hometask/3th task.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
-- В базе данных Redis подберите коллекцию для подсчета посещений с определенных IP-адресов.

> SET 192.168.1.1 1
OK
> GET 192.168.1.1
"1"
> SET 192.168.1.1 2
OK
> GET 192.168.1.1
"2"
> INCR 192.168.1.1
(integer) 3
> INCR 192.168.1.1
(integer) 4
> GET 192.168.1.1
"4"
20 changes: 20 additions & 0 deletions 11th hometask/4th task.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
-- 2. При помощи базы данных Redis решите задачу поиска имени пользователя по электронному адресу и наоборот, поиск электронного адреса пользователя по его имени.

> SET oleg oleg@mail.ru
OK
> GET oleg
"oleg@mail.ru"
> SET ivan invan@mail.ru
OK
> GET ivan
"invan@mail.ru"
> SET petr petr@mail.ru
OK
> GET petr
"petr@mail.ru"
> KEYS ivan*
1) "ivan"
> SET oleg@mail.ru oleg
OK
> GET oleg@mail.ru
"oleg"
218 changes: 218 additions & 0 deletions 11th hometask/5th task.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,218 @@
-- 3. Организуйте хранение категорий и товарных позиций учебной базы данных shop в СУБД MongoDB.

Configuration

db={
"catalogs": [
{
"_id": 1,
"name": "CPU"
},
{
"_id": 2,
"name": "Motherboard"
},
{
"_id": 3,
"name": "3D accelerator"
},
{
"_id": 4,
"name": "HDD"
},
{
"_id": 5,
"name": "RAM"
}
],
"products": [
{
"_id": 1,
"name": "Intel Core i3-8100",
"description": "Процессор для настольных персональных компьютеров, основанных на платформе Intel.",
"price": 7890.00,
"catalog_id": 1,
"created_at": "2021-03-28 20:24:57",
"updated_at": "2021-03-28 20:24:57"
},
{
"_id": 2,
"name": "Intel Core i5-7400",
"description": "Процессор для настольных персональных компьютеров, основанных на платформе Intel.",
"price": 12700.00,
"catalog_id": 1,
"created_at": "2021-03-28 20:24:57",
"updated_at": "2021-03-28 20:24:57"
},
{
"_id": 3,
"name": "AMD FX-8320E",
"description": "Процессор для настольных персональных компьютеров, основанных на платформе AMD.",
"price": 4780.00,
"catalog_id": 1,
"created_at": "2021-03-28 20:24:57",
"updated_at": "2021-03-28 20:24:57"
},
{
"_id": 4,
"name": "AMD FX-8320",
"description": "Процессор для настольных персональных компьютеров, основанных на платформе AMD.",
"price": 7120.00,
"catalog_id": 1,
"created_at": "2021-03-28 20:24:57",
"updated_at": "2021-03-28 20:24:57"
},
{
"_id": 5,
"name": "ASUS ROG MAXIMUS X HERO",
"description": "Материнская плата ASUS ROG MAXIMUS X HERO, Z370, Socket 1151-V2, DDR4, ATX",
"price": 19310.00,
"catalog_id": 2,
"created_at": "2021-03-28 20:24:57",
"updated_at": "2021-03-28 20:24:57"
},
{
"_id": 6,
"name": "Gigabyte H310M S2H",
"description": "Материнская плата Gigabyte H310M S2H, H310, Socket 1151-V2, DDR4, mATX",
"price": 4790.00,
"catalog_id": 2,
"created_at": "2021-03-28 20:24:57",
"updated_at": "2021-03-28 20:24:57"
},
{
"_id": 7,
"name": "MSI B250M GAMING PRO",
"description": "Материнская плата MSI B250M GAMING PRO, B250, Socket 1151, DDR4, mATX",
"price": 5060.00,
"catalog_id": 2,
"created_at": "2021-03-28 20:24:57",
"updated_at": "2021-03-28 20:24:57"
}
]
}


Query

db.products.aggregate([
{
"$lookup": {
"from": "catalogs",
"localField": "catalog_id",
"foreignField": "_id",
"as": "catalog"
}
}
])


Result

[
{
"_id": 1,
"catalog": [
{
"_id": 1,
"name": "CPU"
}
],
"catalog_id": 1,
"created_at": "2021-03-28 20:24:57",
"description": "Процессор для настольных персональных компьютеров, основанных на платформе Intel.",
"name": "Intel Core i3-8100",
"price": 7890,
"updated_at": "2021-03-28 20:24:57"
},
{
"_id": 2,
"catalog": [
{
"_id": 1,
"name": "CPU"
}
],
"catalog_id": 1,
"created_at": "2021-03-28 20:24:57",
"description": "Процессор для настольных персональных компьютеров, основанных на платформе Intel.",
"name": "Intel Core i5-7400",
"price": 12700,
"updated_at": "2021-03-28 20:24:57"
},
{
"_id": 3,
"catalog": [
{
"_id": 1,
"name": "CPU"
}
],
"catalog_id": 1,
"created_at": "2021-03-28 20:24:57",
"description": "Процессор для настольных персональных компьютеров, основанных на платформе AMD.",
"name": "AMD FX-8320E",
"price": 4780,
"updated_at": "2021-03-28 20:24:57"
},
{
"_id": 4,
"catalog": [
{
"_id": 1,
"name": "CPU"
}
],
"catalog_id": 1,
"created_at": "2021-03-28 20:24:57",
"description": "Процессор для настольных персональных компьютеров, основанных на платформе AMD.",
"name": "AMD FX-8320",
"price": 7120,
"updated_at": "2021-03-28 20:24:57"
},
{
"_id": 5,
"catalog": [
{
"_id": 2,
"name": "Motherboard"
}
],
"catalog_id": 2,
"created_at": "2021-03-28 20:24:57",
"description": "Материнская плата ASUS ROG MAXIMUS X HERO, Z370, Socket 1151-V2, DDR4, ATX",
"name": "ASUS ROG MAXIMUS X HERO",
"price": 19310,
"updated_at": "2021-03-28 20:24:57"
},
{
"_id": 6,
"catalog": [
{
"_id": 2,
"name": "Motherboard"
}
],
"catalog_id": 2,
"created_at": "2021-03-28 20:24:57",
"description": "Материнская плата Gigabyte H310M S2H, H310, Socket 1151-V2, DDR4, mATX",
"name": "Gigabyte H310M S2H",
"price": 4790,
"updated_at": "2021-03-28 20:24:57"
},
{
"_id": 7,
"catalog": [
{
"_id": 2,
"name": "Motherboard"
}
],
"catalog_id": 2,
"created_at": "2021-03-28 20:24:57",
"description": "Материнская плата MSI B250M GAMING PRO, B250, Socket 1151, DDR4, mATX",
"name": "MSI B250M GAMING PRO",
"price": 5060,
"updated_at": "2021-03-28 20:24:57"
}
]