- •Мова sql
- •Компоненти sql
- •Insert Використовується для пакетного завантаження в базу
- •Пропозиції sql
- •Операції sql
- •Приклади запитів
- •Пропозиція order by (сортування результатів)
- •Застосування агрегатних функцій в інструкції select
- •15. Знайти максимальну і мінімальну кількість проданих товарів за одну покупку.
- •Пропозиція group by
- •Пропозиція having
- •18. Вибрати тих клієнтів загальна кількість покупок яких більше 20.
- •Пропозиція parameters (використання параметрів в запитах)
- •Вибірка даних з декількох таблиць
- •Пропозиція inner join (внутрішнє з'єднання)
- •Підпорядковані запити
- •Інструкція insert into
- •Інструкція select...Into
- •Інструкція update
- •Інструкція delete
- •Інструкція alter table
- •Інструкція create index
- •Інструкція drop
Мова 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 і їх послідовності матимуть більш читабельний вигляд при використанні відступів і вирівнювання. Рекомендується дотримуватися наступних правил:
кожна фраза повинна починатися з нового рядка;
початок кожної фрази повинен бути вирівнян з початком решти фраз інструкції;
якщо фраза має декілька частин, кожна з них повинна починатися з нового рядка
з деяким відступом відносно початка фрази, що указуватиме на їх підлеглість.
