Język SQL (Structured Query Language) jest to uniwersalny język stosowany w systemach relacyjnych baz danych do komunikowania się z bazą. Jest on również podstawowym językiem programowania baz danych, pozwalającym na tworzenie i modyfikowanie obiektów bazy danych np. przykład tabel.
Język SQL jest językiem delkaratywnym. W językach deklaratywnych definiuje się warunki, jakie musi spełniać końcowy wynik, natomiast nie definiujemy się sposobu, w jaki ten wynik zostanie osiągnięty. W instrukcjach języka SQL nie znajdziemy informacji, w jaki sposób serwer bazodanowy powinien uzyskać wymagany wynik. Sposób wykonania instrukcji zależy od serwera baz danych i to zadaniem serwera jest znalezienie najlepszego sposobu osiągnięcia spodziewanego wyniku.
Język SQL realizuje trzy podstawowe typy zadań – definiowanie danych, manipulowanie danymi i kontrolowanie danych. W związku z tym jego instrukcje można podzielić na trzy kategorie:
- Instrukcje DDL (Data Definition Language – język definicji danych)– tworzą język definiowania danych i służą do tworzenia, modyfikowania i usuwania obiektów bazy danych.
- Instrukcje DML (Data Manipulation Language – język manipulacji danych) – tworzą język manipulowania danymi i służą do odczytywania i modyfikowania danych.
- Instrukcje DCL (Data Control Language – język kontroli nad danymi) – tworzą język kontroli dostępu do danych i umożliwiają nadawanie i odbieranie uprawnień użytkownikom.
Niektóre źródła rozróżniają czwartą kategorię. Jest to DQL (Data Query Language – język definiowania zapytań). Do tej kategorii wchodzi jedno polecenie – SELECT. Często SELECT traktuje się jako część języka DML (Data Manipulation Language), ale to podejście nie wydaje się właściwe ponieważ DML z definicji słuzy do manipulowania danymi – ich tworzenia, usuwania i uaktualniania. Na pograniczu obu języków znajduje się polecenie SELECT INTO, które dodatkowo modyfikuje (przepisuje, tworzy) dane.
Język |
Polecenia wchodzące w skład języka |
DML |
INSERT – umieszczanie danych w bazie UPDATE – zmiana istniejących danych DELETE – usuwanie danych z bazy |
DDL |
CREATE – utworzenie struktury (bazy danych, tabeli, indeksu) DROP – usunięcie struktury ALTER – zmiana struktury (dodanie kolumny, zmiana typu danych, zmiana nazwy kolumny) |
DCL |
GRANT – nadawanie uprawnień do pojedynczych obiektów lub globalnie konkretnemu użytkownikowi REVOKE – odbieranie uprawnień DENY – zabranianie wykonywania pewnych operacji |
DQL |
SELECT – pobieranie danych z bazy danych |
Składnia języka jest zbiorem reguł, których należy przestrzegać. W języku SQL stosuje się trzy kategorie pojęć składniowych: identyfikatory, literały i operatory.
Identyfikator jednoznacznie definiuje obiekt bazy danych. Każdy obiekt bazy danych (baza, tabela, kolumna) musi posiadać niepowtarzalną nazwę w obrębie obiektu rodzica. Identyfikatory muszą być zgodne ze zdefiniowanymi w standardzie regułami:
- nie mogą być dłuższe niż 128 znaków. Zaleca się używania krótkich nazw, ale muszą jednoznacznie opisywać obiekt
- mogą zawierać litery, cyfry oraz znaki: @ $ #
- nie mogą zawierać spacji ani innych znaków specjalnych
- muszą zaczynać się literą
- nie mogą być słowami kluczowymi języka SQL
Literał jest stałą wartością. Wszystkie wartości liczbowe, ciągi znaków i daty, jeżeli nie są identyfikatorami, są traktowane jako stałe, czyli literały
- typy liczbowe moją dopuszczalną postać liczby, np.: 150, -375, 5.39, 3E4
- ciągi znaków muszą być umieszczone w apostrofach: 'Gdańsk', 'Komputer'
- typy daty muszą być umieszczone w apostrofach, na przykład: '20-09-2012', '2010-02-13'
Operatory odgrywają rolę łączników. Ze względu na zastosowanie zostały podzielone na:
- arytmetyczne – suma ( + ), różnica ( - ), iloczyn ( * ), iloraz ( / ), modulo ( % ),
- znakowe – konkatenacja (złączenie ciągu znaków) ( + ), symbol dowolny ciąg znaków ( % ), symbol zastępujący jeden znak ( _ )
- logiczne – AND, OR, NOT
- porównania – =, <, >, <=, >=, <>
- operatory specjalne (zależą od systemu bazodanowego) IN, BETWEEN .. AND, LIKE