dm 1 month ago
parent
commit
63907b538b

+ 12 - 41
.obsidian/workspace.json

@@ -7,50 +7,21 @@
         "id": "d32e90214846329f",
         "type": "tabs",
         "children": [
-          {
-            "id": "2004fde09cb75114",
-            "type": "leaf",
-            "state": {
-              "type": "markdown",
-              "state": {
-                "file": "todo/Тренировки и занятия.md",
-                "mode": "source",
-                "source": false
-              },
-              "icon": "lucide-file",
-              "title": "Тренировки и занятия"
-            }
-          },
           {
             "id": "b62f3271b7105629",
             "type": "leaf",
             "state": {
               "type": "markdown",
               "state": {
-                "file": "Python/venv.md",
+                "file": "hardcore web development/11. SQL/Сортировка данных.md",
                 "mode": "source",
                 "source": false
               },
               "icon": "lucide-file",
-              "title": "venv"
-            }
-          },
-          {
-            "id": "49b152d5fdfecbd4",
-            "type": "leaf",
-            "state": {
-              "type": "markdown",
-              "state": {
-                "file": "English/Text 6.md",
-                "mode": "source",
-                "source": false
-              },
-              "icon": "lucide-file",
-              "title": "Text 6"
+              "title": "Сортировка данных"
             }
           }
-        ],
-        "currentTab": 2
+        ]
       }
     ],
     "direction": "vertical"
@@ -180,16 +151,21 @@
       "markdown-importer:Open format converter": false
     }
   },
