Uczymy się, że większość języków jest klasyfikowana jako jedna z dwóch, „oparta na relacjach” lub „na wysokim poziomie”.
Te pojęcia są ortogonalne. „Oparte na relacjach” oznacza, że semantyka języka opiera się na pojęciu relacji, to znaczy powiązaniu typu „wiele do wielu” między dwoma zestawami (relacje są matematyczną podstawą tabel SQL). „Wysoki poziom” oznacza, że język zawiera wiele abstrakcji, które ukrywają wiele podstawowych szczegółów technicznych (takich jak lokalizacje pamięci, rejestry procesora, dostęp do dysku, operacje bitowe itp.). SQL jest z pewnością oparty na relacjach, ponieważ jego głównym celem jest opisanie relacyjnych danych i operacji na nim. SQL jest również dość wysokim poziomem; nie zapewnia żadnego bezpośredniego dostępu do bajtów na dysku i nie podaje żadnych szczegółów na temat tego, jak przechowuje swoje dane (przynajmniej standardowy SQL nie;
W rzeczywistości istnieje wiele innych osi, wzdłuż których można klasyfikować języki programowania (i danych); szczególnie interesujący jest deklaratywny vs. imperatywny . Języki deklaratywne opisują, co to jest ; imperatywne języki opisują, jak coś zrobić . DDL częścią SQL jest głównie deklaratywny, pomimo słów kluczowych niezmiernie wyglądzie (” CREATE TABLE
”, « DROP DATABASE
», itd.), A nawet część manipulacji danymi ( SELECT
, UPDATE
, INSERT
, DELETE
) jest nadal dość deklaratywny. Bardzo interesującą właściwością SQL jest to, że nie jest on ukończony przez Turinga: nie można pisać nieograniczonej pętli w zwykłym standardowym SQL ANSI.
Funkcjonalne programowanie koncentruje się wokół kilku podstawowych pomysłów:
- funkcje są pierwszorzędnymi obywatelami (tzn. mogą być używane jako wartości, dane wejściowe do innych funkcji i dane wyjściowe z innych funkcji)
- funkcje wyższego rzędu (funkcje działające na funkcjach lub funkcje zwracające funkcje)
- czystość (czysta funkcja to taka, która nie ma skutków ubocznych; czysta funkcja nie może wykonywać żadnych operacji we / wy, nie może czytać ani modyfikować żadnego stanu globalnego, ani nie może przyjmować argumentów niestanowiących odniesienia. Czyste funkcje są szczególnie interesujące, ponieważ będą zawsze produkują tę samą moc wyjściową przy tych samych danych wejściowych)
SQL z pewnością nie obraca się wokół funkcji jako głównego narzędzia do modelowania rzeczy, ale w pewnym sensie obejmuje ideę czystości - to samo zapytanie uruchomione w tej samej bazie danych przyniesie ten sam wynik za każdym razem (z wyjątkiem zamawiania). Nazywanie SQL „językiem funkcjonalnym” jest trochę skomplikowane przez IMO.