Создание таблиц.md 4.6 KB

Создаем таблицу авторов:

create table 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 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_category(category_id)
);

Создание временной таблицы:

=> psql create temp table something (id serial, name text) 

-- Вставляем данные
=> insert into something (name) values ('hello')
=> insert into something (name) values ('draturi')

-- Получаем данные
=> select * from something;

~={cyan}Создание таблиц в базе bird из задания=~

create table family (
	family_id bigint generated always as identity primary key,
	family_name varchar(150) not null,
	description text
);

create table genus (
	genus_id bigint generated always as identity primary key,
	genus_name varchar(150) not null,
	description text,
	family_id bigint not null references family(family_id)
);

create table species (
	species_id bigint generated always as identity primary key,
	species_name varchar(150) not null,
	genus_id bigint not null references genus(genus_id),
	description text,
	average_length smallint not null,
	average_weight smallint not null,
	primary_color varchar(50) not null
);

~={yellow}Сохранение информации=~

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
);

~={yellow}Выбор информации=~

-- Вывод всей таблицы author
select * from author;

-- Другой способ получить всю таблицу
table author;

-- В таком запросе тоже можно писать сортировки
table author order by name desc limit 1;

select name, description from book;

-- Alias
select name as book_name, description from book;

-- Можно указать имя таблицы. И можно указать алиас таблицы
select b.name as book_name from book as b;

-- Можно указать имя базы данных и имя схемы
select name from rroom_db.public.book as b;

-- Преобразование к верхнему регистру
-- Без alias название колонки будет upper
select upper(name) as book_name from book;

-- Место где postgres ище схемы
show search_path;

-- Получить квадратный корень из числа 225
select |/225;