Министерство образования и науки Российской Федерации
Новосибирский государственный технический университет
Кафедра вычислительной техники
Лабораторная работа №5
по дисциплине «Базы данных»
Индексы, ограничения и язык запросов в Postgres.
Факультет: АВТ Преподаватель:
Группа: АМ-610 Менжулин С. А.
Вариант: 9
Студенты: Королевская В.Е.
Таратухин И.И.
Новосибирск, 2009
Изучить базовые операции по работе с базой данных. Изучить синтаксис команд. Приобрести навыки создания пользователей и баз данных, создания, заполнения и модификации таблиц, работы с транзакциями, выгрузки и загрузки баз данных в PostgreSQL.
Ознакомиться с теоретическими сведениями о возможностях создания пользователей и баз данных, использования транзакций в PostgreSQL. Создать нового пользователя и зайти под его именем. Создать и заполнить базу данных своего варианта. Таблицы (минимум по 5 записей в каждой) связать между собой полями идентификаторов. С помощью команд интерактивного терминала psql просмотреть структуру базы данных, структуру таблиц, просмотреть данные в них. Создать транзакционный блок, в котором производится добавление в таблицы произвольных полей, создать несколько производных таблиц, просмотреть структуру измененных таблиц. Не завершая транзакции параллельно запустить еще одно окно терминала, подключиться к базе и попробовать добавить и удалить записи в таблицы. Сделать откат транзакций, просмотреть структуру таблиц. Сохранить базу данных в файл. Удалить базу данных и восстановить ее из файла. Сохраненная база данных необходима для выполнения последующих работ.
Создать и заполнить базу данных для учета работы продуктового магазина, состоящую из трех таблиц. Первая таблица должна содержать поля: наименование товара, количество товара на складе, стоимость покупки (за единицу измерения). Вторая: наименование производителя, адрес. Третья: цена продажи, проданное количество товара. На основании созданных таблиц создать таблицу, содержащую поля: Наименование товара, наименование производителя, стоимость покупки, цена продажи.
· Создаем нового пользователя и заходим под его именем
C:\Users\Виталинка>psql -U postgres
Password for user postgres:
psql (8.4.2)
WARNING: Console code page (866) differs from Windows code page (1251)
8-bit characters might not work correctly. See psql reference
page "Notes for Windows users" for details.
Type "help" for help.
postgres=# create user lab01 with password 'postgres' createdb createuser valid until 'infinity';
CREATE ROLE
postgres=# \q
C:\Users\Виталинка>psql -U lab01
Password for user lab01:
psql: FATAL: database "lab01" does not exist
C:\Users\Виталинка>psql -U lab01 template1
Password for user lab01:
psql (8.4.2)
WARNING: Console code page (866) differs from Windows code page (1251)
8-bit characters might not work correctly. See psql reference
page "Notes for Windows users" for details.
Type "help" for help.
template1=# create database remont;
CREATE DATABASE
template1=# \q
C:\Users\Виталинка>psql -U lab01 remont
Password for user lab01:
psql (8.4.2)
WARNING: Console code page (866) differs from Windows code page (1251)
8-bit characters might not work correctly. See psql reference
page "Notes for Windows users" for details.
Type "help" for help.
remont=#
· Создать и заполнить базу данных ремонтной мастерской, состоящую из трех таблиц. Первая таблица должна содержать поля: дата заказа, количество ремонтируемых предметов.
remont=# CREATE TABLE zakaz
(
data_z date,
kol_p integer,
id integer
);
CREATE TABLE
remont=# \dt zakaz
List of relations
Schema | Name | Type | Owner
--------+-------+-------+-------
public | zakaz | table | lab01
(1 row)
Вторая: вид ремонтируемого предмета, стоимость ремонта.
remont=# CREATE TABLE predmet
( vid text,
stoimost double precision,
id integer
);
CREATE TABLE
remont=# \dt predmet
List of relations
Schema | Name | Type | Owner
--------+----------+-------+-------
public | predmet | table | lab01
(1 row)
Третья: имя, фамилия, дата рождения, адрес проживания.
remont=# CREATE TABLE zakazchik
(
fam character varying(30),
"name" character varying(20),
birthdate date,
adress text,
id integer
);
CREATE TABLE
remont=# \dt zakazchik
List of relations
Schema | Name | Type | Owner
--------+-----------+-------+-------
public | zakazchik | table | lab01
(1 row)
Заполнение базы данных
remont=# INSERT INTO zakaz (data_z,kol_p,id) VALUES ('2008-03-12',2,1);
INSERT 0 1
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.