Вы находитесь на странице: 1из 180

МИНОБРНАУКИ РОССИИ

Федеральное государственное бюджетное образовательное учреждение


высшего профессионального образования
«Пензенский государственный технологический университет»
(ПензГТУ)
Факультет информационных и образовательных технологий
Кафедра «Информационные технологии и системы»
Дисциплина «Управление данными»

КУРСОВОЙ ПРОЕКТ
на тему: «Разработка и проектирование базы данных интернет-магазина
по продаже цифровых ключей»

ПОЯСНИТЕЛЬНАЯ ЗАПИСКА
ПензГТУ 2.09.03.02.20.ПЗ

Выполнил: студент группы 19ИД1бп Третьяк Н.В.


Руководитель: ст. преподаватель кафедры ИТС Пискаев К.Ю.
Работа защищена с оценкой:___________________

Пенза, 2021 г.
Утверждаю

зав. каф. ИТС Михеев М.Ю.

«_____»_____________

ЗАДАНИЕ

на курсовой проект по дисциплине «Управление данными»

2
Студента Третьяка Н.В. Группа 19ИД1бп

Тема работы: «Разработка и проектирование базы данных интернет-


магазина по продаже цифровых ключей»

3
Исходные данные (технические требования на работу)

1. Назначение базы данных: хранение данных об играх, поставщиках, жанрах,


категориях и ценах на игры.

2. Состав и структура исходных данных: компьютерные игры, цифровые


ключи, названия категорий.

4
3. Перечень сущностей (может изменяться в процессе проектирования):
сущность user, сущность product, сущность order, сущность price_history, сущность
genres, сущность категории, сущность order_product, сущность поставка, сущность
статус заказа, сущность поставщик, сущность поставка продукта.

3. Содержание расчетной части: введение, анализ предметной области,


моделирование предметной области, создание и запуск базовых запросов SQL,

5
создание и запуск продвинутых запросов SQL, создание и использование
представлений, заключение, список литературы, приложения.

4. Графическая часть:

- схема БД (физическая) ( ___ лист(ов) формата А4);

- схема БД JetBrains DataGrip ( ___ лист(ов) формата А4);

6
5. Экспериментальная часть:

- разработка схемы БД c использованием Sparx Systems Enterprise Architeсt.

- составление и отладка запросов в JetBrains DataGrip 2020.

6. Срок выполнения работы по разделам:

1. Постановка задачи до
2. Разработка схемы БД до
3. Написание базовых запросов до
4. Написание продвинутых запросов
до
5. Оформление графической части до
6. Оформление пояснительной
записки до

Студент _________________________________ / __________ /

Задание получил «___» ________________ 202_г.

Руководитель ____________________________ / __________ /

Задание выдал «___» ________________ 202_г.

Дата защиты работы ___________________________

Студент _______________________________ / __________ /

Руководитель ___________________________ / ___________ /


Содержание
Введение...............................................................................................................6
1 АНАЛИЗ ПРЕДМЕТНОЙ ОБЛАСТИ............................................................8
1.1 Общие сведения.........................................................................................8
1.2 Выделение справочных и оперативных данных....................................8
1.3 Перечень хранимой информации: таблицы, поля, типы.......................9
1.4 Необходимые предполагаемые запросы к БД........................................11
1.5 Выводы по разделу....................................................................................11
2 МОДЕЛИРОВАНИЕ ПРЕДМЕТНОЙ ОБЛАСТИ........................................12
2.1 Общие сведения.........................................................................................12
2.2 Выделение сущностей, атрибутов, ключей, связей ..............................12
2.3 Проектирование диаграммы сущность-связь в EA................................14
2.4 Подготовка диаграммы сущность-связь к переносу из СУБД JetBrains
DataGrip 2020 в Enterprise Architect.........................................................................15
2.5 Создание БД и схемы в JetBrains DataGrip 2020. Перенос схемы в EA
.....................................................................................................................................17
2.6 Начальное заполнение БД .......................................................................19
2.7 Выводы по разделу....................................................................................19
3 СОЗДАНИЕ И ЗАПУСК БАЗОВЫХ ЗАПРОСОВ SQL ..............................20
3.1 Общие сведения.........................................................................................20
3.2 Запросы на выборку, заполнение, обновление данных и удаление
таблиц.........................................................................................................................20
3.3 Выводы по разделу....................................................................................22
4. СОЗДАНИЕ И ЗАПУСК ПРОДВИНУТЫХ ЗАПРОСОВ SQL..............23
4.1 Общие сведения.........................................................................................23
4.2 Создание и запуск продвинутых запросов SQL.....................................23
4.3 Выводы по разделу....................................................................................27
5. СОЗДАНИЕ И ИСПОЛЬЗОВАНИЕ ПРЕДСТАВЛЕНИЙ..........................28
5.1 Общие сведения.........................................................................................28
5.2 Создание, удаление и выборка данных из представлений базы данных
.....................................................................................................................................28

9
5.3 Выводы по разделу....................................................................................29
Заключение...........................................................................................................30
Список литературы..............................................................................................31
Приложение А. Схема базы данных..................................................................34
Приложение Б. SQL-код базы данных..............................................................36

10
Введение
База данных – это организованная структура, предназначенная для хранения
информации. С понятием базы данных тесно связано понятие системы
управления базой данных.
История цифровой дистрибуции берет свое начало в 1997 году. Первой
компанией, ставшей продавать игры при помощи интернета была компания

11
«Blizzard» при помощи своего лаунчера «Battle.net». Выпустив свой магазин
Близзард дали начало развитию цифровой дистрибуции игр в сети Интернет. На
момент 2021 года существует огромное множество онлайн-магазинов, продающих
игровые копии в виде цифровых ключей. Среди популярных в России можно
выделить:
 zaka-zaka.com – игровой интернет-магазин цифровых ключей;

12
 steambuy.com – аналог вышеупомянутого интернет-магазина;
 steampay.com – также является интернет-магазином по продаже
цифровых копий игр;
 gamazavr.ru – аналог вышеупомянутых интернет-магазинов;
 plati.ru – также занимается продажей цифровых ключей и аккаунтов.

13
Выбор данной темы для разработки является актуальным, так как спрос на
цифровые товары с каждым годом все больше и больше возрастает.
Цель курсового проекта – создание базы данных интернет-магазина по
продаже цифровых ключей.
В связи с поставленной целью необходимо решить следующие задачи:
 исследовать существующие сервисы цифровой дистрибуции и

14
выявить их достоинства и недостатки;
 произвести выделение необходимых таблиц и хранящихся в них
данных;
 спроектировать схему базы данных в Enterprise Architect;
 реализовать базу данных по разработанной схеме и заполнить ее
