Отчёт по лабораторной работе 1 Ознакомление с основами работы в среде Postgresql по дисциплине Базы данных
Скачать 176.18 Kb.
|
МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ ФЕДЕРАЛЬНОЕ государственное БЮДЖЕТНОЕ образовательное учреждение высшего образования «НОВОСИБИРСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ» __________________________________________________________________ Факультет автоматики и вычислительной техники Кафедра вычислительной техники ОТЧЁТ по лабораторной работе №1 «Ознакомление с основами работы в среде PostgreSQL» по дисциплине: «Базы данных» Вариант №7 Выполнил:Преподаватель: студент гр. АВТ-018 Булатов А. Д. Абдыкадыров Э.А.______________ (оценка, подпись) Новосибирск 2022г. Цель работыИзучить базовые операции по работе с базой данных. Изучить синтаксис команд. Приобрести навыки создания баз данных, создания, заполнения и модификации таблиц в PostgreSQL. ЗаданиеСоздать и заполнить базу данных своего варианта в PostgreSQL. Таблицы (минимум по 10 записей в каждой) связать между собой полями идентификаторов. С помощью команд интерактивного терминала psql просмотреть структуру базы данных, структуру таблиц, просмотреть данные в них, изменить структуру таблиц, добавить столбцы, добавить данные, создать столбцы с пользовательскими типами данных. Предусмотреть наличие таблиц-справочников и таблиц, использующих справочники. Вариант 7: Создать и заполнить базу данных для учета работы типографии, состоящую из пяти таблиц. Первая таблица должна содержать поля: идентификатор продукции, идентификатор типа продукции (например, этикетка, коробка, блокнот и т.п.), идентификатор материала, количество, стоимость заказа и другие поля при необходимости. Вторая: идентификатор заказчика, наименование заказчика, идентификатор города, где находится заказчик, способ расчета (наличный, безналичный) и другие поля при необходимости. Третья: идентификатор материала, тип используемого материала, количество материала, стоимость расходных материалов и другие поля при необходимости. Четвертая: справочник городов. Пятая: справочник типов продукции. На основании созданных таблиц создать таблицу, содержащую, например, поля: наименование заказчика, город, где находится заказчик, тип продукции, тип используемого материала, стоимость заказа. Ход работы
Создание базы и подключение к ней. Для создания базы в PostgreSQL используется команда create database. Синтаксис: CREATE DATABASE имя_базы; Для подключения к БД используется команда \c. Синтаксис: \c имя_базы; Результаты выполнения: Создание таблиц. Для создания таблицы также используется команда create table. У этой команды существует много вариантов, и мы рассмотрим лишь основные ее параметры Синтаксис: CREATE TABLE таблица [( имя_поля тип_поля[(размерность)] [....])] [AS запрос]; Важным параметром является запрос. Данный параметр позволяет создать новую таблицу на основе данных, полученных от команды SELECT. Результаты выполнения: Редактирование таблицы Для редактирования таблицы используется команда alter table. У нее много вариантов, однако нам интересны лишь варианты, позволяющие добавлять и удалять колонки Синтаксис добавления колонки: ALTER TABLE ADD имя тип[(размерность)]; Синтаксис удаления колонки ALTER TABLE DROP имя; Результаты выполнения: Добавление данных. Для добавления данных используется команда insert. Синтаксис: INSERT INTO таблица [(имя_поля [...])] VALUES (значение [...]); Параметр имя_поля позволяет явно указать поля, для которых задаются значения. Результаты выполнения: Объединение таблиц Для объединения таблиц создается новая таблица с помощью команды create table с использованием секции as. В этой секции указывается запрос, объединяющий таблицы с помощью параметра left join. Синтаксис команды select для такой операции приведен ниже. Синтаксис: FROM таблица1 [ LEFT | RIGHT ] JOIN таблица2 ON таблица1.поле1 оператор_сравнения таблица2.поле2 Операции LEFT JOIN и RIGHT JOIN состоят из следующих элементов:
Результаты выполнения: Выводы.В ходе работы создана учебная база данных, состоящая из 5 таблиц. Получены базовые знания по использованию основных команд терминала PostgreSQL, созданию баз данных и таблиц, добавлению, удалению и редактированию данных, добавлению и удалению полей таблицы, объединению таблиц, формированию запросов. Кроме того, изучены основные типы данных, применяемы при создании таблиц в PostgreSQL. Приложение.create database dblabs; \c dblabs; CREATE SCHEMA lab1v7; CREATE TABLE lab1v7.product_type (id SERIAL PRIMARY KEY, name_product VARCHAR NOT NULL); CREATE TABLE lab1v7.material (id SERIAL PRIMARY KEY, title VARCHAR NOT NULL, amount INT NOT NULL, order_cost REAL NOT NULL); CREATE TABLE lab1v7.cities (id SERIAL PRIMARY KEY, name_city VARCHAR NOT NULL); CREATE TABLE lab1v7.order (id SERIAL PRIMARY KEY, product_id INT NOT NULL, product_type_id INT NOT NULL, material_id INT NOT NULL, amount INT NOT NULL, order_price REAL NOT NULL, FOREIGN KEY (product_type_id) REFERENCES lab1v7.product_type(id), FOREIGN KEY (material_id) REFERENCES lab1v7.material(id)); CREATE TABLE lab1v7.order_details (order_id INT PRIMARY KEY, city_id INT NOT NULL, customer_id INT NOT NULL, customer_name VARCHAR NOT NULL, FOREIGN KEY (order_id) REFERENCES lab1v7.order(id), FOREIGN KEY (city_id) REFERENCES lab1v7.cities(id)); INSERT INTO lab1v7.product_type(name_product) values('box'); INSERT INTO lab1v7.product_type(name_product) values('label'); INSERT INTO lab1v7.product_type(name_product) values('label'); INSERT INTO lab1v7.product_type(name_product) values('notepad'); INSERT INTO lab1v7.product_type(name_product) values('laptop'); INSERT INTO lab1v7.product_type(name_product) values('brochure'); INSERT INTO lab1v7.product_type(name_product) values('note'); INSERT INTO lab1v7.cities(name_city) values('Oslo'); INSERT INTO lab1v7.cities(name_city) values('Moscow'); INSERT INTO lab1v7.cities(name_city) values('Novosibirsk'); INSERT INTO lab1v7.cities(name_city) values('Omsk'); INSERT INTO lab1v7.cities(name_city) values('Tomsk'); INSERT INTO lab1v7.cities(name_city) values('Saint Petersburg'); INSERT INTO lab1v7.cities(name_city) values('Seoul'); INSERT INTO lab1v7.cities(name_city) values('Berlin'); INSERT INTO lab1v7.cities(name_city) values('Stockholm'); INSERT INTO lab1v7.cities(name_city) values('Tirion'); INSERT INTO lab1v7.cities(name_city) values('Kiyv'); INSERT INTO lab1v7.material(title, amount, order_cost) values('paper', 312, 2107); INSERT INTO lab1v7.material(title, amount, order_cost) values('box', 573, 3009); INSERT INTO lab1v7.material(title, amount, order_cost) values('paint', 968, 1005); INSERT INTO lab1v7.material(title, amount, order_cost) values('duct tape', 95, 958); INSERT INTO lab1v7.material(title, amount, order_cost) values('plastiс', 684, 987); INSERT INTO lab1v7.material(title, amount, order_cost) values('metal', 309, 5600); INSERT INTO lab1v7.material(title, amount, order_cost) values('offset paper', 862, 9852); insert into lab1v7.order (product_id, product_type_id, material_id, amount, order_price) values(1, 2, 2, 87, 8469); insert into lab1v7.order (product_id, product_type_id, material_id, amount, order_price) values(2, 5, 5, 49, 2946); insert into lab1v7.order (product_id, product_type_id, material_id, amount, order_price) values(2, 5, 3, 49, 2946); insert into lab1v7.order (product_id, product_type_id, material_id, amount, order_price) values(3, 8, 6, 85, 9411); insert into lab1v7.order (product_id, product_type_id, material_id, amount, order_price) values(3, 2, 6, 85, 9411); insert into lab1v7.order (product_id, product_type_id, material_id, amount, order_price) values(4, 1, 14, 16, 3210); insert into lab1v7.order (product_id, product_type_id, material_id, amount, order_price) values(4, 1, 6, 16, 3210); insert into lab1v7.order (product_id, product_type_id, material_id, amount, order_price) values(5, 6, 8, 91, 1234); insert into lab1v7.order (product_id, product_type_id, material_id, amount, order_price) values(6, 2, 4, 31, 8246); INSERT INTO lab1v7.order_details (order_id, city_id, customer_id, customer_name) values(1, 3, 2, 'Lil Wayne'); INSERT INTO lab1v7.order_details (order_id, city_id, customer_id, customer_name) values(4, 2, 1, 'Lil Skies'); INSERT INTO lab1v7.order_details (order_id, city_id, customer_id, customer_name) values(6, 5, 4, 'Aragorn II was the son of Arathorn II'); INSERT INTO lab1v7.order_details (order_id, city_id, customer_id, customer_name) values(8, 7, 3, 'Vadim'); INSERT INTO lab1v7.order_details (order_id, city_id, customer_id, customer_name) values(10, 3, 7, 'Max'); INSERT INTO lab1v7.order_details (order_id, city_id, customer_id, customer_name) values(11, 8, 10, 'Turis'); INSERT INTO lab1v7.order_details (order_id, city_id, customer_id, customer_name) values(14, 2, 8, 'JoJo'); CREATE TABLE lab1v7.mix AS (SELECT "order".id AS "order_id", "details".customer_name AS "customer_name","cities".name_city AS "customer_city","product_type".name_product AS "product_type", "material".title AS "material_type", "order".order_price AS "order_price" FROM lab1v7.order AS "order" LEFT JOIN LAB1v7.order_details AS "details" ON "order".id = "details".order_id LEFT JOIN lab1v7.product_type AS "product_type" ON "order".product_type_id = "product_type".id LEFT JOIN lab1v7.material AS "material" ON "order".material_id = "material".id LEFT JOIN lab1v7.cities AS "cities" ON "details".city_id = "cities".id); |