Popis definiční části jazyka SQL,specifikace deklarace primárních a cizích klíčů a příklady na modelu knihovny: Porovnání verzí

(vymazání část textu, který byl přemístěn na jiné stránky)
(nová struktura dokumentu, odkaz na stránku SQL)
Řádek 1: Řádek 1:
===Příkazy===
+
SQL (Structured Query Language) je databázový programovací jazyk, který se skládá z více částí. Jednou z nich je část definiční (Data Definition Language, DDL), která umožňuje vytvářet, upravovat a mazat objekty databáze. Více o jazyce SQL [[SQL|zde]].
<br/>
 
SQL příkazy se dělí na čtyři základní skupiny:
 
*Příkazy pro manipulaci s daty (SELECT, INSERT, UPDATE, DELETE, …)
 
*Příkazy pro definici dat (CREATE, ALTER, DROP, …)
 
*Příkazy pro řízení přístupových práv (GRANT, REVOKE)
 
*Příkazy pro řízení transakcí (START TRANSACTION, COMMIT, ROLLBACK) <ref name="SQL_4">SQL. In: Wikipedie: Otevřená encyklopedie [online]. [cit. 2016-12-17]. Dostupné z: https://cs.wikipedia.org/wiki/SQL</ref>
 
  
==Konceptuální schéma knihovny==
+
==Příkazy==
  
