Bc. Vojtěch Hordějčuk

„Dejte mi pevný bod a já pohnu Zemí.” - Archimedes

Domů » Wiki » Programovací jazyky » Jazyk SQL

Jazyk SQL

Jazyk SQL (Structured Query Language) je jazyk určený pro ovládání relačních databázových systémů (RDBMS). Na začátku 70. let 20. století jej vyvíjela společnost IBM (konkrétně pánové Raymond F. Boyce, Donald C. Messerly a Andrew Richardson) a o několik let později na trh vstoupila i společnost Oracle (tehdy ještě Relational Software, Inc.), která své produkty úspěšně dodávala i americkým vládním organizacím (CIA, U.S. Navy,…).

Příkazy jazyka SQL by se daly rozdělit do těchto skupin:

  • DDL (data definition language) – příkazy patřící do této skupiny vytvářejí či upravují strukturu databáze (např. tabulky).

    Příklady: CREATE, ALTER, DROP

  • DML (data manipulation language) – příkazy, které slouží k získávání, ukládání a mazání dat v databázi.

    Příklady: SELECT, INSERT, UPDATE, DELETE

  • DCL (data control language) – příkazy pro správu uživatelských rolí a práv.

    Příklady: GRANT, REVOKE

  • TCL (transactional control language) – příkazy pro správu databázových transakcí.

    Příklady: BEGIN, COMMIT, ROLLBACK

DDL (data definition language)

Vytvoření tabulky zaměstnanců:

CREATE TABLE zamestnanci
(
    cislo UNSIGNED INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
    jmeno VARCHAR(100) NOT NULL,
    prijmeni VARCHAR(100) NOT NULL,
    mesto VARCHAR(100) NOT NULL
)

zdrojový kód (SQL) - zobrazit (189 znaků)

Smazání tabulky zaměstnanců:

DROP TABLE zamestnanci

zdrojový kód (SQL) - zobrazit (22 znaků)

Přidání sloupce s datem narození:

ALTER TABLE zamestnanci ADD narozen DATETIME NOT NULL

zdrojový kód (SQL) - zobrazit (53 znaků)

Odebrání sloupce s datem narození:

ALTER TABLE zamestnanci DROP narozen

zdrojový kód (SQL) - zobrazit (36 znaků)

DML (data manipulation language)

Vybrat zaměstnance z Prahy:

SELECT jmeno,prijmeni
FROM zamestnanci
WHERE (mesto='Praha')
ORDER BY prijmeni,jmeno

zdrojový kód (SQL) - zobrazit (84 znaků)

Vybrat 10 zaměstnanců s nejvyšším platem:

SELECT jmeno,prijmeni
FROM zamestnanci
ORDER BY plat DESC,prijmeni,jmeno
LIMIT 10

zdrojový kód (SQL) - zobrazit (81 znaků)

Vypočítat průměrné platy v jednotlivých městech:

SELECT mesto,AVG(plat)
FROM zamestnanci
GROUP BY mesto
ORDER BY mesto

zdrojový kód (SQL) - zobrazit (69 znaků)

Vypočítat celkový plat všech managerů:

SELECT SUM(plat)
FROM zamestnanci
WHERE pozice='manager'

zdrojový kód (SQL) - zobrazit (56 znaků)

Získat počet uklízeček v Ostravě:

SELECT COUNT(*)
FROM zamestnanci
WHERE (pozice='uklízečka' AND mesto='Ostrava')

zdrojový kód (SQL) - zobrazit (79 znaků)

Vybrat stránky včetně názvu kategorie (vnitřní spojení):

SELECT s.titulek,s.text,k.nazev
FROM stranky s
INNER JOIN kategorie k ON (k.id=s.idKategorie)
ORDER BY s.titulek

zdrojový kód (SQL) - zobrazit (112 znaků)

Vybrat stránky (i nezařazené) včetně názvu kategorie (levé vnější spojení):

SELECT s.titulek,s.text,k.nazev
FROM stranky s
LEFT OUTER JOIN kategorie k ON (k.id=s.idKategorie)
ORDER BY s.titulek

zdrojový kód (SQL) - zobrazit (117 znaků)

Započítat návštěvu stránky:

UPDATE stranky
SET pocitadlo=pocitadlo+1,posledniNavsteva=NOW()
WHERE url='produkty'

zdrojový kód (SQL) - zobrazit (84 znaků)

Vložit rezervaci v kině:

INSERT INTO rezervace
(film,misto,jmeno)
VALUES
('Terminátor','A44','Sarah Connor')

zdrojový kód (SQL) - zobrazit (83 znaků)

Smazat všechny horrory z databáze filmů:

DELETE
FROM filmy
WHERE (zanr='horror')

zdrojový kód (SQL) - zobrazit (39 znaků)

DCL (data control language)

Udělení práv pro čtení tabulky zaměstnanců uživateli „guest“:

GRANT SELECT
ON zamestnanci
TO guest

zdrojový kód (SQL) - zobrazit (36 znaků)

Zrušení práva číst tabulku zaměstnanců uživateli „enemy“:

REVOKE SELECT
ON zamestnanci
FROM enemy

zdrojový kód (SQL) - zobrazit (39 znaků)

TCL (transactional control language)

Transakce jsou posloupnosti příkazů, které musí proběhnout všechny, nebo žádný. Databázový systém se postará o to, aby celá transakce proběhla atomicky a její průběh nebyl narušen jinými dotazy. Zajímavé je také to, že se dílčí změny během transakce neprojeví vzhledem k jiné transakci.

Převod peněz z účtu na účet:

BEGIN;
UPDATE ucty SET zustatek=zustatek-200 WHERE cislo=123142;
UPDATE ucty SET zustatek=zustatek+200 WHERE cislo=552331;
COMMIT;

zdrojový kód (SQL) - zobrazit (130 znaků)

Reference