данными;
15
 составить перечень необходимых запросов к базе данных;
 протестировать созданную базу данных.
В первом разделе будет проведен анализ предметной области, в ходе
которого будут рассмотрены общие сведения о предметной области, выделены
справочные и оперативные данные, обозначен перечень хранимой информации,

16
выделены необходимые запросы к базе данных, а также подведены итоги о
проделанной работе.
В ходе составления второго раздела курсового проекта будет произведено
моделирование предметной области, выделены основные сущности и атрибуты,
распределены ключи и расставлены связи. Также будет спроектирована
диаграмма сущность-связь в Enterprise Architect, будет произведена подготовка

17
разработанной диаграммы для переноса ее из СУБД в Enterprise Architect. Далее
будет создана база данных и схема в СУБД и перенесена в Enterprise Architect.
Затем будет произведено начальное заполнение базы данных необходимыми
данными, также будут подведены итоги по всему разделу.
В третьем разделе курсового проекта будет произведено создание и запуск
базовых запросов, а именно будут выполнены запросы на выборку, заполнение,

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

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

20
1. АНАЛИЗ ПРЕДМЕТНОЙ ОБЛАСТИ
1.1 Общие сведения
Основной целью разрабатываемой базы данных является хранения данных
для интернет-магазина по продаже ключей компьютерных игр. В ассортименте
интернет-магазина цифровые ключи для всех популярных платформ, таких как:
Steam, Uplay, Origin, GOG, Epic Games и т.п. Целевой аудиторией интернет-

21
магазина являются геймеры всех возрастов. Использование базы данных и
автоматизированной системы для работы с базой данных существенно упростит
использование, а главное вся информация, касающаяся товаров в данном
магазине, будет храниться в одном месте.
Проанализировав предметную область, можно сказать, что разработка базы
данных для интернет-магазина актуальна. Целью разработки базы данных

22
интернет-магазина цифровых ключей является повышение качества и скорости
обслуживания клиентов.
1.2 Выделение справочных и оперативных данных
Таблицы БД делятся на два вида: оперативные и справочные. В справочных
таблицах хранится постоянная информация, которая не изменятся, а все операции,

23
связанные с ней, являются лишь чтением. Таблицы оперативных данных
постоянно изменяются.
В рамках пункта 1.2 была составлена таблица со справочными и
оперативными таблицами:
Таблица 1 – Справочные и оперативные таблицы:
Справочные таблицы Таблица «Genres»

24
Таблица «Categories»
Таблица «Order_Status»
Таблица «PriceList»
Таблица «Price_History»
Таблица «Provider»
Оперативные таблицы Таблица «User»
Таблица «Product»
25
Таблица «Order»
Продолжение таблицы 1
Таблица «Product_Order»
Таблица «Supply»
Таблица «SupplyProduct»

26
Исходя из составленной таблицы были выделены справочные и
оперативные данные.
1.3 Перечень хранимой информации: таблицы, поля, типы
В данном разделе была составлена общая таблица с полями, таблицами и
типами данных.
Таблица 2 – Перечень хранимой информации:

27
USER
Таблица пользователей: данные пользователей
ПОЛЕ ПОЛЕ ПОЛЕ ПОЛЕ
id user_id user_id PK
email Эл.почта VARCHAR(50) -
password Пароль VARCHAR(25) -
phone Телефон VARCHAR(25) -
ORDER
Таблица заказов: краткая информация о заказе
28
id Первичный ключ INT PK
user_id Внешний ключ INT FK
status_id Статус заказа INT FK
date Дата заказа DATE -
O_time Время заказа TIME -
PRODUCT_ORDER
Таблица заказов: подробная информация о заказе
id Первичный ключ INT PK
29
order_id Внешний ключ INT FK
product_id Внешний ключ INT FK
quantity Количество INT -
PRODUCT
Таблица товаров: подробная информация товарах(играх)
id Первичный ключ INT PK
genres_id Внешний ключ INT FK
categories_id Внешний ключ INT FK
name Название товара VARCHAR(255) -
30
price_id Цена товара INT FK
description Описание VARCHAR(255) -
img Картинки VARCHAR(255) -
Продолжение таблицы 2
GENRES
Таблица жанров: информация о жанрах
id Первичный ключ INT PK
genres Название VARCHAR(20) -

31
игрового жанра
CATEGORIES
Таблица категорий: информация о категориях
id Первичный ключ INT PK
Название VARCHAR(20) -
categories игровой
категории
PROVIDER
Таблица поставщиков: информация о поставщиках
32
id Первичный ключ INT PK
Наименование -
provider_name
поставщика
SUPPLY
Таблица о поставке: краткая информация о поставке
id Первичный ключ INT PK
provider_id Внешний ключ INT FK
date Дата поставки DATE -
SUPPLY_ORDER
33
Таблица о поставке: подробная информация о поставке
id Первичный ключ INT PK
product_id Внешний ключ INT FK
supply_id Внешний ключ INT FK
Количество INT -
quantity поставляемых
товаров
ORDER_STATUS

34
Таблица со статусами заказов
id Первичный ключ INT PK
status Название статуса VARCHAR(25) -
PRICE_HISTORY
Таблица-архив истории цен
id Первичный ключ INT PK
product_id Внешний ключ INT FK
price Цена на товар INT -
35
date Дата ценника date -
После составления таблицы 3, были составлены основные таблицы, поля и
типы полей.
1.4 Необходимые предполагаемые запросы к БД
Исходя из анализа запросов в реальных базах данных, был составлен список
предполагаемых запросов к базе данных:

36
 удаление и вывод определенных товаров;
 вывод на экран всей номенклатуры товаров;
 отображение сведений о поставщиках;
 вывод поставщиков, отгрузивших определенный товар;
 удаление поставщика;
 изменение информации о товарах/поставщиках;
37
 вывод информации о поставках по определенной
дате/поставщику/товару и т.д.
1.5 Выводы по разделу
В данном разделе рассмотрена предметная область базы данных,
определены необходимые таблицы, поля и запросы. В качестве СУБД для
реализации базы данных планируется использоваться СУБД реляционного типа –

38
JetBrains DataGrip 2020.

39
2. МОДЕЛИРОВАНИЕ ПРЕДМЕТНОЙ ОБЛАСТИ
2.1 Общие сведения
В основе проектирования лежит моделирование предметной области
(МПО). Предварительное моделирование предметной области позволяет
сократить время и сроки проведения проектировочных работ и получить
эффективный и качественный проект.

40
К МПО предъявляются следующие требования:
 формализация, обеспечивающая однозначное описание структуры
предметной области;
 понятность для заказчиков и разработчиков на основе применения
графических средств отображения модели;
 реализуемость, подразумевающая наличие средств физической
