Ogólnie

 

SQL to strukturalny język zapytań (ang. Strucured Query Language). Jest to najbardziej rozpowszechniony standaryzowany język dostępu do systemów zarządzania relacyjnymi bazami danych (RDBMS). SQL służy do zapisywania i pozyskiwania danych do i z bazy. Język ten jest rozpoznawany niemal przez wszystkie systemy baz danych, m. in. MySQL, Oracle, PostgreSQL, Sybase, Microsoft SQL Server.

Opisowo

 

Ponieważ SQL jest językiem standaryzowanym, dostęp do danych jest możliwy przez wiele różnych platform sprzętowych, w tym komputery osobiste, mikrokomputery i duże komputery.

Polecenia SQL maja postać zbliżoną do zdań w języku angielskim i są stosowane w celu uzyskania dostępu do danych i sterowania operacjami w bazie danych. Użytkownik mający małe doświadczenie w przetwarzaniu danych lub niemający go wcale, może szybko nauczyć się podstawowych konstrukcji SQL, a ekspert od przetwarzania danych może znaleźć w tym języku pełny zestaw potrzebnych mu narzędzi. Zatem jest to język, którego używają zarówno zwykli użytkownicy, jak i fachowcy od przetwarzania danych.

Reguły składniowe

 

SQL jest językiem strukturalnym, zdefiniowanym za pomocą reguł składniowych. Występują w nim trzy rodzaje poleceń. Pierwszy to polecenia języka definiowania danych, które umożliwiają tworzenie obiektów bazy danych, takie jak tabela i perspektywy. Drugi rodzaj to polecenia języka operowania danymi, które są używane do wydobywania informacji z bazy danych, usuwania informacji z bazy danych i dodawania ich do niej. Trzeci rodzaj to polecenia języka administrowania danymi, które służą do przyznawania i odwoływania uprawnienia dostępu do bazy danych.

  • DDL (Data Definition Language) – język definiowania baz danych. Język DDL jest przeznaczony do tworzenia nowych baz danych.
    • CREATE (np. CREATE TABLE, CREATE DATABASE, ...) – utworzenie struktury (bazy, tabeli, indeksu itp.)
    • DROP (np. DROP TABLE, DROP DATABASE, ...) – usunięcie struktury
    • ALTER (np. ALTER TABLE ADD COLUMN ...) – zmiana struktury (dodanie kolumny do tabeli, zmiana typu danych w kolumnie tabeli)

  • DML (Data Manipulation Language) – język manipulowania danymi. Polecenia SQL odpowiadające językowi DML są znacznie częściej wykorzystywane gdyż realizują one funkcje zapisywania i wyszukiwania rzeczywistych danych z baz danych.
    • SELECT – pobranie danych z bazy
    • INSERT – umieszczenie danych w bazie
    • UPDATE – zmiana danych
    • DELETE – usunięcie danych z bazy

  • DCL (Data Control Language) – służy ona do zapewnienia bezpieczeństwa dostępu do danych znajdujących się w bazie. Za jego pomocą można na przykład nadawać czy odbierać uprawnienia poszczególnym użytkownikom czy całym grupom.
    • GRANT (np. GRANT ALL PRIVILEGES ON EMPLOYEE TO PIOTR WITH GRANT OPTION) – przyznanie wszystkich praw do tabeli EMPLOYEE użytkownikowi PIOTR z opcją pozwalającą mu nadawać prawa do tej tabeli.
    • REVOKE – odebranie użytkownikowi wszystkich praw do tabeli, które zostały przyznane poleceniem GRANT
    • DENY

Bezpieczeństwo

 

Jako, że SQL jest językiem interpretowanym, istnieje możliwość nadużyć w przypadku konstruowania zapytań z wykorzystaniem parametrów pochodzących z zewnątrz aplikacji. Szczególnie podatne na ten typ ataku są tworzone dynamicznie w oparciu o SQL-ową bazę danych serwisy internetowe. Jeśli twórca aplikacji nie zadba o sprawdzenie poprawności (tzw. walidację) danych wejściowych stanowiących część zapytania, atakujący może być w stanie dopisać do zapytania („wstrzyknąć”) dodatkowe komendy lub zmienić ich sposób działania. Atak taki nosi nazwę SQL injection (wstrzyknięcie kodu za pomocą SQL).