Индексы, ограничения и язык запросов в Postgres, страница 2

remont=# INSERT INTO predmet (vid,stoimost,id) VALUES ('chainik',1335,1);

INSERT 0 1

remont=# INSERT INTO zakazchik (fam,”name”,birthdate,address,id) VALUES ('Ivanov', ' Ivan ', '1976-04-12 ', ' Marksa 1, 15', 1);

INSERT 0 1

remont=> select * from zakaz;

   data_z   | kol_p | id

------------+-------+----

 2008-03-12 |     2 |  1

 2008-06-22 |     3 |  2

 2008-06-15 |     1 |  3

 2008-10-31 |     2 |  4

 2008-11-01 |     3 |  5

 2008-03-12 |     2 |  1

 2008-06-22 |     3 |  2

 2008-06-15 |     1 |  3

 2008-10-31 |     2 |  4

 2008-11-01 |     3 |  5

(10 rows)

remont=> select * from predmet;

        vid         | stoimost | id

--------------------+----------+----

 chainik            |     1335 |  1

 ytug               |      455 |  1

 ytug               |      567 |  2

 mp3                |     1500 |  2

 sapogi             |      200 |  2

 sapogi             |      250 |  3

 keys               |       50 |  4

 mp3                |      500 |  4

 telefon            |      600 |  5

 tv                 |     2600 |  5

 flesh              |      150 |  5

 chainik            |     1335 |  1

 ytug               |      455 |  1

 ytug               |      567 |  2

 mp3                |     1500 |  2

 sapogi             |      200 |  2

 sapogi             |      250 |  3

 keys               |       50 |  4

 mp3                |      500 |  4

 telefon            |      600 |  5

 tv                 |     2600 |  5

 flesh              |      150 |  5

remont=> select * from zakazchik;

   fam    | name | birthdate  |       adress       | id

----------+------+------------+--------------------+----

 Ivanov   | Ivan | 1976-04-12 | Marksa 1, 15       |  1

 Abalov   | Nick | 1986-06-27 | Bogatkova 51, 1    |  2

 Gluxova  | Anna | 1989-05-28 | Visotskogo 111, 45 |  3

 Pac      | Nick | 1970-07-29 | Lenina 41, 5       |  4

 Belousov | Mixa | 1990-05-27 | Truda 61, 123      |  5

(5 rows)

На основании созданных таблиц создать таблицу, содержащую поля: имя, фамилия, вид ремонтируемого предмета, дата, стоимость.

remont=# CREATE TABLE remontnaya AS (select t3.”name”, t3.fam, t1.vid, t2.data_z, t1.stoimost FROM predmet AS t1, zakaz AS t2, zakazchik AS t3 where t1.id = t2.id and t1.id = t3.id);

SELECT

remont=> select * from remontnaya;

 name |   fam    |   vid   |   data_z   | stoimost

------+----------+---------+------------+---------

 Ivan | Ivanov   | chainik | 2008-03-12 |     1335

 Ivan | Ivanov   | ytug    | 2008-03-12 |      455

 Nick | Abalov   | ytug    | 2008-06-22 |      567

 Nick | Abalov   | mp3     | 2008-06-22 |     1500

 Nick | Abalov   | sapogi  | 2008-06-22 |      200

 Anna | Gluxova  | sapogi  | 2008-06-15 |      250

 Nick | Pac      | keys    | 2008-10-31 |       50

 Nick | Pac      | mp3     | 2008-10-31 |      500

 Mixa | Belousov | telefon | 2008-11-01 |      600

 Mixa | Belousov | tv      | 2008-11-01 |     2600

 Mixa | Belousov | flesh   | 2008-11-01 |      150

 Ivan | Ivanov   | chainik | 2008-03-12 |     1335

 Ivan | Ivanov   | ytug    | 2008-03-12 |      455

 Nick | Abalov   | ytug    | 2008-06-22 |      567

 Nick | Abalov   | mp3     | 2008-06-22 |     1500

 Nick | Abalov   | sapogi  | 2008-06-22 |      200

 Anna | Gluxova  | sapogi  | 2008-06-15 |      250

 Nick | Pac      | keys    | 2008-10-31 |       50

 Nick | Pac      | mp3     | 2008-10-31 |      500

 Mixa | Belousov | telefon | 2008-11-01 |      600

 Mixa | Belousov | tv      | 2008-11-01 |     2600

 Mixa | Belousov | flesh   | 2008-11-01 |      150

(22 rows)

·  Создать транзакционный блок, в котором производится добавление в таблицы произвольных полей, создать несколько производных таблиц, просмотреть структуру измененных таблиц. Не завершая транзакции параллельно запустить еще одно окно терминала, подключиться к базе и попробовать добавить и удалить записи в таблицы. Сделать откат транзакций, просмотреть структуру таблиц.

remont=> begin;

BEGIN

remont=> alter table predmet add remontnaya int;

ALTER TABLE

remont=> \d predmet

          Table "public.predmet"

   Column   |       Type       | Modifiers

------------+------------------+-----------

 vid        | text             |

 stoimost   | double precision |

 id         | integer          |

 remontnaya | integer          |

Indexes:

    "predmet1" btree (vid)

remont=> rollback;

ROLLBACK

remont=> \d predmet

         Table "public.predmet"

  Column  |       Type       | Modifiers

----------+------------------+-----------

 vid      | text             |

 stoimost | double precision |

 id       | integer          |

Indexes:

    "predmet1" btree (vid)

Выводы

В ходе лабораторной работы был изучен  набор базовых операций по работе с базой данных и синтаксис используемых команд, приобретены навыки создания пользователей и баз данных, создания, заполнения и модификации таблиц, работы с транзакциями, выгрузки и загрузки баз данных в PostgreSQL.