Co to jest SQL?

SQL (Structured Query Language) jest najbardziej znanym i rozpowszechnionym strukturalnym językiem zapytań, który służy do tworzenia, modyfikacji oraz zarządzania bazami danych. SQL należy do języków deklaratywnych. Oznacza to, że jest on oparty na paradygmatach programowania nie opartych na programowaniu imperatywnym, które opisuje procesy wykonywania jako sekwencję instrukcji zmieniających stan programu. Sposób przechowywania i pobierania danych jest zależny od decyzji systemu zarządzania bazą danych (Database Management System, DBMS).

 

Język SQL został zaprojektowany przez Donalda D. Chamberlina i Raymonda F. Boyce’a w 1974 roku, w przedsiębiorstwie IBM. SQL był pierwotnie oparty na rachunku relacyjnym. Duży wkład w powstanie języka miał również Edgar F. Codd, który pracował nad zagadnieniami związanymi z porządkowanie danych. W 1970 wydał on pracę: „A Relational Model of Data for Large Shared Data Banks”. Przedstawiony tam relacyjny model zarządzania bazami danych był niezwykle istotny w opracowywaniu języka SQL. Firma IBM jednak nie korzystała z opracowanych rozwiązań i wprowadziła ja dopiero w momencie, kiedy zaczęły z nich korzystać konkurencyjne przedsiębiorstwa. Zyskując coraz większą popularność, SQL uzyskał wsparcie Amerykańskiego Narodowego Instytutu Normalizacji (ANSI) oraz Międzynarodowej Organizacji Normalizacji (ISO), do której należał. Dzięki temu w roku 1986, język ten, stał się oficjalnym standardem tych organizacji. Wczesne wersje specyfikacji języka, takie jak SQL86 oraz SQL89, umożliwiały dokonywanie wielu implementacji, dzięki pozostawieniu dość szerokiej swobody ich twórcom. Sprawiło to, że język stał się elementem łączącym, niekiedy, bardzo zróżnicowane produkty. Dopiero pojawienie się bardziej zintegrowanych i hermetycznych systemów komputerowych wymusiło rozbicie SQL jak platformy łączącej różne produkty. Utrzymanie wcześniejszego stanu rzeczy wymagało wprowadzenia nowego standardu. Stał się nim SQL92, który jest także bazą dla używanych obecnie nowszych wersji.

Wraz z rozwojem języka SQL powstały także dialekty, mające sprostać wymaganiom poszczególnych produktów. Jednym z przykładów może być Transact-SQL (T-SQL), który został wprowadzony przez firmę Microsoft w ich produkcie – SQL Server.  Firma Oracle wprowadziła natomiast PL/SQL. Najpopularniejszym silnikiem relacyjnym używanym w serwisach WWW jest MySQL. Częścią wspólną wszystkich dialektów języka jest model relacyjny, który został oparty o teorię zbiorów. Typy danych oraz nazewnictwo poszczególnych funkcji może się jednak różnic w przypadku określonych dialektów.

Dzięki wsparciu ANSI, od 1986, standardy języka SQL są uaktualnianie na bieżąco. Obecnie, aktualną wersją języka jest ANSI SQL:2011/2011. Wersja ta nie wprowadziła wielu nowych, rewolucyjnych funkcjonalności jednak uporządkowane te pojawiające się wcześniej, m.in. standard obsługi XML, który pojawił się już w SQL:2003.

W zależności od funkcjonalności oraz zastosowań, można podzielić język SQL na kilka szeregów grup, podzbiorów, a także komend.

  • DDL (Data Definition Language) – są to komendy odpowiedzialne za tworzenie i modyfikowanie obiektów w bazie danych.
  • DML (Data Modification Language) – są komendami dotyczącymi wyłącznie modyfikowaniu zawartości bazy danych.
  • DCL (Data Control Language) – zawiera komendy kontrolujące uprawnienia
  • TCL (Transaction Control Language) – jest związany z obsługą transakcji
  • DQL (Data Querying Language) – są to polecenia związane z zadawanie zapytań, czyli tzw. kwerend.

 

 

SQL może również przybierać określone formy w zależności od tego jak jest wykorzystywany, pomimo tego, że pozwala on wyłącznie na komunikowanie się z bazą danych.

  • SQL interakcyjny – jest wykorzystywane do bezpośredniego wprowadzania i pobierania informacji z bazy danych przez użytkownika.

 

  • SQL statyczny – treść instrukcji nie ulega zmianom, jednak może ona zawierać odwołania do zmiennych i parametrów, które przekazują wartości do konkretnych aplikacji. Dzieli się on na dwie odmiany: SQL osadzony, który jest zawarty w kodzie źródłowym innego języka, a także na język modułów, który jest łączony z modułami kodu innych języków.

 

  • SQL dynamiczny – ta forma języka SQL generuje kod SQL w trakcie aplikacji. Jest ona często stosowana w graficznych językach zapytań, gdzie utworzenie zapytania jest efektem działań użytkownika.

Produkty z branży relacyjnych baz danych, nie są związane wyłącznie z serwerami. Serwer jest w tym przypadku jedynie silnikiem bazy danych. Odpowiada on za przechowanie danych, ich komunikacje z clientem oraz za aktualizacje. Za uzupełnienie serwera odpowiedzialny jest natomiast tzw. front end, czyli oprogramowanie pośredniczące. Są to narzędzia mające za zadanie ułatwienie komunikacje z serwerem i wykorzystywanie pobranych z niego danych. „Front endem” może być przykładowo mechanizm generowania i obsługi formularzy i raportów, graficzny język zapytań, arkusze kalkulacyjne, systemu kreacji hipertekstu, oraz oprogramowanie multimedialne służące do prezentacji wybranych treści.