-  "active": "49b152d5fdfecbd4",
+  "active": "b62f3271b7105629",
   "lastOpenFiles": [
-    "link.md",
-    "Python/venv.md",
+    "hardcore web development/11. SQL/Создание таблиц.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/NULL, coalecse.md",
     "todo/Тренировки и занятия.md",
+    "Python/venv.md",
+    "English/Text 6.md",
+    "link.md",
     "todo/Разное.md",
     "todo/Задачи по направлениям.md",
     "English/homework 2.md",
     "English/Homework.md",
-    "English/Text 6.md",
     "Python/function основное.md",
     "English/img/15-9.JPEG",
     "English/img/15-8.JPEG",
@@ -211,11 +187,6 @@
     "English/img/13-4.JPEG.~tmp",
     "English/img/13-8.JPEG",
     "ROTEK/BT_6714.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/NULL, coalecse.md",
     "network/ethernet.md",
     "Кодинг.md",
     "common.md",

+ 18 - 239
docs/Script-1.sql

@@ -100,245 +100,24 @@ order by a, b desc nulls last;
 table genus;
 table species;
 
-insert into species (species_id, species_name, genus_id, description, average_length, average_weight, primary_color) values (
 
-), (
-);
+select * from species 
+order by species_name, description 
+limit 10 offset 10;
+
+
+select species_id, species_name, primary_color from species where primary_color ilike '%бел%'
+order by species_name
+limit 5;
+
+select 'sadfs' || 'sadfasdf' || now() as message;
+
+drop schema if exists tests cascade;
+create schema tests;
+
+
+select format('Птичка: %s', species_name) as "птичка" from species
+order by species_name;
+
 
-insert into species (species_name, genus_id, description, average_length, average_weight, primary_color) values 
-('Большая синица',
-1,
-'Обычная птица из семейства синицевых, обитающая в лесах и садах.',
-14,
-18,
-'жёлтый'),
-('Синица лазоревка',
-1,
-'Маленькая яркая птица из семейства синицевых.',
-12,
-11,
-'голубой и жёлтый'),
-('Синица обыкновенная',
-1,
-'Распространённый вид синиц, обитающий в лесах и парках.',
-13,
-14,
-'зеленоватый'),
-('Гаичка болотная',
-2,
-'Маленькая птица из семейства синицевых, обитающая в болотистых районах.',
-12,
-13,
-'серый'),
-('Гаичка буроголовая',
-2,
-'Маленькая птица с коричневой головой.',
-11,
-12,
-'коричневый и серый'),
-('Гаичка черноголовая',
-2,
-'Маленькая птица с черной головой.',
-10,
-11,
-'чёрный и серый'),
-('Ворон обыкновенный',
-3,
-'Крупная птица из семейства врановых, обитающая в различных средах обитания.',
-64,
-1500,
-'чёрный'),
-('Грач',
-3,
-'Птица из семейства врановых с характерным внешним видом.',
-46,
-400,
-'чёрный'),
-('Клушица',
-3,
-'Птица из семейства врановых, обитающая в горах.',
-60,
-1200,
-'чёрный'),
-('Сорока обыкновенная',
-4,
-'Птица из семейства врановых с характерной черно-белой окраской.',
-45,
-200,
-'чёрный и белый'),
-('Сорока чернокрылая',
-4,
-'Птица с черными крыльями и белым телом.',
-44,
-190,
-'чёрный и белый'),
-('Сорока голубая',
-4,
-'Птица с голубыми крыльями и хвостом.',
-43,
-180,
-'голубой и белый'),
-('Дрозд рябинник',
-5,
-'Певчая птица из семейства дроздовых, обитающая в лесах и садах.',
-25,
-100,
-'коричневый'),
-('Дрозд певчий',
-5,
-'Певчая птица с мелодичным голосом.',
-23,
-90,
-'коричневый и белый'),
-('Дрозд черный',
-5,
-'Птица с черным оперением и мелодичным пением.',
-24,
-95,
-'чёрный'),
-('Дрозд белобровик',
-5,
-'Птица с белыми бровями и ярким оперением.',
-22,
-85,
-'коричневый и белый'),
-('Дрозд пересмешник',
-5,
-'Птица, способная имитировать звуки других птиц.',
-26,
-110,
-'серый и коричневый'),
-('Синица белая',
-1,
-'Белая синица, обитающая в северных регионах.',
-15,
-20,
-'белый и серый'),
-('Синица сибирская',
-1,
-'Птица, обитающая в Сибири, с ярким оперением.',
-16,
-21,
-'жёлтый и зелёный'),
-('Синица черноголовая',
-1,
-'Синица с черной головой и белыми щеками.',
-14,
-19,
-'чёрный и белый'),
-('Гаичка хохлатая',
-2,
-'Гаичка с характерным хохолком на голове.',
-12,
-14,
-'серый и чёрный'),
-('Гаичка горная',
-2,
-'Птица, обитающая в горных районах.',
-11,
-13,
-'коричневый и серый'),
-('Гаичка рыжеголовая',
-2,
-'Гаичка с рыжей головой и серым телом.',
-13,
-15,
-'рыжий и серый'),
-('Ворон пустынный',
-3,
-'Ворон, обитающий в пустынях.',
-62,
-1400,
-'чёрный'),
-('Ворон северный',
-3,
-'Ворон, обитающий в северных регионах.',
-63,
-1450,
-'чёрный'),
-('Ворон лесной',
-3,
-'Ворон, предпочитающий лесные районы.',
-61,
-1350,
-'чёрный'),
-('Сорока зеленая',
-4,
-'Сорока с зеленым оттенком в оперении.',
-46,
-210,
-'зелёный и белый'),
-('Сорока крапчатая',
-4,
-'Сорока с крапчатым оперением.',
-44,
-190,
-'чёрный и белый'),
-('Сорока длиннохвостая',
-4,
-'Сорока с длинным хвостом.',
-47,
-220,
-'чёрный и белый'),
-('Дрозд лесной',
-5,
-'Дрозд, предпочитающий лесные районы.',
-25,
-100,
-'коричневый'),
-('Дрозд полевой',
-5,
-'Дрозд, обитающий на полях и лугах.',
-24,
-95,
-'коричневый и белый'),
-('Дрозд луговой',
-5,
-'Дрозд, предпочитающий луговые районы.',
-23,
-90,
-'коричневый'),
-('Дрозд болотный',
-5,
-'Дрозд, обитающий в болотистых районах.',
-26,
-110,
-'серый и коричневый'),
-('Дрозд красногрудый',
-5,
-'Дрозд с ярко-красной грудью.',
-27,
-115,
-'красный и коричневый'),
-('Синица пестрая',
-1,
-'Синица с пестрым оперением.',
-14,
-18,
-'жёлтый и чёрный'),
-('Синица зелёная',
-1,
-'Синица с зелёным оттенком в оперении.',
-15,
-20,
-'зелёный и жёлтый'),
-('Синица красноголовая',
-1,
-'Синица с красной головой и серым телом.',
-14,
-19,
-'красный и серый'),
-('Гаичка зеленоголовая',
-2,
-'Гаичка с зеленым оттенком в оперении.',
-12,
-13,
-'зелёный и серый'),
-('Гаичка сероголовая',
-2,
-'Гаичка с серой головой и белым телом.',
-11,
-12,
-'серый и белый')
 
-);