41
реализации модели предметной области в ИС;
 обеспечение оценки эффективности реализации модели предметной
области на основе определенных методов и вычисляемых показателей.
Для реализации перечисленных требований, как правило, строится
инфологическая модель, которая отражает структурный и оценочный аспекты
функционирования предметной области.

42
2.2 Выделение сущностей, атрибутов, ключей, связей.
Основными конструктивными элементами инфологических моделей
являются сущности, связи между ними и их свойства (атрибуты).
Сущность - любой объект, событие или концепция, имеющие существенное
значение для предметной области, и информация о которых должна сохраняться.
В разрабатываемой базе данных можно выделить 4 сущности: Товар, Склад,

43
Поставщик и Поставка.
Атрибут - любая характеристика сущности, значимая для рассматриваемой
предметной области. Атрибут предназначен для квалификации, идентификации,
классификации, количественной характеристики или выражения состояния
сущности.
Первичный ключ (Primary Key) - это атрибут или группа атрибутов,

44
однозначно идентифицирующих экземпляр сущности. На диаграмме первичные
ключи размещаются выше горизонтальной линии. Ключ может быть сложным,
т.е. состоять из нескольких атрибутов.
Внешние ключи (Foreign Key) создаются автоматически, когда сущности
соединяются связью (миграция ключа). Связи между таблицами реляционной БД
представляются одинаковыми ключами в таблицах (внешними ключами).

45
Сущности, их атрибуты, ключи и связи проектируемой базы данных
представлены в таблице 3.
Таблица 3 - Сущности и атрибуты БД «Интернет-магазин цифровых ключей
Keysi»

Значение
Сущность Обозначение Атрибут Тип данных Ключ
атрибута
Пользователь user ID, Код пользователя Integer PK
46
email, Эл.почта VARCHAR
pass, Пароль VARCHAR
phone Телефон VARCHAR
ID, Код товара Integer
price_id, Код жанра Integer PK
genres_id, Код цены Integer FK(Товар)
Название
Product categories_id Код категории Integer FK(Жанр)
игры
, game, Название игры VARCHAR FK(Категория)
description, Описание игры VARCHAR FK(Цена)
img Картинка игры VARCHAR

47
ID, Код поставщика
Integer
Поставщик Provider provider_na Название PK
VARCHAR
me организации
Integer
ID, Код поставки
Integer PK
Поставка Supply provider_id Код поставщика
Date FK(Поставщик)
date Дата поставки
Заказ Order ID, Код заказа Integer PK
user_id, Код пользователя Integer FK(Пользовате
status_id, Код статуса Integer ль)

48
O_time, Время заказа Time
FK(Статус)
date Дата заказа Date
ID, Код статуса Integer PK
Статус заказа Order_Status
status Название статуса VARCHAR
ID, Код жанра Integer PK
Жанры Genres
genres Название жанра VARCHAR
Код категории
ID, Integer PK
Категории Categories Название
categories VARCHAR
категории

49
Продолжение таблицы 3
ID, Код истории цен Integer
PK
pricelist_id Код списка цен Integer
История цен Price_History FK(Список
price Цена VARCHAR
цен)
date Дата Date
ID, Код списка цен Integer
PK
Список цен PriceList price, Цена VARCHAR
FK(Продукт)
product_id Код продукта Integer
Заказ Product_Order ID, Код заказа Integer PK
продукта order_id продукта Integer FK(Продукт)
50
Код заказа
product_id Integer
Код продукта FK(Заказ)
quantity Integer
Количество
Supply_Product Код поставки
ID, Integer PK
продукта
Поставка supply_id Integer FK(Продукт)
Код поставки
продукта product_id Integer FK(Поставка)
Код продукта
quantity Integer
Количество

51
После составления таблицы 3 были выделены основные сущности и
атрибуты базы данных.
2.3 Проектирование диаграммы сущность-связь в EA
Ранее были выделены следующие сущности:
 сущность «Продукт»;
 сущность «Статус»;
52
 сущность «Заказ»;
 сущность «Пользователь»;
 сущность «Жанры»
 сущность «Категории»;
 сущность «Статус заказа»;
 сущность «Поставщик»;
53
 сущность «Поставка».
Связь - это ассоциация, установленная между несколькими сущностями.
Набор связей - это отношение между n (причем n не меньше 2) сущностями,
каждая из которых относится к некоторому набору сущностей.
В случае n = 2, т.е. когда связь объединяет две сущности, она называется
бинарной.
54
То число сущностей, которое может быть ассоциировано через набор связей
с другой сущностью, называют степенью связи. Рассмотрение степеней особенно
полезно для бинарных связей. Могут существовать следующие степени бинарных
связей:
 один к одному (обозначается 1:1);
 один ко многим (1:n);
55
 много к одному (n:1);
 многие ко многим (n:n).
В базе данных канцелярских товаров сущности будут соединены связями со
степенью «Один к одному» (обозначается 1:1) и «Один ко многим» (1:n).
2.4 Подготовка диаграммы сущность-связь к переносу из СУБД JetBrains
DataGrip 2020 в Enterprise Acrhitect
56
Для переноса диаграммы сущность-связь из СУБД JetBrains DataGrip
необходимо установить в систему драйвер ODBC с официального сайта
postgresql.org и подключить его к существующей базе данных.

57
Рисунок 1 – Драйверы, необходимый для переноса схемы БД
На рисунке 1 продемонстрированы драйвера, необходимые для установки.

58
59
Рисунок 2 – Установочное окно драйвера
Установка драйвера выполняется классическим образом, необходимо
согласиться со всеми пунктами установки и выполнить установку. После этого
нужно перезагрузить компьютер и проверить наличие установленного драйвера в
меню «Пуск».

60
61
Рисунок 3 – Проверка наличия установленного драйвера
Далее необходимо зайти в конфигуратор драйвера, выбрать пункт
«Пользовательский DSN», нажать на кнопку «Добавить» и ввести данные для
подключения к БД. И наконец, необходимо проверить соединение, как показано
на рисунке 4 ниже.

62
63
Рисунок 4 – Проверка работы драйвера с удаленной базой данных
После завершения всех необходимых этапов можно приступать к переносу
схемы базы данных в Enterprise Architect.
2.5 Создание БД и схемы в JetBrains DataGrip 2020. Перенос схемы в EA.
Средствами СУБД JetBrains DataGrip была смоделирована схема базы
данных, представленная на рисунке 5.

64
65
Рисунок 5 – Схема базы данных
Процесс переноса осуществлялся при помощи установленного драйвера,
описанного в разделе 2.4. Для переноса схемы необходимо открыть Enterprise
Architect и создать модель базы данных, в рамках данного курсового проекта была
создана модель PostgresSQL, продеменострированная на рисунке 6.

