
- •Із чого почати?
- •Історія розвитку sql
- •Керування базами даних за допомогою sql
- •Опис навчальної бази даних
- •Структура операторів і базові елементи мови
- •Синтаксис оператора select
- •Використання умов пошуку для відбору рядків
- •Одержання підсумкових даних
- •Сортування результатів запиту
- •Прості запити й правила їхнього виконання
- •Особливості багатотабличних запитів
- •Об'єднання таблиць
- •Використання вкладених запитів
- •Використання операторів exists, any, all, і some
- •Додавання інформації в базу даних
- •Видалення даних
- •Зміна існуючих даних
- •Створення баз даних
- •Створення таблиць
- •Індекси
- •Визначення умов перевірки
- •Створення синонімів
Структурована мова запитів SQL
Розділ 1 Введення в SQL
Із чого почати?
Збільшення кількості даних, необхідність їх зберігати й обробляти привели до того, що виникла потреба в створенні стандартної мови БД, що міг би функціонувати у великій кількості різних видів комп'ютерних систем. Дійсно, така стандартна мова дозволяє користувачам маніпулювати даними незалежно від того, чи працюють вони на персональному комп'ютері, мережної робочої станції, або на універсальної ЕОМ.
SQL (Structured Query Language) - це скорочена назва структурованої мови запитів, що надає засоби створення й обробки даних у реляційних БД. Незалежність від специфіки комп'ютерних технологій, а також підтримка SQL лідерами промисловості в області технології реляційних баз даних зробили його основною стандартною мовою БД.
Всі мови маніпулювання даними, створені до появи реляційних БД, розроблені для багатьох СКБД, були орієнтовані на операції з даними, представленими у вигляді логічних записів файлів. Зрозуміло, це жадало від користувача детального знання організації зберігання даних і серйозних зусиль для визначення того, які дані необхідні, де вони розміщаються і як їх отримати.
Розглянута мова SQL орієнтована на операції з даними, представленими у вигляді логічно взаємозалежних сукупностей таблиці-відносин. Найважливіша особливість структур цієї мови полягає в орієнтації на кінцевий результат обробки даних, а не на процедуру цієї обробки. SQL сам визначає, де перебувають дані, індекси й навіть які найбільш ефективні послідовності операцій варто використати для одержання результату, тому не треба вказувати ці деталі в запиті до БД.
Поява теорії реляційних БД дало поштовх до розробки ряду мов запитів, які можна віднести до двох класів:
алгебраїчні мови, що дозволяють виражати запити засобами спеціалізованих операторів, застосовуваних до відносин;
мови вирахування предикатів, що представляють собою набір правил для запису виразів, що визначає нове відношення із заданої сукупності існуючих відносин. Отже, вирахування предикатів є метод визначення того відношення, що бажано отримати, як відповідь на запит з відношенні, уже наявних у БД.
В 1987 році SQL став стандартом мов для професійних реляційних СКБД і почав впроваджуватися в усі розповсюджені системи. Це пов'язане з рядом наступних моментів. Постійний зріст швидкодії, а також зниження енергоспоживання, розмірів і вартості комп'ютерів привели до різкого розширення можливих ринків їхнього збуту, кола користувачів, розмаїтості типів і цін. Природно, що розширився попит на різноманітне програмне забезпечення. У боротьбі за покупця фірми, що розробляють програмне забезпечення, сталі випускати на ринок усе більшь інтелектуальні, а виходить, об'ємні програмні комплекси. Купуючи їх, багато організацій й окремих користувачів часто не могли встановити їх на власних ЕОМ. Для обміну інформацією і її поширення були створені мережі ЕОМ, де узагальнюючі програми й дані стали розміщати на спеціальних файлових серверах.
СКБД, що працюють із файловими серверами, дозволяють безлічі користувачів різних ЕОМ, розташованих досить далеко друг від друга, одержувати доступ до тих самих БД. При цьому спрощується розробка різних автоматизованих систем керування організаціями, навчальних комплексів, інформаційних й інших систем, де безліч співробітників або учнів повинні використати загальні дані й обмінюватися створюваною в процесі роботи інформацією. Однак при такому підході вся обробка запитів із програм або з терміналів користувацьких ЕОМ на них і виконується, тому для реалізації навіть простого запиту необхідно зчитувати з файлового сервера або записувати на сервер цілі файли, а це веде до конфліктних ситуацій і перевантаження мережі. Для виключення зазначених недоліків була запропонована технологія клієнт/сервер, однак при цьому потрібний єдина мова спілкування із сервером - і в його якості був обраний SQL.
Реалізація в SQL концепції операцій, орієнтованих на однотабличне подання даних, дозволила створити компактну мову з невеликим набором процедур. SQL може використатися як для виконання запитів, так і для побудови прикладних програм. У ньому існують:
процедури визначення даних - визначення БД, а також визначення й знищення таблиць й індексів;
запити на вибір даних - пропозиція SELECT:
процедури модифікації даних - додавання, видалення й зміна даних;
процедури керування даними - надання й скасування привілеїв на доступ до даних, керування транзакціями й інші.
Крім того. SQL надає можливість виконувати в цих процедурах;
арифметичні обчислення, включаючи різноманітні функціональні перетворення, обробку текстових рядків і виконання операцій порівняння значень арифметичних виразів і текстів;
упорядкування рядків або стовпців при виводі вмісту таблиць на друк або екран дисплея;
створення представлень, що дозволяють користувачам інтерпретувати дані без збільшення їхнього обсягу в БД;
збереження виведеного по запитам вмісту таблиці, декількох таблиць або подання в іншій таблиці;
групування даних і застосування до цих груп таких операцій, як середнє, сума, максимум, мінімум, число елементів і т.п.
Стандарт SQL визначається ANSI (американським національним інститутом стандартів) і тепер також приймається ISO (міжнародною організацією по стандартизації). Однак більшість комерційних програм БД розширюють SQL без повідомлення ANSI, додаючи різні інші особливості в цю мову, які, як вони вважають, будуть досить корисні. Іноді це трохи порушує стандарт мови, хоча гарні ідеї мають тенденцію розвиватися й незабаром стають стандартами.
Мова SQL є основою багатьох СКБД, тому що він відповідає за фізичне структурування й запис даних на диск, також за фізичне читання даних з диска й дозволяє приймати SQL-запити від інших компонентів СКБД і користувальницьких додатків. У такий спосіб. SQL є потужним інструментом, що забезпечує користувачам програмам й обчислювальним системам доступ до інформації, що зберігається в реляційних БД.
Основні переваги мови SQL полягають в наступному:
стандартність мови SQL - як уже було сказано, його використання в програмах стандартизовано міжнародними організаціями;
незалежність від конкретних СКБД - всі розповсюджені СКБД використають SQL, тому що реляційні БД і програми, які з нею працюють, можна перенести з однієї СКБД на іншу з мінімальними доробками;
можливість переносу з однієї обчислювальної системи на іншу - СКБД може бути орієнтована на різні обчислювальні системи, однак додатка, створені за допомогою SQL. допускають використання як для локальних БД, так і для великих багатокористувацьких систем;
реляційна основа мови - SQL є мовою реляційних БД, тому вона стала популярною тоді, коли популярною стала реляційна модель подання даних. Таблична структура реляційної БД добре зрозуміла, тому мова SQL є простою і легкою для вивчення;
можливість створення інтерактивних запитів - SQL забезпечує користувачам негайний доступ до даних, при цьому в інтерактивному режимі можна отримати результат запиту за дуже короткий час без написання складної програми;
можливість програмного доступу до БД - мова SQL може бути легко використаний у додатках, яким необхідно звертатися до БД. Ті самі оператори SQL використаються як для інтерактивного, так і для програмного доступу, тому частини програм, що містять звертання до БД, можна спочатку перевірити в інтерактивному режимі, а потім вбудовувати в програму;
забезпечення різного подання даних - за допомогою SQL можна передбачити таку структуру даних, що той або інший користувач буде бачити різні подання даних. Крім того, дані з різних частин БД можуть бути скомбіновані й представлені користувачеві у вигляді однієї простої таблиці, а виходить, подання можна використати для посилення захисту БД й її настроювання під конкретні вимоги окремих користувачів;
можливість динамічної зміни й розширення структури БД - мова SQL навіть під час звертання до вмісту дозволяє маніпулювати структурою БД. Це велика перевага перед мовами статичного визначення даних, які забороняють доступ до БД під час зміни її структури. У такий спосіб. SQL забезпечує гнучкість із погляду пристосованості БД до вимог, що змінюються, предметної області, не перериваючи при цьому роботу додатка, що виконує в реальному масштабі часу;
■ підтримка архітектури клієнт/сервер - SQL один із кращих засобів для реалізації додатків на платформі клієнт/сервер. При цьому SQL служить сполучною ланкою між клієнтською системою, взаємодіючої з користувачем, і серверною системою, що управляє БД, дозволяючи кожній з них зосередитися на виконанні своїх прямих функцій.