+ 65 - 0
docs/Script.sql

@@ -122,3 +122,68 @@ from book
 order by name limit 10 offset 30;
 
 table book;
+
+select count(*) from book;
+
+
+
+
+drop schema if exists tests cascade;
+create schema tests;
+
+drop table tests.book ;
+
+create table tests.author (
+	author_id bigint generated always as identity primary key,
+	name varchar(150) not null check (length(name) >= 3),
+	description text check (length(description) >= 30)
+);
+
+create table tests.book_category (
+	category_id int generated always as identity primary key,
+	name varchar(150) not null check (length(name) >= 2)
+);
+
+create table tests.book (
+	book_id bigint generated always as identity primary key,
+	name varchar(255) not null check (length(name) >= 2),
+	-- тут важно! Добавлен ON DELETE CASCADE
+	author_id bigint not null references tests.author(author_id) on delete cascade,
+	description text check (length(description) >= 20),
+	cover varchar(255),
+	category_id int not null references tests.book_category(category_id)
+);
+
+
+insert into tests.author overriding system VALUE select * from public.author;
+insert into tests.book_category overriding system VALUE select * from public.book_category;
+insert into tests.book overriding system VALUE select * from public.book;
+
+select author_id from tests.author where name='Михаил Шолохов';
+delete from tests.author where name='Михаил Шолохов';
+select * from tests.book where author_id = 1;
+
+select * from tests.book;
+
+select * from tests.author;
+
+
+--- Создами временную таблицу
+create temp table books_with_isbn (
+	book_id bigint generated always as identity primary key,
+	name varchar(255),
+	isbn char(17) unique
+);
+
+insert into books_with_isbn(name, isbn) values(
+	'Тихий Доннн', '978-5-389-16579'
+);
+
+--- При возникновении конфликта isbn обновить запись и
+--- взять имя из новой записи
+insert into books_with_isbn (name, isbn) values (
+	'Тихий Дон', '978-5-389-16579'
+) on conflict(isbn) do update
+set name = excluded.name;
+
+table books_with_isbn;

+ 250 - 0
hardcore web development/11. SQL/Задание.md

