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.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.