Программирование в базе данных Microsoft SQL Server – это возможно?

Всем привет! Сегодня мы с Вами поговорим о том, можно ли программировать в базе данных, в частности, в базе данных под управлением Microsoft SQL Server.

Программирование в базе данных Microsoft SQL Server – это возможно

Введение

На самом деле, такой вопрос возникает даже у многих разработчиков, которые работают, например, в направлении разработки desktop приложений, в web направлении и во многих других, где база данных выступает только в качестве инструмента для хранения данных.

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

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

В Microsoft SQL Server эти «программы» реализуются с помощью специальных объектов, таких как: хранимые процедуры, функции, триггеры.

Заметка! Чем отличаются функции от хранимых процедур в Microsoft SQL Server.

Все что нам нужно, чтобы выполнить такую программу, это подключиться к SQL Server и запустить ее (например, хранимую процедуру). Результатом выполнения таких программ может быть как набор данных, сформированный, например, по хитрому алгоритму, т.е. как результат оператора SELECT, но только алгоритм может быть очень сложный и многошаговый, так и сам факт выполнения определенных действий, т.е. никаких данных нам на клиент возвращаться не будет.

А теперь давайте поговорим о языке SQL, а также о том, как реализуются те самые программы, т.е. на каком языке они пишутся.

Что такое SQL?

SQL

Итак, что же такое SQL?

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

Реляционная база данных – это некая упорядоченная информация, связанная между собой определёнными отношениями. Логически такая база данных представлена в виде таблиц, в которых и лежит вся эта информация.

Однако тут возникает вопрос, как вся эта информация выглядит физически на компьютере?

А представлена она, конечно же, в виде файлов, сформированных в специальном формате.

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

Для этого должен быть какой-то инструмент, т.е. специальная программа. И такой программой выступает СУБД – это система управления базами данных.

Заметка! Обзор инструментов для работы с Microsoft SQL Server.

Обязательно стоит отметить, что СУБД – это на самом деле некая разновидность программ, иными словами, существует достаточно много различных СУБД.

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

Однако каким образом мы можем обратиться к данным и манипулировать ими? Иными словами, как получить информацию из базы данных, как добавить, удалить или изменить информацию в базе?

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

SQL (Structured Query Language) – язык структурированных запросов, с помощью данного языка пишутся специальные запросы к базе данных с целью получения этих данных и манипулирования ими.

Язык SQL – это стандарт, он реализован во всех реляционных базах данных.

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

Заметка! Если Вас интересует язык SQL, то рекомендую почитать книгу «SQL код» это самоучитель по языку SQL для начинающих программистов. В ней язык SQL рассматривается как стандарт, чтобы после прочтения данной книги можно было работать с языком SQL в любой системе управления базами данных.

Как программировать в базе данных?

Как программировать в базе данных

У каждой СУБД есть расширение стандарта SQL, так называемый диалект языка SQL.

В Microsoft SQL Server этим расширением является язык Тransact-SQL.

Тransact-SQL (сокращенно T-SQL, транзакционный SQL) – это расширение языка SQL, реализованное в Microsoft SQL Server.

T-SQL обладает всеми возможностями языка SQL, однако предназначен он для решения задач программирования, при этом эти задачи могут быть не связаны с реляционными данными. Иными словами, на T-SQL Вы можете полноценно программировать, используя переменные, циклы, условные конструкции, обработку ошибок и другие возможности. T-SQL – это своего рода процедурный язык.

T-SQL позволяет нам реализовывать сложные алгоритмы бизнес-логики, именно на этом языке и создаются те самые «программы» в базе данных, т.е. на нем пишутся хранимые процедуры, функции, триггеры в Microsoft SQL Server.

Заметка! Что нужно знать и уметь разработчику T-SQL.

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

Таким образом, с помощью языка T-SQL можно программировать в базе данных Microsoft SQL Server, т.е. это действительно возможно.

Если говорить о других популярных СУБД, то у них реализовано свое расширение языка SQL, на котором можно программировать в базе данных, например

  • В Oracle Database реализован язык PL/SQL (Procedural Language / Structured Query Language)
  • В PostgreSQL реализован PL/pgSQL (Procedural Language/PostGres Structured Query Language)

Зачем нужно программировать в базе данных?

Кто-то может спросить, а зачем вообще нам нужно программировать в базе данных, ведь мы можем все это сделать у себя в приложении на клиенте?

Дело в том, что если алгоритм подразумевает обработку какого-то объема данных (например, это аналитический алгоритм), то реализовывать этот алгоритм необходимо как можно ближе к данным, в нашем случае – это непосредственно в базе данных, так как в некоторых случаях это будет самое эффективное решение.

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

Заметка! Сортировка пузырьком на T-SQL – пример реализации алгоритма.

При этом стоит, конечно же, отметить, что в случае реализации бизнес-логики на стороне базы данных, Вы исключаете передачу этих данных по сети, а таких данных, как Вы знаете, может быть много, а также в этом случае Вам не нужно посылать много различных небольших запросов на получение каких-то дополнительных данных.

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

Подводя итог сегодняшнему материалу, отмечу, что программировать можно во всех популярных реляционных базах данных на внутренних расширениях языка SQL, более того, многие СУБД поддерживают и другие, так скажем, «классические» языки программирования, например, в Microsoft SQL Server можно обрабатывать данные на языке Python или подключать CLR-сборки, реализованные на языке C#.

Заметка! Как выполнить код Python в Microsoft SQL Server на T-SQL.

На этом все, всем пока!

Понравилась статья? Поделиться с друзьями:
Заметки IT специалиста
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!:
Нажимая на кнопку «Отправить комментарий», я даю согласие на обработку персональных данных и принимаю политику конфиденциальности.