@@ -86,3 +86,253 @@
 </city>
 </cities>
 ```
+
+~={yellow}Пагинация=~
+
+Напиши запрос, который вернёт птиц для второй страницы. Нумерация страниц начинается с единицы, конечно, как все привыкли на веб-сайтах.
+
+```sql
+select * from species 
+order by species_name, description 
+limit 10 offset 10;
+```
+
+Пополнение базы данных птиц
+```sql
+--- Наполняем базу данных птиц
+insert into species (species_name, genus_id, description, average_length, average_weight, primary_color) values 
+('Большая синица',
+1,
+'Обычная птица из семейства синицевых, обитающая в лесах и садах.',
+14,
+18,
+'жёлтый'),
+('Синица лазоревка',
+1,
+'Маленькая яркая птица из семейства синицевых.',
+12,
+11,
+'голубой и жёлтый'),
+('Синица обыкновенная',
+1,
+'Распространённый вид синиц, обитающий в лесах и парках.',
+13,
+14,
+'зеленоватый'),
+('Гаичка болотная',
+2,
+'Маленькая птица из семейства синицевых, обитающая в болотистых районах.',
+12,
+13,
+'серый'),
+('Гаичка буроголовая',
+2,
+'Маленькая птица с коричневой головой.',
+11,
+12,
+'коричневый и серый'),
+('Гаичка черноголовая',
+2,
+'Маленькая птица с черной головой.',
+10,
+11,
+'чёрный и серый'),
+('Ворон обыкновенный',
+3,
+'Крупная птица из семейства врановых, обитающая в различных средах обитания.',
+64,
+1500,
+'чёрный'),
+('Грач',
+3,
+'Птица из семейства врановых с характерным внешним видом.',
+46,
+400,
+'чёрный'),
+('Клушица',
+3,
+'Птица из семейства врановых, обитающая в горах.',
+60,
+1200,
+'чёрный'),
+('Сорока обыкновенная',
+4,
+'Птица из семейства врановых с характерной черно-белой окраской.',
+45,
+200,
+'чёрный и белый'),
+('Сорока чернокрылая',
+4,
+'Птица с черными крыльями и белым телом.',
+44,
+190,
+'чёрный и белый'),
+('Сорока голубая',
+4,
+'Птица с голубыми крыльями и хвостом.',
+43,
+180,
+'голубой и белый'),
+('Дрозд рябинник',
+5,
+'Певчая птица из семейства дроздовых, обитающая в лесах и садах.',
+25,
+100,
+'коричневый'),
+('Дрозд певчий',
+5,
+'Певчая птица с мелодичным голосом.',
+23,
+90,
+'коричневый и белый'),
+('Дрозд черный',
+5,
+'Птица с черным оперением и мелодичным пением.',
+24,
+95,
+'чёрный'),
+('Дрозд белобровик',
+5,
+'Птица с белыми бровями и ярким оперением.',
+22,
+85,
+'коричневый и белый'),
+('Дрозд пересмешник',
+5,
+'Птица, способная имитировать звуки других птиц.',
+26,
+110,
+'серый и коричневый'),
+('Синица белая',
+1,
+'Белая синица, обитающая в северных регионах.',
+15,
+20,
+'белый и серый'),
+('Синица сибирская',
+1,
+'Птица, обитающая в Сибири, с ярким оперением.',
+16,
+21,
+'жёлтый и зелёный'),
+('Синица черноголовая',
+1,
+'Синица с черной головой и белыми щеками.',
+14,
+19,
+'чёрный и белый'),
+('Гаичка хохлатая',
+2,
+'Гаичка с характерным хохолком на голове.',
+12,
+14,
+'серый и чёрный'),
+('Гаичка горная',
+2,
+'Птица, обитающая в горных районах.',
+11,
+13,
+'коричневый и серый'),
+('Гаичка рыжеголовая',
+2,
+'Гаичка с рыжей головой и серым телом.',
+13,
+15,
+'рыжий и серый'),
+('Ворон пустынный',
+3,
+'Ворон, обитающий в пустынях.',
+62,
+1400,
+'чёрный'),
+('Ворон северный',
+3,
+'Ворон, обитающий в северных регионах.',
+63,
+1450,
+'чёрный'),
+('Ворон лесной',
+3,
+'Ворон, предпочитающий лесные районы.',
+61,
+1350,
+'чёрный'),
+('Сорока зеленая',
+4,
+'Сорока с зеленым оттенком в оперении.',
+46,
+210,
+'зелёный и белый'),
+('Сорока крапчатая',
+4,
+'Сорока с крапчатым оперением.',
+44,
+190,
+'чёрный и белый'),
+('Сорока длиннохвостая',
+4,
+'Сорока с длинным хвостом.',
+47,
+220,
+'чёрный и белый'),
+('Дрозд лесной',
+5,
+'Дрозд, предпочитающий лесные районы.',
+25,
+100,
+'коричневый'),
+('Дрозд полевой',
+5,
+'Дрозд, обитающий на полях и лугах.',
+24,
+95,
+'коричневый и белый'),
+('Дрозд луговой',
+5,
+'Дрозд, предпочитающий луговые районы.',
+23,
+90,
+'коричневый'),
+('Дрозд болотный',
+5,
+'Дрозд, обитающий в болотистых районах.',
+26,
+110,
+'серый и коричневый'),
+('Дрозд красногрудый',
+5,
+'Дрозд с ярко-красной грудью.',
+27,
+115,
+'красный и коричневый'),
+('Синица пестрая',
+1,
+'Синица с пестрым оперением.',
+14,
+18,
+'жёлтый и чёрный'),
+('Синица зелёная',
+1,
+'Синица с зелёным оттенком в оперении.',
+15,
+20,
+'зелёный и жёлтый'),
+('Синица красноголовая',
+1,
+'Синица с красной головой и серым телом.',
+14,
+19,
+'красный и серый'),
+('Гаичка зеленоголовая',
+2,
+'Гаичка с зеленым оттенком в оперении.',
+12,
+13,
+'зелёный и серый'),
+('Гаичка сероголовая',
+2,
+'Гаичка с серой головой и белым телом.',
+11,
+12,
+'серый и белый');
+```

+ 1 - 1
hardcore web development/11. SQL/Создание таблиц.md

@@ -162,7 +162,7 @@ select description from (
 create view book_with_author as
 select book.name, author.name from book join author using (author_id);
 
--- Выбор из вьшки
+-- Выбор из вьюшки
 select * from book_with_author
 
 -- Выбор из функции

+ 91 - 237
hardcore web development/11. SQL/Сортировка данных.md

@@ -93,241 +93,95 @@ from book
 order by name limit 10 offset 10;
 ```
 
