-- ----------------------------------------------------------------- -- Создание таблиц -- Таблица авторов create table author ( author_id bigint generated always as identity primary key, name varchar(150) no null check (length(name) >= 3), description text check (length(description) >= 30) ); -- Таблица категорий книг create table book_category ( category_id int generated always as identity primary key, name varchar(150) not null check (length(name) >= 2) ); -- Таблица книг create table book ( book_id bigint generated always as identity primary key, name varchar(255) not null check (length(name) >= 2), author_id bigint not null references author(author_id), description text check (length(description) >= 30), cover varchar(255), category_id int not null references book_catefory(category_id) ); -- ----------------------------------------------------------------- -- Создание временных таблиц и вставка данных create temp table something (id serial, name text); insert into something (name) values('hello'); insert into something (name) values('dratuti'); -- ----------------------------------------------------------------- -- Редактирование таблиц alter table -- ----------------------------------------------------------------- -- Удаление таблиц drop table if exists author, book_category, book; -- ----------------------------------------------------------------- -- Вставка данных insert into author (name, description) values ( 'Михаил Шолохов', 'Великий русский советский писатель, журналист и киносценарист.' ), ( 'Лусиану Рамальо', 'Автор замечательных книг по языку программирования Python' ); -- ----------------------------------------------------------------- -- Выборка данных -- Выбрать все данные из таблицы. Так нельзя делать в prodaction коде. select * from author; table author order by name desc limit 1; select name as Имя, description as Описание from book; -- Преобразование к верхнему регистру select upper(name) as Имя, lower(description) as Описание from book; -- Можно сослаться на конретную таблицу через . -- Последовательность: база данных -> схема -> таблица select book.name as Имя from rroom_db.public.book; show search_path; -- ----------------------------------------------------------------- -- Выборка данных из других источников -- Выборка из подзапроса select description from ( select * from author where name="Михаил Шолохов" ); -- Выборка из вьюшки (заранее созданный запрос) -- Создание вьюшки create view book_with_author as select book.name as book_name, author.name as author_name from book join author using (autor_id); -- Выборка из вьюшки select * from book_with_author; -- Выборка из функции select num from generate_series(1, 10) num; -- от 1 до 10 включительно select d from generate_series('2023-01-01'::date, '2023-01-05'::date, '1 day'::interval) d; -- генерация серии дат -- Выборка из набора значений. Где t - виртуальная таблица -- select * from ( values (1, 'Алексей'), (2, 'Петр'), (3, 'Иннокентий') ) as t(id, name); -- Выборка из виртуальной таблицы только поля name select t.name from ( values (1, 'Алексей'), (2, 'Петр'), (3, 'Иннокентий') ) as t(id, name); -- ----------------------------------------------------------------- -- Заметки -- Остановился на 16 главе -- ----------------------------------------------------------------- -- Мусор select |/25;