Popis definiční části jazyka SQL,specifikace deklarace primárních a cizích klíčů a příklady na modelu knihovny: Porovnání verzí
m |
|||
(Není zobrazeno 21 mezilehlých verzí od 4 dalších uživatelů.) | |||
Řádek 1: | Řádek 1: | ||
− | + | [[SQL|'''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]]. | |
− | == | + | ==Příkazy== |
+ | Data Definition Language obsahuje tyto příkazy<ref>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</ref>: <br/> | ||
+ | # CREATE - vytvoří objekt (databázi, tabulku) | ||
+ | # ALTER - změní definici objektu | ||
+ | # DROP - smaže objekt | ||
+ | # RENAME - přejmenuje objekt | ||
+ | # TRUNCATE - vymaže data z tabulky, ale ne tabulku samotnou | ||
− | [[ | + | ===Syntax příkazů=== |
+ | Obecná syntax základních tří příkazů vypadá takto: | ||
+ | ====CREATE==== | ||
+ | Vytvoření databáze | ||
+ | CREATE DATABASE nazev_databaze; | ||
+ | Vytvoření tabulky | ||
+ | CREATE TABLE nazev_tabulky ( | ||
+ | sloupec_1 datovy_typ, | ||
+ | ... | ||
+ | sloupec_n datovy_typ); | ||
+ | Název databáze i tabulky se musí řídit základními pravidly pro názvy všech objektů jazyka SQL - viz [[SQL]].<br/> | ||
+ | Každý sloupec tabulky je jeden atribut (vlastnost) popisovaných [[Data|dat]]. A každý sloupec musí mít určený tzv. datový typ, který určuje hodnoty, které jsou pro daný sloupec přípustné. | ||
+ | Nejčastějšími datovými typy jsou: | ||
+ | * CHAR(d) - řetězec znaků určité délky, kterou označuje číslo d. Např. tedy CHAR(20) bude řetězec o délce 20 znaků. | ||
+ | * DATE - datum ve formátu RRRR-MM-DD | ||
+ | * INTEGER - číslo od -2 147 483 648 do 2 147 483 647, maximální počet znaků může být specifikován v závorkách. Existují i další datové typy pro čísla, ale INTEGER je pro většinu dat dostačující.<ref name="w3">W3schools.com [online]. [cit. 2017-01-03]. Dostupné z: http://www.w3schools.com/sql/default.asp</ref> | ||
− | [[ | + | ====ALTER==== |
+ | Přidání sloupce | ||
+ | ALTER TABLE nazev_tabulky | ||
+ | ADD nazev_sloupce datovy_typ; | ||
+ | Odstranění sloupce | ||
+ | ALTER TABLE nazev_tabulky | ||
+ | DROP COLUMN nazev_sloupce; | ||
+ | Úprava sloupce | ||
+ | ALTER TABLE nazev_tabulky | ||
+ | MODIFY nazev_sloupce datovy_typ;<ref name="w3"></ref> | ||
+ | ====DROP==== | ||
+ | Pozor, odstraňování objektů používáme pouze v případě, že jsme si jisti, že daná [[data]] už nebudeme potřebovat.<br/> | ||
+ | Odstranění databáze | ||
+ | DROP DATABASE nazev_databaze; | ||
+ | Odstranění tabulky | ||
+ | DROP TABLE nazev_tabulky;<ref name="w3"></ref> | ||
− | + | ==Omezení dat (constraints)== | |
− | <ref name=" | + | SQL omezení se používají ke specifikaci pravidel pro [[data]] v tabulce. To zajišťuje přesnost a spolehlivost [[Data|dat]] v tabulce. Pokud by nastal rozpor mezi omezením a akcí, která je s [[Data|daty]] provedena, akce bude zrušena. Omezení mohou být na úrovni tabulek nebo na úrovni sloupců v tabulce. Mohou být použita po příkazu CREATE nebo ALTER.<br/> |
− | + | Syntax | |
− | === | + | CREATE TABLE nazev_tabulky ( |
− | + | sloupec_1 datovy_typ omezeni, | |
− | + | ... | |
− | + | sloupec_n datovy_typ omezeni); | |
− | + | Omezení je několik: PRIMARY KEY (primární klíč), FOREIGN KEY (cizí klíč), NOT NULL, UNIQUE, CHECK, DEFAULT, INDEX, nejpoužívanější jsou ale primární a cizí klíče.<ref name="w3"></ref> | |
− | + | ===Primární klíč=== | |
− | + | Omezení primárního klíče identifikuje každý záznam (řádek) v tabulce. Primární klíče musí obsahovat unikátní hodnoty (omezení UNIQUE) a nesmí obsahovat nulové hodnoty (omezení NOT NULL). Každá tabulka může mít pouze jeden primární klíč, který se může skládat z jednoho nebo více polí.<br/> | |
− | + | Příklad definice primárního klíče v rámci příkazu CREATE | |
− | + | CREATE TABLE osoby ( | |
− | + | ID_osoby int NOT NULL PRIMARY KEY, | |
− | + | prijmeni char(255) NOT NULL, | |
− | + | jmeno char(255), | |
− | === | + | vek int); |
− | + | Příklad definice primárního klíče v rámci příkazu ALTER | |
− | + | ALTER TABLE osoby ( | |
− | + | ADD PRIMARY KEY (ID);<ref name="w3"></ref> | |
− | + | ===Cizí klíč=== | |
− | + | Cizí klíč se používá ke sloučení dvou tabulek. Je to pole (nebo více polí) jedné tabulky, které odkazuje na primární klíč jiné tabulky. Toto omezení se používá k tomu, abychom zabránili akcím, které by zničily vazby mezi tabulkami. Cizí klíč také zabraňuje tomu, aby do příslušného sloupce byla vložena nesprávná [[data]], musí to být taková [[data]], která odpovídají hodnotám obsaženým v tabulce, na kterou cizí klíč odkazuje. | |
− | + | Příklad definice cizího klíče v rámci příkazu CREATE | |
− | + | CREATE TABLE objednavky ( | |
+ | ID_objednavky int NOT NULL PRIMARY KEY, | ||
+ | cislo_objednavky int NOT NULL, | ||
+ | ID_osoby int FOREIGN KEY REFERENCES osoby(ID_osoby) ); | ||
+ | Spojení "FOREIGN KEY REFERENCES" určuje, že bude následovat odkaz na jinou tabulku ve formátu nazev_tabulky(nazev_sloupce).<br/> | ||
<br/> | <br/> | ||
+ | Příklad definice cizího klíče v rámci příkazu ALTER | ||
+ | ALTER TABLE objednavky | ||
+ | ADD FOREIGN KEY (ID_osoby) REFERENCES osoby(ID_osoby);<ref name="w3"></ref> | ||
− | == | + | ==Příklady na modelu knihovny== |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | [[File:SQL_knihovna.png|thumb|upright 5|none|Konceptuální schéma knihovny <br/> [[:File:SQL_knihovna.png]] ]] | |
− | <br/> | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | Vytvoř tabulku dílo. | |
+ | CREATE TABLE Dilo ( | ||
+ | id_dilo int PRIMARY KEY, | ||
+ | nazev char(200), | ||
+ | popis char(200) ); | ||
− | + | Vytvoř tabulku vydání. | |
+ | CREATE TABLE vydani ( | ||
+ | id_vyd int PRIMARY KEY, | ||
+ | id_dilo int FOREIGN KEY REFERENCES Dilo(id_dilo), | ||
+ | cis_vyd char(20), | ||
+ | rok_vyd char(20) ); | ||
− | + | Vytvoř tabulku autorství. | |
− | + | CREATE TABLE Autorstvi ( | |
− | + | id_autorstvi int PRIMARY KEY, | |
− | + | id_dilo int FOREIGN KEY REFERENCES Dilo(id_dilo), | |
− | + | id_aut int FOREIGN KEY REFERENCES Autor(id_aut) ); | |
− | + | Vymaž tabulku druh sekundárního autorství. | |
+ | DROP TABLE Drusekaut; | ||
− | + | Vymaž databázi knihovna. | |
− | + | DROP DATABASE 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;<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="w3"></ref> | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | < | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | <ref name=" | ||
== Odkazy == | == Odkazy == | ||
Řádek 237: | Řádek 117: | ||
<references/> | <references/> | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
=== Externí odkazy === | === Externí odkazy === | ||
− | * http://www.w3schools.com/sql/default.asp | + | * [https://docs.oracle.com/database/121/SQLRF/toc.htm Oracle dokumentace] |
− | * http://www.mff.cuni.cz/ | + | * [http://www.w3schools.com/sql/default.asp w3schools] |
− | * http://krokodata.vse.cz/ | + | * [http://sqlzoo.net/wiki/SQL_Tutorial SQLZOO] |
+ | * [http://www.mff.cuni.cz/ Matematicko-fyzikální fakulta] | ||
+ | * [http://krokodata.vse.cz/ Krokodýlovy databáze] | ||
=== Související články === | === Související články === | ||
− | [[Informační systém]], [[ | + | * [[Informační systém]] |
+ | * [[Databáze]] | ||
+ | * [[SQL]] | ||
+ | * [[Popis prvků konceptuálních modelů, smysl konceptuálního modelu a příklad modelu Knihovny]] | ||
+ | * [[Transformace konceptuálního modelu na datový model, základní prvky datového modelu, specifikace úlohy primárních a cizích klíčů]] | ||
+ | * [[Manipulační část jazyka SQL (DML – insert, update, delete) a příklady na databázi Knihovna]] | ||
+ | * [[Příkaz Select, jeho využití v databázi Knihovna]] | ||
=== Klíčová slova === | === Klíčová slova === | ||
− | Databázové systémy, Jazyk SQL, | + | Databázové systémy, Jazyk SQL, primární klíč, cizí klíč |
[[Kategorie: Informační studia a knihovnictví]] | [[Kategorie: Informační studia a knihovnictví]] | ||
+ | [[Kategorie:Informační technologie, knihovnické technologie]] | ||
+ | [[Kategorie: Státnicové otázky UISK]] |
Aktuální verze z 4. 6. 2018, 11:01
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.
Obsah
Příkazy
Data Definition Language obsahuje tyto příkazy[1]:
- CREATE - vytvoří objekt (databázi, tabulku)
- ALTER - změní definici objektu
- DROP - smaže objekt
- RENAME - přejmenuje objekt
- TRUNCATE - vymaže data z tabulky, ale ne tabulku samotnou
Syntax příkazů
Obecná syntax základních tří příkazů vypadá takto:
CREATE
Vytvoření databáze
CREATE DATABASE nazev_databaze;
Vytvoření tabulky
CREATE TABLE nazev_tabulky ( sloupec_1 datovy_typ, ... sloupec_n datovy_typ);
Název databáze i tabulky se musí řídit základními pravidly pro názvy všech objektů jazyka SQL - viz SQL.
Každý sloupec tabulky je jeden atribut (vlastnost) popisovaných dat. A každý sloupec musí mít určený tzv. datový typ, který určuje hodnoty, které jsou pro daný sloupec přípustné.
Nejčastějšími datovými typy jsou:
- CHAR(d) - řetězec znaků určité délky, kterou označuje číslo d. Např. tedy CHAR(20) bude řetězec o délce 20 znaků.
- DATE - datum ve formátu RRRR-MM-DD
- INTEGER - číslo od -2 147 483 648 do 2 147 483 647, maximální počet znaků může být specifikován v závorkách. Existují i další datové typy pro čísla, ale INTEGER je pro většinu dat dostačující.[2]
ALTER
Přidání sloupce
ALTER TABLE nazev_tabulky ADD nazev_sloupce datovy_typ;
Odstranění sloupce
ALTER TABLE nazev_tabulky DROP COLUMN nazev_sloupce;
Úprava sloupce
ALTER TABLE nazev_tabulky MODIFY nazev_sloupce datovy_typ;[2]
DROP
Pozor, odstraňování objektů používáme pouze v případě, že jsme si jisti, že daná data už nebudeme potřebovat.
Odstranění databáze
DROP DATABASE nazev_databaze;
Odstranění tabulky
DROP TABLE nazev_tabulky;[2]
Omezení dat (constraints)
SQL omezení se používají ke specifikaci pravidel pro data v tabulce. To zajišťuje přesnost a spolehlivost dat v tabulce. Pokud by nastal rozpor mezi omezením a akcí, která je s daty provedena, akce bude zrušena. Omezení mohou být na úrovni tabulek nebo na úrovni sloupců v tabulce. Mohou být použita po příkazu CREATE nebo ALTER.
Syntax
CREATE TABLE nazev_tabulky ( sloupec_1 datovy_typ omezeni, ... sloupec_n datovy_typ omezeni);
Omezení je několik: PRIMARY KEY (primární klíč), FOREIGN KEY (cizí klíč), NOT NULL, UNIQUE, CHECK, DEFAULT, INDEX, nejpoužívanější jsou ale primární a cizí klíče.[2]
Primární klíč
Omezení primárního klíče identifikuje každý záznam (řádek) v tabulce. Primární klíče musí obsahovat unikátní hodnoty (omezení UNIQUE) a nesmí obsahovat nulové hodnoty (omezení NOT NULL). Každá tabulka může mít pouze jeden primární klíč, který se může skládat z jednoho nebo více polí.
Příklad definice primárního klíče v rámci příkazu CREATE
CREATE TABLE osoby ( ID_osoby int NOT NULL PRIMARY KEY, prijmeni char(255) NOT NULL, jmeno char(255), vek int);
Příklad definice primárního klíče v rámci příkazu ALTER
ALTER TABLE osoby ( ADD PRIMARY KEY (ID);[2]
Cizí klíč
Cizí klíč se používá ke sloučení dvou tabulek. Je to pole (nebo více polí) jedné tabulky, které odkazuje na primární klíč jiné tabulky. Toto omezení se používá k tomu, abychom zabránili akcím, které by zničily vazby mezi tabulkami. Cizí klíč také zabraňuje tomu, aby do příslušného sloupce byla vložena nesprávná data, musí to být taková data, která odpovídají hodnotám obsaženým v tabulce, na kterou cizí klíč odkazuje. Příklad definice cizího klíče v rámci příkazu CREATE
CREATE TABLE objednavky ( ID_objednavky int NOT NULL PRIMARY KEY, cislo_objednavky int NOT NULL, ID_osoby int FOREIGN KEY REFERENCES osoby(ID_osoby) );
Spojení "FOREIGN KEY REFERENCES" určuje, že bude následovat odkaz na jinou tabulku ve formátu nazev_tabulky(nazev_sloupce).
Příklad definice cizího klíče v rámci příkazu ALTER
ALTER TABLE objednavky ADD FOREIGN KEY (ID_osoby) REFERENCES osoby(ID_osoby);[2]
Příklady na modelu knihovny
Vytvoř tabulku dílo.
CREATE TABLE Dilo ( id_dilo int PRIMARY KEY, nazev char(200), popis char(200) );
Vytvoř tabulku vydání.
CREATE TABLE vydani ( id_vyd int PRIMARY KEY, id_dilo int FOREIGN KEY REFERENCES Dilo(id_dilo), cis_vyd char(20), rok_vyd char(20) );
Vytvoř tabulku autorství.
CREATE TABLE Autorstvi ( id_autorstvi int PRIMARY KEY, id_dilo int FOREIGN KEY REFERENCES Dilo(id_dilo), id_aut int FOREIGN KEY 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;[3][4][2]
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 2,5 2,6 W3schools.com [online]. [cit. 2017-01-03]. Dostupné z: http://www.w3schools.com/sql/default.asp
- ↑ 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
- ↑ POKORNÝ, Jaroslav a Ivan HALAŠKA. Databázové systémy: vybrané kapitoly a cvičení. 2. přepr. vyd. Praha: Karolinum, 1998. ISBN 8071846872.
Externí odkazy
Související články
- Informační systém
- Databáze
- SQL
- Popis prvků konceptuálních modelů, smysl konceptuálního modelu a příklad modelu Knihovny
- Transformace konceptuálního modelu na datový model, základní prvky datového modelu, specifikace úlohy primárních a cizích klíčů
- Manipulační část jazyka SQL (DML – insert, update, delete) a příklady na databázi Knihovna
- Příkaz Select, jeho využití v databázi Knihovna
Klíčová slova
Databázové systémy, Jazyk SQL, primární klíč, cizí klíč