Popis definiční části jazyka SQL,specifikace deklarace primárních a cizích klíčů a příklady na modelu knihovny: Porovnání verzí
Řádek 59: | Řádek 59: | ||
[[File:SQL_knihovna.png|thumb|upright 5|none|Konceptuální schéma knihovny pomocí notace Crow's Foot <br/> [[:File:SQL_knihovna.png]] ]] | [[File:SQL_knihovna.png|thumb|upright 5|none|Konceptuální schéma knihovny pomocí notace Crow's Foot <br/> [[:File:SQL_knihovna.png]] ]] | ||
− | text | + | FK (foreign key) = cizí klíč<br/> |
+ | PK (primary key) = primární klíč<br/> | ||
+ | CHAR(20) = text délky maximálně 20 znaků<br/> | ||
+ | DECIMAL(10,0) = číslo s jedním desetinným místem<br/> | ||
+ | |||
+ | ===Data definition language=== | ||
+ | |||
+ | <br/> | ||
+ | '''Vytvor tabulku dílo:'''<br/> | ||
+ | CREATE TABLE Dilo<br/> | ||
+ | (id_dilo PK INT,<br/> | ||
+ | nazev CHAR(200),<br/> | ||
+ | popis CHAR(200));<br/> | ||
+ | <br/> | ||
+ | ''Vysvětlení interpunkce: středník odděluje jednotlivé SQL dotazy, čárka odděluje vstupné parametre.''<br/> | ||
+ | <br/> | ||
+ | '''Vytvor tabulku vydání:'''<br/> | ||
+ | CREATE TABLE vydani<br/> | ||
+ | (id_vyd PK INT,<br/> | ||
+ | id_dilo FK INT REFERENCES Dilo(id_dilo),<br/> | ||
+ | cid_vyd CHAR(20),<br/> | ||
+ | rok_vyd CHAR(20));<br/> | ||
+ | <br/> | ||
+ | ''Vysvětlení references: references píšeme, protože používáme cizí klíč - musíme zadefinovat, kam cizí klíč odkazuje.''<br/> | ||
+ | <br/> | ||
+ | '''Vytvor tabulku autorství:'''<br/> | ||
+ | CREATE TABLE Autorstvi<br/> | ||
+ | (id_autorstvi PK INT,<br/> | ||
+ | id_dilo FK INT REFERENCES Dilo(id_dilo),<br/> | ||
+ | id_aut FK INT REFERENCES Autor(id_aut));<br/> | ||
+ | <br/> | ||
+ | '''Vymaž tabulku Druh sekundárního autorství:'''<br/> | ||
+ | DROP TABLE Drusekaut;<br/> | ||
+ | <br/> | ||
+ | '''Vymaž databázi Knihovna:'''<br/> | ||
+ | DROP DATABASE Knihovna;<br/> | ||
+ | <br/> | ||
+ | '''Uprav tabulku dílo: přidej řádek evidenční číslo'''<br/> | ||
+ | ALTER TABLE dilo<br/> | ||
+ | ADD ev_cis CHAR(200);<br/> | ||
+ | <br/> | ||
+ | '''Uprav tabulku pokuta: odtraň datum pokuty'''<br/> | ||
+ | ALTER TABLE pokuta<br/> | ||
+ | DROP dat_pok;<br/> | ||
+ | <br/> | ||
+ | ''Vysvětlení: datový typ, napr. "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/> | ||
+ | <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"/> | ||
+ | |||
+ | ===Data manipulation language=== | ||
+ | |||
+ | <br/> | ||
+ | '''Vlož dílo "Pán prstenů - dvě veže"'''<br/> | ||
+ | INSERT INTO Dilo(id_dilo, nazev, popis)<br/> | ||
+ | VALUES(1, "Pán prstenů - dvě věže", "druhý díl trilogie");<br/> | ||
+ | <br/> | ||
+ | '''Vlož autor "J.R.R. Tolkien"'''<br/> | ||
+ | INSERT INTO Autor(id_aut, jme_aut,pri_aut)<br/> | ||
+ | VALUES(1,"J.R.R.","Tolkien");<br/> | ||
+ | <br/> | ||
+ | '''Přepoj "Pán prstenů - dve veže" a "J.R.R. Tolkien" v tabulce autorství'''<br/> | ||
+ | INSERT INTO Autorstvi(id_autorstvi, id_dilo, id_aut)<br/> | ||
+ | VALUES(1, 1, 1);<br/> | ||
+ | <br/> | ||
+ | ''Vysvětlení IDs: Dílo má id "1", protože je to první záznam, který do tabulky dílo vkládám (může mít i jiné id, např. 203, já jsem si zvolila 1). Autoro má id "1", protože je to pvní záznam, který do tabulky autor vkládám (může mít i jiné id, já jsem si zvolila číslo 1). Každý záznam musí mít v rámci své tabulky unikátní id, protože id je v tomto případu primárním klíčem. Id (primárni klíč) není unikátní vrámci celé databáze, ale vrámci dané tabulky.''<br/> | ||
+ | <br/> | ||
+ | '''Vymaž pokuty, ktoré vznikli 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šetny autory'''<br/> | ||
+ | DELETE FROM Autor;<br/> | ||
+ | <br/> | ||
+ | ''Vysvetleni: bez definice WHERE mažu všechno.''<br/> | ||
+ | <br/> | ||
+ | '''Zmaž všechny výpujč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 J.R.R. Tolkien:'''<br/> | ||
+ | DELETE FROM Autor<br/> | ||
+ | WHERE jme_aut = "J.R.R"<br/> | ||
+ | AND pri_aut = "Tolkien";<br/> | ||
+ | <br/> | ||
+ | '''Zmeň cenu stokorunových výtisků na 120 kč.'''<br/> | ||
+ | UPDATE Vytisk<br/> | ||
+ | SET cen = 120<br/> | ||
+ | WHERE cen = 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/> | ||
+ | '''priklady so select'''<br/> | ||
+ | <br/> | ||
+ | <ref name="SQL_5"/><ref name="SQL_3"/> | ||
== Odkazy == | == Odkazy == | ||
Řádek 73: | Řádek 176: | ||
*POKORNÝ, Jaroslav a Ivan HALAŠKA. Databázové systémy: vybrané kapitoly a cvičení. 2. přepr. vyd. Praha: Karolinum, 1998. ISBN 8071846872. | *POKORNÝ, Jaroslav a Ivan HALAŠKA. Databázové systémy: vybrané kapitoly a cvičení. 2. přepr. vyd. Praha: Karolinum, 1998. ISBN 8071846872. | ||
*SQL. In: Wikipedie: Otevřená encyklopedie [online]. [cit. 2016-12-17]. Dostupné z: https://cs.wikipedia.org/wiki/SQL | *SQL. In: Wikipedie: Otevřená encyklopedie [online]. [cit. 2016-12-17]. Dostupné z: https://cs.wikipedia.org/wiki/SQL | ||
+ | *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 | ||
=== Externí odkazy === | === Externí odkazy === |
Verze z 24. 12. 2016, 22:10
Na této stránce se právě pracuje. Prosím needitujte tuto stránku, dokud na ní zůstává tato šablona. Předejdete tak editačnímu konfliktu. Jestliže uběhla od poslední editace doba alespoň dvou dnů, neváhejte tuto šablonu odstranit. |
rezervace Miriam Tančiboková
Základy SQL se zabývají jazykem SQL. Jazyk SQL (Structured Query Language - strukturovaný dotazovací jazyk) je v případě SQL data bázových serverů rozhraním, které slouží ke zpřístupnění dat. Jazyk SQL byl vyvinut firmou IBM na počátku 70. Let jako dotazovací jazyk pro práci s velkými databázemi na počítačích střediskového typu. Cílem tvůrců SQL bylo vyvinout takový nástroj pro koncové uživatele, který by jim umožnil vybírat data z databáze přesně podle jejich individuálních požadavků a byl přitom co nejjednodušší. [1]
E-R konceptuální model
Entity-relationship model (ERM), entitně vztahový model se v softwarovém inženýrství používá pro abstraktní a konceptuální znázornění dat. Entity-relationship modelování je metoda datového modelování, která vytváří jeden z typů konceptuálních schémat či sémantických datových modelů systému (obvykle relační databáze) a požadavků na něj stylem shora dolů. [2]
Alternativní konvence pro psaní diagramů
Chenova notace entity-relationship modelování používá obdélníky pro znázornění entit a kosočtverce pro znázornění vztahů. Tato notace je odpovídající, protože Chenovy vztahy jsou původně objekty - mohou samy obsahovat atributy i další vztahy.[2]
Alternativní konvence, částečně z historického hlediska:
- IDEF1X[4]
- Bachmanova notace
- Martinova notace
- (min, max)-notace Jean-Raymonda Abriala z roku 1974
- Standard UML
- EXPRESS[2]
Crow's foot
Jedna z alternativních notacích známá jako "crow's foot" byla vytvořena nezávisle, v těchto diagramech jsou entity znázorněny v boxech a vztahy oblouky s popisem. Notace "Crow's Foot" znázorňuje vztahy propojováním entit čarami, přičemž symboly na obou koncích čáry symbolizují kardinalitu vztahu. Notace Crow's Foot se používá v Barkerově notaci a v metodologiích jako je SSADM (Structured Systems Analysis and Design Method) nebo informační inženýrství.[2]
Notace Crow's foot má následující výhody:
- Srozumitelnost definování kardinality a dědičnosti ze strany vztahu
- Stručně řešená notace povinného vztahu použitím svislé čáry a volitelného vztahu prázdnou kružnicí
- Zobrazuje stručně a jasně notaci, která identifikuje všechny třídy[2]
Popis jazyka SQL
Definice pojmů
Entita(angl. entity) je objekt reálného světa, který je schopen nezávyslé existence a je jednoznačně odlišitelný od odstatních objektů. Entitou je např. "student Novák Josef, r.č.470822172".
Vztah(angl. relationship) je vazba mezi dvěma (nebo více) entitami. Např. entita "student Novák Josef, r.č. 470822172" může být ve vztahu "má zapsán" k entitě "učební předmět Konstrukce databázových systémů".
Hodnota piposného typu(angl. value) - kde popisným typem budeme rozumět jednoduchý datový typ, tedy dvojici {množina hodnot, množina operací}. Hodnotami jsou například celé číslo 123, datum 31.2.1994 apod.
Atributem(angl. attribute) budeme rozumět funkci přiřazující entitám či vztahům hodnotu (zde popisného typu), určující některou podstatnou vlastnost entity nebo vztahu. Např. DATUM výpůjčky dané knihy daným abonentem, RODNÉ_ČÍSLO danho zaměstnance, apod.
[3]
Příkazy
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) [4]
Konceptuální schéma knihovny
FK (foreign key) = cizí klíč
PK (primary key) = primární klíč
CHAR(20) = text délky maximálně 20 znaků
DECIMAL(10,0) = číslo s jedním desetinným místem
Data definition language
Vytvor 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é parametre.
Vytvor tabulku vydání:
CREATE TABLE vydani
(id_vyd PK INT,
id_dilo FK INT REFERENCES Dilo(id_dilo),
cid_vyd CHAR(20),
rok_vyd CHAR(20));
Vysvětlení references: references píšeme, protože používáme cizí klíč - musíme zadefinovat, kam cizí klíč odkazuje.
Vytvor 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 řádek evidenční číslo
ALTER TABLE dilo
ADD ev_cis CHAR(200);
Uprav tabulku pokuta: odtraň datum pokuty
ALTER TABLE pokuta
DROP dat_pok;
Vysvětlení: datový typ, napr. "CHAR(200)" nebo "INT" píšeme jenom tehdy, když něco vytváříme. Když mažeme, nemusíme datový typ psát/definovat.
[5][3]
Data manipulation language
Vlož dílo "Pán prstenů - dvě veže"
INSERT INTO Dilo(id_dilo, nazev, popis)
VALUES(1, "Pán prstenů - dvě věže", "druhý díl trilogie");
Vlož autor "J.R.R. Tolkien"
INSERT INTO Autor(id_aut, jme_aut,pri_aut)
VALUES(1,"J.R.R.","Tolkien");
Přepoj "Pán prstenů - dve veže" a "J.R.R. Tolkien" v tabulce autorství
INSERT INTO Autorstvi(id_autorstvi, id_dilo, id_aut)
VALUES(1, 1, 1);
Vysvětlení IDs: Dílo má id "1", protože je to první záznam, který do tabulky dílo vkládám (může mít i jiné id, např. 203, já jsem si zvolila 1). Autoro má id "1", protože je to pvní záznam, který do tabulky autor vkládám (může mít i jiné id, já jsem si zvolila číslo 1). Každý záznam musí mít v rámci své tabulky unikátní id, protože id je v tomto případu primárním klíčem. Id (primárni klíč) není unikátní vrámci celé databáze, ale vrámci dané tabulky.
Vymaž pokuty, ktoré vznikli na Vánoce
DELETE FROM Pokuta
WHERE dat_pok = "24122016";
Vymaž všechny pokuty:
DELETE FROM Pokuta;
Vymaž všetny autory
DELETE FROM Autor;
Vysvetleni: bez definice WHERE mažu všechno.
Zmaž všechny výpujčky od Vánoc do Silvestra:
DELETE FROM Vypujcka
WHERE dat_od = "24122016"
AND dat_do = "31122016";
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ů.
Zmaž autora J.R.R. Tolkien:
DELETE FROM Autor
WHERE jme_aut = "J.R.R"
AND pri_aut = "Tolkien";
Zmeň cenu stokorunových výtisků na 120 kč.
UPDATE Vytisk
SET cen = 120
WHERE cen = 100;
Změň křestní jméno Petra Nováka na Josef
UPDATE ctenar
SET jme_cte = „Josef“
WHERE jme_cte = „Petr“
AND pri_cte = „Novák“;
priklady so select
[5][3]
Odkazy
Reference
- ↑ Programování v SQL. In: Ucimedatabaze.cz: Podpora výuky databázových systémů na SOŠ, založené na technologiích společnosti ORACLE [online]. 2011, s. 55 [cit. 2016-12-16]. Dostupné z: http://ucimedatabaze.cz/wp-content/uploads/2012/02/CZ_programovani_SQL.pdf
- ↑ 2,0 2,1 2,2 2,3 2,4 Entity-relationship model. In: Wikipedie: Otevřená encyklopedie [online]. [cit. 2016-12-16]. Dostupné z: https://cs.wikipedia.org/wiki/Entity-relationship_model
- ↑ 3,0 3,1 3,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.
- ↑ SQL. In: Wikipedie: Otevřená encyklopedie [online]. [cit. 2016-12-17]. Dostupné z: https://cs.wikipedia.org/wiki/SQL
- ↑ 5,0 5,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
Použitá literatura
- Programování v SQL. In: Ucimedatabaze.cz: Podpora výuky databázových systémů na SOŠ, založené na technologiích společnosti ORACLE [online]. 2011, s. 55 [cit. 2016-12-16]. Dostupné z: http://ucimedatabaze.cz/wp-content/uploads/2012/02/CZ_programovani_SQL.pdf
- Entity-relationship model. In: Wikipedie: Otevřená encyklopedie [online]. [cit. 2016-12-16]. Dostupné z: https://cs.wikipedia.org/wiki/Entity-relationship_model
- POKORNÝ, Jaroslav a Ivan HALAŠKA. Databázové systémy: vybrané kapitoly a cvičení. 2. přepr. vyd. Praha: Karolinum, 1998. ISBN 8071846872.
- SQL. In: Wikipedie: Otevřená encyklopedie [online]. [cit. 2016-12-17]. Dostupné z: https://cs.wikipedia.org/wiki/SQL
- 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
Externí odkazy
Související články
Klíčová slova
Databázové systémy, Jazyk SQL, E-R konceptuální model, Informační systém, Informace, Data