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

(omezení, primární klíč)
(cizí klíč)
Řádek 50: Řádek 50:
 
       ...
 
       ...
 
       sloupec_n 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.
+
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íč===
 
===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/>
 
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
 
Příklad definice primárního klíče v rámci příkazu CREATE
 
   CREATE TABLE osoby (
 
   CREATE TABLE osoby (
       ID int NOT NULL PRIMARY KEY,
+
       ID_osoby int NOT NULL PRIMARY KEY,
       prijmeni char(255),
+
       prijmeni char(255) NOT NULL,
 
       jmeno char(255),
 
       jmeno char(255),
 
       vek int);
 
       vek int);
 
Příklad definice primárního klíče v rámci příkazu ALTER
 
Příklad definice primárního klíče v rámci příkazu ALTER
 
   ALTER TABLE osoby (
 
   ALTER TABLE osoby (
       ADD PRIMARY KEY (ID);
+
       ADD PRIMARY KEY (ID);<ref name="w3"></ref>
 
===Cizí klíč===
 
===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.
+
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,
 +
     
 +
Příklad definice cizího klíče v rámci příkazu ALTER
  
 
==Příklady==
 
==Příklady==

Verze z 8. 4. 2018, 20:43

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[1]:

  1. CREATE - vytvoří objekt (databázi, tabulku)
  2. ALTER - změní definici objektu
  3. DROP - smaže objekt
  4. RENAME - přejmenuje objekt
  5. 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,
     

Příklad definice cizího klíče v rámci příkazu ALTER

Příklady

Konceptuální schéma knihovny
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.

[3][4][2]

Odkazy

Reference

  1. 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. 2,0 2,1 2,2 2,3 2,4 2,5 W3schools.com [online]. [cit. 2017-01-03]. Dostupné z: http://www.w3schools.com/sql/default.asp
  3. 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
  4. POKORNÝ, Jaroslav a Ivan HALAŠKA. Databázové systémy: vybrané kapitoly a cvičení. 2. přepr. vyd. Praha: Karolinum, 1998. ISBN 8071846872.

Použitá literatura

Externí odkazy

Související články

Klíčová slova

Databázové systémy, Jazyk SQL