Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
тема4_ДСН.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
59.07 Кб
Скачать

Мова sql

Анотація Тема присвячена вивченню мови запитів реляційних баз даних.

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

Як відомо, двома фундаментальними мовами запитів до реляційних БД є мови реляційної алгебри і реляційного числення. При всій своєї строгості і теоретичної обгрунтованості ці мови рідко використовуються в сучасних реляційних СУБД як засоби призначеного для користувача інтерфейсу. Запити на цих мовах важко формулювати і розуміти. SQL є деякою комбінацією реляційного числення кортежів і реляційної алгебри, причому дотепер немає загальної згоди, до якої з класичних мов він ближче. При цьому можливості SQL ширші, ніж у цих базових реляційних мов, зокрема, в загальному випадку неможлива трансляція запиту, сформульованого на SQL, у вираз реляційної алгебри, потрібне деяке її розширення.

Мова для взаємодії з БД SQL (Structured Query Language) з'явилася у середині 70 - х і була розроблена в рамках проекту експериментальної реляційної СУБД System R . Ця мова була орієнтована на зручне і зрозуміле користувачам формулювання запитів до реляційної БД.

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

У предикатах з вкладеними підзапитами в SQL можна вживати теоретико-множинних оператори порівняння, що дозволяє формулювати квантіфіцировані запити (ці можливості звичайно найважче розуміються користувачами і тому надалі в SQL з'явилися явно квантіфіцюємі предикати).

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

Ще однією відмінністю SQL є необов'язкове видалення кортежів-дублікатів в остаточному або проміжних відношеннях-результатах. Строго кажучи, результатом оператора вибірки в мові SQL є не відношення, а мультимножина кортежів. У тих випадках, коли семантика запиту вимагає наявність відношення, знищення дублікатів проводиться неявно.

Найзагальніший вид запиту на мові SQL представляє теоретико-множинний вираз алгебри, складений з елементарних запитів.

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

В даний час SQL реалізований практично у всіх комерційних реляційних СУБД, всі фірми проголошують відповідність своєї реалізації стандарту SQL, і насправді реалізовані діалекти SQL дуже близькі.

Це непроцедурна мова, тому тут необхідно указувати, яка інформація повинна бути одержана, а не як її можна одержати. Інакше кажучи, мова SQL не вимагає вказівки методів доступу до даних.

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

  • кожна фраза повинна починатися з нового рядка;

  • початок кожної фрази повинен бути вирівнян з початком решти фраз інструкції;

  • якщо фраза має декілька частин, кожна з них повинна починатися з нового рядка

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