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