insert into author (name, description) values ( 'Михаил Шолохов', 'Великий русский советский писатель, журналист и киносценарист.' ), ( 'Лусиану Рамальо', 'Автор замечательных книг по языку программирования Python.' ); insert into author (name) values ( 'Жюль Верн' ); insert into book_category (name) values ( 'Художественная литература' ), ( 'Литература по программированию' ); insert into book (name, author_id, description, cover, category_id) values ( 'Тихий Дон', 1, 'Одно из наиболее значительных, масштабных и талантливых произведений русскоязычной литературы, принесшее автору Нобелевскую премию.', 'https://cdn.rroom.io/17558b4d-59dd-4f8e-b2c7-51b0d7da5216.png', 1 ), ( 'Python. К вершинам мастерства', 2, 'Лучшая книга по углубленному изучению Python.', 'https://cdn.rroom.io/2bee8345-a535-4fe3-add9-8db804ea89ae.png', 2 ), ( 'Судьба человека', 1, 'Пронзительный рассказ о временах Великой Отечественной войны, одно из первых произведений советской литературы, в котором война показана правдиво и наглядною.', 'https://cdn.rroom.io/271755e5-046f-4842-85cf-4e22cb17b294.png', 1 ); -- Получение информации select * from author; select name, description from book; -- Alias select name as book_name, description from book; select upper(name) as book_name from book; show search_path; table book_category; select |/225; -- Фильтрация данных select * from author where author_id=1; select * from author where name='Михаил Шолохов' and author_id=200; -- Создание временной таблицы create temp table author_without_checks ( author_id bigint generated always as identity primary key, name varchar(150) not null, description text ); insert into author_without_checks (name) values ('какой-то автор'); select * from author_without_checks; select * from author; select * from book; -- Добавим данные в таблицу author insert into author (name, description) values ('Александр Пушкин', 'Русский поэт, драматург и прозаик, рассматривается как основоположник современного русского литературного языка.'), ('Александр Беляев', 'Русский писатель-фантаст, один из основоположников советской научно-фантастической литературы.'); insert into book (name, author_id, category_id) values ('Они сражались за Родину', 1, 1), ('Поднятая целина', 1, 1), ('Донские рассказы', 1, 1), ('Наука ненависти', 1, 1), ('Капитанская дочка', 4, 1), ('Руслан и Людмила', 4, 1), ('Евгений Онегин', 4, 1), ('Метель', 4, 1), ('Пиковая дама', 4, 1), ('Сказка о рыбаке и рыбке', 4, 1), ('Голова профессора Доуэля', 5, 1), ('Остров погибших кораблей', 5, 1), ('Последний человек из Атлантиды', 5, 1), ('Властелин мира', 5, 1), ('Человек-амфибия', 5, 1), ('Продавец воздуха', 5, 1), ('Ариэль', 5, 1), ('Светопреставление', 5, 1), ('Вечный хлеб', 5, 1), ('Золотая гора', 5, 1), ('Земля горит', 5, 1), ('Путешествие к центру Земли', 3, 1), ('Дети капитана Гранта', 3, 1), ('Двадцать тысяч льё под водой', 3, 1), ('Вокруг Луны', 3, 1), ('Вокруг света за 80 дней', 3, 1), ('Таинственный остров', 3, 1), ('Пятнадцатилетний капитан', 3, 1), ('Зелёный луч.', 3, 1), ('В стране мехов', 3, 1); select count(*) from book; select book_id, name, author_id 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;