+~={yellow}Изменение данных в базе=~
+
+```sql
+--- Изменить описание
+update author
+set description='Французский писатель, классик приключенческой литературы, один из основоположников жанра научной фантастики.'
+where name='Жюль Верн';
+
+select description from author where name='Жюл
+```
+
+```sql
+--- Дополнить описание
+update author
+set description=description || ' И человек хороший. Скорее всего.'
+where name='Лусиану Рамальо';
+
+select description from author where name='Лусиану Рамальо';
+```
+
+```sql
+--- Удаление не будет возможно если на эту запись ссылаются другие записи
+delete from author where name='какой-то автор';
+
+--- Но можно удалить запись вместе со всеми записями, которые на нее ссылются
+
+--- Для начала создадим новую схему
+drop schema if exists tests cascade;
+create schema tests
+
+create table tests.author (
+	author_id bigint generated always as identity primary key,
+	name varchar(150) not null check (length(name) >= 3),
+	description text check (length(description) >= 30)
+);
+
+create table tests.book_category (
+	category_id int generated always as identity primary key,
+	name varchar(150) not null check (length(name) >= 2)
+);
+
+create table tests.book (
+	book_id bigint generated always as identity primary key,
+	name varchar(255) not null check (length(name) >= 2),
+	-- тут важно! Добавлен ON DELETE CASCADE
+	author_id bigint not null references tests.author(author_id) on delete cascade,
+	description text check (length(description) >= 20),
+	cover varchar(255),
+	category_id int not null references tests.book_category(category_id)
+);
+
+--- При удалении автора удалятся и его книги
+delete from tests.author where name='Михаил Шолохов';
+
+```
+
+~={yellow}Очистка таблицы. Быстрый способ.=~
+
+```sql
+truncate tabel book;
+
+--- Медленный способ
+delete from book where true;
+```
+
+~={yellow}Обновление записи=~
+
 ```sql
---- Наполняем базу данных птиц
-insert into species (species_name, genus_id, description, average_length, average_weight, primary_color) values 
-('Большая синица',
-1,
-'Обычная птица из семейства синицевых, обитающая в лесах и садах.',
-14,
-18,
-'жёлтый'),
-('Синица лазоревка',
-1,
-'Маленькая яркая птица из семейства синицевых.',
-12,
-11,
-'голубой и жёлтый'),
-('Синица обыкновенная',
-1,
-'Распространённый вид синиц, обитающий в лесах и парках.',
-13,
-14,
-'зеленоватый'),
-('Гаичка болотная',
-2,
-'Маленькая птица из семейства синицевых, обитающая в болотистых районах.',
-12,
-13,
-'серый'),
-('Гаичка буроголовая',
-2,
-'Маленькая птица с коричневой головой.',
-11,
-12,
-'коричневый и серый'),
-('Гаичка черноголовая',
-2,
-'Маленькая птица с черной головой.',
-10,
-11,
-'чёрный и серый'),
-('Ворон обыкновенный',
-3,
-'Крупная птица из семейства врановых, обитающая в различных средах обитания.',
-64,
-1500,
-'чёрный'),
-('Грач',
-3,
-'Птица из семейства врановых с характерным внешним видом.',
-46,
-400,
-'чёрный'),
-('Клушица',
-3,
-'Птица из семейства врановых, обитающая в горах.',
-60,
-1200,
-'чёрный'),
-('Сорока обыкновенная',
-4,
-'Птица из семейства врановых с характерной черно-белой окраской.',
-45,
-200,
-'чёрный и белый'),
-('Сорока чернокрылая',
-4,
-'Птица с черными крыльями и белым телом.',
-44,
-190,
-'чёрный и белый'),
-('Сорока голубая',
-4,
-'Птица с голубыми крыльями и хвостом.',
-43,
-180,
-'голубой и белый'),
-('Дрозд рябинник',
-5,
-'Певчая птица из семейства дроздовых, обитающая в лесах и садах.',
-25,
-100,
-'коричневый'),
-('Дрозд певчий',
-5,
-'Певчая птица с мелодичным голосом.',
-23,
-90,
-'коричневый и белый'),
-('Дрозд черный',
-5,
-'Птица с черным оперением и мелодичным пением.',
-24,
-95,
-'чёрный'),
-('Дрозд белобровик',
-5,
-'Птица с белыми бровями и ярким оперением.',
-22,
-85,
-'коричневый и белый'),
-('Дрозд пересмешник',
-5,
-'Птица, способная имитировать звуки других птиц.',
-26,
-110,
-'серый и коричневый'),
-('Синица белая',
-1,
-'Белая синица, обитающая в северных регионах.',
-15,
-20,
-'белый и серый'),
-('Синица сибирская',
-1,
-'Птица, обитающая в Сибири, с ярким оперением.',
-16,
-21,
-'жёлтый и зелёный'),
-('Синица черноголовая',
-1,
-'Синица с черной головой и белыми щеками.',
-14,
-19,
-'чёрный и белый'),
-('Гаичка хохлатая',
-2,
-'Гаичка с характерным хохолком на голове.',
-12,
-14,
-'серый и чёрный'),
-('Гаичка горная',
-2,
-'Птица, обитающая в горных районах.',
-11,
-13,
-'коричневый и серый'),
-('Гаичка рыжеголовая',
-2,
-'Гаичка с рыжей головой и серым телом.',
-13,
-15,
-'рыжий и серый'),
-('Ворон пустынный',
-3,
-'Ворон, обитающий в пустынях.',
-62,
-1400,
-'чёрный'),
-('Ворон северный',
-3,
-'Ворон, обитающий в северных регионах.',
-63,
-1450,
-'чёрный'),
-('Ворон лесной',
-3,
-'Ворон, предпочитающий лесные районы.',
-61,
-1350,
-'чёрный'),
-('Сорока зеленая',
-4,
-'Сорока с зеленым оттенком в оперении.',
-46,
-210,
-'зелёный и белый'),
-('Сорока крапчатая',
-4,
-'Сорока с крапчатым оперением.',
-44,
-190,
-'чёрный и белый'),
-('Сорока длиннохвостая',
-4,
-'Сорока с длинным хвостом.',
-47,
-220,
-'чёрный и белый'),
-('Дрозд лесной',
-5,
-'Дрозд, предпочитающий лесные районы.',
-25,
-100,
-'коричневый'),
-('Дрозд полевой',
-5,
-'Дрозд, обитающий на полях и лугах.',
-24,
-95,
-'коричневый и белый'),
-('Дрозд луговой',
-5,
-'Дрозд, предпочитающий луговые районы.',
-23,
-90,
-'коричневый'),
-('Дрозд болотный',
-5,
-'Дрозд, обитающий в болотистых районах.',
-26,
-110,
-'серый и коричневый'),
-('Дрозд красногрудый',
-5,
-'Дрозд с ярко-красной грудью.',
-27,
-115,
-'красный и коричневый'),
-('Синица пестрая',
-1,
-'Синица с пестрым оперением.',
-14,
-18,
-'жёлтый и чёрный'),
-('Синица зелёная',
-1,
-'Синица с зелёным оттенком в оперении.',
-15,
-20,
-'зелёный и жёлтый'),
-('Синица красноголовая',
-1,
-'Синица с красной головой и серым телом.',
-14,
-19,
-'красный и серый'),
-('Гаичка зеленоголовая',
-2,
-'Гаичка с зеленым оттенком в оперении.',
-12,
-13,
-'зелёный и серый'),
-('Гаичка сероголовая',
-2,
-'Гаичка с серой головой и белым телом.',
-11,
-12,
-'серый и белый');
-```
+--- Создами временную таблицу
+create temp table books_with_isbn (
+	book_id bigint generated always as identity primary key,
+	name varchar(255),
+	isbn char(17) unique
+);
+
+insert into books_with_isbn(name, isbn) values(
+	'Тихий Доннн', '978-5-389-16579'
+);
+
+--- При возникновении конфликта isbn обновить запись и
+--- взять имя из новой записи
+insert into books_with_isbn (name, isbn) values (
+	'Тихий Дон', '978-5-389-16579'
+) on conflict(isbn) do update 
+set name = excluded.name; /*do nothing*/
+
+
+table books_with_isbn;
+```
+
+~={yellow}Форматированный вывод=~
+