Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Язык структурированных запросов и основы web-программирования. Учебное пособие
.pdf
Министерство науки и высшего образования Российской Федерации
НОВОСИБИРСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
Г. В. ТРОШИНА, Ю. В. НОВИЦКАЯ
ЯЗЫК
СТРУКТУРИРОВАННЫХ
ЗАПРОСОВ И ОСНОВЫ
WEB-ПРОГРАММИРОВАНИЯ
Утверждено
Редакционно-издательским советом университета
в качестве учебного пособия
НОВОСИБИРСК
2023

УДК 004.655.3(075.8)
Т 766
Рецензенты:
д-р техн. наук, доцент С. П. Ильиных
канд. техн. наук, доцент А. И. Кричевский
Трошина Г. В.
Т 766 Язык структурированных запросов и основы web-программи-
рования : учебное пособие / Г. В. Трошина, Ю. В. Новицкая. –
Новосибирск : Изд-во НГТУ, 2023. – 72 с.
ISBN 978-5-7782-4875-5
Рассмотрены основные приемы работы с базами данных при использовании
языка запросов SQL и основы web-программирования. Описывается взаимодействие серверных скриптов с СУБД с использованием языка запросов SQL.
Учебное пособие предназначено для студентов, обучающихся по направлениям подготовки 09.03.01 «Информатика и вычислительная техника»
и 09.03.04 «Программная инженерия».
УДК 004.655.3(075.8)
Трошина Галина Васильевна
Новицкая Юлия Вадимовна
ЯЗЫК СТРУКТУРИРОВАННЫХ ЗАПРОСОВ
И ОСНОВЫ WEB-ПРОГРАММИРОВАНИЯ
Редактор Е.М. Федяева
Выпускающий редактор И.П. Брованова
Дизайн обложки А.В. Ладыжская
Компьютерная верстка Н.В. Гаврилова
Налоговая льгота – Общероссийский классификатор продукции
Издание соответствует коду 95 3000 ОК 005-93 (ОКП)
Учебное пособие
Подписано в печать 02.02.2023. Формат 60 × 84 1/16. Бумага офсетная
Тираж 50 экз. Уч.-изд. л. 4,18. Печ. л. 4,5. Изд. № 282/22. Заказ № 70. Цена договорная
Новосибирского государственного технического университета
Отпечатано в типографии
630073, г. Новосибирск, пр. К. Маркса, 20
ISBN 978-5-7782-4875-5 © Трошина Г. В., Новицкая Ю. В., 2023
© Новосибирский государственный
технический университет, 2023

ПРЕДИСЛОВИЕ
В учебном пособии изложены основные вопросы, связанные с использованием языка структурированных запросов SQL при работе
с базами данных, и основы web-программирования.
Пособие представляет собой единую теоретическую базу, необходимую для выполнения курсовых, контрольных и лабораторных работ
по курсам «Базы данных» и «Web-программирование».
Базы данных в настоящее время занимают лидирующее положение
в
области информационных технологий. Практически любая задача
связана с обработкой информации. Объемы информации, подлежащие
хранению и обработке, растут быстрыми темпами, поэтому производители программного обеспечения разрабатывают новые подходы
к управлению большими объемами данных. В настоящее время основной акцент направлен на использование сетевых информационных
технологий, базирующихся на архитектуре клиент/сервер, и
ный переход к работе с предметной областью, которую описывают
хранимые данные. Язык структурированных запросов SQL используется для создания баз данных, для добавления и извлечения данных
и является международным стандартом в области баз данных.
Пособие состоит из двух разделов, в которых рассматриваются
основные приемы обработки данных с использованием языка запросов
функции для работы с датой и временем, агрегатные функции
SQL,
для получения итоговой информации из базы данных, возможности
работы с информацией, представленной в виде массива данных,
основы web-программирования. Описываются каскадные таблицы
стилей CSS, клиентский скриптовый язык JavaScript, общешлюзовой
интерфейс, серверный скриптовый язык PHP и взаимодействие
серверных скриптов с системами управления базами данных (СУБД)
с использованием
конкретные примеры и контрольные вопросы, необходимые для
лучшего усвоения теоретического материала.
Издание рассчитано на студентов всех форм обучения направлений
подготовки 09.03.01 «Информатика и вычислительная техника» и 09.03.04
«Программная инженерия», знакомых с основами работы в среде
PostgreSQL.
языка запросов SQL. В каждом разделе приводятся
постепен-
3

1. ЯЗЫК СТРУКТУРИРОВАННЫХ ЗАПРОСОВ
1.1. Обработка данных
с использованием языка запросов SQL
В реляционных базах данных вся информация хранится в прямоугольных таблицах. Таблицы состоят из строк и столбцов, и все операции, связанные с извлечением информации из баз данных, сводятся
к операциям манипулирования с таблицами. База данных содержит
несколько таблиц. Связи между таблицами определяются с помощью
соответствующих полей. При проектировании базы данных
предусмотреть быстрый доступ к информации в таблицах, исключить
ненужное повторение данных, обеспечить целостность данных. Повторяющиеся данные могут привести к следующим проблемам.
Значительное количество времени нужно будет расходовать на
ввод повторяющихся данных (например, вводить одни и те же данные
о клиенте).
Наличие дублирующей информации значительно увеличивает
размер
ния запросов.
вероятность возникновения ошибок.
пространство компьютера.
альной литературе [1–11], поэтому в настоящем учебном пособии
ограничимся рассмотрением на конкретных примерах практических
аспектов
ка структурированных запросов SQL при построении таблиц и их по-
базы данных, что, в свою очередь, снижает скорость выполне-
При многократном вводе повторяющихся данных возрастает
Повторяющиеся данные нерационально используют дисковое
Вопросы проектирования баз данных широко освещаются в специ-
обработки данных из нескольких таблиц. Использование язы-
следует
4

