Файл: Современные языки программирования (Теоретические аспекты и техническое предназначение языков программирования).pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 31.03.2023

Просмотров: 445

Скачиваний: 2

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

2. Анализ методов современного программирования на примере языка структурированных запросов SQL.

2.1. Структура языка структурированных запросов SQL.

Сегодня, данный язык структурированных запросов имеет название SQL (Structured Query Language). Данное изменение обусловлено тем фактом, что данный язык, до настоящего времени пережил большое количество изменений и доработок, однако, он является стандартным языком реляционной СУБД (языком запросов).

Язык структурированных запросов SQL на протяжении многих лет совершенствовался, так стоит отметить важный период в разработке данного языка, а именно, период окончания разработки проекта компании IBM под названием System/R (1979 год). Принято считать, что, начиная сданного периода, и до настоящего времени язык структурированных запросов SQL все также совершенствуется и набирает все более ценное положение в индустрии работы с базами данных.

Работа над официальным стандартом языка SQL началась в 1982 году в рамках комитета ANSI. В 1986 году был утвержден первый вариант стандарта ANSI, а в 1987 году этот стандарт был утвержден и ISO. В 1989 году стандарт претерпел незначительные изменения, но именно этот вариант получил название SQL-1 или SQL-89.

Язык структурированных запросов SQL является информационно-логическим языком, предназначенным для описания, изменения и извлечения данных, хранимых в реляционных базах данных [7, c. 120].

Как уже отмечалось выше, язык SQL разработан и направлен на те действия пользователя, которые необходимо совершать с данными у в какой-либо базе данных. На рисунке 1 представлен стандартный набор операций, которые может воспроизвести пользователь с базой данных с помощью структурированного языка запросов SQL.

Рисунок 1 - Набор операций с помощью SQL

Cоздатель языка SQL, E.Ф. Кодд, создавал данный язык на основе реляционной алгебры, которая, как известно, ориентирована на работу не с какими - либо отдельными записями, а с отношениями, другими словами множествами. Так, можно сделать следующий вывод о том, что операндами структурированного языка запросов SQL, соответственно также, как и в реляционной алгебре, являются отношения (таблицы), следовательно, выполняя некоторые операции. Их результатом так же являются отношения (таблицы). Так, по вышесказанному можно сделать вывод о том, что структурированный язык запросов SQL предназначен для работы над таблицами баз данных в целом, а именно над такими для выполнения таких действий с ними как создание, дополнение, изменение, удаление и т.д., однако, данный язык предназначен и для работы над данными находящемуся в таблицах, к действиям работы с данными относятся такие действия как создание, редактирование, выборка, добавление, удаление [14, c. 62].


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

Как уже отмечалось выше, SQL является языком структурированных запросов. Под запросом, а именно SQL запрос — это некоторая команда, формируемая пользователем базы данных, которая в свою очередь предназначенная для выполнения, в используемой системе управления базами данных, определенных действий над данными и базой данных в целом.

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

Рисунок 2 - Классификация запросов

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

  • Запросы, реализуемые с целью работы над таблицами в целом, к данным операциям относятся такие как создание или какое-либо изменение таблиц;
  • Запросы, реализуемые с целью работы над данными, находящимися в таблицах, к данным операциям относятся набор записей, редактирование, создание и т.д [15, c. 420].

Каждая таблица описывается в виде перечисления своих полей (столбцов таблицы) с указанием следующих атрибутов:

  • Типа хранимых в каждом поле значений (таблица 1) [17, c. 384];
  • Связей между таблицами (задание первичных и вторичных ключей);
  • Информации, необходимой для построения индексов.

Таблица 1 – Типы хранимых в поле значений

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


В структуре языка структурированных запросов SQL существует несколько основных операторов, к ним относятся:

  • Операторы определения данных DDL (Data Definition Language);
  • Операторы манипулирования данными DML (Data Manipulation Language);
  • Операторы управления транзакциями TCL (Tool Command Language) [6, c. 100].

Операторы определения объектов базы данных DDL предназначены для работы над структурой базы данных и имеющихся в ней таблиц, а именно для создания, редактирования, добавления, удаления и других операций. Также, данные операторы предназначены для выполнения операций с доменами баз данных и представлениями.

Операторы манипулирования данными DML предназначены для работы с данными, находящимися в базе данных, а также в таблица находящихся в базе данных.

Операторы управления транзакциями позволяют создавать и удалять ограничения, предоставлять и отменять привилегии пользователю [11, c. 123].

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

Запросы, реализованные пользователем, можно разделить на несколько типов:

  • Запросы первого типа. К данным запросам можно отнести команды пользователя, направленные на создание, в имеющейся базе данных, новых таблиц, а также, команды, направленные на изменение структуры уже существующих таблиц в базе данных;
  • Запросы второго типа, относятся к командам пользователя, направленные на работу со строками, находящимися в таблицах, к данным запросам относятся такие операции как:
    • вставка новой строки;
    • изменение значений полей строки или набора строк;
    • удаление строки или набора строк.
  • Запрос третьего типа. Данный запрос является самым необходимым запросом в использовании пользователем базы данных. Данный запрос возвращает пользователю набор полученным им строк. С данным набором строк, пользователь так же может воспроизвести одну из нескольких операций, таких как:
    • просмотреть полученный набор;
    • изменить все записи набора;
    • удалить все записи набора [14, c. 62].

