Програмування в базі даних microsoft sql server-це можливо?

84

Всім привіт! сьогодні ми з вами поговоримо про те, чи можна програмувати в базі даних, зокрема, в базі даних під управлінням microsoft sql server.

Введення

Насправді, таке питання виникає навіть у багатьох розробників, які працюють, наприклад, в напрямку розробки desktop додатків, в web напрямку і в багатьох інших, де база даних виступає тільки в якості інструменту для зберігання даних.

Іншими словами, багато розробників думають, що реляційна база даних призначена виключно для зберігання інформації, яку можна зберегти в цій базі даних і витягти її за допомогою мови sql. Причому так думають не тільки початківці програмісти, а й програмісти з досвідом.

Однак, практично всі сучасні системи управління реляційними базами даних мають функціонал не тільки для зберігання інформації, але і функціонал для роботи з цією інформацією. Простіше кажучи, база даних дозволяє зберігати свого роду “програми”, в яких може бути реалізована практично будь-яка бізнес-логіка.

У microsoft sql server ці» програми ” реалізуються за допомогою спеціальних об’єктів, таких як: збережені процедури, функції, тригери.

Все що нам потрібно, щоб виконати таку програму, це підключитися до sql server і запустити її (наприклад, збережену процедуру). Результатом виконання таких програм може бути як набір даних, сформований, наприклад, за хитрим алгоритмом, тобто. Як результат оператора select, але тільки алгоритм може бути дуже складний і багатокроковий, так і сам факт виконання певних дій, тобто ніяких даних нам на клієнт повертатися не буде.

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

Що таке sql?

Отже, що ж таке sql?

Щоб краще зрозуміти, що ж таке sql, давайте почнемо з розгляду самого поняття бази даних.

реляційна база даних – це якась упорядкована інформація, пов’язана між собою певними відносинами. Логічно така база даних представлена у вигляді таблиць, в яких і лежить вся ця інформація.

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

А представлена вона, звичайно ж, у вигляді файлів, сформованих в спеціальному форматі.

Звідси виникає наступне питання, як створити такий файл і відкрити його з метою перегляду всієї інформації, іншими словами, як створити базу даних і управляти всією інформацією в базі даних?

Для цього повинен бути якийсь інструмент, тобто спеціальна програма. І такою програмою виступає субд – це система управління базами даних.

Обов’язково варто відзначити, що субд – це насправді якась різновид програм, іншими словами, існує досить багато різних субд.

Тепер ми розуміємо, що інформація в реляційній базі даних упорядкована і логічно представлена у вигляді таблиць, а зберігається і управляється вся ця інформація за допомогою спеціальної програми під назвою субд.

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

Для цього повинен бути спеціальний механізм, який дозволяв би нам здійснювати маніпулювання даними. Якраз таким механізмом і є мова 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 спрощує написання 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 в тій чи іншій субд, призначені і оптимізовані виключно для роботи з даними, тобто. У цих мовах вже реалізовані найпопулярніші алгоритми для роботи з даними, такі як: з’єднання таблиць, агрегація і угруповання, сортування і багато інших, і все це реалізовано за замовчуванням і працює досить швидко.

При цьому варто, звичайно ж, відзначити, що в разі реалізації бізнес-логіки на стороні бази даних, ви виключаєте передачу цих даних по мережі, а таких даних, як ви знаєте, може бути багато, а також в цьому випадку вам не потрібно посилати багато різних невеликих запитів на отримання якихось додаткових даних.

Але у такого підходу, безумовно, є і недоліки, наприклад, у високонавантажених системах реалізація складної бізнес-логіки на стороні бази даних може дуже легко навантажити сервер баз даних до відмови.

Підводячи підсумок сьогоднішньому матеріалу, зазначу, що програмувати можна у всіх популярних реляційних базах даних на внутрішніх розширеннях мови sql, більш того, багато субд підтримують і інші, так скажемо, «класичні» мови програмування, наприклад, в microsoft sql server можна обробляти дані на мові python або підключати clr-збірки, реалізовані на мові c#.