SQL (/ˌɛsˌkjuːˈɛl/ або інколи /ˈsiːkwəl/ "сіквел", англ. Structured query language — мова структурованих запитів) — декларативна мова програмування для взаємодії користувача з базами даних, що застосовується для формування запитів, оновлення і керування реляційними БД, створення схеми бази даних та її модифікації, системи контролю за доступом до бази даних. Сама по собі SQL не є ані системою керування базами даних, ані окремим програмним продуктом. На відміну від дійсних мов програмування (C або Pascal), SQL може формувати інтерактивні запити або, бувши вбудованою в прикладні програми, виступати як інструкції для керування даними. Окрім цього, стандарт SQL містить функції для визначення зміни, перевірки та захисту даних.
SQL | |
---|---|
Парадигма | мульти-парадигмовий |
Дата появи | 1974 |
Творці | та |
Розробник | IBM |
Останній реліз | SQL:2016 (2016) |
Система типізації | строга статична типізація |
Основні реалізації | багато |
Діалекти | SQL-86, SQL-89, SQL-92, SQL:1999, SQL:2003, SQL:2006, SQL:2008, SQL:2011, SQL:2016. |
Під впливом від | Datalog |
Вплинула на | CQL, LINQ, Windows PowerShell |
Операційна система | крос-платформова |
Звичайні розширення файлів | .sql |
Вебсайт | iso.org/standard/76583.html |
|
SQL — це діалогова мова програмування для здійснення запиту і внесення змін до бази даних, а також керування базами даних. Багато баз даних підтримує SQL з розширеннями до стандартної мови. Ядро SQL формує командна мова, яка дозволяє здійснювати пошук, вставку, оновлення і вилучення даних за допомогою використання системи керування і адміністративних функцій. SQL також включає CLI (Call Level Interface) для доступу і керування базами даних дистанційно.
Основу бази даних SQL Server утворює сервер або ядро бази даних.[]Ядро бази даних відповідає за обробку запитів, які надходять від клієнтів, і передачу відповідних результатів клієнтським компонентам.[]
Перша версія SQL була розроблена на початку 1970-х років у IBM. Ця версія мала назву SEQUEL і була призначена для обробки та пошуку даних, що містилися в реляційній базі даних IBM, System R. Мова SQL надалі була стандартизована Американськими Держстандартами (ANSI) в 1986. На початку SQL була запланована як мова запитів і управління даними, а пізніші модифікації SQL створені продавцями системи управління базами даних, які додали процедурні конструкції, команд і темпоральні розширення мов. З випуском стандарту SQL:1999 такі розширення були формально запозичені як частина мови SQL через (SQL/PSM).
Критика SQL включає відсутність крос-платформенності, невідповідну обробку відсутніх даних (дивіться Null (SQL)). Часто це неоднозначна граматика і семантика мови.
Історія
На початку 1970-х років в одній з дослідницьких лабораторій компанії IBM була розроблена експериментальна реляційна СУБД System R, для якої потім була створена спеціальна мова SEQUEL, що дозволяла відносно просто керувати даними в цій СУБД. Абревіатура SEQUEL розшифровувалася як англ. Structured English QUEry Language — «структурована англійська мова запитів». Пізніше з юридичних міркувань мова SEQUEL була перейменована в SQL. Коли в 1986 році перший стандарт мови SQL був прийнятий ANSI (American National Standards Institute), офіційною вимовою стало [,es kju:' el] — ес-к'ю-ел. Попри це, навіть англомовні фахівці по традиції часто називають SQL «сіквел», замість «ес-кью-ел».
Метою розробки було створення простої непроцедурної мови, якою зміг би скористатися будь-який користувач, що навіть не має навичок програмування. Власне розробкою мови запитів займалися Дональд Чемберлін (Donald D. Chamberlin) та Рей Бойс (Ray Boyce). Пет Селінджер (Pat Selinger) займалася розробкою вартісного оптимізатора (англ. cost-based optimizer), Реймонд Лорі (Raymond Lorie) займався компілятором запитів.
Варто зазначити, що SEQUEL не була єдиною мовою подібного призначення. У Каліфорнійському університеті в Берклі була розроблена некомерційна СУБД Ingres (що була, між іншим, дальнім прародичем популярної зараз некомерційної СУБД PostgreSQL), яка була реляційною СУБД, але використовувала свою власну мову QUEL, яка, проте, не витримала конкуренції за кількістю СУБД, що підтримували її, з мовою SQL.
Першими СУБД, що підтримують нову мову SQL (з 1979 року), стали для машин VAX від компанії (що згодом стала компанією Oracle) і від IBM, заснована на .
Перший офіційний стандарт мови SQL був прийнятий ANSI в 1986 і ISO (Міжнародною організацією зі стандартизації) в 1987 (так званий SQL-86), який був уточнений в 1989 році. Наступний розвиток мови постачальниками СУБД зажадав ухвалення в 1992 році нового розширеного стандарту (ANSI SQL-92, або просто ), в якому були визначені спеціальні темпоральні розширення в стандарті SQL. Наступним стандартом став SQL:1999 (). В наш час[], діє стандарт, який був прийнятий у 2003 році (SQL:2003), а надалі зазнав незначних модифікацій.
Стандарти
Повністю історія версій стандартів-ревізій SQL:
Рік | Назва | Інша назва | Коментар | |
---|---|---|---|---|
1986 | SQL-87 | Вперше оприлюднено ANSI. Ратифіковано ISO в 1987. | ||
1989 | FIPS 127-1 | Незначні зміни. | ||
1992 | SQL-92 | SQL2 | Вагомі зміни. | |
1999 | SQL:1999 | SQL3 | Додано регулярні вирази, рекурсивні запити, тригери та деякі об'єктно-орієнтовані нововведення. | |
2003 | SQL:2003 | SQL 2003 | Впроваджені розширення для роботи з XML-даними. | |
2006 | SQL:2006 | SQL 2006 | ISO/IEC 9075-14:2006. Функціональність роботи з XML-даними значно розширено. З'явилась можливість сумісного використання в SQL та XQuery. | |
2008 | SQL:2008 | SQL 2008 | Вдосконалені можливості віконних функцій, усунуто деякі неоднозначності стандарту SQL:2003. Легалізовано ORDER BY поза визначенням курсору. Додано тригери INSTEAD OF. Додано заяви TRUNCATE. | |
2011 | SQL:2011 | SQL 2011 | Додає часові дані (PERIOD FOR) (додаткова інформація у: ). Покращення функцій вікон та пропозиції FETCH. | |
2016 | SQL:2016 | SQL 2016 | Додає рядки підрівнювання посилань, поліморфні функції таблиці, JSON. |
Синтаксис
Мова SQL поділяється на кілька видів елементів:
- Пункти (диз'юнкти) (англ. Clauses), що є складовими частинами інструкцій та запитів. (Іноді вони не обов'язкові.)
- Вирази (англ. Expressions), які можуть генерувати скалярні значення, або таблиці з стовпчиками і рядками даних
- Предикати (англ. Predicates), які описують умови, результатом яких є значення тризначної логіки SQL (true/false/unknown) або Булеві значення істинності і які використовуються для обмеження ефекту інструкцій та запитів, або для зміни потоку виконання програми.
- Запити (англ. Queries), які отримують дані на основі заданих критеріїв.
- Інструкції (англ. Statements), які чинять дію на схему даних чи самі дані, або контролюють транзакції, потік виконання програми, з'єднання, сесії, та виконують діагностику.
- Інструкції SQL також включають крапку з комою («;») для позначення кінця інструкції. Хоча вона не є обов'язковою на кожній платформі, вона описується як стандартна частина граматики SQL.
- Незначимі пропуски загалом ігноруються в інструкціях і запитах SQL, дозволяючи форматувати код SQL з метою покращення читабельності.
Структура SQL
SQL (Structured query language — мова структурованих запитів), складається з:
- DDL (Data Definition Language) — робота зі структурою бази,
- DML (Data Manipulation Language) — робота з рядочками,
- DCL (Data Control Language) — робота з правами,
- TCL (Transaction Control Language) — робота з транзакціями.
Data Definition Language
- CREATE — створення об'єкта (наприклад, таблиці);
- ALTER — зміна об'єкта (наприклад, додавання/зміна полів таблиці);
- DROP — видалення об'єкта.
Data Manipulation Language
Data Control Language
- GRANT — надання прав користувачу;
- DENY — явна заборона для користувача;
- — скасування заборони/дозволу користувачу.
Transaction Control Language
Питання сумісності
Як і з багатьма стандартами в IT-індустрії, з мовою SQL виникла проблема: багато розробників ПЗ вирішили, що функціональність стандартної версії недостатня (що, в принципі, для ранніх версій SQL було певною мірою справедливо) і їх бажанням стало її розширення. Це призвело до того, що у різних виробників СУБД застосовуються різні діалекти SQL, здебільшого несумісні між собою.
До 1996 року питаннями відповідності комерційних реалізацій SQL стандарту займався переважно інститут NIST, який і встановлював рівень відповідності стандарту. Відтоді, як останній підрозділ, що займався СУБД, був розформований, всі зусилля з перевірки СУБД на відповідність стандарту були покладені на її виробника.
Вперше поняття «Рівня відповідності» було запропоноване в стандарті SQL-92. ANSI і NIST визначали чотири рівні відповідності реалізації цьому стандарту:
- Entry (базовий)
- Transitional (перехідний) — перевірку на відповідність цьому рівню проводив тільки інститут NIST
- Intermediate (проміжний)
- Full (повний)
Легко можна зрозуміти, що кожен наступний рівень відповідності свідомо передбачав відповідність попередньому рівню. Далі, згідно з цими рівнями стандартів, будь-яка СУБД, що відповідала рівню Entry, могла бути охарактеризована як «SQL-92-відповідна», хоча насправді її здатність до перенесення і відповідність стандарту обмежувалися набором можливостей, що входять до вказаного рівня.
Ситуація змінилася з ухваленням стандарту SQL:1999. Відтоді стандарт набув модульної структури — основна частина стандарту була винесена в розділ «», а все інше було виведене в окремі модулі. Залишився лише один рівень сумісності — Core. Підтримка решти можливостей залишена на розсуд виробників СУБД. Аналогічно організовані й наступні версії стандарту.
Переваги
Незалежність від конкретної СУБД
Не зважаючи на наявність діалектів і відмінностей в синтаксисі, більшість текстів SQL-запитів, що містять, DDL і DML, можуть бути досить легко перенесені з однієї СУБД в іншу. Існують системи, розробники яких спочатку орієнтувалися на застосування щонайменше кількох СУБД (наприклад: система електронного документообігу може працювати як з Oracle, так і з Microsoft SQL Server та IBM DB2). Природно, що при застосуванні деяких специфічних для реалізації можливостей, такого рівня перенесення дуже важко досягти.
Наявність стандартів
Наявність стандартів і наборів тестів для виявлення сумісності та відповідності конкретній реалізації SQL загальноприйнятому стандарту тільки сприяє «стабілізації» мови. Щоправда, слід звернути увагу на той факт, що сам по собі стандарт місцями занадто формалізований і має завеликі розміри, наприклад, Core-частина стандарту SQL:2003 містить понад 1300 сторінок тексту.
Декларативність
За допомогою SQL програміст описує лише дані, які потрібно витягнути або модифікувати. Яким саме чином це зробити, вирішує СУБД безпосередньо при обробці SQL-запиту. Не слід вважати, що це повністю універсальний принцип — програміст описує набір даних для вибірки або модифікації, проте йому корисно уявляти, як СУБД інтерпретуватиме текст його запиту. Такі моменти стають особливо критичними при роботі з великими базами даних та зі складними запитами — чим складніше сконструйований запит, тим більше варіантів виконання він припускає. Ці варіанти можуть дуже відрізнятися за швидкістю виконання та використаними ресурсами, хоча результат (набір даних) має бути однаковим.
Недоліки
Невідповідність реляційній моделі даних
Творець реляційної моделі даних Едгар Кодд, Крістофер Дейт та їхні прихильники вказують на те, що SQL не є істинно реляційною мовою. Зокрема, вони привертають увагу до таких проблем SQL:
- Рядки, що повторюються
- Невизначені значення (null)
- Явна вказівка порядку стовпчиків зліва направо
- Стовпчики без імені та імена стовпчиків, що повторюються
- Відсутність підтримки властивості «=»
- Використання вказівників
- Значна надлишковість
В опублікованому Крістофером Дейтом і Г'ю Дарвеном Третьому маніфесті, вони декларували принципи СУБД наступного покоління та пропонували мову , яка є справді реляційною.
Складність
Хоча мову SQL було початково заплановано як засіб роботи , урешті-решт вона стала настільки складною, що перетворилася на інструмент програміста.
Відхилення від стандартів
Попри існування міжнародного стандарту ANSI (SQL-92, SQL:1999 та подальші версії), багато компаній, що розробляють СУБД (наприклад, Oracle, Sybase, Microsoft, MySQL), вносять свої зміни до мови SQL, що застосовується в розроблених ними СУБД. Цим вони створюють передумови відхилення від стандартів. Тож у кожній конкретній СУБД застосовуються специфічні діалекти мови SQL.
Складність роботи з ієрархічними структурами
Раніше SQL не пропонувала стандартного способу маніпуляції деревоподібними структурами. Деякі постачальники СУБД запропонували свої рішення. Для прикладу, Oracle використовує вираз CONNECT BY. В наш час[] як стандарт прийнята рекурсивна конструкція WITH.
Процедурні розширення
Оскільки SQL не є мовою програмування (тобто не надає засобів для автоматизації операцій з даними), нововведення різних виробників стосувалися в першу чергу процедурних розширень. Це збережені процедури (англ. stored procedures) і процедурні мови — «надбудови». Практично в кожній СУБД застосовується своя процедурна мова. Подібні мови для найпопулярніших СУБД приведені в наступній таблиці.
СУБД | Коротка назва | Розшифрування |
---|---|---|
Borland InterBase/ Firebird | Procedural SQL | |
IBM DB2 | SQL PL | SQL Procedural Language (розширює SQL/PSM) |
Microsoft SQL Server/ | Transact-SQL | Transact-SQL |
MySQL | SQL/PSM | SQL/Persistent Stored Module |
Oracle | (PL/SQL) | Procedural Language/SQL (заснований на мові Ada) |
PostgreSQL | Procedural Language/PostgreSQL Structured Query Language (схожий на Oracle PL/SQL) |
Простий приклад
Простий запит для виведення списку із атрибутами Name та Address із таблиці School у певній базі даних має такий вигляд:
SELECT Name, Address FROM School;
Примітки
- . Архів оригіналу за 11 січня 2009. Процитовано 31 грудня 2008.
{{}}
: Обслуговування CS1: Сторінки з текстом «archived copy» як значення параметру title () - «„SEQUEL“ був торговою маркою британської авіабудівної групи компаній // Andy Oppel. Databases Demystified. — San Francisco, CA : McGraw-Hill Osborne Media. — С. 90—91. — .
- ANSI/ISO/IEC International Standard (IS).
- O'Reilly Network. [ 3 травня 2007 у Wayback Machine.] An Interview with Chris Date
- . Архів оригіналу за 19 грудня 2008. Процитовано 31 грудня 2008.
Див. також
- Темпоральні розширення в стандарті SQL
- Реляційна алгебра
- База даних
- Семантична оптимізація запитів СУБД
Це незавершена стаття про мови програмування. Ви можете проєкту, виправивши або дописавши її. |
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
SQL ˌɛsˌkjuːˈɛl abo inkoli ˈsiːkwel sikvel angl Structured query language mova strukturovanih zapitiv deklarativna mova programuvannya dlya vzayemodiyi koristuvacha z bazami danih sho zastosovuyetsya dlya formuvannya zapitiv onovlennya i keruvannya relyacijnimi BD stvorennya shemi bazi danih ta yiyi modifikaciyi sistemi kontrolyu za dostupom do bazi danih Sama po sobi SQL ne ye ani sistemoyu keruvannya bazami danih ani okremim programnim produktom Na vidminu vid dijsnih mov programuvannya C abo Pascal SQL mozhe formuvati interaktivni zapiti abo buvshi vbudovanoyu v prikladni programi vistupati yak instrukciyi dlya keruvannya danimi Okrim cogo standart SQL mistit funkciyi dlya viznachennya zmini perevirki ta zahistu danih SQLParadigma multi paradigmovijData poyavi 1974Tvorci taRozrobnik IBMOstannij reliz SQL 2016 2016 Sistema tipizaciyi stroga statichna tipizaciyaOsnovni realizaciyi bagatoDialekti SQL 86 SQL 89 SQL 92 SQL 1999 SQL 2003 SQL 2006 SQL 2008 SQL 2011 SQL 2016 Pid vplivom vid DatalogVplinula na CQL LINQ Windows PowerShellOperacijna sistema kros platformovaZvichajni rozshirennya fajliv sqlVebsajt iso org standard 76583 html Instrukciyi u Vikipidruchniku Mediafajli u Vikishovishi SQL ce dialogova mova programuvannya dlya zdijsnennya zapitu i vnesennya zmin do bazi danih a takozh keruvannya bazami danih Bagato baz danih pidtrimuye SQL z rozshirennyami do standartnoyi movi Yadro SQL formuye komandna mova yaka dozvolyaye zdijsnyuvati poshuk vstavku onovlennya i viluchennya danih za dopomogoyu vikoristannya sistemi keruvannya i administrativnih funkcij SQL takozh vklyuchaye CLI Call Level Interface dlya dostupu i keruvannya bazami danih distancijno Osnovu bazi danih SQL Server utvoryuye server abo yadro bazi danih dzherelo Yadro bazi danih vidpovidaye za obrobku zapitiv yaki nadhodyat vid kliyentiv i peredachu vidpovidnih rezultativ kliyentskim komponentam dzherelo Persha versiya SQL bula rozroblena na pochatku 1970 h rokiv u IBM Cya versiya mala nazvu SEQUEL i bula priznachena dlya obrobki ta poshuku danih sho mistilisya v relyacijnij bazi danih IBM System R Mova SQL nadali bula standartizovana Amerikanskimi Derzhstandartami ANSI v 1986 Na pochatku SQL bula zaplanovana yak mova zapitiv i upravlinnya danimi a piznishi modifikaciyi SQL stvoreni prodavcyami sistemi upravlinnya bazami danih yaki dodali procedurni konstrukciyi komand i temporalni rozshirennya mov Z vipuskom standartu SQL 1999 taki rozshirennya buli formalno zapozicheni yak chastina movi SQL cherez SQL PSM Kritika SQL vklyuchaye vidsutnist kros platformennosti nevidpovidnu obrobku vidsutnih danih divitsya Null SQL Chasto ce neodnoznachna gramatika i semantika movi IstoriyaNa pochatku 1970 h rokiv v odnij z doslidnickih laboratorij kompaniyi IBM bula rozroblena eksperimentalna relyacijna SUBD System R dlya yakoyi potim bula stvorena specialna mova SEQUEL sho dozvolyala vidnosno prosto keruvati danimi v cij SUBD Abreviatura SEQUEL rozshifrovuvalasya yak angl Structured English QUEry Language strukturovana anglijska mova zapitiv Piznishe z yuridichnih mirkuvan mova SEQUEL bula perejmenovana v SQL Koli v 1986 roci pershij standart movi SQL buv prijnyatij ANSI American National Standards Institute oficijnoyu vimovoyu stalo es kju el es k yu el Popri ce navit anglomovni fahivci po tradiciyi chasto nazivayut SQL sikvel zamist es kyu el Metoyu rozrobki bulo stvorennya prostoyi neprocedurnoyi movi yakoyu zmig bi skoristatisya bud yakij koristuvach sho navit ne maye navichok programuvannya Vlasne rozrobkoyu movi zapitiv zajmalisya Donald Chemberlin Donald D Chamberlin ta Rej Bojs Ray Boyce Pet Selindzher Pat Selinger zajmalasya rozrobkoyu vartisnogo optimizatora angl cost based optimizer Rejmond Lori Raymond Lorie zajmavsya kompilyatorom zapitiv Varto zaznachiti sho SEQUEL ne bula yedinoyu movoyu podibnogo priznachennya U Kalifornijskomu universiteti v Berkli bula rozroblena nekomercijna SUBD Ingres sho bula mizh inshim dalnim prarodichem populyarnoyi zaraz nekomercijnoyi SUBD PostgreSQL yaka bula relyacijnoyu SUBD ale vikoristovuvala svoyu vlasnu movu QUEL yaka prote ne vitrimala konkurenciyi za kilkistyu SUBD sho pidtrimuvali yiyi z movoyu SQL Pershimi SUBD sho pidtrimuyut novu movu SQL z 1979 roku stali dlya mashin VAX vid kompaniyi sho zgodom stala kompaniyeyu Oracle i vid IBM zasnovana na Pershij oficijnij standart movi SQL buv prijnyatij ANSI v 1986 i ISO Mizhnarodnoyu organizaciyeyu zi standartizaciyi v 1987 tak zvanij SQL 86 yakij buv utochnenij v 1989 roci Nastupnij rozvitok movi postachalnikami SUBD zazhadav uhvalennya v 1992 roci novogo rozshirenogo standartu ANSI SQL 92 abo prosto v yakomu buli viznacheni specialni temporalni rozshirennya v standarti SQL Nastupnim standartom stav SQL 1999 V nash chas koli diye standart yakij buv prijnyatij u 2003 roci SQL 2003 a nadali zaznav neznachnih modifikacij Standarti Povnistyu istoriya versij standartiv revizij SQL Rik Nazva Insha nazva Komentar1986 SQL 87 Vpershe oprilyudneno ANSI Ratifikovano ISO v 1987 1989 FIPS 127 1 Neznachni zmini 1992 SQL 92 SQL2 Vagomi zmini 1999 SQL 1999 SQL3 Dodano regulyarni virazi rekursivni zapiti trigeri ta deyaki ob yektno oriyentovani novovvedennya 2003 SQL 2003 SQL 2003 Vprovadzheni rozshirennya dlya roboti z XML danimi 2006 SQL 2006 SQL 2006 ISO IEC 9075 14 2006 Funkcionalnist roboti z XML danimi znachno rozshireno Z yavilas mozhlivist sumisnogo vikoristannya v SQL ta XQuery 2008 SQL 2008 SQL 2008 Vdoskonaleni mozhlivosti vikonnih funkcij usunuto deyaki neodnoznachnosti standartu SQL 2003 Legalizovano ORDER BY poza viznachennyam kursoru Dodano trigeri INSTEAD OF Dodano zayavi TRUNCATE 2011 SQL 2011 SQL 2011 Dodaye chasovi dani PERIOD FOR dodatkova informaciya u Pokrashennya funkcij vikon ta propoziciyi FETCH 2016 SQL 2016 SQL 2016 Dodaye ryadki pidrivnyuvannya posilan polimorfni funkciyi tablici JSON SintaksisDokladnishe Sintaksis SQL Mova SQL podilyayetsya na kilka vidiv elementiv Punkti diz yunkti angl Clauses sho ye skladovimi chastinami instrukcij ta zapitiv Inodi voni ne obov yazkovi Virazi angl Expressions yaki mozhut generuvati skalyarni znachennya abo tablici z stovpchikami i ryadkami danih Predikati angl Predicates yaki opisuyut umovi rezultatom yakih ye znachennya triznachnoyi logiki SQL true false unknown abo Bulevi znachennya istinnosti i yaki vikoristovuyutsya dlya obmezhennya efektu instrukcij ta zapitiv abo dlya zmini potoku vikonannya programi Zapiti angl Queries yaki otrimuyut dani na osnovi zadanih kriteriyiv Instrukciyi angl Statements yaki chinyat diyu na shemu danih chi sami dani abo kontrolyuyut tranzakciyi potik vikonannya programi z yednannya sesiyi ta vikonuyut diagnostiku Instrukciyi SQL takozh vklyuchayut krapku z komoyu dlya poznachennya kincya instrukciyi Hocha vona ne ye obov yazkovoyu na kozhnij platformi vona opisuyetsya yak standartna chastina gramatiki SQL Neznachimi propuski zagalom ignoruyutsya v instrukciyah i zapitah SQL dozvolyayuchi formatuvati kod SQL z metoyu pokrashennya chitabelnosti Struktura SQLSQL Structured query language mova strukturovanih zapitiv skladayetsya z DDL Data Definition Language robota zi strukturoyu bazi DML Data Manipulation Language robota z ryadochkami DCL Data Control Language robota z pravami TCL Transaction Control Language robota z tranzakciyami Data Definition Language Dokladnishe DDL CREATE stvorennya ob yekta napriklad tablici ALTER zmina ob yekta napriklad dodavannya zmina poliv tablici DROP vidalennya ob yekta Data Manipulation Language Dokladnishe DML INSERT vstavlennya ryadochka SELECT vibirka UPDATE zmina DELETE vidalennya Data Control Language Dokladnishe DCL GRANT nadannya prav koristuvachu DENY yavna zaborona dlya koristuvacha skasuvannya zaboroni dozvolu koristuvachu Transaction Control Language Dokladnishe Transaction Control Language pochati tranzakciyu COMMIT prijnyati zmini prijnyati v tranzakciyi ROLLBACK vidkat Pitannya sumisnostiYak i z bagatma standartami v IT industriyi z movoyu SQL vinikla problema bagato rozrobnikiv PZ virishili sho funkcionalnist standartnoyi versiyi nedostatnya sho v principi dlya rannih versij SQL bulo pevnoyu miroyu spravedlivo i yih bazhannyam stalo yiyi rozshirennya Ce prizvelo do togo sho u riznih virobnikiv SUBD zastosovuyutsya rizni dialekti SQL zdebilshogo nesumisni mizh soboyu Do 1996 roku pitannyami vidpovidnosti komercijnih realizacij SQL standartu zajmavsya perevazhno institut NIST yakij i vstanovlyuvav riven vidpovidnosti standartu Vidtodi yak ostannij pidrozdil sho zajmavsya SUBD buv rozformovanij vsi zusillya z perevirki SUBD na vidpovidnist standartu buli pokladeni na yiyi virobnika Vpershe ponyattya Rivnya vidpovidnosti bulo zaproponovane v standarti SQL 92 ANSI i NIST viznachali chotiri rivni vidpovidnosti realizaciyi comu standartu Entry bazovij Transitional perehidnij perevirku na vidpovidnist comu rivnyu provodiv tilki institut NIST Intermediate promizhnij Full povnij Legko mozhna zrozumiti sho kozhen nastupnij riven vidpovidnosti svidomo peredbachav vidpovidnist poperednomu rivnyu Dali zgidno z cimi rivnyami standartiv bud yaka SUBD sho vidpovidala rivnyu Entry mogla buti oharakterizovana yak SQL 92 vidpovidna hocha naspravdi yiyi zdatnist do perenesennya i vidpovidnist standartu obmezhuvalisya naborom mozhlivostej sho vhodyat do vkazanogo rivnya Situaciya zminilasya z uhvalennyam standartu SQL 1999 Vidtodi standart nabuv modulnoyi strukturi osnovna chastina standartu bula vinesena v rozdil a vse inshe bulo vivedene v okremi moduli Zalishivsya lishe odin riven sumisnosti Core Pidtrimka reshti mozhlivostej zalishena na rozsud virobnikiv SUBD Analogichno organizovani j nastupni versiyi standartu PerevagiNezalezhnist vid konkretnoyi SUBD Ne zvazhayuchi na nayavnist dialektiv i vidminnostej v sintaksisi bilshist tekstiv SQL zapitiv sho mistyat DDL i DML mozhut buti dosit legko pereneseni z odniyeyi SUBD v inshu Isnuyut sistemi rozrobniki yakih spochatku oriyentuvalisya na zastosuvannya shonajmenshe kilkoh SUBD napriklad sistema elektronnogo dokumentoobigu mozhe pracyuvati yak z Oracle tak i z Microsoft SQL Server ta IBM DB2 Prirodno sho pri zastosuvanni deyakih specifichnih dlya realizaciyi mozhlivostej takogo rivnya perenesennya duzhe vazhko dosyagti Nayavnist standartiv Nayavnist standartiv i naboriv testiv dlya viyavlennya sumisnosti ta vidpovidnosti konkretnij realizaciyi SQL zagalnoprijnyatomu standartu tilki spriyaye stabilizaciyi movi Shopravda slid zvernuti uvagu na toj fakt sho sam po sobi standart miscyami zanadto formalizovanij i maye zaveliki rozmiri napriklad Core chastina standartu SQL 2003 mistit ponad 1300 storinok tekstu Deklarativnist Za dopomogoyu SQL programist opisuye lishe dani yaki potribno vityagnuti abo modifikuvati Yakim same chinom ce zrobiti virishuye SUBD bezposeredno pri obrobci SQL zapitu Ne slid vvazhati sho ce povnistyu universalnij princip programist opisuye nabir danih dlya vibirki abo modifikaciyi prote jomu korisno uyavlyati yak SUBD interpretuvatime tekst jogo zapitu Taki momenti stayut osoblivo kritichnimi pri roboti z velikimi bazami danih ta zi skladnimi zapitami chim skladnishe skonstrujovanij zapit tim bilshe variantiv vikonannya vin pripuskaye Ci varianti mozhut duzhe vidriznyatisya za shvidkistyu vikonannya ta vikoristanimi resursami hocha rezultat nabir danih maye buti odnakovim NedolikiNevidpovidnist relyacijnij modeli danih Tvorec relyacijnoyi modeli danih Edgar Kodd Kristofer Dejt ta yihni prihilniki vkazuyut na te sho SQL ne ye istinno relyacijnoyu movoyu Zokrema voni privertayut uvagu do takih problem SQL Ryadki sho povtoryuyutsya Neviznacheni znachennya null Yavna vkazivka poryadku stovpchikiv zliva napravo Stovpchiki bez imeni ta imena stovpchikiv sho povtoryuyutsya Vidsutnist pidtrimki vlastivosti Vikoristannya vkazivnikiv Znachna nadlishkovist V opublikovanomu Kristoferom Dejtom i G yu Darvenom Tretomu manifesti voni deklaruvali principi SUBD nastupnogo pokolinnya ta proponuvali movu yaka ye spravdi relyacijnoyu Skladnist Hocha movu SQL bulo pochatkovo zaplanovano yak zasib roboti ureshti resht vona stala nastilki skladnoyu sho peretvorilasya na instrument programista Vidhilennya vid standartiv Popri isnuvannya mizhnarodnogo standartu ANSI SQL 92 SQL 1999 ta podalshi versiyi bagato kompanij sho rozroblyayut SUBD napriklad Oracle Sybase Microsoft MySQL vnosyat svoyi zmini do movi SQL sho zastosovuyetsya v rozroblenih nimi SUBD Cim voni stvoryuyut peredumovi vidhilennya vid standartiv Tozh u kozhnij konkretnij SUBD zastosovuyutsya specifichni dialekti movi SQL Skladnist roboti z iyerarhichnimi strukturami Ranishe SQL ne proponuvala standartnogo sposobu manipulyaciyi derevopodibnimi strukturami Deyaki postachalniki SUBD zaproponuvali svoyi rishennya Dlya prikladu Oracle vikoristovuye viraz CONNECT BY V nash chas koli yak standart prijnyata rekursivna konstrukciya WITH Procedurni rozshirennyaOskilki SQL ne ye movoyu programuvannya tobto ne nadaye zasobiv dlya avtomatizaciyi operacij z danimi novovvedennya riznih virobnikiv stosuvalisya v pershu chergu procedurnih rozshiren Ce zberezheni proceduri angl stored procedures i procedurni movi nadbudovi Praktichno v kozhnij SUBD zastosovuyetsya svoya procedurna mova Podibni movi dlya najpopulyarnishih SUBD privedeni v nastupnij tablici SUBD Korotka nazva RozshifruvannyaBorland InterBase Firebird Procedural SQLIBM DB2 SQL PL SQL Procedural Language rozshiryuye SQL PSM Microsoft SQL Server Transact SQL Transact SQLMySQL SQL PSM SQL Persistent Stored ModuleOracle PL SQL Procedural Language SQL zasnovanij na movi Ada PostgreSQL Procedural Language PostgreSQL Structured Query Language shozhij na Oracle PL SQL Prostij prikladProstij zapit dlya vivedennya spisku iz atributami Name ta Address iz tablici School u pevnij bazi danih maye takij viglyad SELECT Name Address FROM School Primitki Arhiv originalu za 11 sichnya 2009 Procitovano 31 grudnya 2008 a href wiki D0 A8 D0 B0 D0 B1 D0 BB D0 BE D0 BD Cite web title Shablon Cite web cite web a Obslugovuvannya CS1 Storinki z tekstom archived copy yak znachennya parametru title posilannya SEQUEL buv torgovoyu markoyu britanskoyi aviabudivnoyi grupi kompanij Andy Oppel Databases Demystified San Francisco CA McGraw Hill Osborne Media S 90 91 ISBN 0 07 225364 9 ANSI ISO IEC International Standard IS O Reilly Network 3 travnya 2007 u Wayback Machine An Interview with Chris Date Arhiv originalu za 19 grudnya 2008 Procitovano 31 grudnya 2008 Div takozhSQL u sestrinskih VikiproyektahPortal Programuvannya Teksti u Vikipidruchniku Fajli u Vikishovishi Temporalni rozshirennya v standarti SQL Relyacijna algebra Baza danih Semantichna optimizaciya zapitiv SUBD Ce nezavershena stattya pro movi programuvannya Vi mozhete dopomogti proyektu vipravivshi abo dopisavshi yiyi