1. Лекція
ТЕМА: Введення в структурований язик запитів SQL
МЕТА: Дати визначення структурованого язика запитів SQL. Ввести поняття бази даних, реляційної бази даних, СУБД. Визначити місце язика SQL в розробці інформаційних систем, організованих на основі технології клієнт-сервер. Навести класифікацію команд SQL: визначення структури бази даних, маніпулювання даними, вибірка даних, управління даними, команди адміністрування даних і управління транзакціями. Дати опис учбової бази даних.
ПЛАН
1 Основні поняття
2 Реляційні бази даних
3 Реляційні зв'язки між таблицями баз даних
3.1 Відношення "один–до–багатьох"
3.2 Відношення "один– до–одного"
3.3 Відношення "багато-до-багатьох"
4 Стандарт і реалізація язика SQL
5 Введення в технологію клієнт-сервер
6 Типи команд SQL
6.1 Визначення структур бази даних (DDL)
6.2 Маніпулювання даними (DML)
6.3 Вибірка даних (DQL)
6.4 Язик управління даними (DCL - Data Control Language)
6.5 Команди адміністрування даних
6.6 Команди управління транзакціями
7 Переваги язика SQL
8 Запис SQL-операторів
Будь-яка професійна діяльність так чи інакше пов'язана з інформацією, з організацією її збору, зберігання, вибірки. Можна сказати, що невід'ємною частиною повсякденного життя сталі бази даних, для підтримки яких потрібен деякий організаційний метод, або механізм. Такий механізм називається системою управління базами даних (СУБД). Отже, введемо основні поняття.
База даних (БД) – набір логічно зв'язаних даних (і їх опис), призначений для задоволення інформаційних потреб організації, що спільно використовується.
СУБД (система управління базами даних ) – програмне забезпечення, за допомогою якого користувачі можуть визначати, створювати і підтримувати базу даних, а також здійснювати до неї контрольований доступ.
Системи управління базами даних існують вже багато років, багато які з них зобов'язаний своїм походженням системам з неструктурованими файлами на великих ЕОМ. Разом із загальноприйнятими сучасними технологіями в області систем управління базами даних починають з'являтися нові напрями, що обумовлене вимогами бізнесу, що росте, об'ємами корпоративних даних і, звичайно ж, впливом технологій Internet.
Управління основними потоками інформації здійснюється за допомогою так званих систем управління реляційними базами даних, які беруть свій початок в традиційних системах управління базами даних. Саме об'єднання реляційних баз даних і клиент-серверных технологій дозволяє сучасному підприємству успішно управляти власними даними, залишаючись конкурентоздатним на ринку товарів і послуг.
Реляційні БД мають могутній теоретичний фундамент, заснований на математичній теорії відносин. Поява теорії реляційних баз даних дала поштовх до розробки ряду язиків запитів, які можна віднести до двох класів:
язики алгебри, застосовані до відносин, що дозволяють виражати запити засобами спеціалізованих операторів;
язики числення предикатів, що є набором правил для запису виразу, що визначає нове відношення із заданої сукупності існуючих відносин. Отже, числення предикатів є метод визначення того відношення, яке бажане одержати як відповідь на запит з відносин, даних, що вже є в базі.
В реляційній моделі об'єкти реального миру і взаємозв'язку між ними представляються за допомогою сукупності зв'язаних між собою таблиць (відносин).
Навіть у тому випадку, коли функції СУБД використовуються для вибору інформації з однієї або декількох таблиць (тобто виконується запит ), результат також представляється в табличному вигляді. Більш того, можна виконати запит із застосуванням результатів іншого запиту.
Кожна таблиця БД представляється як сукупність рядків і стовпців, де рядки (записи) відповідають екземпляру об'єкту, конкретній події або явищу, а стовпці (поля) – атрибутам (ознакам, характеристикам, параметрам) об'єкту, події, явища.
В кожній таблиці БД необхідна наявність первинного ключа – так іменують поле або набір полів, однозначно ідентифікуючий кожний екземпляр об'єкту або запис. Значення первинного ключа в таблиці БД повинне бути унікальним, тобто в таблиці не допускається наявність двох і більш записів з однаковими значеннями первинного ключа. Він повинен бути мінімально достатнім, а значить, не містити полів, видалення яких не відобразиться на його унікальності.
Зв'язки між об'єктами реального миру можуть знаходити своє віддзеркалення в структурі даних, а можуть і матися на увазі, тобто бути присутній на неформальному рівні.
Між двома або більш таблицями бази даних можуть існувати відносини підлеглості, які визначають, що для кожного запису головної таблиці (званої ще батьківською) можлива наявність однієї або декількох записів в підлеглій таблиці (званої ще дочірньою).
Виділяють три різновиди зв'язку між таблицями бази даних:
"один–до–багатьох";
"один–до–одного";
"багато–до–багатьох".
Відношення " один–до–багатьох" має місце, коли одному запису батьківської таблиці може відповідати декілька записів дочірньої. Зв'язок " один–до–багатьох" іноді називають зв'язком "багато–до–одного". І в тому, і в іншому випадку суть зв'язку між таблицями залишається незмінною. Зв'язок " один–до–багатьох" є найпоширенішим для реляційних баз даних. Він дозволяє моделювати також ієрархічні структури даних.
Відношення "один– до–одного" має місце, коли одному запису в батьківській таблиці відповідає один запис в дочірній. Це відношення зустрічається набагато рідше, ніж відношення "один–до–багатьох". Його використовують, якщо не хочуть, щоб таблиця БД "розпухала" від другорядної інформації, проте для читання зв'язаної інформації в декількох таблицях доводиться проводити ряд операцій читання замість однієї, коли дані зберігаються в одній таблиці.
Відношення "багато-до-багатьох" застосовується в наступних випадках:
одному запису в батьківській таблиці відповідає більше одного запису в дочірній;
одному запису в дочірній таблиці відповідає більше одного запису в батьківській.
Всякий зв'язок "багато-до-багатьох" в реляційній базі даних необхідно замінити на зв'язок "один–до–багатьох" (одну або більш) за допомогою введення додаткових таблиць.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Історія |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Співи |
|
Група
|
|
Предмет
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Фізика |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Петренко |
|
Історія |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
С |
|
Співи |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Фізика |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Зростання кількості даних, необхідність їх зберігання і обробки привели до того, що виникла потреба в створенні стандартного язика баз даних, який міг би функціонувати в численних комп'ютерних системах різних видів. Дійсно, з його допомогою користувачі можуть маніпулювати даними незалежно від того, чи працюють вони на персональному комп'ютері, мережній робочій станції або універсальній ЕОМ.
Одним з язиків, що з'явилися в результаті розробки реляційної моделі даних, є язик SQL (Structured Query Language), який в даний час набув дуже широке поширення і фактично перетворився на стандартний язик реляційних баз даних. Стандарт на язик SQL був випущений американським національним інститутом стандартів (ANSI) в 1986 р., а в 1987 р. Міжнародна організація стандартів (ISO) прийняла його як міжнародний. Нинішній стандарт SQL відомий під назвою SQL/92.
З використанням будь-яких стандартів зв'язані не тільки численні і цілком очевидні переваги, але і певні недоліки. Перш за все, стандарти направляють в певне русло розвиток відповідної індустрії; у разі язика SQL наявність твердих основоположних принципів приводить, кінець кінцем, до сумісності його різних реалізацій і сприяє як підвищенню переносимості програмного забезпечення і баз даних в цілому, так і універсальності роботи адміністраторів баз даних. З другого боку, стандарти обмежують гнучкість і функціональні можливості конкретної реалізації. Під реалізацією язика SQL розуміється програмний продукт SQL відповідного виробника. Для розширення функціональних можливостей багато розробників, що дотримуються прийнятих стандартів, додають до стандартного язика SQL різні розширення. Слід зазначити, що стандарти вимагають від будь-якої закінченої реалізації язика SQL наявності певних характеристик і у загальних рисах відображають основні тенденції, які не тільки приводять до сумісності між всіма конкуруючими реалізаціями, але і сприяють підвищенню значущості програмістів SQL і користувачів реляційних баз даних на сучасному ринку програмного забезпечення.
Всі конкретні реалізації язика дещо відрізняються одна від одної. Самі ж виробники мають бути зацікавлені і гарантувати, щоб їх реалізація відповідала сучасним стандартам ANSI в частині переносимості і зручності роботи користувачів. Проте кожна реалізація SQL містить удосконалення, що відповідають вимогам того або іншого серверу баз даних. Ці удосконалення або розширення язика SQL є додатковими командами і опціями, що є додатком до стандартного пакету і доступні в даній конкретній реалізації.
В даний час язик SQL підтримується багатьма десятками СУБД різних типів, розроблених для найрізноманітніших обчислювальних платформ, починаючи від персональних комп'ютерів і закінчуючи мейнфреймами.
Всі язики маніпулювання даними, створені для багатьох СУБД до появи реляційних баз даних, були орієнтовані на операції з даними, представленими у вигляді логічних записів файлів. Зрозуміло, це вимагало від користувача детального знання організації зберігання даних і серйозних зусиль для вказівки того, які дані необхідні, де вони розміщуються і як їх одержати.
Даний язик SQL орієнтований на операції з даними, представленими у вигляді логічно взаємозв'язаних сукупностей таблиць-відношень. Найважливіша особливість його структур – орієнтація на кінцевий результат обробки даних, а не на процедуру цієї обробки. Язик SQL сам визначає, де знаходяться дані, індекси і навіть які найефективніші послідовності операцій слід використовувати для отримання результату, а тому указувати ці деталі в запиті до бази даних не вимагається.