SQL, czyli Structured Query Language, jest jednym z najbardziej znanych i najczęściej używanych strukturalnych języków zapytań. Wykorzystuje się go do tworzenia, modyfikowania oraz zarządzania bazami danych. SQL należy do grupy języków deklaratywnych, gdyż jest oparty na paradygmatach programowania niezwiązanych z programowaniem imperatywnym. W przypadku SQL sposób przechowywania oraz pobierania danych jest uzależniony od decyzji systemu zarządzania bazą danych.
SQL i jego historia
Początki języka SQL sięgają pierwszej połowy lat 70-tych XX w. W 1974 r. Donald D. Chamberlin i Raymond F. Bruce, pracownicy przedsiębiorstwa IMB, stworzyli język, który opierał się na rachunku relacyjnym. W jego powstanie duży wkład miał również Edgar F. Codd, który zajmował się zagadnieniami związanymi z porządkowaniem danych. W 1970 r. ukazała się jego praca zatytułowana „A Relational Model of Data for Large Shared Data Banks”, w której znalazł się relacyjny model zarządzania bazami danych – istotna podwalina dla opracowania języka SQL.
Firma IMB, której pracownicy stworzyli SQL, nie od razu skorzystała jednak z opracowanych przez nich rozwiązań. Zostały one wykorzystane dopiero w momencie, kiedy konkurencyjne przedsiębiorstwa zaczęły korzystać ze zbliżonych narzędzi. SQL z roku na rok zyskiwał jednak coraz większą popularność, aby w końcu uzyskać wsparcie Amerykańskiego Narodowego Instytutu Normalizacji (ANSI) oraz Międzynarodowej Organizacji Normalizacji (ISO). W roku 1986 został się z kolei uznany za oficjalny standard obydwu organizacji.
Wersje oraz dialekty SQL
Bardzo wczesne wersje SQL oznaczone jako SQL86 i SQL89 dawały możliwość dokonywania implementacji, co pozwoliło temu językowi stać się swoistym elementem łączącym ze sobą bardzo zróżnicowane produkty. Dopiero w momencie, kiedy do użytku trafiły bardziej zintegrowane oraz hermetyczne systemy komputerowe SQL został rozbity na poszczególne platformy. Aby było możliwe utrzymanie wcześniejszego stanu rzeczy konieczne stało się wprowadzenie nowego standardu. W ten sposób pojawiła się wersja SQL92 stanowiąca swoistą bazę dla wszystkich nowszych wersji powstałych po niej.
Intensywny rozwój języka SQL sprawił, że w jego obrębie zaczęły pojawiać się także liczne dialekty. Miały one za zadanie sprostać wymaganiom poszczególnych dostępnych na rynku produktów. Łącznikiem wszystkich występujących w SQL dialektów jest model relacyjny, który opiera się o teorię zbiorów. Różne są natomiast typy danych oraz nazwy poszczególnych funkcji. Do najpopularniejszych dialektów SQL należy MySQL, który wykorzystywany jest głównie w serwisach WWW. Innym z nich jest Transact-SQL (T-SQL) występujący w Microsoft SQL Server. Firma Oracle wprowadziła natomiast PL/SQL.
Standardy SQL, dzięki wsparciu ANSI od 1986 r., są stale uaktualniane. Najnowszą obecnie wersją tego języka jest kompilacja oznaczona jako ANSI SQL:2011/2011. Mimo tego, że nie wprowadza ona żadnych rewolucyjnych zmian, jej atutem jest uporządkowanie nowości wprowadzonych w poprzednich wersjach, do których należy m. in. standard obsługi XML po raz pierwszy występujący w wersji SQL:2003.
Podział języka SQL ze względu na funkcjonalność i zastosowanie
Język SQL, w zależności od jego funkcjonalności oraz zastosowania możemy podzielić na kilka grup, podzbiorów oraz komend. Należą do nich:
- DDL (Data Definition Language) – komendy odpowiedzialne za tworzenie oraz modyfikowanie obiektów w bazie danych;
- DML (Data Modification Language) – polecenia dotyczące modyfikowania zawartości bazy danych;
- DCL (Data Control Language) – komendy kontrolujące uprawnienia;
- TCL (Transaction Control Language) – polecenia związane z obsługą transakcji;
- DQL (Data Querying Language) – komendy związane z zadawaniem zapytań, czyli kwerend.
Mimo tego, że zadaniem SQL jest komunikowanie się z bazą danych, język ten może przybierać określone formy w zależności od swojego wykorzystania. Formy SQL mogą być następujące:
- SQL interakcyjny – wykorzystywany do bezpośredniego wprowadzania oraz pobierania informacji z bazy danych przez użytkownika;
- SQL statyczny – treść instrukcji nie ulega zmianom, może jednak zawierać odwołania do zmiennych i parametrów przekazujących wartości do konkretnych aplikacji. Dzieli się na dwie grupy: SQL osadzony, zawarty w kodzie źródłowym innego języka oraz język modułów, połączony z modułami kodu innych języków;
- SQL dynamiczny – forma generująca kod SQL w trakcie aplikacji stosowana w graficznych językach zapytań, gdzie utworzenie zapytania jest efektem działań użytkownika.
Serwer w przypadku produktów z relacyjnych baz danych jest silnikiem bazy danych. Jego zadaniem jest przechowywanie danych, komunikowanie się z clientem oraz przeprowadzanie aktualizacji. Uzupełnieniem serwera jest natomiast front end, czyli oprogramowanie pośredniczące. Jest ono narzędziem ułatwiającym komunikację z serwerem oraz wykorzystanie pobranych danych. Front end może stanowić mechanizm generowania oraz obsługiwania formularzy i raportów, graficzny język zapytań, arkusz kalkulacyjny, system kreacji hipertekstu lub oprogramowanie multimedialne do prezentacji określonych treści.