следующей модификации приводится в учебном пособии [8]. Предполагается, что читатель уже знаком с основами работы в среде PostgreSQL. Далее по тексту будет рассматриваться работа в командной
строке SQL Shell (psql).
В качестве примера для построения многотабличных запросов будет
использоваться база данных, в которую входят следующие таблицы:
таблица Client содержит информацию о клиентах (табл. 1.1);
таблица Zakaz содержит информацию о заказах (табл. 1.2);
таблица Sale содержит информацию о продажах (табл. 1.3);
таблица City содержит информацию о городах, где был выпол-
нен заказ (табл. 1.4);
таблица Tovar содержит информацию о товарах (табл. 1.5).
Ввиду ограниченности объема учебного пособия ниже приведены
только те поля, которые в последующем будут использоваться для поиска информации
№
Наименование Описание
п/п
1. idClient Код покупателя
2. FamClient Фамилия покупателя
3. NameClient Имя покупателя
в базе данных.
Таблица 1.1
Поля таблицы Client
Поля таблицы Zakaz
№
Наименование Описание
п/п
1. idZakaz Номер заказа
2. idClient Код покупателя
3. DateZakaz Дата заказа
4. idCity Код города, где осуществлен заказ
5
Таблица 1.2

Таблица 1.3
Поля таблицы Sale
№
Наименование Описание
п/п
1. idZakaz Номер заказа
2. idProduct Код товара
3. Kol Количество товара
Таблица 1.4
Поля таблицы City
№
Наименование Описание
п/п
1. idCity Код города, где осуществлен заказ
2. City Наименование города
Таблица 1.5
Поля таблицы Tovar
№
Наименование Описание
п/п
1. idProduct Код товара
2. Product Наименование товара
3. Cost Стоимость товара
Связи между таблицами используются для объединения столбцов
из одной или нескольких таблиц на основе значений общих столбцов
между таблицами. Общие столбцы – это обычно столбцы первичного
ключа первой таблицы и столбцы внешнего ключа второй таблицы.
Пусть Table1 – это левая таблица, Table2 – правая таблица. Внутреннее
объединение в PostgreSQL возвращает набор результатов, который содержит строки
из одной таблицы, соответствующие строкам второй
таблицы (рис. 1.1). Ниже приведен пример команды.
SELECT * FROM Table1 INNER JOIN Table2 on Table1.столбец =
Table2.столбец;
6

Рис. 1.1. Внутреннее объединение
Результат внутреннего объединения для таблиц Sale и Tovar показан на рис. 1.2.
Рис. 1.2. Внутреннее объединение для таблиц Sale и Tovar
Левое объединение в PostgreSQL возвращает полный набор строк
из левой таблицы с совпадающими строками из правой. Если совпадений нет, то правая сторона будет иметь значения NULL (рис. 1.3).
SELECT * FROM Table1 LEFT JOIN Table2 on Table1.столбец =
Table2.столбец;
Рис. 1.3. Левое внешнее объединение
7

Результат левого внешнего объединения для таблиц Sale и Tovar
показан на рис. 1.4.
Рис. 1.4. Левое внешнее объединение для таблиц Sale и Tovar
Чтобы получить строки только из левой таблицы, необходимо использовать левое внешнее объединение и исключить из правой таблицы те строки, которые не нужны (рис. 1.5).
SELECT * FROM Table1 LEFT JOIN Table2 on Table1.столбец =
Table2.столбец WHERE Table2.id IS NULL;
Рис. 1.5. Левое внешнее объединение
(без строк из правой таблицы)
Результат левого внешнего объединения для таблиц Sale и Tovar
без строк из правой таблицы показан на рис. 1.6.
Рис. 1.6. Левое внешнее объединение таблиц Sale и Tovar
(без строк из правой таблицы)
8

Правое объединение в PostgreSQL возвращает полный набор строк
из правой таблицы с совпадающими строками из левой. Если совпадений нет, то левая сторона будет иметь значения NULL (рис. 1.7).
SELECT * FROM Table1 RIGHT JOIN Table2 on Table1.столбец =
=Table2.столбец;
Рис. 1.7. Правое внешнее объединение
После добавления названий продуктов в таблицу Tovar получим
результат правого внешнего объединения для таблиц Sale и Tovar
(рис. 1.8).
Рис. 1.8. Правое внешнее объединение для таблиц Sale и Tovar
Чтобы получить строки только из правой таблицы, необходимо использовать правое внешнее объединение, а затем исключить из левой
таблицы те строки, которые не нужны (рис. 1.9).
SELECT * FROM Table1 RIGHT JOIN Table2 on Table1.столбец =
Table2.столбец WHERE Table1.id IS NULL;
9

Рис. 1.9. Правое внешнее объединение
(без строк из левой таблицы)
Результат правого внешнего объединения для таблиц Sale и Tovar
без строк из левой таблицы показан на рис. 1.10.
Рис. 1.10. Правое внешнее объединение для таблиц Sale и Tovar
(без строк из левой таблицы)
Полное внешнее объединение в PostgreSQL создает результирующий набор, который хранит в себе все строки из обеих таблиц с соответствующими строками с обеих сторон (рис. 1.11).
SELECT * FROM Table1 FULL OUTER JOIN Table2
on Table1.столбец = Table2.столбец;
Рис. 1.11. Полное внешнее объединение
10
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