Таким образом, можно сделать вывод о том, что язык SQL направлен на работу пользователя в формирование выбора некоторых таблиц и строк и совершений действий над ними.

На основании вышеизложенного можно привести пример предложения из операторов на выборку данных из какой-либо таблице на языке структурированных запросов SQL. Например, существует таблица в базе данных содержащая информацию о книгах, названия книг и ценах на эти книги. Пользователю требуется произвести выборку среди данных, то есть вывести на экран список книг цена которых будет составлять меньше 10, и больше 20. Для достижение желаемого результата пользователю следует реализовать следующий запрос на языке структурированных запросов SQL:


SELECTНазвание, Цена FROM Книги

WHERE Цена NOT BETWEEN10 AND 20

Данная команда возвращает все записи, у которых значение Цена либо меньше 10, либо больше 20. Для проверки, является ли значение колонки null- значением, используется выражение IS NULL.

Как известно, язык структурированных запросов SQL является наиболее сложным языком построения запросов к базе данных, который так же вызывает затруднение при его изучении у пользователя. Так, для упрощения его использования пользователям, в соответствии с последними стандартами на данный язык запросов, а именно SQL:2003, SQL:1999, и даже SQL/92, данный язык разбит на уровни, а точнее слои, для упрощения его понимания и использования. В данных стандартах на язык структурированных запросов SQL указанны следующие уровни классификации данного языка:

  • Базовый уровень (entry);
  • Промежуточный уровень (intermediate);
  • Полный уровень (full) [6, c. 100].

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

  • Прямое взаимодействие конечного пользователя с системой управления базой данных (direct). Если сравнивать данный уровень с выше представленной классификацией, то его можно сравнить с базовым уровнем, так как, данный уровень отражает ориентированность языка на работу с множествами.
  • Следующий уровень получил название уровня встраиваемого SQL (embedded). Данное название обусловлено тем фактом, что на данном уровне существует возможность использования языка структурированных запросов в традиционном программировании.
  • Последний уровень данной классификации является динамическим SQL (dynamic). Данное название обусловлено тем, что L во встраиваемый SQL добавляются конструкции, позволяющие приложениям обращаться к СУБД с конструкциями прямого SQL, которые динамически образуются во время выполнения программы [7, c. 120].

На рисунке 3 данная классификация представлена графически.

Рисунок 3 – Классификация взаимодействия

Методы современного программирования на примере языка структурированных запросов SQL.

Основная работа с базой данных проводится с использованием прикладных программ, из которых и идут запросы к базам данных. В этом случае интерактивный режим работы не может быть использован, текст SQL- запроса должен быть либо включен в прикладную программу (в том случае, если запрос полностью определен заранее), либо формироваться в процессе работы прикладной программы [18, c. 490].


Программный SQL предназначен для того, чтобы встраивать SQL-запросы в прикладную программу, написанную на одном из языков программирования. Однако, для достижения поставленной цели возникают некоторые препятствия, такие как:

  • Компилятор с алгоритмического языка должен иметь возможность выделения в тексте прикладной программы последовательность операторов SQL;
  • Компилятор должен объединять возможности языка программирования высокого уровня (переменные, ветвления, циклы) и возможности SQL (запросы на языке, близком к естественному) [20, c. 400].

Решение этих проблем частично описано в стандарте SQL, упомянутых ранее.

Рассмотрим алгоритм выполнения SQL-запросов в интерактивном режиме работы. Например, пользователь вынужден ожидать результатов выполнения запроса в течение всего времени работы реализации SQL-запроса. Если через некоторое время пользователю снова нужно будет выполнить тот же самый запрос, СУБД вновь проделает те же самые действия, что и при предыдущем обращении. Однако, в процессе данной реализации может возникнуть некоторое несовершенство механизма:

  • Одни и те же этапы выполняются каждый раз заново для одинаковых запросов;
  • СУБД не может обрабатывать интерактивные запросы с опережением [14, c. 62].

Решение подобных проблем очевидно – часть действий по обработке запроса необходимо выполнять один раз, сохранять результат в некотором виде, а потом использовать столько раз, сколько необходимо. Эта идея является одной из основных идей программного SQL. Таким образом, программный SQL позволяет:

  • Использовать операторы интерактивного SQL в тексте программы на языке программирования высокого уровня;
  • Наряду с операторами интерактивного SQL использовать новые специальные конструкции, дополняющие SQL и увеличивающие его возможности;
  • Для передачи параметров в запрос использовать в тексте запроса переменные, объявленные в программе;
  • Для возврата в программу результатов запроса использовать специальные конструкции, отсутствующие в интерактивном SQL;
  • Осуществлять компиляцию запросов совместно с программой, обеспечивая впоследствии согласованную работу программы и СУБД.
  • Заранее (на этапе компиляции) выполнять действия по анализу и оптимизации запросов, экономя время, затрачиваемое на этапе выполнения программы.