66
67
Рисунок 6 – Базовая модель БД PostgresSQL
Далее необходимо выбрать опцию «Import», выбрать в качестве источника
данных уже созданную базу данных. Выбрать модель PostgresSQL в качестве
приемника импортируемой базы. Весь процесс продемонстрирован на рисунке 7.

68
69
Рисунок 7 – Процесс импорта базы данных в EA
Затем необходимо выбрать элементы, которые необходимо импортировать,
а именно схему и таблицы базы данных. А также поставить чек-бокс напротив
пункта «Synchronize existing classes», данная опция синхронизирует все
существующие классы в базе данных. Данный процесс показан на рисунке 8.

70
71
Рисунок 8 – Опции импорта БД в EA
После этого остается нажать лишь на кнопку импорт и база данных
импортируется в Enterprise Architect вместе с таблицей, схемой и связями.
2.6 Начальное заполнение БД

72
Для начального заполнения базы данных использовался сайт Mockaroo,
позволяющий быстро и просто сгенерировать данные для их дальнейшей
подстановки в таблицы базы данных.

73
Рисунок 9 – Создание полей для заполнения в сервисе Mockaroo
74
На рисунке 9 продемонстрирован подготовитльный этап создания полей, их
типов и дургих опций для дальнейшей генерации необоходимого SQL-кода на
заполнение таблиц.

75
76
Рисунок 10 – Сгенерированный SQL-код для вставки данных в таблицу базы
данных
Рисунок 10 демонстрирует уже сгенерированный SQL-код, который в
последствии применяется в СУБД для заполнения таблиц необходимыми
данными.
2.7 Выводы по разделу

77
В данном разделе были определены сущности, атрибуты, ключи и связи
создаваемой базы данных, спроектирована диаграмма сущность-связь. Изучено
создание диаграммы средствами Enterpise Architect и JetBrains DataGrip. Было
произведено начальное заполнение БД при помощи сервиса Mockaroo.
3. СОЗДАНИЕ И ЗАПУСК БАЗОВЫХ ЗАПРОСОВ SQL
3.1 Общие сведения

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

79
таблицах и многое другое. Особенность запросов состоит в том, что они черпают
данные из базовых таблиц и создают на их основе временную результирующую
таблицу. Если хотят подчеркнуть факт «временности» этой таблицы, то ее еще
называют моментальным снимком.
В данной курсовой работе предлагается создать несколько запросов:
запросы на выборку, запросы с использованием диалогового окна для ввода

80
условия, запросы с постоянно заданным условием.
3.2 Запросы на выборку, заполнение, обновление данных и удаление таблиц
Запросы на выборку (Select):
SELECT — оператор языка SQL, возвращающий набор данных (выборку) из
базы данных, удовлетворяющих заданному условию.

81
Рисунок 11 – Запросы на выборку
После выполнения данных запросов на экране должны быть поочередно
выведены все поля и их данные каждой из таблиц.
82
Рисунок 12 – Запрос на выборку SELECT

83
Рисунок 13 – Результат работы запроса на выборку
Запросы на заполнение таблиц (Insert):
84
INSERT — оператор языка SQL, который позволяет добавить строки в
таблицу, заполняя их значениями.
Синтаксис: INSERT INTO <название таблицы> ([<Имя столбца>,...])
VALUES (<Значение>,...)

85
Рисунок 14 – Запрос на встаку данных в таблицу
На рисунке 14 приведен пример запроса, заполняющего таблицу данными.

86
87
Рисунок 15 – Результат работы запросов с оператором Insert
UPDATE — оператор языка SQL, позволяющий обновить значения в
заданных столбцах таблицы.

88
Рисунок 16 – Запроса на обновление данных в таблице

Рисунок 17 – Результат работы запроса с оператором UPDATE


89
После выполнения данного запроса была исправлена опечатка в названии
статуса.

Рисунок 18 – Запрос на обновление цены продукта


После выполнения данного запроса товар с изначальной ценой будет
90
заменен на желаемую цену.
Запросы на удаление данных (Delete):
DELETE – операция удаления записей из таблицы.

Рисунок 19 – Запрос на удаление столбца

91
После выполнения данного запроса будет удалена игра с присвоенным ей
ключем под номером «9».

Рисунок 20 – Запрос на удаление данных с условием


После выполнения данного запроса будут удалены продукты с ключем,

92
находящимся между 8 и 10.
3.3 Выводы по разделу
В данном разделе были созданы запросы ввода, вывода, обновления и
удаления данных таблиц. Созданные запросы были выполнены, результаты
запросов представлены выше.

93
4. СОЗДАНИЕ И ЗАПУСК ПРОДВИНУТЫХ ЗАПРОСОВ SQL
4.1 Общие сведения
Синтаксис оператора SELECT, в предложении FROM допускает указание
нескольких таблиц. Чаще всего в объемных базах данных не используются
выборки из одной таблицы, т.к. выборки в таком случае, чаще всего, не являются
информативными.

94
В данном разделе будут рассмотрены продвинутые запросы с операторами
create table, drop table, alter table, create index, alter index.
4.2 Создание и запуск продвинутых запросов SQL
Multitable SELECT — оператор языка SQL, возвращающий набор данных
(выборку) из нескольких таблиц базы данных, удовлетворяющих заданному
условию.

95
Рисунок 21 – Комплексный запрос на выборку данных из нескольких таблиц
После выполнения данного запроса на экране должны быть выведены
данные об играх с номером категории ключа 1 и жанром стратегии.

96
Рисунок 22 – Результат работы запроса
97
По итогам выполнения данного запроса на экране вывелись данные об
играх с номером категории ключа 1 и жанром стратегии.

Рисунок 23 – Запрос на объединение таблиц


98
После выполнения данного запроса на экране должны быть выведены игры
категории «Одиночная» и навзание которых начинается с латинской буквы «A».

99
Рисунок 24 – Результат работы запроса

100
По итогу выполнения данного запроса, на экране вывелись игры из
категории «Одиночная» и название которых начинается с латинской буквы «A».

101
Рисунок 25 – Запрос на объединение нескольких таблиц
После выполнения данного запроса на экоан должны быть выведены игры у
которых не указан жанр

Рисунок 26 – Результат работы запроса


102
Запросы создания таблиц (create table).
Create TABLE – оператор запроса на языке SQL, который создает новую
таблицу в базе данных с заданными пользователем полями и типами.

103
104
Рисунок 27 – Запрос на создание таблицы «sample_table»
После выполнения данного запроса должна создаться таблица с названием
«sample_table» и полями:
 id;
 column1;
 column2.
105
Рисунок 28 – Результат работы запроса
Результат выполнения данного запроса приведен на рисунке 28.
106
Запрос удаления таблиц (drop table).

