strukturalny oraz deklaratywny język zapytań. Jest to język dziedzinowy używany do tworzenia, modyfikowania relacyjnych baz danychoraz do umieszczania i pobierania danych z tych baz.

Decyzję o sposobie przechowywania i pobrania danych pozostawia się systemowi zarządzania bazą danych (DBMS).

Ponieważ 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 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).

Wybrane zapytania SQL:

--lista tabel w bazie danych
SHOW TABLES;

	--tworzenie tabeli
CREATE TABLE osoby (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
email VARCHAR(60) NOT NULL UNIQUE,
imie VARCHAR(30),
nazwisko VARCHAR(50)
);

	--warunkowe tworzenie tabeli
CREATE TABLE IF NOT EXISTS osoby (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
email VARCHAR(60) NOT NULL UNIQUE,
imie VARCHAR(30),
nazwisko VARCHAR(50)
);

	--struktura tabeli
DESCRIBE osoby;

	--zmiana nazwy tabeli
ALTER TABLE osoby
RENAME klienci;

	--dodanie pola do tabeli (na końcu listy pól)
ALTER TABLE klienci
ADD plec CHAR(1);

	--dodanie pola do tabeli w wybranym miejscu
ALTER TABLE klienci
ADD rocznik INT
AFTER id;

	--dodanie pola do tabeli w wybranym miejscu
ALTER TABLE klienci
ADD kod_pocztowy CHAR(6)
FIRST;

	--usunięcie pola z tabeli
ALTER TABLE klienci
DROP COLUMN kod_pocztowy;

	--zmiana typu danych pola
ALTER TABLE klienci
MODIFY imie VARCHAR(45);

	--zmiana nazwy pola oraz zmiana typu danych pola
ALTER TABLE klienci
CHANGE rocznik rok_urodzenia SMALLINT UNSIGNED;

	--tworzenie pustej tabeli o takiej samej strukturze jak wskazana tabela
CREATE TABLE kopia_klienci LIKE klienci;

	--skopiowania wszystkich danych z jednej tabeli do drugiej o identycznej strukturze
INSERT kopia_klienci
	SELECT *
	FROM klienci;

	--usunięcie tabeli (!!)
DROP TABLE kopia_klienci;

Źródło : wikipedia.pl

Obserwuj i polub:
Pin Share