Мова SQL
Найважливішою функцією автоматизованої інформаційної системи є надання користувачеві засобів для введення, обробки та видачі даних.
На ранньому етапі розвитку систем управління базами даних (СУБД) в умовах низьких технічних характеристик ЕОМ основна увага розробників СУБД була спрямована на проблеми розміщення інформації в базі та обміну даними між дисковою пам'яттю та оперативною пам'яттю, оскільки це насамперед визначало ефективність функціонування СУБД. При цьому функції введення, обробки та видачі даних у кожній СУБД реалізувалися по-своєму. Це призводило до того, що для кожної конкретної СУБД були потрібні кваліфіковані програмісти, які знають особливості її структури та способу розміщення даних, які розробляли програму-інтерфейс користувача специфічною мовою даної СУБД.
Такий кваліфікований програміст виступав посередником між інформаційними потребами користувача та базою даних.
Необхідність у такому спеціалісту як обов'язковому елементі інформаційної системи призводила до додаткових витрат при створенні та експлуатації баз даних, знижувала ефект від впровадження автоматизованих інформаційних систем та стримувала їх поширення у процесах інформаційного забезпечення діяльності підприємств та організацій.
Мова SQL (Structured Query Language, структурована мова запитів) була створена в 1974р. виходячи з теоретичних ідей Кодда. Завдяки вдалій концептуальній основі швидко став стандартною мовою, яка використовується в реляційних СУБД. У 1986р. був визнаний Американським національним інститутом стандартів (ANSI) та Міжнародною організацією зі стандартів (ISO) як стандартною мовою опису та обробки даних у реляційних базах даних.
СпочаткуSQL замислювався як мову спілкування (взаємодії) користувача (непрограміста) із базами даних. Ідея такої мови полягала в наборі з кількох фраз-примітивів англійської («вибрати», «оновити», «вставити», «видалити»), якими користувач-непрограміст ставив би «питання» до СУБД, реалізуючи свої інформаційні потреби. У цьому випадку додатковою функцією СУБД має бути інтерпретація цих «питань» низькомовною мовою машинних кодів для безпосередньої обробки даних та надання результатів користувачеві. Так народилася ідея поняття «машини даних», тобто такої частини СУБД, яка поділяє власне дані та завдання щодо їх обробки.
Як альтернативу мові SQL деякий час виступала ще одна реляційна мова QBE (Query By Example, мова запитів за зразком). Надалі він поступився першістю мови SQL, але на його основі були згодом побудовані численні візуальні конструктори запитів до БД. Більшість із цих візуальних конструкторів нині передбачають можливість будь-якої миті отримати текст SQL на основі візуального конструювання, і, навпаки, за текстом SQL отримати візуальний вигляд запиту.
приклад. СУБД Microsoft Access. Один і той же запит у режимі конструктора запитів за зразком та (нижче) у режимі SQL.