Рисунок 29 – Запрос на удаление таблицы «sample_table»


В результате выполнения запроса должна быть удалена таблица с названием
«sample_table».

107
Рисунок 30 – Результат работы запроса
Запросы изменения таблиц (alter table).
Оператор ALTER TABLE обеспечивает возможность изменять структуру
существующей таблицы.

108
Рисунок 31 – Запрос на изменение таблицы
После выполнения данных запросов в таблице «sample_table» должны
измениться следующие данные:
 столбец с названием «column1» должен быть переименован в
109
renamed_column1;
 тип данных столбца с названием «renamed_column1» должен быть
изменен с VARCHAR на Integer;
 столбец с названием «column2» должен быть удален из таблицы, если
от него не зависят другие таблицы;
 таблица с названием «sample_table» должна быть переименована в
110
таблицу с названием «renamed_table».

Рисунок 32 – Результат работы запроса

111
Запросы (create index, alter index).
Сreate index создает реляционный индекс или представление для указанной
таблицы.
Alter index изменяет определение индекса в таблице.

Рисунок 29 – Запрос на создание и изменение индекса таблицы


112
Данный запрос присвоил индекс с именем «num» таблице «renamed_table».

Рисунок 33 – Результат работы запроса


113
На рисунке 33 представлен результат работы запроса изменения индекса.
Запрос на создание таблицы из запроса (SELECT INTO).

Рисунок 33 – Комплексный запрос на выборку


После выполнения данного запроса должна создаться таблица с названием
«table_select», включающая себе данные из таблицы «categories» и значением в
114
стоблце «Одиночная».

115
116
Рисунок 35 – Результат работы запроса
На рисунке 35 представлен результат работы запроса.
4.3 Выводы по разделу
В данном разделе созданы комплексные запросы. Все созданные запросы
были детально рассмотрены и применены в курсовом проекте.

117
5. СОЗДАНИЕ И ИСПОЛЬЗОВАНИЕ ПРЕДСТАВЛЕНИЙ
5.1 Общие сведения
Представления - это таблицы, чье содержание выбирается или получается
из других таблиц. Они работают в запросах и операторах DML точно так же, как и
основные таблицы, но не содержат никаких собственных данных. Представления
- подобны окнам, через которые вы просматриваете информацию, которая

118
фактически хранится в базовой таблице. Фактически это запрос, который
выполняется всякий раз, когда представление становится темой команды. Вывод
запроса при этом в каждый момент становится содержанием представления.
5.2 Создание, удаление и выборка данных из представлений базы данных
CREATE VIEW – команда создания представления.

119
Рисунок 36 – Запрос на создание представления
После его выполнения должно быть создано представление с названием
«PRODUCT» со всеми данными из таблицы «Product». Условием отбора данных

120
является id элементов таблицы «Product», он должен быть больше десяти.

121
122
Рисунок 37 – Результат работы запроса
Результат выполненного запроса представлен на рисунке 37.
Команда DROP VIEW – удаления представления:

Рисунок 38 – Запрос на удаление табличного представления


После выполнения данного запроса представление с названием
123
«PRODUCT» будет удалено из базы данных.

Рисунок 39 – Результат работы запроса


Команда Select – вывод выборки данных из таблиц или представлений.

124
Рисунок 40 – Листинг запроса
В результате выполнения данного запроса из представления с названием
«PRODUCT», условием отбора является поле «Product.game», значение которого
начинается с сочетания букв «As».

125
Рисунок 41 – Результат работы запроса
По итогам выполнения запроса были выведены игры сназванием,
указанным в запросе сочетанием букв.

126
5.3 Выводы по разделу
В данном разделе были рассмотрены и применены представления, создание
и использование которых упрощает комплексные SQL-операции.

127
Заключение
Разработанная база данных для интернет-магазина «Keysi» позволяет
быстро и эффективно работать с данными в данной предметной области.
Созданная база данных является учебной и не охватывает всю бизнес-логистику,
но может является прототипом. Данная база данных может быть расширена для
автоматизации нерассмотренных элементов в рамках данной курсовой работы в

128
предметной области «Интернет-магазины».
В ходе курсового проектирования были решены поставленные задачи, а
именно:
 исследованы существующие сервисы цифровой дистрибуции и
выявлены их достоинства и недостатки;
 выделены необходимые таблицы и хранящиеся в них данных;
129
 спроектирована схема базы данных в Enterprise Architect;
 реализована и заполнена данными база данных;
 составлен перечень необходимых запросов к базе данных;
 протестирована созданная база данных.
В ходе разработки базы данных были созданы следующие запросы:
 удаление и вывод определенных товаров;
130
 вывод на экран имеющейся продукции;
 отображение сведений о поставщиках;
 запрос на выборку игр, относящихся к определенному жанру;
 изменение информации о товарах/поставщиках;
 вывод информации об имеющихся играх по определенному названию.
 созданы представления из имеющихся таблиц;
131
 произведена выборка данных из представлений.
Рекомендации по улучшению и расширению разработанной базы данных:
 добавить в ассортимент новую продукцию;
 оптимизировать запросы;
 создать оптимальные индексы.

132
Список литературы

1. Хаббард Дж. Автоматизированное проектирование баз данных. – М.:


Мир, 2018. – 178 с.
2. Зудилова Т.В., Шмелева Г.Ю. Создание запросов в Microsoft SQL
Server 2019. – 233 с.

133
3. [Электронный ресурс]: — Электрон. текстовые данные. — СПб.:
СПбНИУ ИТМО. Учебное пособие - 2018. - 149 с.
4. Зудилова Т.В. Иванов С.Е. Хоружников С.Э. SQL и PL/SQL для
разработчиков СУБД ORACLE. - СПб.: СПбНИУ ИТМО. Практикум. - 2017. - 74
с.
5. Коннолли, Т. Базы данных. Проектирование, реализация и

134
сопровождение. Теория и практика / Т. Коннолли. - М.: Вильямс И.Д., 2017. - 1440
c.
6. Мартишин, С.А. Проектирование и реализация баз данных в СУБД
MySQL с использованием MySQL Workbench: Методы и средства
проектирования информационных систем и технологий / С.А. Мартишин, В.Л.
Симонов, М.В. Храпченко. - М.: Форум, 2018. - 61 c.

135
7. Преснякова, Г.В. Проектирование интегрированных реляционных баз
данных: Учебное пособие / Г.В. Преснякова. - М.: КДУ, 2007. - 224 c.
8. Шпак, Ю.А. Проектирование баз данных. Просто как дважды два /
Ю.А. Шпак. - М.: Эксмо, 2018. - 304 c.
9. Эмблер, С. Рефакторинг баз данных: эволюционное проектирование /
С. Эмблер, П. Садаладж. - М.: Вильямс, 2017. - 672 c.

