unknown 3 tuần trước cách đây
mục cha
commit
9c27986d28

+ 16 - 17
.obsidian/workspace.json

@@ -13,12 +13,12 @@
             "state": {
               "type": "markdown",
               "state": {
-                "file": "hardcore web development/11. SQL/SQL настройка.md",
+                "file": "ROTEK/allwinner 069 070.md",
                 "mode": "source",
                 "source": false
               },
               "icon": "lucide-file",
-              "title": "SQL настройка"
+              "title": "allwinner 069 070"
             }
           },
           {
@@ -27,16 +27,15 @@
             "state": {
               "type": "markdown",
               "state": {
-                "file": "todo/Счета.md",
+                "file": "hardcore web development/11. SQL/SQL настройка.md",
                 "mode": "source",
                 "source": false
               },
               "icon": "lucide-file",
-              "title": "Счета"
+              "title": "SQL настройка"
             }
           }
-        ],
-        "currentTab": 1
+        ]
       }
     ],
     "direction": "vertical"
@@ -59,7 +58,7 @@
                 "autoReveal": false
               },
               "icon": "lucide-folder-closed",
-              "title": "Файловый менеджер"
+              "title": "Files"
             }
           },
           {
@@ -159,18 +158,21 @@
   },
   "left-ribbon": {
     "hiddenItems": {
-      "switcher:Меню быстрого перехода": false,
-      "graph:Граф": false,
-      "canvas:Создать новый холст": false,
-      "command-palette:Открыть палитру команд": false,
-      "markdown-importer:Импорт Markdown-файлов": false
+      "switcher:Open quick switcher": false,
+      "graph:Open graph view": false,
+      "canvas:Create new canvas": false,
+      "command-palette:Open command palette": false,
+      "markdown-importer:Open format converter": false
     }
   },
-  "active": "93f97d4cb4342e03",
+  "active": "d71e50b2479be430",
   "lastOpenFiles": [
+    "linux/server.md",
+    "linux/GS server.md",
+    "hardcore web development/11. SQL/SQL настройка.md",
+    "todo/Счета.md",
     "hardcore web development/11. SQL/Типы данных.md",
     "hardcore web development/11. SQL/Сортировка данных.md",
-    "hardcore web development/11. SQL/SQL настройка.md",
     "hardcore web development/11. SQL/Создание таблиц.md",
     "hardcore web development/11. SQL/Дата и время.md",
     "English/Texts/Text 10.md",
@@ -187,15 +189,12 @@
     "c/misc.md",
     "Greenstar/ethernet stm32.md",
     "ROTEK/allwinner 069 070.md",
-    "linux/server.md",
     "Greenstar/FPGA Blaster.md",
     "Greenstar/modbus in ethernet stm32.md",
     "Greenstar/stm32l476VG-usb спектрометр.md",
     "Greenstar/usb stm32.md",
     "Untitled.canvas",
     "ROTEK/Arbiter.md",
-    "ROTEK/universal IO/universal IO.md",
-    "ROTEK/universal IO/tasks.md",
     "English/img/34-10.jpg",
     "English/img/34-9.jpg",
     "English/img/34-8.jpg",

+ 2 - 0
hardcore web development/11. SQL/SQL настройка.md

@@ -111,3 +111,5 @@ create role with ligin password '123'
 show search_path
 ```
 
+~={yellow}Разное=~
+- Про логи https://ru.stackoverflow.com/questions/741307/%D0%9A%D0%B0%D0%BA-%D1%83%D0%B7%D0%BD%D0%B0%D1%82%D1%8C-%D1%81-%D0%BA%D0%B0%D0%BA%D0%BE%D0%B3%D0%BE-ip-%D0%B0%D0%B4%D1%80%D0%B5%D1%81%D0%B0-%D0%B8-%D0%BA%D0%BE%D0%B3%D0%B4%D0%B0-%D0%B1%D1%8B%D0%BB%D0%BE-%D0%BE%D0%B1%D1%80%D0%B0%D1%89%D0%B5%D0%BD%D0%B8%D0%B5-%D0%BA-%D0%91%D0%94

+ 74 - 0
hardcore web development/11. SQL/quiz_1.sql

@@ -296,12 +296,86 @@ create table book_json(
 	)
 );
 
+-- -----------------------------------------------------------------
+-- 11.33 Изменение структуры таблиц
+
+-- Добавить ограничение на таблицу
+alter table book_json add check (
+	data->>'name' is not null and
+	data->>'pages' is not null and
+	(data->>'pages')::int > 0
+);
+
+-- Добавить колонку к таблице
+alter table book_json
+add column created_at timestamp not null default current_timestamp;
+
+alter table book_json
+add column created_at timestamp not null default now();
+
+-- -----------------------------------------------------------------
+-- 11.38 INNER JOIN
+
+table species;
+table genus;
+
+select species_name as вид, genus_name as род from species
+join genus using(genus_id)
+order by species_name;
+
+-- Другие условия
+select species_name вид, genus_name род
+from species s join genus g on s.genus = g.genus_id
+order by species_name;
 
+--
+drop table if exists client, payment cascade;
+
+create temp table client (
+	client_id bigint generated always as identity primary key,
+	email varchar(360) not null
+);
 
+create temp table payment (
+	payment_id bigint generated always as identity primary key,
+	payment_time timestamp not null default current_timestamp,
+	amount int not null check (amount > 0),
+	client_id bigint not null references client(client_id)
+);
+
+insert into client (email) values
+	('client1@mail.ru'),
+	('client2@mail.ru'),
+	('client3@mail.ru');
 
+insert into payment (payment_time, amount, client_id) values
+	((now() - '1 month'::interval), 10, 1),
+	((now() - '2 month'::interval), 11, 2),
+	((now() - '3 month'::interval), 12, 3);
 
 
+table client;
+table payment;
 
+select email from client
+join payment using(client_id)
+where payment_time::date + interval '1 month' = current_date
+order by email
 
+-- -----------------------------------------------------------------
+-- 11.39 LEFT И RIGHT OUTER JOIN
+
+table species;
+table genus;
+
+select species_name вид, genus_name род 
+from species s left join genus g using(genus_id)
+order by species_name;
+
+-- -----------------------------------------------------------------
+-- 11.40 FULL OUTER JOIN
 
+select species_name вид, genus_name род
+from species s full join genus g using(genus_id)
+order by species_name;