[[File:SQL_knihovna.png|thumb|upright 5|none|Konceptuální schéma knihovny pomocí notace Crow's Foot <br/> [[:File:SQL_knihovna.png]] ]]
+
==Primární a cizí klíče==
  
FK (foreign key) = cizí klíč<br/>
+
==Příklady==
PK (primary key) = primární klíč<br/>
 
NN = not null - sloupec nesmí být prázdný.<br/>
 
CHAR(20) = text délky maximálně 20 znaků<br/>
 
DECIMAL(10,0) = první číslo označuje celkový počet míst v číslici, druhé počet míst za desetinní čárkou. V tomto případu se jedná o 10 místní číslo s 0 desetinnými místy. (Např. Decimal(4,3) jsou čísla od -9,999 do 9,999.)<br/>
 
  
===Data definition language===
+
[[File:SQL_knihovna.png|thumb|upright 5|none|Konceptuální schéma knihovny pomocí notace Crow's Foot <br/> [[:File:SQL_knihovna.png]] ]]
  
 
<br/>
 
<br/>
Řádek 59: Řádek 49:
 
''Vysvětlení: datový typ, např. "CHAR(200)" nebo "INT" píšeme jenom tehdy, když něco vytváříme. Když mažeme, nemusíme datový typ psát/definovat.''<br/>
 
''Vysvětlení: datový typ, např. "CHAR(200)" nebo "INT" píšeme jenom tehdy, když něco vytváříme. Když mažeme, nemusíme datový typ psát/definovat.''<br/>
 
<br/>
 
<br/>
<ref name="SQL_5">Basic SQL statements: DDL and DML. In: Database design with UML and SQL, 3rd edition [online]. [cit. 2016-12-24]. Dostupné z: http://www.tomjewett.com/dbdesign/dbdesign.php?page=ddldml.php</ref><ref name="SQL_3"/><ref name="SQL_6">W3schools.com [online]. [cit. 2017-01-03]. Dostupné z: http://www.w3schools.com/sql/default.asp</ref>
+
<ref name="SQL_5">Basic SQL statements: DDL and DML. In: Database design with UML and SQL, 3rd edition [online]. [cit. 2016-12-24]. Dostupné z: http://www.tomjewett.com/dbdesign/dbdesign.php?page=ddldml.php</ref><ref name="SQL_3">POKORNÝ, Jaroslav a Ivan HALAŠKA. Databázové systémy: vybrané kapitoly a cvičení. 2. přepr. vyd. Praha: Karolinum, 1998. ISBN 8071846872.</ref><ref name="SQL_6">W3schools.com [online]. [cit. 2017-01-03]. Dostupné z: http://www.w3schools.com/sql/default.asp</ref>
 
 
===Data manipulation language===
 
 
 
<br/>
 
'''Vlož dílo "Těžký časy".'''<br/>
 
INSERT INTO Dilo(nazev, popis)<br/>
 
VALUES("Těžký časy", "Soubor 35 krátkých povídek.");<br/>
 
<br/>
 
'''Vlož autor "Charles Bukowski".'''<br/>
 
INSERT INTO Autor(jme_aut,pri_aut)<br/>
 
VALUES("Charles","Bukowski");<br/>
 
<br/>
 
'''Vymaž pokuty, které vznikly na Vánoce.'''<br/>
 
DELETE FROM Pokuta<br/>
 
WHERE dat_pok = "24122016";<br/>
 
<br/>
 
'''Vymaž všechny pokuty.'''<br/>
 
DELETE FROM Pokuta;<br/>
 
<br/>
 
'''Vymaž všechny autory.'''<br/>
 
DELETE FROM Autor;<br/>
 
<br/>
 
''Vysvětlení: bez definice WHERE mažu všechno.''<br/>
 
<br/>
 
'''Zmaž všechny výpůjčky od Vánoc do Silvestra.'''<br/>
 
DELETE FROM Vypujcka<br/>
 
WHERE dat_od = "24122016"<br/>
 
AND dat_do = "31122016";<br/>
 
<br/>
 
''Vysvětlení formy data: v konceptuálním schématu knihovny máme definovanou délku data na 8 znaků. Můžeme tedy datum napsat ve formě 24122016 nebo 24.12.16 - podstatné je dodržet délku pole, co je 8 znaků.''<br/>
 
<br/>
 
'''Zmaž autora Charles Bukowski.'''<br/>
 
DELETE FROM Autor<br/>
 
WHERE jme_aut = "Charles"<br/>
 
AND pri_aut = "Bukowski";<br/>
 
<br/>
 
'''Změň cenu stokorunových výtisků na 120 Kč.'''<br/>
 
UPDATE Vytisk<br/>
 
SET cena = 120<br/>
 
WHERE cena = 100;<br/>
 
<br/>
 
'''Změň křestní jméno Petra Nováka na Josef.'''<br/>
 
UPDATE ctenar<br/>
 
SET jme_cte = „Josef“<br/>
 
WHERE jme_cte = „Petr“<br/>
 
AND pri_cte = „Novák“;<br/>
 
<br/>
 
'''Vypiš všechny data z tabulky dílo.'''<br/>
 
SELECT *<br/>
 
FROM Dilo;<br/>
 
<br/>
 
'''Vypiš příjmení všech autorů.'''<br/>
 
SELECT pri_aut<br/>
 
FROM Autor;<br/>
 
<br/>
 
'''Z výtisků vypiš všechny signatury a ceny (v pořadí signatura, cena).'''<br/>
 
SELECT signatura, cena<br/>
 
FROM Vytisk;<br/>
 
<br/>
 
'''Vypiš z tabulky výpůjčka datumy výpůjčky a datumy vrácení tak, aby měli sloupce názvy "datum vypujcky" a "datum vraceni".'''<br/>
 
SELECT dat_od AS datum_vypujcky, dat_do AS datum_vraceni<br/>
 
FROM Vypujcka;<br/>
 
<br/>
 
''Vysvětlení: v datum_vraceni je "_" místo mezery, protože SQL by jinak za mezerou čekal další klíčové slovo/příkaz.''<br/>
 
<br/>
 
'''Vypiš z tabulky pokut id pokuty jako "cislo pokuty" a výšku pokuty ze dne 28.12.2016.'''<br/>
 
SELECT id_pok AS cislo_pokuty, vyse_pok<br/>
 
FROM Pokuta<br/>
 
WHERE dat_pok="28122016";<br/>
 
<br/>
 
''Vysvětlení: datum píšeme v uvozovkách, protože se jedná o řetězec. Jenom datový typ CHAR vypisujeme v uvozovkách, datový typ Integer a Decimal vypisujeme bez uvozovek.''<br/>
 
<br/>
 
'''Vypiš z tabulky čtenář id jako "cislo ctenare", příjmení jako "prijmeni" a adresu všech čtenářů, kteří se jmenují "Pavel".'''<br/>
 
SELECT id_cte AS cislo_ctenare, pri_cte AS prijmeni, adresa<br/>
 
FROM Ctenar<br/>
 
WHERE jme_cte = "Pavel";<br/>
 
<br/>
 
'''Z tabulky Vydání vypiš všechno o vydáních, které mají id díla "20" a rok vydání "2016".'''<br/>
 
SELECT *<br/>
 
FROM Vydani<br/>
 
WHERE id_dilo = 20<br/>
 
AND rok_vyd = "2016";<br/>
 
<br/>
 
'''Přepoj dílo "Těžký časy" s autorem "Charles Bukowski" v tabulce autorství.'''<br/>
 
SELECT id_dilo<br/>
 
FROM Dilo<br/>
 
WHERE nazev = "Těžký časy";<br/>
 
(Systém ukáže id, např. 12)<br/>
 
<br/>
 
SELECT id_aut<br/>
 
FROM Autor<br/>
 
WHERE jme_aut = "Charles"<br/>
 
AND pri_aut = "Bukowski";<br/>
 
(Systém ukáže id, např. 21)<br/>
 
<br/>
 
INSERT INTO Autorstvi(id_dilo, id_aut)<br/>
 
VALUES(12, 21);<br/>
 
<br/>
 
'''Vypiš všechny čtenáře, kteří si nikdy nic nevypůjčili.'''<br/>
 
SELECT *<br/>
 
FROM Ctenar<br/>
 
WHERE id_cte NOT IN (SELECT id_cte FROM Vypujcka);<br/>
 
<br/>
 
'''Vypiš součet všech pokut.'''<br/>
 
SELECT SUM(vyse_pok)<br/>
 
FROM Pokuta;<br/>
 
<br/>
 
'''Vypiš nejdražší a nejlevnější výtisk daného díla.'''<br/>
 
SELECT MAX(cena), MIN(cena)<br/>
 
FROM Vytisk<br/>
 
GROUP BY id_dilo;<br/>
 
<br/>
 
''Vstupní parametr SELECT neobsahuje AND. Jenom za WHERE následuje AND.''<br/>
 
<br/>
 
'''Zjisti, kolik máme autoru v databázi.'''<br/>
 
SELECT COUNT(*) AS pocet_autoru FROM Autor;<br/>
 
<br/>
 
''Vysvětlení: * je tady v závorce, protože je to parametr agregační funkce.''<br/>
 
<br/>
 
'''Zjisti průměrnou cenu výtisků.'''<br/>
 
SELECT AVG(cena) FROM Vytisk;<br/>
 
<br/>
 
'''Uveď průměrnou cenu výtisků. Sloupec nazvi průměrná cena.'''<br/>
 
SELECT AVG(cena) AS prumerna_cena FROM Vytisk;<br/>
 
<br/>
 
<ref name="SQL_5"/><ref name="SQL_3"/><ref name="SQL_6"/>
 
  
 
== Odkazy ==
 
== Odkazy ==
Řádek 215: Řádek 79:
  
 
=== Klíčová slova ===
 
=== Klíčová slova ===
Databázové systémy, Jazyk SQL, E-R konceptuální model, Informační systém, Informace, Data
+
Databázové systémy, Jazyk SQL
  
 
[[Kategorie: Informační studia a knihovnictví]]
 
[[Kategorie: Informační studia a knihovnictví]]
 
[[Kategorie:Informační technologie, knihovnické technologie]]
 
[[Kategorie:Informační technologie, knihovnické technologie]]
[[Kategorie:Články k ověření učitelem Souček M]]
 

Verze z 5. 4. 2018, 20:10

SQL (Structured Query Language) je databázový programovací jazyk, který se skládá z více částí. Jednou z nich je část definiční (Data Definition Language, DDL), která umožňuje vytvářet, upravovat a mazat objekty databáze. Více o jazyce SQL zde.

Příkazy

Primární a cizí klíče

Příklady

Konceptuální schéma knihovny pomocí notace Crow's Foot
File:SQL_knihovna.png


Vytvoř tabulku dílo.
CREATE TABLE Dilo
(id_dilo PK INT,
nazev CHAR(200),
popis CHAR(200));

Vysvětlení interpunkce: středník odděluje jednotlivé SQL dotazy, čárka odděluje vstupní parametry.

Vytvoř tabulku vydání.
CREATE TABLE vydani
(id_vyd PK INT,
id_dilo FK INT REFERENCES Dilo(id_dilo),
cis_vyd CHAR(20),
rok_vyd CHAR(20));

Vysvětlení references: references píšeme, protože používáme cizí klíč - musíme definovat, kam cizí klíč odkazuje.

Vytvoř tabulku autorství.
CREATE TABLE Autorstvi
(id_autorstvi PK INT,
id_dilo FK INT REFERENCES Dilo(id_dilo),
id_aut FK INT REFERENCES Autor(id_aut));

Vymaž tabulku druh sekundárního autorství.
DROP TABLE Drusekaut;

Vymaž databázi knihovna.
DROP DATABASE Knihovna;

Uprav tabulku dílo: přidej sloupec evidenční číslo.
ALTER TABLE dilo
ADD ev_cis CHAR(200);

Uprav tabulku pokuta: odstraň datum pokuty.
ALTER TABLE pokuta
DROP dat_pok;

Vysvětlení: datový typ, např. "CHAR(200)" nebo "INT" píšeme jenom tehdy, když něco vytváříme. Když mažeme, nemusíme datový typ psát/definovat.

[1][2][3]

Odkazy

Reference

  1. Basic SQL statements: DDL and DML. In: Database design with UML and SQL, 3rd edition [online]. [cit. 2016-12-24]. Dostupné z: http://www.tomjewett.com/dbdesign/dbdesign.php?page=ddldml.php
  2. POKORNÝ, Jaroslav a Ivan HALAŠKA. Databázové systémy: vybrané kapitoly a cvičení. 2. přepr. vyd. Praha: Karolinum, 1998. ISBN 8071846872.
  3. W3schools.com [online]. [cit. 2017-01-03]. Dostupné z: http://www.w3schools.com/sql/default.asp

Použitá literatura

Externí odkazy

Související články

Klíčová slova

Databázové systémy, Jazyk SQL