136
10. ODBC Driver Postgres. [Электронный ресурс], 2021. URL:
https://www.postgresql.org/ftp/odbc/versions/msi/ (дата обращения: 02.05.2021).
11. Гринченко, Н.Н. Проектирование баз данных. СУБД Microsoft Access:
Учебное пособие для вузов. / Н.Н. Гринченко и др. - М.: РиС, 2013. - 240 c.
12. Карпова, Т.С. Базы данных. Модели, разработка, реализация / Т.С.
Карпова. - М.: СПб: Питер, 2017. - 304 c.

137
13. Техническая документация PostgresSQL. [Электронный ресурс], 2021.
URL: https://postgrespro.ru/docs/postgresql/9.6/sql-select.
14. Саймон, Ригс Администрирование PostgreSQL 9. Книга рецептов /
Ригс Саймон. - М.: ДМК Пресс, 2018. - 806 c.
15. Стоунз PostgreSQL. Основы / Стоунз, Мэттью Ричард; , Нейл. - М.:
СПб: Символ-Плюс, 2018. - 640 c.

138
16. Уорсли, Дж. PostgreSQL. Для профессионалов / Дж. Уорсли, Дж.
Дрейк. - М.: СПб: Питер, 2019. - 496 c.
17. Уэлдон Администрирование баз данных / Уэлдон, Дж.-Л.. - М.:
Финансы и статистика, 2017. - 207 c.
18. Хансен Базы данных: разработка и управление / Хансен, Хансен
Генри; Джеймс. - М.: Бином, 2017. - 704 c.

139
19. Яргер, Р. Дж. MySQL и mSQL: Базы данных для небольших
предприятий и Интернета / Р.Дж. Яргер, Дж. Риз, Т. Кинг. - М.: СПб: Символ-
Плюс, 2018. - 560 c.
20. Видео-курс «Postgres Professional» | Курс «Hacking PostgreSQL»
(2017).
21. Курс молодого бойца PostgreSQL. [Электронный ресурс], 2017. URL:

140
https://postgrespro.ru/docs/postgresql/9.6/sql-select.
22. Работа с PostgreSQL: настройка и масштабирование. Ю. Васильев,
2017, - 285 с.
23. Алексей Борзов, borz_off@cs.msu.su, PostgreSQL: настройка
производительности БД. [Электронный ресурс], 2017. URL:
http://www.phpclub.ru/detail/store/pdf/postgresql-performance.pdf.

141
24. Евгений Кузин, eugene@kuzin.net. Настройка репликации в
PostgreSQL с помощью системы Slony-I. [Электронный ресурс], 2018. URL:
http://www.kuzin.net/work/sloniki-privet.html.
25. Сергей Коноплев, gray.ru@gmail.com. Установка Londiste в
подробностях. [Электронный ресурс], 2019. URL: http://gray-
hemp.blogspot.com/2019/04/londiste.html

142
26. Дмитрий Стасюк. Учебное руководство по pgpool-II.
[Электронный ресурс], 2019. URL: http://undenied.ru/2009/03/04/uchebnoe-rukovods
tvo-po-pgpool-ii/.
27. Чиркин Дмитрий, dmitry.chirkin@gmail.com. Горизонтальное масштаб
ирование PostgreSQL с помощью PL. [Электронный
ресурс], 2019. URL: http://habrahabr.ru/blogs/postgresql/45475/.

143
28. Иван Блинков, wordpress@insight-it.ru. [Электронный ресурс], 2017.
URL: http://www.insight-it.ru/masshtabiruemost/hadoop/.
29. Иван Золотухин. Масштабирование PostgreSQL: готовые решения от
Skype. [Электронный ресурс], 2017. URL: http://postgresmen.ru/articles/view/25.
30. Streaming Replication. [Электронный ресурс], 2018. URL: http://wiki.pos
tgresql.org/wiki/Streaming_Replication.

144
31. Postgres-XC-PostgreSQL. Clustering Solution. [Электронный ресурс],
2018. URL: http://www.linuxforu.com/2012/01/postgres-xc-database-clustering-
solution/285.

145
146
Приложение А. Схема базы данных

147
148
Приложение Б. SQL код базы данных

149
create sequence "Product_id_seq";
alter sequence "Product_id_seq" owner to postgres;
create sequence "Product_categories_id_seq";
alter sequence "Product_categories_id_seq" owner to postgres;
create sequence "Product_genres_id_seq";
alter sequence "Product_genres_id_seq" owner to postgres;
create sequence "Product_pricehistory_id_seq";
alter sequence "Product_pricehistory_id_seq" owner to postgres;
create sequence "Price_history_product_id_seq";

150
alter sequence "Price_history_product_id_seq" owner to postgres;
create table "user"
(
id serial not null
constraint user_pk
primary key,
email varchar(50),
pass varchar(25),
phone varchar(25)
);
alter table "user"
151
owner to postgres;

create table "Order_Status"


(
id serial not null
constraint order_status_pk
primary key,
status text
);
alter table "Order_Status"
owner to postgres;
152
create table "Order"
(
user_id integer not null
constraint order_user_id_fk
references "user",
status_id integer not null
constraint order_order_status_id_fk
references "Order_Status",
time time,
date date,
153
id integer not null
constraint order_pk
primary key
);
alter table "Order"
owner to postgres;

create table genres


(
id serial not null
constraint genres_pk
154
primary key,
genres varchar(15)
);
alter table genres
owner to postgres;

create table categories


(
id serial not null
constraint categories_pk
primary key,
155
categories text
);
alter table categories
owner to postgres;

create table provider


(
id serial not null
constraint provider_pk
primary key,
provider_name varchar(20)
156
);
alter table provider
owner to postgres;

create table "Supply"


(
id serial not null
constraint supply_pk
primary key,
provider_id integer
constraint supply_provider_id_fk
157
references provider,
date integer
);
alter table "Supply"
owner to postgres;

create table "Product"


(
id serial not null
constraint product_pk
primary key,
158
genres_id integer
constraint product_genres_id_fk
references genres,
categories_id integer
constraint product_categories_id_fk
references categories,
game varchar(100),
description text,
img varchar(100)
);
alter table "Product"
159
owner to postgres;

create table "SupplyProduct"


(
id serial not null
constraint supplyproduct_pk
primary key,
supply_id integer
constraint supplyproduct_supply_id_fk
references "Supply",
product_id integer
160
constraint supplyproduct_product_id_fk
references "Product",
quantity integer default 1
);
alter table "SupplyProduct"
owner to postgres;

create unique index product_id_uindex


on "Product" (id);

create table "Price_history"