Слід зазначити, що початкова ідея створити мову, якою користувачі-непрограмісти стали б звертатися до СУБД, не вдалася. Справа в тому, що, починаючи приблизно з 1990 року, із впровадженням графічних операційних систем вимоги до кваліфікації користувача різко знизилися, і тому навіть таку спрощену мову рядові користувачі не освоювати. Натомість розробники стали пропонувати візуальні конструктори запитів. Однак головна роль мови SQL полягаєСьогодні в тому, що він дозволяє відокремити низькорівневі функції з організації структури та обробки даних від високорівневих функцій, дозволяючи при експлуатації банків даних зосередитися на смисловому, а не технічному аспекті роботи з даними.
Вдала ідея універсального проміжного мови всім СУБД дала додатковий імпульс широкому впровадженню СУБД і особливо реляційних СУБД, довгі роки закріпивши їх лідируючі позиції проти іншими СУБД.
Мова SQL включає три розділи: DDL ( Data Definition Language , мова визначення даних), DML ( Data Manipulation Language , мова маніпуляції даними) і власне мову запитів. Втім, іноді ще окремо виділяють мову безпеки даних, тобто команди DDL , які дозволяють розмежувати права окремих користувачів і груп користувачів у доступі до об'єктів БД.
Мова SQL відноситься до декларативних мов програмування. Для цього слід згадати, що у процедурних мовах (С, Паскаль, Бейсик) програма є запис послідовності команд, описує, як із вихідних даних отримати потрібний результат. На відміну від цього, інструкції SQL вказують, що потрібно отримати, але не як це зробити. Саме «машина даних» за інструкцією SQL виробляє машинний код, виконання якого забезпечить результат, що задається SQL-інструкцією.
Ми в цьому посібнику наводимо деякий урізаний варіант SQL, не згадуючи всі другорядні деталі, що є в SQL. При цьому ми орієнтуємося на діалект, який використовується в СУБД InterBase . Вибір даної СУБД обумовлений декількома причинами: 1) наявність безкоштовного аналога СУБД СУБД FireBird розробляється групою програмістів, робота яких оплачується з благодійного фонду та є безкоштовною длявсіх користувачів; 2) наявність відмінної інструментальної програми для роботи з даною СУБД Програма IBExpert розроблена українськими програмістами і безкоштовна для громадян РФ; 3) СУБД Interbase є власністю Borland і тому добре інтегрована в середовище програмування Delphi; 4) СУБД InterBase є, можна сказати, класичною реляційною СУБД в ній є практично все, що «належить» мати реляційним СУБД, і, в той же час, немає «нічого зайвого», що робить її зручним прикладом для викладання різних аспектів теорії реляційних БД.
Позначення
У тексті ми виділяємо такі фрагменти:
? позначає проблему, яку слід вирішити
! позначає, як ця проблема вирішується
√ означає подробиці визначень, пояснення, а також додаткові зауваження, особливі випадки тощо.
При поясненні синтаксису команд SQL ми використовуватимемо традиційні для інформатики угоди. Квадратні дужки [ ] вказують, що цей елемент може бути відсутнім. Фігурні дужки < Вказують, що слід вибрати один варіант з тих, які перераховані в цих дужках, при цьому можливі варіанти розділені вертикальною рисою . Багатокрапка … означає можливість багаторазового повторення описаних елементів. Кутові дужки <> вказують, що у цій позиції має бути вписана синтаксично правильна конструкція, сенс якої розшифровується далі за текстом.
Деякі загальні зауваження щодо синтаксису SQL
SQL використовує типові для багатьох мов програмування правила імена повинні записуватися латинськими літерами, цифрами та символом підкреслення, причому на першій позиції не допускається цифра. Втім, деякі СУБД допускають відступи від цих правил, наприклад, СУБД Microsoft Accessдозволяються й українські імена полів.
Стандартний SQL не розрізняє великі та малі літери. Тому ми використовуємо регістри символів у методичних цілях - у командах для кращого розуміння службові слова SQL написані великими літерами, а те, що визначається поточною ситуацією (імена таблиць, полів тощо) записано малими літерами.
Стандартний SQL ніяк не використовує, тобто ігнорує переходи на новий рядок, а також надмірні прогалини. Інакше кажучи, команду SQL можна записувати в один рядок або в декілька рядків, результат буде один і той же. Тому розбиття на рядки ми будемо виконувати з міркувань забезпечення кращої читання або (рідше) з міркувань економії рядків.
Зауважимо також, що багато СУБД (або інструментальні програми для роботи з СУБД) у командах SQL під час роботи з текстовими даними допускають використання як і одинарних апострофів (за стандартом SQL), так і подвійних лапок “ “.
Основний приклад
Для опису більшості прикладів ми будемо використовувати базу даних із двох таблиць - Fakultet і Spisok.
Короткий код факультету, рядкове поле довжини не більше 10 символів, первинний ключ
Повна назва факультету, рядкове поле з максимальною довжиною рядка 100 символів
Прізвище ім'я по-батькові декана, рядкове поле з максимальною довжиною рядка 100 символів