161
(
id serial not null
constraint price_history_pk
primary key,
product_id serial not null
constraint price_history_product_id_fk
references "Product"
on delete cascade,
price varchar(255),
date date
);
162
alter table "Price_history"
owner to postgres;
create table product_order
(
order_id integer not null
constraint product_order_order_id_fk
references "Order",
product_id integer not null
constraint product_order_product_id_fk
references "Product",
quantity integer default 1,
163
id serial not null
constraint product_order_pk
primary key,
price_id integer not null
constraint product_order_price_history_id_fk
references "Price_history"
);
alter table product_order
owner to postgres;
create unique index price_history_id_uindex
on "Price_history" (id);
164
SQL-код запросов:
INSERT INTO "Order_Status" (status)
VALUES ('Not Complete');
INSERT INTO "Order_Status" (status)
VALUES ('Waiting for payment');
INSERT INTO "Order_Status" (status)
VALUES ('Compete');
insert into "Price_history" (price, date) values ('$0.41', '2/12/2021');
insert into "Price_history" (price, date) values ('$0.71', '8/24/2020');
insert into "Price_history" (price, date) values ('$4.06', '9/20/2020');
insert into "Price_history" (price, date) values ('$2.08', '10/23/2020');
165
insert into "Price_history" (price, date) values ('$2.37', '2/24/2021');
TRUNCATE table "Product" RESTART IDENTITY;
insert into "Product" (genres_id, categories_id, game, description, img) values (19, 5, 2, 'The
Raven: Legacy of a Master Thief', 'Reposition Right Internal Jugular Vein, Percutaneous Endoscopic
Approach', 'http://dummyimage.com/230x100.png/ff4444/ffffff');
insert into "Product" (genres_id, categories_id, game, description, img) values (37, 1, 1,
'Uncharted 2: Among Thieves', 'Speech Threshold Assessment using Audiovisual Equipment',
'http://dummyimage.com/193x100.png/ff4444/ffffff');
insert into "Product" (genres_id, categories_id, game, description, img) values (24, 3, 1,
'Assassin’s Creed®', 'Bypass Right Popliteal Artery to Lower Extremity Artery, Percutaneous
Endoscopic Approach', 'http://dummyimage.com/178x100.png/cc0000/ffffff');
166
insert into "Product" (genres_id, categories_id, game, description, img) values (18, 1, 1, 'The
Unfinished Swan (New)', 'Revision of Infusion Device in Cisterna Chyli, Open Approach',
'http://dummyimage.com/176x100.png/cc0000/ffffff');
insert into "Product" (genres_id, categories_id, game, description, img) values (1, 1, 3, 'The
Last of Us: Left Behind', 'Range of Motion and Joint Mobility Treatment of Integumentary System -
Whole Body using Orthosis', 'http://dummyimage.com/131x100.png/dddddd/000000');
insert into "Product" (genres_id, categories_id, game, description, img) values (13, 1, 2, 'The
Last Guy', 'Bypass Inferior Vena Cava to Lower Vein, Open Approach',
'http://dummyimage.com/170x100.png/5fa2dd/ffffff');

167
insert into "Product" (genres_id, categories_id, game, description, img) values (35, 2, 3,
'Assassin’s Creed® III', 'Drainage of Splenic Artery, Open Approach',
'http://dummyimage.com/195x100.png/cc0000/ffffff');
insert into "Product" (genres_id, categories_id, game, description, img) values (10, 1, 2,
'XBLAZE Code: Embryo (New)', 'Dilation of Left Radial Artery, Bifurcation, with Four or More
Intraluminal Devices, Open Approach', 'http://dummyimage.com/161x100.png/cc0000/ffffff');
insert into "Product" (genres_id, categories_id, game, description, img) values (34, 5, 4, 'When
Vikings Attack (New)', 'Supplement Cervical Vertebral Disc with Nonautologous Tissue Substitute,
Percutaneous Endoscopic Approach', 'http://dummyimage.com/236x100.png/dddddd/000000');

168
insert into "Product" (genres_id, categories_id, game, description, img) values (6, 1, 4, 'Alpha
Protocol', 'Dilation of Right Brachial Artery with Drug-eluting Intraluminal Device, Open Approach',
'http://dummyimage.com/196x100.png/ff4444/ffffff');
insert into "Product" (genres_id, categories_id, game, description, img) values (43, 5, 4,
'ArcaniA - The Complete Tale Armageddon Riders (New)', 'Drainage of Left Axillary Lymphatic,
Open Approach, Diagnostic', 'http://dummyimage.com/182x100.png/5fa2dd/ffffff');
insert into "Product" (genres_id, categories_id, game, description, img) values (37, 3, 2, 'Alone
in the Dark: Inferno', 'High Dose Rate (HDR) Brachytherapy of Bronchus using Palladium 103 (Pd-
103)', 'http://dummyimage.com/121x100.png/5fa2dd/ffffff');

169
insert into "Product" (genres_id, categories_id, game, description, img) values (27, 5, 1, 'Alien
Spidy', 'Reposition Right Colic Artery, Open Approach',
'http://dummyimage.com/144x100.png/cc0000/ffffff');
insert into "Product" (genres_id, categories_id, game, description, img) values (29, 4, 1, 'Alpha
Mission II', 'Destruction of Right Internal Jugular Vein, Percutaneous Endoscopic Approach',
'http://dummyimage.com/142x100.png/cc0000/ffffff');
insert into "Product" (genres_id, categories_id, game, description, img) values (9, 4, 1, 'Arcana
Heart 3', 'Removal of Radioactive Element from Gastrointestinal Tract, Open Approach',
'http://dummyimage.com/204x100.png/5fa2dd/ffffff');

170
insert into "Product" (genres_id, categories_id, game, description, img) values (13, 5, 4,
'Uncharted 2: Among Thieves', 'Drainage of Left Mastoid Sinus with Drainage Device, Percutaneous
Approach', 'http://dummyimage.com/173x100.png/cc0000/ffffff');
insert into "Product" (genres_id, categories_id, game, description, img) values (18, 5, 3,
'Warhawk', 'Excision of Left Renal Artery, Percutaneous Endoscopic Approach',
'http://dummyimage.com/179x100.png/cc0000/ffffff');
insert into "Product" (genres_id, categories_id, game, description, img) values (37, 1, 1, 'World
Heroes', 'Replacement of Left Scapula with Autologous Tissue Substitute, Percutaneous Approach',
'http://dummyimage.com/242x100.png/dddddd/000000');
insert into "Product" (genres_id, categories_id, game, description, img) values (4, 4, 2, 'XCOM:
Enemy Within', 'Bypass Right External Jugular Vein to Upper Vein with Autologous Tissue
171
Substitute, Percutaneous Endoscopic Approach',
'http://dummyimage.com/212x100.png/dddddd/000000');
insert into "Product" (genres_id, categories_id, game, description, img) values (41, 1, 1,
'Uncharted: Drake’s Fortune', 'Resection of Left Vas Deferens, Open Approach',
'http://dummyimage.com/222x100.png/dddddd/000000');
insert into "Product" (genres_id, categories_id, game, description, img) values (19, 4, 3, 'Ultra
Street Fighter IV', 'Removal of Extraluminal Device from Tracheobronchial Tree, Percutaneous
Approach', 'http://dummyimage.com/124x100.png/cc0000/ffffff');
insert into "Product" (genres_id, categories_id, game, description, img) values (8, 4, 4,
'Assassin’s Creed® Brotherhood', 'Removal of Diaphragmatic Pacemaker Lead from Diaphragm,
Percutaneous Approach', 'http://dummyimage.com/190x100.png/ff4444/ffffff');
172
insert into "Product" (genres_id, categories_id, game, description, img) values (4, 1, 4, 'Urban
Trial FreeStyle', 'Replacement of Lower Lip with Nonautologous Tissue Substitute, Percutaneous
Approach', 'http://dummyimage.com/158x100.png/dddddd/000000');
insert into "Product" (genres_id, categories_id, game, description, img) values (45, 1, 1,
'Assassin’s Creed® Revelations', 'Revision of External Fixation Device in Left Tibia, External
Approach', 'http://dummyimage.com/132x100.png/cc0000/ffffff');
insert into "Product" (genres_id, categories_id, game, description, img) values (45, 3, 4, 'The
King of Fighters ''96', 'Ultrasonography of Right Internal Carotid Artery',
'http://dummyimage.com/195x100.png/5fa2dd/ffffff');

173
insert into "Product" (genres_id, categories_id, game, description, img) values (2, 4, 3, 'Way of
the Samurai 3', 'Reposition Right Humeral Head, Percutaneous Endoscopic Approach',
'http://dummyimage.com/212x100.png/5fa2dd/ffffff');
insert into "Product" (genres_id, categories_id, game, description, img) values (34, 4, 2,
'ArcaniA - The Complete Tale Armageddon Riders (New)', 'Drainage of Left Lower Leg Subcutaneous
Tissue and Fascia with Drainage Device, Percutaneous Approach',
'http://dummyimage.com/106x100.png/dddddd/000000');
insert into "Product" (genres_id, categories_id, game, description, img) values (37, 1, 2,
'Assassin’s Creed®', 'Supplement Right Foot Vein with Synthetic Substitute, Percutaneous Approach',
'http://dummyimage.com/151x100.png/cc0000/ffffff');

174
insert into "Product" (genres_id, categories_id, game, description, img) values (13, 4, 2, 'Zen
Pinball 2: Zen Pinball Classics', 'Restriction of Left Hepatic Duct, Percutaneous Endoscopic
Approach', 'http://dummyimage.com/231x100.png/cc0000/ffffff');
insert into "Product" (genres_id, categories_id, game, description, img) values (27, 4, 2,
'Assassin’s Creed® II', 'Transfer Acoustic Nerve to Hypoglossal Nerve, Open Approach',
'http://dummyimage.com/193x100.png/dddddd/000000');
insert into "Product" (genres_id, categories_id, game, description, img) values (25, 1, 2,
'Uncharted: Drake’s Fortune', 'Extirpation of Matter from Right Trunk Muscle, Percutaneous
Endoscopic Approach', 'http://dummyimage.com/232x100.png/cc0000/ffffff');

175
insert into "Product" (genres_id, categories_id, game, description, img) values (36, 2, 3, 'WRC
4: FIA World Rally Championship', 'Cochlear Implant Assessment using Electrophysiologic
Equipment', 'http://dummyimage.com/103x100.png/5fa2dd/ffffff');
insert into "Product" (genres_id, categories_id, game, description, img) values (24, 5, 1, 'Tokyo
Twilight Ghost Hunters', 'Excision of Right Common Carotid Artery, Open Approach, Diagnostic',
'http://dummyimage.com/151x100.png/ff4444/ffffff');
insert into "Product" (genres_id, categories_id, game, description, img) values (15, 3, 4, 'Trash
Panic (New)', 'Drainage of Right External Iliac Vein with Drainage Device, Open Approach',
'http://dummyimage.com/139x100.png/cc0000/ffffff');

176
insert into "Product" (genres_id, categories_id, game, description, img) values (44, 2, 4, 'Tokyo
Twilight Ghost Hunters', 'Division of Right Rib, Percutaneous Endoscopic Approach',
'http://dummyimage.com/157x100.png/5fa2dd/ffffff');
insert into "Product" (genres_id, categories_id, game, description, img) values (2, 5, 2, 'Zombie
Tycoon II: Brainhov''s Revenge', 'Dilation of Gastric Artery, Bifurcation, with Two Intraluminal
Devices, Percutaneous Approach', 'http://dummyimage.com/244x100.png/cc0000/ffffff');
insert into "Product" (genres_id, categories_id, game, description, img) values (47, 4, 4, 'Zeno
Clash II', 'Occlusion of Esophagogastric Junction with Extraluminal Device, Percutaneous Endoscopic
Approach', 'http://dummyimage.com/131x100.png/cc0000/ffffff');

177
insert into "Product" (genres_id, categories_id, game, description, img) values (20, 2, 4, 'Zen
Pinball 2: Zen Pinball Classics', 'Release Right Upper Extremity Bursa and Ligament, Percutaneous
Approach', 'http://dummyimage.com/236x100.png/ff4444/ffffff');
UPDATE "Order_Status"
SET status = 'Complete'
where status = 'Compete';
UPDATE "Price_history"
SET price = '$1.87'
where price = '$0.87';
insert into "Product" ()

178
SELECT game, categories_id, genres_id, categories.categories, genres.genres FROM
"Product", categories, genres
WHERE categories_id = 1 and genres like '%Стратегии%';
SELECT categories.id, categories.categories, "Product".game
FROM "Product" RIGHT JOIN "categories"
ON "Product".categories_id=categories.id
WHERE categories.categories like '%Одиночная%' and game like '%A%';
SELECT genres.genres, "Product".game
FROM "Product" LEFT JOIN "genres"
ON "Product".categories_id=genres.id
WHERE genres.genres Is NUll;
179
CREATE INDEX num ON renamed_table (renamed_column1);
ALTER INDEX num RENAME TO number;
SELECT * INTO table_select FROM categories WHERE categories like '%Одиночная%';
CREATE VIEW PRODUCT
AS SELECT *
FROM "Product"
where "Product".id > 10;
DROP VIEW PRODUCT22;
SELECT * FROM PRODUCT
WHERE Product.game like '%As%';

180

Вам также может понравиться