<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="sk">
	<id>http://www.kiwiki.info/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Lusing</id>
	<title>Kiwiki - Príspevky používateľa [sk]</title>
	<link rel="self" type="application/atom+xml" href="http://www.kiwiki.info/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Lusing"/>
	<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php/%C5%A0peci%C3%A1lne:Pr%C3%ADspevky/Lusing"/>
	<updated>2026-04-16T19:27:48Z</updated>
	<subtitle>Príspevky používateľa</subtitle>
	<generator>MediaWiki 1.34.0</generator>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=SQL_-_DDL&amp;diff=8632</id>
		<title>SQL - DDL</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=SQL_-_DDL&amp;diff=8632"/>
		<updated>2010-12-28T12:19:32Z</updated>

		<summary type="html">&lt;p&gt;Lusing: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Skripta_dbs}}&lt;br /&gt;
{{Draft}}&lt;br /&gt;
DDL (Data Definition Language) - jazyk pre dátových štruktúr. V databázových systémoch predstavuje podskupinu jazyka SQL pre vytváranie a modifikáciu databázových objektov.&lt;br /&gt;
==Prípadová štúdia - evidencia projektov==&lt;br /&gt;
V tejto kapitole bude opísaný postup pri vytváraní novej databázy, nových tabuliek. Následne sa vytvorené tabuľky pokúsime zmodifikovať (pridanie atribútov, zmena názvu atribútov...) a na koniec zmažeme všetky tabuľky aj databázu.&lt;br /&gt;
&lt;br /&gt;
Pre túto kapitolu si zoberme príklad evidencie projektov a ich rozpočtu. V našom príklade indentifikujeme 2 základné entity: projekt a rozpočet na projekt. Atribúty týchto entít:&lt;br /&gt;
*'''projekt'''&lt;br /&gt;
**id projektu (id) - primárny kľúč&lt;br /&gt;
**názov projektu (nazov) - reťazec&lt;br /&gt;
**typ projektu (typ_projektu) - vymenovaný typ:  IP, ESF, STREP, CRAFT, CRP &amp;lt;ref&amp;gt;Typy projekov - http://www.bic.sk/projects.php?id=32&amp;amp;tid=24&amp;lt;/ref&amp;gt;&lt;br /&gt;
**začiatok riešenia projektu (zaciatok) - dátum&lt;br /&gt;
**koniec riešenia projektu (koniec) - dátum&lt;br /&gt;
**obsah riešenia projektu (obsah) - text&lt;br /&gt;
&lt;br /&gt;
Keďže v projektoch sa robí na každý rok iný rozpočet, v tabuľke rozpočet bude predstavovať jeden záznam rozpočet pre daný projekt na jeden rok. Ak by sa projekt riešil 5 rokov, v tabuľke rozpočet bude pre tento projekt 5 záznamov.&lt;br /&gt;
*'''rozpočet'''&lt;br /&gt;
**id projektu, pre ktorý je tento rozpočet (projekt_id) - primárny kľúč&lt;br /&gt;
**rok riešenia projektu (projekt_rok) - primárny kľúč&lt;br /&gt;
**bežné výdavky (bezne) - celé číslo &lt;br /&gt;
**kapitálové výdavky (kapitalove) - celé číslo&lt;br /&gt;
&lt;br /&gt;
==CREATE==&lt;br /&gt;
===CREATE DATABASE===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name&lt;br /&gt;
    [create_specification] ...&lt;br /&gt;
&lt;br /&gt;
create_specification:&lt;br /&gt;
    [DEFAULT] CHARACTER SET [=] charset_name&lt;br /&gt;
  | [DEFAULT] COLLATE [=] collation_name&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tu bude popis nasledujúcich parametrov&amp;lt;ref&amp;gt;Create database (mysql) http://dev.mysql.com/doc/refman/5.5/en/create-database.html&amp;lt;/ref&amp;gt;:&lt;br /&gt;
*IF NOT EXISTS - príkaz neprevedie žiadnu akciu&lt;br /&gt;
*db_name - názov databázy&lt;br /&gt;
*CHARACTER SET - Ak by ste nepoužili príkaz SET CHARACTER SET utf8, databáza by sa snažila vkladané textové reťazce ešte raz konvertovať do UTF-8. Vzniklo by tzv. &amp;quot;dvojité&amp;quot; kódovanie&lt;br /&gt;
*COLLATE  - usporiadanie reťazcov&lt;br /&gt;
&lt;br /&gt;
'''Príklad:'''&lt;br /&gt;
&lt;br /&gt;
Vytvorte databázu ''projekty''. Znakovú sadu pre celú databázu nastavte utf-8.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
   CREATE DATABASE Projekty CHARACTER SET utf8&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===CREATE TABLE===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name&lt;br /&gt;
    (create_definition,...)&lt;br /&gt;
    [table_options]&lt;br /&gt;
    [partition_options]&lt;br /&gt;
&lt;br /&gt;
create_definition:&lt;br /&gt;
    col_name column_definition&lt;br /&gt;
  | [CONSTRAINT [symbol]] PRIMARY KEY [index_type] (index_col_name,...)&lt;br /&gt;
      [index_option] ...&lt;br /&gt;
  | {INDEX|KEY} [index_name] [index_type] (index_col_name,...)&lt;br /&gt;
      [index_option] ...&lt;br /&gt;
&lt;br /&gt;
column_definition:&lt;br /&gt;
    data_type [NOT NULL | NULL] [DEFAULT default_value]&lt;br /&gt;
      [AUTO_INCREMENT] [UNIQUE [KEY] | [PRIMARY] KEY]&lt;br /&gt;
      [COMMENT 'string']&lt;br /&gt;
&lt;br /&gt;
data_type:&lt;br /&gt;
    pozri &amp;quot;Dátové typy&amp;quot;&lt;br /&gt;
&lt;br /&gt;
index_type:&lt;br /&gt;
    USING {BTREE | HASH}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
kde pri definícii tabuľky&amp;lt;ref&amp;gt;Create tabel (mysql) http://dev.mysql.com/doc/refman/5.5/en/create-table.html&amp;lt;/ref&amp;gt;:&lt;br /&gt;
*TEMPORARY - ten označuje, že sa má vykonať následujúca operacia, ale že se bude jednať len o dočasný príkaz&lt;br /&gt;
*IF NOT EXISTS - zabránenie chyby dochádza, ak tabuľka existuje. Avšak, nie je tam žiadné overenie, že existujúce tabuľky majú     rovnakú štruktúru ako údaje uvedené v príkaze CREATE TABLE.&lt;br /&gt;
*tbl_name - názov tabuľky&lt;br /&gt;
pri definícii štruktúry tabuľky(create_definition):&lt;br /&gt;
*CONSTRAINT - Môžete umiestniť obmedzenia na obmedzenie typu dát, ktoré môžu ísť do tabuľky.&lt;br /&gt;
*PRIMARY KEY - primarny kľúč&lt;br /&gt;
*INDEX - Index v SQL je vytvorený na základe existujúcich tabuliek pre rýchle načitávanie riadkov.&lt;br /&gt;
*KEY - kľúč&lt;br /&gt;
pri definícii konkrétneho typu (column_definition):&lt;br /&gt;
*NOT NULL - vybrané polia vždy obsahujú nejakú hodnotu. To znamená, že nie je možné vložiť nový záznam, či aktualizovať záznam bez pridania hodnoty k tejto oblasti.&lt;br /&gt;
*NULL - hodnoty predstavujú chýbajúce neznáme údaje. V predvolenom nastavení môže stĺpec tabuľky držať hodnoty NULL.&lt;br /&gt;
*DEFAULT - je príkaz ktorý nám vraví čo sa má stať&lt;br /&gt;
*AUTO_INCREMENT - umožňuje jedinečné číslo, ktoré vznikná, keď je nový záznam vložený do tabuľky.&lt;br /&gt;
*UNIQUE - bude vytvorený unikátný index z hodnôt tochto slpca, hodnota NULL je z indexu vylúčena &lt;br /&gt;
*PRIMARY - primárny kľúč&lt;br /&gt;
*COMMENT - Poznamka autora k vysvetleniu čo daný skript robí&lt;br /&gt;
Pri definícii typu indexu (index_type):&lt;br /&gt;
*BTREE - spôsob umiestnenia a umiestnenia súborov (tzv. záznamy alebo kľúče) v databáze.&lt;br /&gt;
*HASH - Z auditu zmeny dát na zachytenie údajov pre načítanie dátového skladu, hash polia majú viac praktické použitie.&lt;br /&gt;
&lt;br /&gt;
'''Úloha:'''&lt;br /&gt;
&lt;br /&gt;
Podľa prípadovej štúdie (evidencia projektov) vytvorte tabuľky ''projekt'' a ''rozpocet''. Typy jednotlivých atribútov sú opísané taktiež v tejto prípadovej štúdii na začiatku tejto kapitoly.&lt;br /&gt;
&lt;br /&gt;
Riešenie:&lt;br /&gt;
&lt;br /&gt;
Tabuľka ''projekt'':&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE TABLE `projekty`.`Projekt` (&lt;br /&gt;
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,&lt;br /&gt;
`nazov` VARCHAR( 64 ) NOT NULL ,&lt;br /&gt;
`typ_projektu` ENUM( 'IP', 'ESF', 'STREP', 'CRAFT', 'CRP' ) NOT NULL ,&lt;br /&gt;
`zaciatok` DATE NOT NULL ,&lt;br /&gt;
`koniec` DATE NOT NULL ,&lt;br /&gt;
`obsah` TEXT NOT NULL&lt;br /&gt;
) ENGINE = InnoDB;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tabuľka ''rozpocet'':&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE TABLE `projekty`.`rozpocet` (&lt;br /&gt;
`projekt_id` INT NOT NULL ,&lt;br /&gt;
`projekt_rok` INT NOT NULL ,&lt;br /&gt;
`bezne` REAL NOT NULL ,&lt;br /&gt;
`kapitalove` REAL NOT NULL ,&lt;br /&gt;
PRIMARY KEY ( `projekt_id` , `projekt_rok` ) &lt;br /&gt;
) ENGINE = InnoDB;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===CREATE VIEW===&lt;br /&gt;
Príkazom CREATE VIEW&amp;lt;ref&amp;gt;create view (mysql) http://dev.mysql.com/doc/refman/5.5/en/create-view.html&amp;lt;/ref&amp;gt; môžeme vytvoriť pohľad. Pohľadom sa venuje samostatná [[SQL - pohľady|kapitola]]. Syntax príkazu CREATE VIEW je nasledovná&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE&lt;br /&gt;
    [OR REPLACE]&lt;br /&gt;
    [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]&lt;br /&gt;
    [DEFINER = { user | CURRENT_USER }]&lt;br /&gt;
    [SQL SECURITY { DEFINER | INVOKER }]&lt;br /&gt;
    VIEW view_name [(column_list)]&lt;br /&gt;
    AS select_statement&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
kde:&lt;br /&gt;
*OR REPLACE - sa používa pre aktualizáciu obsahu reťazca.&lt;br /&gt;
*ALGORITHM - ovplyvňuje to, ako MySQL spracovával názory.&lt;br /&gt;
*DEFINER - sa používa pri kontrole oprávnenia pre prístup v čase zobrazenia &lt;br /&gt;
*SQL SECURUTY - slúži na to isté ako funkcia DEFINER&lt;br /&gt;
*select_statement - definuje a vytvára nemenovanú tabuľku výsledkov.&lt;br /&gt;
&lt;br /&gt;
'''Príklad:'''&lt;br /&gt;
&lt;br /&gt;
Vytvorte pohľad na základe dotazu: Koľko je v databáze projektov, rozdelených podľa typov projektov. Nezaujíma nás teda celkový počet projektov ale počet projektov podľa typu projektu.&lt;br /&gt;
&lt;br /&gt;
Riešenie:&lt;br /&gt;
SQL dotaz, pomocou ktorého dosiahneme požadovaný výsledok&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vytvorenie pohľadu ''rodelenie_projektov''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===CREATE PROCEDURE===&lt;br /&gt;
Príkaz CREATE PROCEDURE&amp;lt;ref&amp;gt;CREATE PROCEDURE (mysql) http://dev.mysql.com/doc/refman/5.5/en/create-procedure.html&amp;lt;/ref&amp;gt; vytvorí na databázovom serveri uloženú procedúru. Podrobnejšie o uložených procedúrach hovorí kapitola [[SQL - uložené procedúry]]. Syntax je nasledujúca:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE&lt;br /&gt;
    [DEFINER = { user | CURRENT_USER }]&lt;br /&gt;
    PROCEDURE sp_name ([proc_parameter[,...]])&lt;br /&gt;
    routine_body&lt;br /&gt;
&lt;br /&gt;
proc_parameter:&lt;br /&gt;
    [ IN | OUT | INOUT ] param_name type&lt;br /&gt;
&lt;br /&gt;
type:&lt;br /&gt;
    Ľubovoľný dátový SQL typ.&lt;br /&gt;
&lt;br /&gt;
routine_body:&lt;br /&gt;
    SQL príkaz&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
kde:&lt;br /&gt;
*DEFINER - sa používa pri kontrole oprávnenia pre prístup v čase zobrazenia &lt;br /&gt;
*sp_name - názov procedúry&lt;br /&gt;
*proc_parameter - procedúra parametrov&lt;br /&gt;
**IN - Každý parameter je IN parametra v predvolenom nastavení&lt;br /&gt;
**OUT, INOUT - používame ak chceme určiť ináč parametre &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Úloha:'''&lt;br /&gt;
Vytvorte uloženú ktorá v tabuľke rozpočet zvýši určitému projektu (jeho ID bude vstupný parameter procedúry) bežné a kapitálové výdavky 1.1x.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Riešenie:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE PROCEDURE zvysKV(.....&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ukážka použitia uloženej procedúry&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
   CALL zvysKV(1)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===CREATE TRIGGER===&lt;br /&gt;
Príkaz CREATE TRIGGER&amp;lt;ref&amp;gt;CREATE TRIGGER (mysql) http://dev.mysql.com/doc/refman/5.5/en/create-trigger.html&amp;lt;/ref&amp;gt; vytvorí v databáze trigger (spúšťač, resp. automaticky spúšťanú procedúru). Jeho syntax je nasledovná:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE&lt;br /&gt;
    [DEFINER = { user | CURRENT_USER }]&lt;br /&gt;
    TRIGGER trigger_name trigger_time trigger_event&lt;br /&gt;
    ON tbl_name FOR EACH ROW trigger_body&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
kde:&lt;br /&gt;
*DEFINER - nastavuje užívateľskú premennú alebo zobrazí jej hodnotu&lt;br /&gt;
*trigger_name - názov triggeru&lt;br /&gt;
*trigger_time - čas triggeru&lt;br /&gt;
*trigger_event - akcia triggeru&lt;br /&gt;
*FOR EACH ROW - táto klauzula hovorí, či sa trigger má vykonať zvlášť pre každý riadok, alebo iba raz&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Úloha:'''&lt;br /&gt;
Vytvorte trigger, ktorý sa bude spúšťať pred modifikáciou záznamu v tabuľke rozpočet. Tento trigger nedovolí urobiť zmenu rozpočtu aktuálneho projektu mimo obdobia riešenia projektu. Teda ak je projekt naplánovaný od roku 2010 do 2012, tak ak sa niekto pokúsi urobiť zmenu mimo tohoto obdobia, tento trigger mu to nedovolí.&lt;br /&gt;
&lt;br /&gt;
Riešenie:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
...riešnie&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==ALTER==&lt;br /&gt;
Príkaz ALTER slúži na modifikovanie štruktúry databázových objektov.&lt;br /&gt;
===ALTER DATABASE===&lt;br /&gt;
Príkaz ALTER DATABASE&amp;lt;ref&amp;gt;ALTER DATABASE (mysql) http://dev.mysql.com/doc/refman/5.5/en/alter-database.html&amp;lt;/ref&amp;gt;dovoľuje zmeniť vlastnosti databázy ako napríklad meno, znakovú sadu, zotriedenie. Syntax je nasledujúca:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
ALTER {DATABASE | SCHEMA} [db_name]&lt;br /&gt;
    alter_specification ...&lt;br /&gt;
ALTER {DATABASE | SCHEMA} db_name&lt;br /&gt;
    UPGRADE DATA DIRECTORY NAME&lt;br /&gt;
&lt;br /&gt;
alter_specification:&lt;br /&gt;
    [DEFAULT] CHARACTER SET [=] charset_name&lt;br /&gt;
  | [DEFAULT] COLLATE [=] collation_name&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
kde:&lt;br /&gt;
*alter_specification - &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Úloha:'''&lt;br /&gt;
Zmeňte znakovú sadu databázy projekty na utf8-slovak-ci.&lt;br /&gt;
&lt;br /&gt;
Riešenie:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
...riešenie&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===ALTER TABLE===&lt;br /&gt;
Príkaz ALTER TABLE&amp;lt;ref&amp;gt;ALTER TABLE(mysql) http://dev.mysql.com/doc/refman/5.5/en/alter-table.html&amp;lt;/ref&amp;gt;dovoľuje zmeniť vlastnosti tabuľky ako napríklad meno, dátový typ, znakovú sadu, zotriedenie. Syntax je nasledujúca:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
ALTER [IGNORE] TABLE tbl_name alter_spec [, alter_spec ...] &lt;br /&gt;
&lt;br /&gt;
alter_specification: &lt;br /&gt;
    ADD [COLUMN] create_definition [FIRST | AFTER column_name ] &lt;br /&gt;
| ADD [COLUMN] (create_definition, create_definition,...) &lt;br /&gt;
| ADD INDEX [index_name] (index_col_name,...) &lt;br /&gt;
| ADD PRIMARY KEY (index_col_name,...) &lt;br /&gt;
| ADD UNIQUE [index_name] (index_col_name,...) &lt;br /&gt;
| ADD FULLTEXT [index_name] (index_col_name,...) &lt;br /&gt;
| ALTER [COLUMN] col_name {SET DEFAULT literal | DROP DEFAULT} &lt;br /&gt;
| CHANGE [COLUMN] old_col_name create_definition &lt;br /&gt;
| MODIFY [COLUMN] create_definition &lt;br /&gt;
| DROP [COLUMN] col_name &lt;br /&gt;
| DROP PRIMARY KEY &lt;br /&gt;
| DROP INDEX index_name &lt;br /&gt;
| RENAME [TO] new_tbl_name &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
kde:&lt;br /&gt;
*IGNORE - ignorovať &lt;br /&gt;
*FIRST, AFTER - keď všetky operácie uvedené v spustení príkazu SQL sa úspešne implementovali.&lt;br /&gt;
*ADD - pridávanie dát&lt;br /&gt;
*ALTER - zmeniť&lt;br /&gt;
*CHANGE - príkaz možno použiť pre zmenu detailu alebo stĺpca v MySQL&lt;br /&gt;
*MODIFY - používa sa ak chcete zmeniť veľkosť stĺpca&lt;br /&gt;
*DROP - slúži na odstranienie niečoho v tabulke, napr: DROP INDEX slúži na odstránenie indexu v tabuľke.&lt;br /&gt;
*RENAME - zmena mena&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Úloha:'''&lt;br /&gt;
Zmente názov atribútu ''zaciatok'' na ''zaciatok_riesenia'' a názov atribútu ''koniec'' na ''koniec_riesenia''.&lt;br /&gt;
&lt;br /&gt;
Riešenie:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
   ALTER TABLE `projekt` CHANGE `zaciatok` `zaciatok_riesenia` DATE NOT NULL&lt;br /&gt;
   ALTER TABLE `projekt` CHANGE `koniec` `koniec_riesenia` DATE NOT NULL  &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==DROP==&lt;br /&gt;
Pomocou príkazu DROP sa mažú databázové objekty. Príkaz DROP môžeme použiť na mazanie&lt;br /&gt;
*databáz - DROP DATABASE&lt;br /&gt;
*tabuliek - DROP TABLE&lt;br /&gt;
*procedúr - DROP PROCEDURE&lt;br /&gt;
*triggerov - DROP TRIGGER&lt;br /&gt;
*pohľadov - DROP VIEW&lt;br /&gt;
===DROP TABLE===&lt;br /&gt;
Zmazanie tabuľky sa realizuje pomocou príkazu DROP TABLE&amp;lt;ref&amp;gt;Drop table (mysql) http://dev.mysql.com/doc/refman/5.5/en/drop-table.html&amp;lt;/ref&amp;gt;. Syntax je nasledujúca:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
DROP [TEMPORARY] TABLE [IF EXISTS]&lt;br /&gt;
    tbl_name [, tbl_name] ...&lt;br /&gt;
    [RESTRICT | CASCADE]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
kde:&lt;br /&gt;
*tbl_name - názov tabuľky, ktorú ideme mazať.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Úloha:'''&lt;br /&gt;
Zmažte všetky tabuľky na databáze ''projekty''.&lt;br /&gt;
&lt;br /&gt;
Riešenie:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
DROP TABLE `projekt`&lt;br /&gt;
DROP TABLE `rozpocet`&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===DROP DATABASE===&lt;br /&gt;
Zmazanie databázy sa realizuje pomocou príkazu DROP DATABASE&amp;lt;ref&amp;gt;Drop database (mysql) http://dev.mysql.com/doc/refman/5.5/en/drop-database.html&amp;lt;/ref&amp;gt;. Syntax je nasledujúca:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
   DROP {DATABASE | SCHEMA} [IF EXISTS] db_name&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Úloha:'''&lt;br /&gt;
Zmažte databázu ''projekty''.&lt;br /&gt;
&lt;br /&gt;
Riešenie:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
DROP DATABASE `projekty` &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
===Mazanie ostatných objektov===&lt;br /&gt;
&lt;br /&gt;
'''Mazanie pohľadu:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
DROP VIEW `rozdelenie_projektov`&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Mazanie uloženej procedúry:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
DROP VIEW 'PROCEDURE zvysKV'&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Mazanie triggera:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Zdroje a odkazy==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lusing</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=SQL_-_DDL&amp;diff=8631</id>
		<title>SQL - DDL</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=SQL_-_DDL&amp;diff=8631"/>
		<updated>2010-12-28T12:18:17Z</updated>

		<summary type="html">&lt;p&gt;Lusing: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Skripta_dbs}}&lt;br /&gt;
{{Draft}}&lt;br /&gt;
DDL (Data Definition Language) - jazyk pre dátových štruktúr. V databázových systémoch predstavuje podskupinu jazyka SQL pre vytváranie a modifikáciu databázových objektov.&lt;br /&gt;
==Prípadová štúdia - evidencia projektov==&lt;br /&gt;
V tejto kapitole bude opísaný postup pri vytváraní novej databázy, nových tabuliek. Následne sa vytvorené tabuľky pokúsime zmodifikovať (pridanie atribútov, zmena názvu atribútov...) a na koniec zmažeme všetky tabuľky aj databázu.&lt;br /&gt;
&lt;br /&gt;
Pre túto kapitolu si zoberme príklad evidencie projektov a ich rozpočtu. V našom príklade indentifikujeme 2 základné entity: projekt a rozpočet na projekt. Atribúty týchto entít:&lt;br /&gt;
*'''projekt'''&lt;br /&gt;
**id projektu (id) - primárny kľúč&lt;br /&gt;
**názov projektu (nazov) - reťazec&lt;br /&gt;
**typ projektu (typ_projektu) - vymenovaný typ:  IP, ESF, STREP, CRAFT, CRP &amp;lt;ref&amp;gt;Typy projekov - http://www.bic.sk/projects.php?id=32&amp;amp;tid=24&amp;lt;/ref&amp;gt;&lt;br /&gt;
**začiatok riešenia projektu (zaciatok) - dátum&lt;br /&gt;
**koniec riešenia projektu (koniec) - dátum&lt;br /&gt;
**obsah riešenia projektu (obsah) - text&lt;br /&gt;
&lt;br /&gt;
Keďže v projektoch sa robí na každý rok iný rozpočet, v tabuľke rozpočet bude predstavovať jeden záznam rozpočet pre daný projekt na jeden rok. Ak by sa projekt riešil 5 rokov, v tabuľke rozpočet bude pre tento projekt 5 záznamov.&lt;br /&gt;
*'''rozpočet'''&lt;br /&gt;
**id projektu, pre ktorý je tento rozpočet (projekt_id) - primárny kľúč&lt;br /&gt;
**rok riešenia projektu (projekt_rok) - primárny kľúč&lt;br /&gt;
**bežné výdavky (bezne) - celé číslo &lt;br /&gt;
**kapitálové výdavky (kapitalove) - celé číslo&lt;br /&gt;
&lt;br /&gt;
==CREATE==&lt;br /&gt;
===CREATE DATABASE===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name&lt;br /&gt;
    [create_specification] ...&lt;br /&gt;
&lt;br /&gt;
create_specification:&lt;br /&gt;
    [DEFAULT] CHARACTER SET [=] charset_name&lt;br /&gt;
  | [DEFAULT] COLLATE [=] collation_name&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tu bude popis nasledujúcich parametrov&amp;lt;ref&amp;gt;Create database (mysql) http://dev.mysql.com/doc/refman/5.5/en/create-database.html&amp;lt;/ref&amp;gt;:&lt;br /&gt;
*IF NOT EXISTS - príkaz neprevedie žiadnu akciu&lt;br /&gt;
*db_name - názov databázy&lt;br /&gt;
*CHARACTER SET - Ak by ste nepoužili príkaz SET CHARACTER SET utf8, databáza by sa snažila vkladané textové reťazce ešte raz konvertovať do UTF-8. Vzniklo by tzv. &amp;quot;dvojité&amp;quot; kódovanie&lt;br /&gt;
*COLLATE  - usporiadanie reťazcov&lt;br /&gt;
&lt;br /&gt;
'''Príklad:'''&lt;br /&gt;
&lt;br /&gt;
Vytvorte databázu ''projekty''. Znakovú sadu pre celú databázu nastavte utf-8.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
   CREATE DATABASE Projekty CHARACTER SET utf8&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===CREATE TABLE===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name&lt;br /&gt;
    (create_definition,...)&lt;br /&gt;
    [table_options]&lt;br /&gt;
    [partition_options]&lt;br /&gt;
&lt;br /&gt;
create_definition:&lt;br /&gt;
    col_name column_definition&lt;br /&gt;
  | [CONSTRAINT [symbol]] PRIMARY KEY [index_type] (index_col_name,...)&lt;br /&gt;
      [index_option] ...&lt;br /&gt;
  | {INDEX|KEY} [index_name] [index_type] (index_col_name,...)&lt;br /&gt;
      [index_option] ...&lt;br /&gt;
&lt;br /&gt;
column_definition:&lt;br /&gt;
    data_type [NOT NULL | NULL] [DEFAULT default_value]&lt;br /&gt;
      [AUTO_INCREMENT] [UNIQUE [KEY] | [PRIMARY] KEY]&lt;br /&gt;
      [COMMENT 'string']&lt;br /&gt;
&lt;br /&gt;
data_type:&lt;br /&gt;
    pozri &amp;quot;Dátové typy&amp;quot;&lt;br /&gt;
&lt;br /&gt;
index_type:&lt;br /&gt;
    USING {BTREE | HASH}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
kde pri definícii tabuľky&amp;lt;ref&amp;gt;Create tabel (mysql) http://dev.mysql.com/doc/refman/5.5/en/create-table.html&amp;lt;/ref&amp;gt;:&lt;br /&gt;
*TEMPORARY - ten označuje, že sa má vykonať následujúca operacia, ale že se bude jednať len o dočasný príkaz&lt;br /&gt;
*IF NOT EXISTS - zabránenie chyby dochádza, ak tabuľka existuje. Avšak, nie je tam žiadné overenie, že existujúce tabuľky majú     rovnakú štruktúru ako údaje uvedené v príkaze CREATE TABLE.&lt;br /&gt;
*tbl_name - názov tabuľky&lt;br /&gt;
pri definícii štruktúry tabuľky(create_definition):&lt;br /&gt;
*CONSTRAINT - Môžete umiestniť obmedzenia na obmedzenie typu dát, ktoré môžu ísť do tabuľky.&lt;br /&gt;
*PRIMARY KEY - primarny kľúč&lt;br /&gt;
*INDEX - Index v SQL je vytvorený na základe existujúcich tabuliek pre rýchle načitávanie riadkov.&lt;br /&gt;
*KEY - kľúč&lt;br /&gt;
pri definícii konkrétneho typu (column_definition):&lt;br /&gt;
*NOT NULL - vybrané polia vždy obsahujú nejakú hodnotu. To znamená, že nie je možné vložiť nový záznam, či aktualizovať záznam bez pridania hodnoty k tejto oblasti.&lt;br /&gt;
*NULL - hodnoty predstavujú chýbajúce neznáme údaje. V predvolenom nastavení môže stĺpec tabuľky držať hodnoty NULL.&lt;br /&gt;
*DEFAULT - je príkaz ktorý nám vraví čo sa má stať&lt;br /&gt;
*AUTO_INCREMENT - umožňuje jedinečné číslo, ktoré vznikná, keď je nový záznam vložený do tabuľky.&lt;br /&gt;
*UNIQUE - bude vytvorený unikátný index z hodnôt tochto slpca, hodnota NULL je z indexu vylúčena &lt;br /&gt;
*PRIMARY - primárny kľúč&lt;br /&gt;
*COMMENT - Poznamka autora k vysvetleniu čo daný skript robí&lt;br /&gt;
Pri definícii typu indexu (index_type):&lt;br /&gt;
*BTREE - spôsob umiestnenia a umiestnenia súborov (tzv. záznamy alebo kľúče) v databáze.&lt;br /&gt;
*HASH - Z auditu zmeny dát na zachytenie údajov pre načítanie dátového skladu, hash polia majú viac praktické použitie.&lt;br /&gt;
&lt;br /&gt;
'''Úloha:'''&lt;br /&gt;
&lt;br /&gt;
Podľa prípadovej štúdie (evidencia projektov) vytvorte tabuľky ''projekt'' a ''rozpocet''. Typy jednotlivých atribútov sú opísané taktiež v tejto prípadovej štúdii na začiatku tejto kapitoly.&lt;br /&gt;
&lt;br /&gt;
Riešenie:&lt;br /&gt;
&lt;br /&gt;
Tabuľka ''projekt'':&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE TABLE `projekty`.`Projekt` (&lt;br /&gt;
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,&lt;br /&gt;
`nazov` VARCHAR( 64 ) NOT NULL ,&lt;br /&gt;
`typ_projektu` ENUM( 'IP', 'ESF', 'STREP', 'CRAFT', 'CRP' ) NOT NULL ,&lt;br /&gt;
`zaciatok` DATE NOT NULL ,&lt;br /&gt;
`koniec` DATE NOT NULL ,&lt;br /&gt;
`obsah` TEXT NOT NULL&lt;br /&gt;
) ENGINE = InnoDB;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tabuľka ''rozpocet'':&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE TABLE `projekty`.`rozpocet` (&lt;br /&gt;
`projekt_id` INT NOT NULL ,&lt;br /&gt;
`projekt_rok` INT NOT NULL ,&lt;br /&gt;
`bezne` REAL NOT NULL ,&lt;br /&gt;
`kapitalove` REAL NOT NULL ,&lt;br /&gt;
PRIMARY KEY ( `projekt_id` , `projekt_rok` ) &lt;br /&gt;
) ENGINE = InnoDB;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===CREATE VIEW===&lt;br /&gt;
Príkazom CREATE VIEW&amp;lt;ref&amp;gt;create view (mysql) http://dev.mysql.com/doc/refman/5.5/en/create-view.html&amp;lt;/ref&amp;gt; môžeme vytvoriť pohľad. Pohľadom sa venuje samostatná [[SQL - pohľady|kapitola]]. Syntax príkazu CREATE VIEW je nasledovná&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE&lt;br /&gt;
    [OR REPLACE]&lt;br /&gt;
    [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]&lt;br /&gt;
    [DEFINER = { user | CURRENT_USER }]&lt;br /&gt;
    [SQL SECURITY { DEFINER | INVOKER }]&lt;br /&gt;
    VIEW view_name [(column_list)]&lt;br /&gt;
    AS select_statement&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
kde:&lt;br /&gt;
*OR REPLACE - sa používa pre aktualizáciu obsahu reťazca.&lt;br /&gt;
*ALGORITHM - ovplyvňuje to, ako MySQL spracovával názory.&lt;br /&gt;
*DEFINER - sa používa pri kontrole oprávnenia pre prístup v čase zobrazenia &lt;br /&gt;
*SQL SECURUTY - slúži na to isté ako funkcia DEFINER&lt;br /&gt;
*select_statement - definuje a vytvára nemenovanú tabuľku výsledkov.&lt;br /&gt;
&lt;br /&gt;
'''Príklad:'''&lt;br /&gt;
&lt;br /&gt;
Vytvorte pohľad na základe dotazu: Koľko je v databáze projektov, rozdelených podľa typov projektov. Nezaujíma nás teda celkový počet projektov ale počet projektov podľa typu projektu.&lt;br /&gt;
&lt;br /&gt;
Riešenie:&lt;br /&gt;
SQL dotaz, pomocou ktorého dosiahneme požadovaný výsledok&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE ALGORITHM = UNDEFINED VIEW `clenenie_projektov` AS SELECT * &lt;br /&gt;
FROM `projekt` &lt;br /&gt;
ORDER BY `projekt`.`typ_projektu` ASC &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vytvorenie pohľadu ''rodelenie_projektov''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE ALGORITHM = UNDEFINED VIEW `Rozdelenie_projektov` AS SELECT id, typ_projektu&lt;br /&gt;
FROM `projekt` &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===CREATE PROCEDURE===&lt;br /&gt;
Príkaz CREATE PROCEDURE&amp;lt;ref&amp;gt;CREATE PROCEDURE (mysql) http://dev.mysql.com/doc/refman/5.5/en/create-procedure.html&amp;lt;/ref&amp;gt; vytvorí na databázovom serveri uloženú procedúru. Podrobnejšie o uložených procedúrach hovorí kapitola [[SQL - uložené procedúry]]. Syntax je nasledujúca:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE&lt;br /&gt;
    [DEFINER = { user | CURRENT_USER }]&lt;br /&gt;
    PROCEDURE sp_name ([proc_parameter[,...]])&lt;br /&gt;
    routine_body&lt;br /&gt;
&lt;br /&gt;
proc_parameter:&lt;br /&gt;
    [ IN | OUT | INOUT ] param_name type&lt;br /&gt;
&lt;br /&gt;
type:&lt;br /&gt;
    Ľubovoľný dátový SQL typ.&lt;br /&gt;
&lt;br /&gt;
routine_body:&lt;br /&gt;
    SQL príkaz&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
kde:&lt;br /&gt;
*DEFINER - sa používa pri kontrole oprávnenia pre prístup v čase zobrazenia &lt;br /&gt;
*sp_name - názov procedúry&lt;br /&gt;
*proc_parameter - procedúra parametrov&lt;br /&gt;
**IN - Každý parameter je IN parametra v predvolenom nastavení&lt;br /&gt;
**OUT, INOUT - používame ak chceme určiť ináč parametre &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Úloha:'''&lt;br /&gt;
Vytvorte uloženú ktorá v tabuľke rozpočet zvýši určitému projektu (jeho ID bude vstupný parameter procedúry) bežné a kapitálové výdavky 1.1x.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Riešenie:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE PROCEDURE zvysKV(.....&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ukážka použitia uloženej procedúry&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
   CALL zvysKV(1)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===CREATE TRIGGER===&lt;br /&gt;
Príkaz CREATE TRIGGER&amp;lt;ref&amp;gt;CREATE TRIGGER (mysql) http://dev.mysql.com/doc/refman/5.5/en/create-trigger.html&amp;lt;/ref&amp;gt; vytvorí v databáze trigger (spúšťač, resp. automaticky spúšťanú procedúru). Jeho syntax je nasledovná:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE&lt;br /&gt;
    [DEFINER = { user | CURRENT_USER }]&lt;br /&gt;
    TRIGGER trigger_name trigger_time trigger_event&lt;br /&gt;
    ON tbl_name FOR EACH ROW trigger_body&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
kde:&lt;br /&gt;
*DEFINER - nastavuje užívateľskú premennú alebo zobrazí jej hodnotu&lt;br /&gt;
*trigger_name - názov triggeru&lt;br /&gt;
*trigger_time - čas triggeru&lt;br /&gt;
*trigger_event - akcia triggeru&lt;br /&gt;
*FOR EACH ROW - táto klauzula hovorí, či sa trigger má vykonať zvlášť pre každý riadok, alebo iba raz&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Úloha:'''&lt;br /&gt;
Vytvorte trigger, ktorý sa bude spúšťať pred modifikáciou záznamu v tabuľke rozpočet. Tento trigger nedovolí urobiť zmenu rozpočtu aktuálneho projektu mimo obdobia riešenia projektu. Teda ak je projekt naplánovaný od roku 2010 do 2012, tak ak sa niekto pokúsi urobiť zmenu mimo tohoto obdobia, tento trigger mu to nedovolí.&lt;br /&gt;
&lt;br /&gt;
Riešenie:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
...riešnie&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==ALTER==&lt;br /&gt;
Príkaz ALTER slúži na modifikovanie štruktúry databázových objektov.&lt;br /&gt;
===ALTER DATABASE===&lt;br /&gt;
Príkaz ALTER DATABASE&amp;lt;ref&amp;gt;ALTER DATABASE (mysql) http://dev.mysql.com/doc/refman/5.5/en/alter-database.html&amp;lt;/ref&amp;gt;dovoľuje zmeniť vlastnosti databázy ako napríklad meno, znakovú sadu, zotriedenie. Syntax je nasledujúca:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
ALTER {DATABASE | SCHEMA} [db_name]&lt;br /&gt;
    alter_specification ...&lt;br /&gt;
ALTER {DATABASE | SCHEMA} db_name&lt;br /&gt;
    UPGRADE DATA DIRECTORY NAME&lt;br /&gt;
&lt;br /&gt;
alter_specification:&lt;br /&gt;
    [DEFAULT] CHARACTER SET [=] charset_name&lt;br /&gt;
  | [DEFAULT] COLLATE [=] collation_name&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
kde:&lt;br /&gt;
*alter_specification - &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Úloha:'''&lt;br /&gt;
Zmeňte znakovú sadu databázy projekty na utf8-slovak-ci.&lt;br /&gt;
&lt;br /&gt;
Riešenie:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
...riešenie&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===ALTER TABLE===&lt;br /&gt;
Príkaz ALTER TABLE&amp;lt;ref&amp;gt;ALTER TABLE(mysql) http://dev.mysql.com/doc/refman/5.5/en/alter-table.html&amp;lt;/ref&amp;gt;dovoľuje zmeniť vlastnosti tabuľky ako napríklad meno, dátový typ, znakovú sadu, zotriedenie. Syntax je nasledujúca:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
ALTER [IGNORE] TABLE tbl_name alter_spec [, alter_spec ...] &lt;br /&gt;
&lt;br /&gt;
alter_specification: &lt;br /&gt;
    ADD [COLUMN] create_definition [FIRST | AFTER column_name ] &lt;br /&gt;
| ADD [COLUMN] (create_definition, create_definition,...) &lt;br /&gt;
| ADD INDEX [index_name] (index_col_name,...) &lt;br /&gt;
| ADD PRIMARY KEY (index_col_name,...) &lt;br /&gt;
| ADD UNIQUE [index_name] (index_col_name,...) &lt;br /&gt;
| ADD FULLTEXT [index_name] (index_col_name,...) &lt;br /&gt;
| ALTER [COLUMN] col_name {SET DEFAULT literal | DROP DEFAULT} &lt;br /&gt;
| CHANGE [COLUMN] old_col_name create_definition &lt;br /&gt;
| MODIFY [COLUMN] create_definition &lt;br /&gt;
| DROP [COLUMN] col_name &lt;br /&gt;
| DROP PRIMARY KEY &lt;br /&gt;
| DROP INDEX index_name &lt;br /&gt;
| RENAME [TO] new_tbl_name &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
kde:&lt;br /&gt;
*IGNORE - ignorovať &lt;br /&gt;
*FIRST, AFTER - keď všetky operácie uvedené v spustení príkazu SQL sa úspešne implementovali.&lt;br /&gt;
*ADD - pridávanie dát&lt;br /&gt;
*ALTER - zmeniť&lt;br /&gt;
*CHANGE - príkaz možno použiť pre zmenu detailu alebo stĺpca v MySQL&lt;br /&gt;
*MODIFY - používa sa ak chcete zmeniť veľkosť stĺpca&lt;br /&gt;
*DROP - slúži na odstranienie niečoho v tabulke, napr: DROP INDEX slúži na odstránenie indexu v tabuľke.&lt;br /&gt;
*RENAME - zmena mena&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Úloha:'''&lt;br /&gt;
Zmente názov atribútu ''zaciatok'' na ''zaciatok_riesenia'' a názov atribútu ''koniec'' na ''koniec_riesenia''.&lt;br /&gt;
&lt;br /&gt;
Riešenie:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
   ALTER TABLE `projekt` CHANGE `zaciatok` `zaciatok_riesenia` DATE NOT NULL&lt;br /&gt;
   ALTER TABLE `projekt` CHANGE `koniec` `koniec_riesenia` DATE NOT NULL  &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==DROP==&lt;br /&gt;
Pomocou príkazu DROP sa mažú databázové objekty. Príkaz DROP môžeme použiť na mazanie&lt;br /&gt;
*databáz - DROP DATABASE&lt;br /&gt;
*tabuliek - DROP TABLE&lt;br /&gt;
*procedúr - DROP PROCEDURE&lt;br /&gt;
*triggerov - DROP TRIGGER&lt;br /&gt;
*pohľadov - DROP VIEW&lt;br /&gt;
===DROP TABLE===&lt;br /&gt;
Zmazanie tabuľky sa realizuje pomocou príkazu DROP TABLE&amp;lt;ref&amp;gt;Drop table (mysql) http://dev.mysql.com/doc/refman/5.5/en/drop-table.html&amp;lt;/ref&amp;gt;. Syntax je nasledujúca:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
DROP [TEMPORARY] TABLE [IF EXISTS]&lt;br /&gt;
    tbl_name [, tbl_name] ...&lt;br /&gt;
    [RESTRICT | CASCADE]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
kde:&lt;br /&gt;
*tbl_name - názov tabuľky, ktorú ideme mazať.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Úloha:'''&lt;br /&gt;
Zmažte všetky tabuľky na databáze ''projekty''.&lt;br /&gt;
&lt;br /&gt;
Riešenie:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
DROP TABLE `projekt`&lt;br /&gt;
DROP TABLE `rozpocet`&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===DROP DATABASE===&lt;br /&gt;
Zmazanie databázy sa realizuje pomocou príkazu DROP DATABASE&amp;lt;ref&amp;gt;Drop database (mysql) http://dev.mysql.com/doc/refman/5.5/en/drop-database.html&amp;lt;/ref&amp;gt;. Syntax je nasledujúca:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
   DROP {DATABASE | SCHEMA} [IF EXISTS] db_name&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Úloha:'''&lt;br /&gt;
Zmažte databázu ''projekty''.&lt;br /&gt;
&lt;br /&gt;
Riešenie:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
DROP DATABASE `projekty` &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
===Mazanie ostatných objektov===&lt;br /&gt;
&lt;br /&gt;
'''Mazanie pohľadu:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
DROP VIEW `rozdelenie_projektov`&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Mazanie uloženej procedúry:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
DROP VIEW 'PROCEDURE zvysKV'&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Mazanie triggera:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Zdroje a odkazy==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lusing</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=SQL_-_DDL&amp;diff=8630</id>
		<title>SQL - DDL</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=SQL_-_DDL&amp;diff=8630"/>
		<updated>2010-12-28T12:07:28Z</updated>

		<summary type="html">&lt;p&gt;Lusing: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Skripta_dbs}}&lt;br /&gt;
{{Draft}}&lt;br /&gt;
DDL (Data Definition Language) - jazyk pre dátových štruktúr. V databázových systémoch predstavuje podskupinu jazyka SQL pre vytváranie a modifikáciu databázových objektov.&lt;br /&gt;
==Prípadová štúdia - evidencia projektov==&lt;br /&gt;
V tejto kapitole bude opísaný postup pri vytváraní novej databázy, nových tabuliek. Následne sa vytvorené tabuľky pokúsime zmodifikovať (pridanie atribútov, zmena názvu atribútov...) a na koniec zmažeme všetky tabuľky aj databázu.&lt;br /&gt;
&lt;br /&gt;
Pre túto kapitolu si zoberme príklad evidencie projektov a ich rozpočtu. V našom príklade indentifikujeme 2 základné entity: projekt a rozpočet na projekt. Atribúty týchto entít:&lt;br /&gt;
*'''projekt'''&lt;br /&gt;
**id projektu (id) - primárny kľúč&lt;br /&gt;
**názov projektu (nazov) - reťazec&lt;br /&gt;
**typ projektu (typ_projektu) - vymenovaný typ:  IP, ESF, STREP, CRAFT, CRP &amp;lt;ref&amp;gt;Typy projekov - http://www.bic.sk/projects.php?id=32&amp;amp;tid=24&amp;lt;/ref&amp;gt;&lt;br /&gt;
**začiatok riešenia projektu (zaciatok) - dátum&lt;br /&gt;
**koniec riešenia projektu (koniec) - dátum&lt;br /&gt;
**obsah riešenia projektu (obsah) - text&lt;br /&gt;
&lt;br /&gt;
Keďže v projektoch sa robí na každý rok iný rozpočet, v tabuľke rozpočet bude predstavovať jeden záznam rozpočet pre daný projekt na jeden rok. Ak by sa projekt riešil 5 rokov, v tabuľke rozpočet bude pre tento projekt 5 záznamov.&lt;br /&gt;
*'''rozpočet'''&lt;br /&gt;
**id projektu, pre ktorý je tento rozpočet (projekt_id) - primárny kľúč&lt;br /&gt;
**rok riešenia projektu (projekt_rok) - primárny kľúč&lt;br /&gt;
**bežné výdavky (bezne) - celé číslo &lt;br /&gt;
**kapitálové výdavky (kapitalove) - celé číslo&lt;br /&gt;
&lt;br /&gt;
==CREATE==&lt;br /&gt;
===CREATE DATABASE===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name&lt;br /&gt;
    [create_specification] ...&lt;br /&gt;
&lt;br /&gt;
create_specification:&lt;br /&gt;
    [DEFAULT] CHARACTER SET [=] charset_name&lt;br /&gt;
  | [DEFAULT] COLLATE [=] collation_name&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tu bude popis nasledujúcich parametrov&amp;lt;ref&amp;gt;Create database (mysql) http://dev.mysql.com/doc/refman/5.5/en/create-database.html&amp;lt;/ref&amp;gt;:&lt;br /&gt;
*IF NOT EXISTS - príkaz neprevedie žiadnu akciu&lt;br /&gt;
*db_name - názov databázy&lt;br /&gt;
*CHARACTER SET - Ak by ste nepoužili príkaz SET CHARACTER SET utf8, databáza by sa snažila vkladané textové reťazce ešte raz konvertovať do UTF-8. Vzniklo by tzv. &amp;quot;dvojité&amp;quot; kódovanie&lt;br /&gt;
*COLLATE  - usporiadanie reťazcov&lt;br /&gt;
&lt;br /&gt;
'''Príklad:'''&lt;br /&gt;
&lt;br /&gt;
Vytvorte databázu ''projekty''. Znakovú sadu pre celú databázu nastavte utf-8.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
   CREATE DATABASE Projekty CHARACTER SET utf8&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===CREATE TABLE===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name&lt;br /&gt;
    (create_definition,...)&lt;br /&gt;
    [table_options]&lt;br /&gt;
    [partition_options]&lt;br /&gt;
&lt;br /&gt;
create_definition:&lt;br /&gt;
    col_name column_definition&lt;br /&gt;
  | [CONSTRAINT [symbol]] PRIMARY KEY [index_type] (index_col_name,...)&lt;br /&gt;
      [index_option] ...&lt;br /&gt;
  | {INDEX|KEY} [index_name] [index_type] (index_col_name,...)&lt;br /&gt;
      [index_option] ...&lt;br /&gt;
&lt;br /&gt;
column_definition:&lt;br /&gt;
    data_type [NOT NULL | NULL] [DEFAULT default_value]&lt;br /&gt;
      [AUTO_INCREMENT] [UNIQUE [KEY] | [PRIMARY] KEY]&lt;br /&gt;
      [COMMENT 'string']&lt;br /&gt;
&lt;br /&gt;
data_type:&lt;br /&gt;
    pozri &amp;quot;Dátové typy&amp;quot;&lt;br /&gt;
&lt;br /&gt;
index_type:&lt;br /&gt;
    USING {BTREE | HASH}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
kde pri definícii tabuľky&amp;lt;ref&amp;gt;Create tabel (mysql) http://dev.mysql.com/doc/refman/5.5/en/create-table.html&amp;lt;/ref&amp;gt;:&lt;br /&gt;
*TEMPORARY - ten označuje, že sa má vykonať následujúca operacia, ale že se bude jednať len o dočasný príkaz&lt;br /&gt;
*IF NOT EXISTS - zabránenie chyby dochádza, ak tabuľka existuje. Avšak, nie je tam žiadné overenie, že existujúce tabuľky majú     rovnakú štruktúru ako údaje uvedené v príkaze CREATE TABLE.&lt;br /&gt;
*tbl_name - názov tabuľky&lt;br /&gt;
pri definícii štruktúry tabuľky(create_definition):&lt;br /&gt;
*CONSTRAINT - Môžete umiestniť obmedzenia na obmedzenie typu dát, ktoré môžu ísť do tabuľky.&lt;br /&gt;
*PRIMARY KEY - primarny kľúč&lt;br /&gt;
*INDEX - Index v SQL je vytvorený na základe existujúcich tabuliek pre rýchle načitávanie riadkov.&lt;br /&gt;
*KEY - kľúč&lt;br /&gt;
pri definícii konkrétneho typu (column_definition):&lt;br /&gt;
*NOT NULL - vybrané polia vždy obsahujú nejakú hodnotu. To znamená, že nie je možné vložiť nový záznam, či aktualizovať záznam bez pridania hodnoty k tejto oblasti.&lt;br /&gt;
*NULL - hodnoty predstavujú chýbajúce neznáme údaje. V predvolenom nastavení môže stĺpec tabuľky držať hodnoty NULL.&lt;br /&gt;
*DEFAULT - je príkaz ktorý nám vraví čo sa má stať&lt;br /&gt;
*AUTO_INCREMENT - umožňuje jedinečné číslo, ktoré vznikná, keď je nový záznam vložený do tabuľky.&lt;br /&gt;
*UNIQUE - bude vytvorený unikátný index z hodnôt tochto slpca, hodnota NULL je z indexu vylúčena &lt;br /&gt;
*PRIMARY - primárny kľúč&lt;br /&gt;
*COMMENT - Poznamka autora k vysvetleniu čo daný skript robí&lt;br /&gt;
Pri definícii typu indexu (index_type):&lt;br /&gt;
*BTREE - spôsob umiestnenia a umiestnenia súborov (tzv. záznamy alebo kľúče) v databáze.&lt;br /&gt;
*HASH - Z auditu zmeny dát na zachytenie údajov pre načítanie dátového skladu, hash polia majú viac praktické použitie.&lt;br /&gt;
&lt;br /&gt;
'''Úloha:'''&lt;br /&gt;
&lt;br /&gt;
Podľa prípadovej štúdie (evidencia projektov) vytvorte tabuľky ''projekt'' a ''rozpocet''. Typy jednotlivých atribútov sú opísané taktiež v tejto prípadovej štúdii na začiatku tejto kapitoly.&lt;br /&gt;
&lt;br /&gt;
Riešenie:&lt;br /&gt;
&lt;br /&gt;
Tabuľka ''projekt'':&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE TABLE `projekty`.`Projekt` (&lt;br /&gt;
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,&lt;br /&gt;
`nazov` VARCHAR( 64 ) NOT NULL ,&lt;br /&gt;
`typ_projektu` ENUM( 'IP', 'ESF', 'STREP', 'CRAFT', 'CRP' ) NOT NULL ,&lt;br /&gt;
`zaciatok` DATE NOT NULL ,&lt;br /&gt;
`koniec` DATE NOT NULL ,&lt;br /&gt;
`obsah` TEXT NOT NULL&lt;br /&gt;
) ENGINE = InnoDB;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tabuľka ''rozpocet'':&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE TABLE `projekty`.`rozpocet` (&lt;br /&gt;
`projekt_id` INT NOT NULL ,&lt;br /&gt;
`projekt_rok` INT NOT NULL ,&lt;br /&gt;
`bezne` REAL NOT NULL ,&lt;br /&gt;
`kapitalove` REAL NOT NULL ,&lt;br /&gt;
PRIMARY KEY ( `projekt_id` , `projekt_rok` ) &lt;br /&gt;
) ENGINE = InnoDB;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===CREATE VIEW===&lt;br /&gt;
Príkazom CREATE VIEW&amp;lt;ref&amp;gt;create view (mysql) http://dev.mysql.com/doc/refman/5.5/en/create-view.html&amp;lt;/ref&amp;gt; môžeme vytvoriť pohľad. Pohľadom sa venuje samostatná [[SQL - pohľady|kapitola]]. Syntax príkazu CREATE VIEW je nasledovná&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE&lt;br /&gt;
    [OR REPLACE]&lt;br /&gt;
    [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]&lt;br /&gt;
    [DEFINER = { user | CURRENT_USER }]&lt;br /&gt;
    [SQL SECURITY { DEFINER | INVOKER }]&lt;br /&gt;
    VIEW view_name [(column_list)]&lt;br /&gt;
    AS select_statement&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
kde:&lt;br /&gt;
*OR REPLACE - Funkcia nahradí všetky výskytnuté určené reťazce ako hľadaný reťazec s náhradným reťazcom.&lt;br /&gt;
*ALGORITHM - používa sa na dolovanie dát.&lt;br /&gt;
*DEFINER - môže v rámci konštantného výrazu použiť skôr definovanú symbolickú konštantu&lt;br /&gt;
*SQL SECURUTY - vytvorí na databázovom serveri uloženú procedúru&lt;br /&gt;
*select_statement - definuje a vytvára nemenovanú tabuľku výsledkov.&lt;br /&gt;
&lt;br /&gt;
'''Príklad:'''&lt;br /&gt;
&lt;br /&gt;
Vytvorte pohľad na základe dotazu: Koľko je v databáze projektov, rozdelených podľa typov projektov. Nezaujíma nás teda celkový počet projektov ale počet projektov podľa typu projektu.&lt;br /&gt;
&lt;br /&gt;
Riešenie:&lt;br /&gt;
SQL dotaz, pomocou ktorého dosiahneme požadovaný výsledok&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE ALGORITHM = UNDEFINED VIEW `clenenie_projektov` AS SELECT * &lt;br /&gt;
FROM `projekt` &lt;br /&gt;
ORDER BY `projekt`.`typ_projektu` ASC &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vytvorenie pohľadu ''rodelenie_projektov''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE ALGORITHM = UNDEFINED VIEW `Rozdelenie_projektov` AS SELECT id, typ_projektu&lt;br /&gt;
FROM `projekt` &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===CREATE PROCEDURE===&lt;br /&gt;
Príkaz CREATE PROCEDURE&amp;lt;ref&amp;gt;CREATE PROCEDURE (mysql) http://dev.mysql.com/doc/refman/5.5/en/create-procedure.html&amp;lt;/ref&amp;gt; vytvorí na databázovom serveri uloženú procedúru. Podrobnejšie o uložených procedúrach hovorí kapitola [[SQL - uložené procedúry]]. Syntax je nasledujúca:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE&lt;br /&gt;
    [DEFINER = { user | CURRENT_USER }]&lt;br /&gt;
    PROCEDURE sp_name ([proc_parameter[,...]])&lt;br /&gt;
    routine_body&lt;br /&gt;
&lt;br /&gt;
proc_parameter:&lt;br /&gt;
    [ IN | OUT | INOUT ] param_name type&lt;br /&gt;
&lt;br /&gt;
type:&lt;br /&gt;
    Ľubovoľný dátový SQL typ.&lt;br /&gt;
&lt;br /&gt;
routine_body:&lt;br /&gt;
    SQL príkaz&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
kde:&lt;br /&gt;
*DEFINER - nastavuje užívateľskú premennú alebo zobrazí jej hodnotu&lt;br /&gt;
*sp_name - názov procedúry&lt;br /&gt;
*proc_parameter - procedúra parametrov&lt;br /&gt;
**IN - operátor umožňuje zadať viac hodnôt v klauzule WHERE.&lt;br /&gt;
**OUT - je odovzdaný na riadenie, ale môže byť menený a odlišný od zmeneného stavu, kedy konanie skončí.&lt;br /&gt;
**INOUT - premenná je odovzdaná do riadenia alebo funkcie, a to môže byť používaná v zmenenom bloku.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Úloha:'''&lt;br /&gt;
Vytvorte uloženú ktorá v tabuľke rozpočet zvýši určitému projektu (jeho ID bude vstupný parameter procedúry) bežné a kapitálové výdavky 1.1x.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Riešenie:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE PROCEDURE zvysKV(.....&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ukážka použitia uloženej procedúry&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
   CALL zvysKV(1)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===CREATE TRIGGER===&lt;br /&gt;
Príkaz CREATE TRIGGER&amp;lt;ref&amp;gt;CREATE TRIGGER (mysql) http://dev.mysql.com/doc/refman/5.5/en/create-trigger.html&amp;lt;/ref&amp;gt; vytvorí v databáze trigger (spúšťač, resp. automaticky spúšťanú procedúru). Jeho syntax je nasledovná:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE&lt;br /&gt;
    [DEFINER = { user | CURRENT_USER }]&lt;br /&gt;
    TRIGGER trigger_name trigger_time trigger_event&lt;br /&gt;
    ON tbl_name FOR EACH ROW trigger_body&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
kde:&lt;br /&gt;
*DEFINER - nastavuje užívateľskú premennú alebo zobrazí jej hodnotu&lt;br /&gt;
*trigger_name - názov triggeru&lt;br /&gt;
*trigger_time - čas triggeru&lt;br /&gt;
*trigger_event - akcia triggeru&lt;br /&gt;
*FOR EACH ROW - táto klauzula hovorí, či sa trigger má vykonať zvlášť pre každý riadok, alebo iba raz&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Úloha:'''&lt;br /&gt;
Vytvorte trigger, ktorý sa bude spúšťať pred modifikáciou záznamu v tabuľke rozpočet. Tento trigger nedovolí urobiť zmenu rozpočtu aktuálneho projektu mimo obdobia riešenia projektu. Teda ak je projekt naplánovaný od roku 2010 do 2012, tak ak sa niekto pokúsi urobiť zmenu mimo tohoto obdobia, tento trigger mu to nedovolí.&lt;br /&gt;
&lt;br /&gt;
Riešenie:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
...riešnie&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==ALTER==&lt;br /&gt;
Príkaz ALTER slúži na modifikovanie štruktúry databázových objektov.&lt;br /&gt;
===ALTER DATABASE===&lt;br /&gt;
Príkaz ALTER DATABASE&amp;lt;ref&amp;gt;ALTER DATABASE (mysql) http://dev.mysql.com/doc/refman/5.5/en/alter-database.html&amp;lt;/ref&amp;gt;dovoľuje zmeniť vlastnosti databázy ako napríklad meno, znakovú sadu, zotriedenie. Syntax je nasledujúca:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
ALTER {DATABASE | SCHEMA} [db_name]&lt;br /&gt;
    alter_specification ...&lt;br /&gt;
ALTER {DATABASE | SCHEMA} db_name&lt;br /&gt;
    UPGRADE DATA DIRECTORY NAME&lt;br /&gt;
&lt;br /&gt;
alter_specification:&lt;br /&gt;
    [DEFAULT] CHARACTER SET [=] charset_name&lt;br /&gt;
  | [DEFAULT] COLLATE [=] collation_name&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
kde:&lt;br /&gt;
*alter_specification - &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Úloha:'''&lt;br /&gt;
Zmeňte znakovú sadu databázy projekty na utf8-slovak-ci.&lt;br /&gt;
&lt;br /&gt;
Riešenie:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
...riešenie&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===ALTER TABLE===&lt;br /&gt;
Príkaz ALTER TABLE&amp;lt;ref&amp;gt;ALTER TABLE(mysql) http://dev.mysql.com/doc/refman/5.5/en/alter-table.html&amp;lt;/ref&amp;gt;dovoľuje zmeniť vlastnosti tabuľky ako napríklad meno, dátový typ, znakovú sadu, zotriedenie. Syntax je nasledujúca:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
ALTER [IGNORE] TABLE tbl_name alter_spec [, alter_spec ...] &lt;br /&gt;
&lt;br /&gt;
alter_specification: &lt;br /&gt;
    ADD [COLUMN] create_definition [FIRST | AFTER column_name ] &lt;br /&gt;
| ADD [COLUMN] (create_definition, create_definition,...) &lt;br /&gt;
| ADD INDEX [index_name] (index_col_name,...) &lt;br /&gt;
| ADD PRIMARY KEY (index_col_name,...) &lt;br /&gt;
| ADD UNIQUE [index_name] (index_col_name,...) &lt;br /&gt;
| ADD FULLTEXT [index_name] (index_col_name,...) &lt;br /&gt;
| ALTER [COLUMN] col_name {SET DEFAULT literal | DROP DEFAULT} &lt;br /&gt;
| CHANGE [COLUMN] old_col_name create_definition &lt;br /&gt;
| MODIFY [COLUMN] create_definition &lt;br /&gt;
| DROP [COLUMN] col_name &lt;br /&gt;
| DROP PRIMARY KEY &lt;br /&gt;
| DROP INDEX index_name &lt;br /&gt;
| RENAME [TO] new_tbl_name &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
kde:&lt;br /&gt;
*IGNORE - ignorovať &lt;br /&gt;
*FIRST, AFTER - keď všetky operácie uvedené v spustení príkazu SQL sa úspešne implementovali.&lt;br /&gt;
*ADD - pridávanie dát&lt;br /&gt;
*ALTER - zmeniť&lt;br /&gt;
*CHANGE - príkaz možno použiť pre zmenu detailu alebo stĺpca v MySQL&lt;br /&gt;
*MODIFY - používa sa ak chcete zmeniť veľkosť stĺpca&lt;br /&gt;
*DROP - slúži na odstranienie niečoho v tabulke, napr: DROP INDEX slúži na odstránenie indexu v tabuľke.&lt;br /&gt;
*RENAME - zmena mena&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Úloha:'''&lt;br /&gt;
Zmente názov atribútu ''zaciatok'' na ''zaciatok_riesenia'' a názov atribútu ''koniec'' na ''koniec_riesenia''.&lt;br /&gt;
&lt;br /&gt;
Riešenie:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
   ALTER TABLE `projekt` CHANGE `zaciatok` `zaciatok_riesenia` DATE NOT NULL&lt;br /&gt;
   ALTER TABLE `projekt` CHANGE `koniec` `koniec_riesenia` DATE NOT NULL  &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==DROP==&lt;br /&gt;
Pomocou príkazu DROP sa mažú databázové objekty. Príkaz DROP môžeme použiť na mazanie&lt;br /&gt;
*databáz - DROP DATABASE&lt;br /&gt;
*tabuliek - DROP TABLE&lt;br /&gt;
*procedúr - DROP PROCEDURE&lt;br /&gt;
*triggerov - DROP TRIGGER&lt;br /&gt;
*pohľadov - DROP VIEW&lt;br /&gt;
===DROP TABLE===&lt;br /&gt;
Zmazanie tabuľky sa realizuje pomocou príkazu DROP TABLE&amp;lt;ref&amp;gt;Drop table (mysql) http://dev.mysql.com/doc/refman/5.5/en/drop-table.html&amp;lt;/ref&amp;gt;. Syntax je nasledujúca:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
DROP [TEMPORARY] TABLE [IF EXISTS]&lt;br /&gt;
    tbl_name [, tbl_name] ...&lt;br /&gt;
    [RESTRICT | CASCADE]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
kde:&lt;br /&gt;
*tbl_name - názov tabuľky, ktorú ideme mazať.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Úloha:'''&lt;br /&gt;
Zmažte všetky tabuľky na databáze ''projekty''.&lt;br /&gt;
&lt;br /&gt;
Riešenie:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
DROP [TEMPORARY] TABLE 'projekt' AND 'rozpocet'&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===DROP DATABASE===&lt;br /&gt;
Zmazanie databázy sa realizuje pomocou príkazu DROP DATABASE&amp;lt;ref&amp;gt;Drop database (mysql) http://dev.mysql.com/doc/refman/5.5/en/drop-database.html&amp;lt;/ref&amp;gt;. Syntax je nasledujúca:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
   DROP {DATABASE | SCHEMA} [IF EXISTS] db_name&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Úloha:'''&lt;br /&gt;
Zmažte databázu ''projekty''.&lt;br /&gt;
&lt;br /&gt;
Riešenie:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
DROP {DATABASE | SCHEMA} [IF EXISTS] 'projekty' &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
===Mazanie ostatných objektov===&lt;br /&gt;
&lt;br /&gt;
'''Mazanie pohľadu:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
DROP VIEW `rozdelenie_projektov`&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Mazanie uloženej procedúry:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
DROP VIEW 'PROCEDURE zvysKV'&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Mazanie triggera:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Zdroje a odkazy==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lusing</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=SQL_-_DDL&amp;diff=8595</id>
		<title>SQL - DDL</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=SQL_-_DDL&amp;diff=8595"/>
		<updated>2010-12-27T16:19:25Z</updated>

		<summary type="html">&lt;p&gt;Lusing: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Skripta_dbs}}&lt;br /&gt;
{{Draft}}&lt;br /&gt;
DDL (Data Definition Language) - jazyk pre dátových štruktúr. V databázových systémoch predstavuje podskupinu jazyka SQL pre vytváranie a modifikáciu databázových objektov.&lt;br /&gt;
==Prípadová štúdia - evidencia projektov==&lt;br /&gt;
V tejto kapitole bude opísaný postup pri vytváraní novej databázy, nových tabuliek. Následne sa vytvorené tabuľky pokúsime zmodifikovať (pridanie atribútov, zmena názvu atribútov...) a na koniec zmažeme všetky tabuľky aj databázu.&lt;br /&gt;
&lt;br /&gt;
Pre túto kapitolu si zoberme príklad evidencie projektov a ich rozpočtu. V našom príklade indentifikujeme 2 základné entity: projekt a rozpočet na projekt. Atribúty týchto entít:&lt;br /&gt;
*'''projekt'''&lt;br /&gt;
**id projektu (id) - primárny kľúč&lt;br /&gt;
**názov projektu (nazov) - reťazec&lt;br /&gt;
**typ projektu (typ_projektu) - vymenovaný typ:  IP, ESF, STREP, CRAFT, CRP &amp;lt;ref&amp;gt;Typy projekov - http://www.bic.sk/projects.php?id=32&amp;amp;tid=24&amp;lt;/ref&amp;gt;&lt;br /&gt;
**začiatok riešenia projektu (zaciatok) - dátum&lt;br /&gt;
**koniec riešenia projektu (koniec) - dátum&lt;br /&gt;
**obsah riešenia projektu (obsah) - text&lt;br /&gt;
&lt;br /&gt;
Keďže v projektoch sa robí na každý rok iný rozpočet, v tabuľke rozpočet bude predstavovať jeden záznam rozpočet pre daný projekt na jeden rok. Ak by sa projekt riešil 5 rokov, v tabuľke rozpočet bude pre tento projekt 5 záznamov.&lt;br /&gt;
*'''rozpočet'''&lt;br /&gt;
**id projektu, pre ktorý je tento rozpočet (projekt_id) - primárny kľúč&lt;br /&gt;
**rok riešenia projektu (projekt_rok) - primárny kľúč&lt;br /&gt;
**bežné výdavky (bezne) - celé číslo &lt;br /&gt;
**kapitálové výdavky (kapitalove) - celé číslo&lt;br /&gt;
&lt;br /&gt;
==CREATE==&lt;br /&gt;
===CREATE DATABASE&amp;lt;ref&amp;gt;Create database (mysql) http://dev.mysql.com/doc/refman/5.5/en/create-database.html&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name&lt;br /&gt;
    [create_specification] ...&lt;br /&gt;
&lt;br /&gt;
create_specification:&lt;br /&gt;
    [DEFAULT] CHARACTER SET [=] charset_name&lt;br /&gt;
  | [DEFAULT] COLLATE [=] collation_name&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tu bude popis nasledujúcich parametrov:&lt;br /&gt;
*IF NOT EXISTS - príkaz neprevedie žiadnu akciu&lt;br /&gt;
*db_name - názov databázy&lt;br /&gt;
*CHARACTER SET - Ak by ste nepoužili príkaz SET CHARACTER SET utf8, databáza by sa snažila vkladané textové reťazce ešte raz konvertovať do UTF-8. Vzniklo by tzv. &amp;quot;dvojité&amp;quot; kódovanie&lt;br /&gt;
*COLLATE  - usporiadanie reťazcov&lt;br /&gt;
&lt;br /&gt;
'''Príklad:'''&lt;br /&gt;
&lt;br /&gt;
Vytvorte databázu ''projekty''. Znakovú sadu pre celú databázu nastavte utf-8.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
   CREATE DATABASE Projekty CHARACTER SET utf8&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===CREATE TABLE&amp;lt;ref&amp;gt;Create tabel (mysql) http://dev.mysql.com/doc/refman/5.5/en/create-table.html&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name&lt;br /&gt;
    (create_definition,...)&lt;br /&gt;
    [table_options]&lt;br /&gt;
    [partition_options]&lt;br /&gt;
&lt;br /&gt;
create_definition:&lt;br /&gt;
    col_name column_definition&lt;br /&gt;
  | [CONSTRAINT [symbol]] PRIMARY KEY [index_type] (index_col_name,...)&lt;br /&gt;
      [index_option] ...&lt;br /&gt;
  | {INDEX|KEY} [index_name] [index_type] (index_col_name,...)&lt;br /&gt;
      [index_option] ...&lt;br /&gt;
&lt;br /&gt;
column_definition:&lt;br /&gt;
    data_type [NOT NULL | NULL] [DEFAULT default_value]&lt;br /&gt;
      [AUTO_INCREMENT] [UNIQUE [KEY] | [PRIMARY] KEY]&lt;br /&gt;
      [COMMENT 'string']&lt;br /&gt;
&lt;br /&gt;
data_type:&lt;br /&gt;
    pozri &amp;quot;Dátové typy&amp;quot;&lt;br /&gt;
&lt;br /&gt;
index_type:&lt;br /&gt;
    USING {BTREE | HASH}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
kde pri definícii tabuľky:&lt;br /&gt;
*TEMPORARY - ten označuje, že sa má vykonať následujúca operacia, ale že se bude jednať len o dočasný príkaz&lt;br /&gt;
*IF NOT EXISTS - príkaz neprevedie žiadnu akciu&lt;br /&gt;
*tbl_name - názov tabuľky&lt;br /&gt;
pri definícii štruktúry tabuľky(create_definition):&lt;br /&gt;
*CONSTRAINT - jedná sa v podstate o obmedzené pomenovanie&lt;br /&gt;
*PRIMARY KEY - primarny kľúč&lt;br /&gt;
*INDEX - spracujú vždy všetky vety v databáze&lt;br /&gt;
*KEY - kľúč&lt;br /&gt;
pri definícii konkrétneho typu (column_definition):&lt;br /&gt;
*NOT NULL - hodnota bez nuly&lt;br /&gt;
*NULL - nula&lt;br /&gt;
*DEFAULT - je príkaz ktorý nám vraví čo sa má stať&lt;br /&gt;
*AUTO_INCREMENT - pomáha vygenerovať hodnotu&lt;br /&gt;
*UNIQUE - bude vytvorený unikátný index z hodnôt tochto slpca, hodnota NULL je z indexu vylúčena &lt;br /&gt;
*PRIMARY - primárny kľúč&lt;br /&gt;
*COMMENT - Poznamka autora k vysvetleniu čo daný skript robí&lt;br /&gt;
Pri definícii typu indexu (index_type):&lt;br /&gt;
*BTREE - Je špecifický tím, že má rád n a limity na maximálne (n), i minimálne (\left \lceil \frac{n}{2} \right \rceil) počet potomkov vrcholu.&lt;br /&gt;
*HASH - Pre každý príkaz vyhľadá a zapametá polohu v ceste pre hľadanie príkazu.&lt;br /&gt;
&lt;br /&gt;
'''Úloha:'''&lt;br /&gt;
&lt;br /&gt;
Podľa prípadovej štúdie (evidencia projektov) vytvorte tabuľky ''projekt'' a ''rozpocet''. Typy jednotlivých atribútov sú opísané taktiež v tejto prípadovej štúdii na začiatku tejto kapitoly.&lt;br /&gt;
&lt;br /&gt;
Riešenie:&lt;br /&gt;
&lt;br /&gt;
Tabuľka ''projekt'':&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE TABLE `projekty`.`Projekt` (&lt;br /&gt;
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,&lt;br /&gt;
`nazov` VARCHAR( 64 ) NOT NULL ,&lt;br /&gt;
`typ_projektu` ENUM( 'IP', 'ESF', 'STREP', 'CRAFT', 'CRP' ) NOT NULL ,&lt;br /&gt;
`zaciatok` DATE NOT NULL ,&lt;br /&gt;
`koniec` DATE NOT NULL ,&lt;br /&gt;
`obsah` TEXT NOT NULL&lt;br /&gt;
) ENGINE = InnoDB;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tabuľka ''rozpocet'':&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE TABLE `projekty`.`rozpocet` (&lt;br /&gt;
`projekt_id` INT NOT NULL ,&lt;br /&gt;
`projekt_rok` INT NOT NULL ,&lt;br /&gt;
`bezne` REAL NOT NULL ,&lt;br /&gt;
`kapitalove` REAL NOT NULL ,&lt;br /&gt;
PRIMARY KEY ( `projekt_id` , `projekt_rok` ) &lt;br /&gt;
) ENGINE = InnoDB;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===CREATE VIEW===&lt;br /&gt;
Príkazom CREATE VIEW&amp;lt;ref&amp;gt;create view (mysql) http://dev.mysql.com/doc/refman/5.5/en/create-view.html&amp;lt;/ref&amp;gt; môžeme vytvoriť pohľad. Pohľadom sa venuje samostatná [[SQL - pohľady|kapitola]]. Syntax príkazu CREATE VIEW je nasledovná&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE&lt;br /&gt;
    [OR REPLACE]&lt;br /&gt;
    [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]&lt;br /&gt;
    [DEFINER = { user | CURRENT_USER }]&lt;br /&gt;
    [SQL SECURITY { DEFINER | INVOKER }]&lt;br /&gt;
    VIEW view_name [(column_list)]&lt;br /&gt;
    AS select_statement&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
kde:&lt;br /&gt;
*OR REPLACE - Funkcia nahradí všetky výskytnuté určené reťazce ako hľadaný reťazec s náhradným reťazcom.&lt;br /&gt;
*ALGORITHM - používa sa na dolovanie dát.&lt;br /&gt;
*DEFINER - môže v rámci konštantného výrazu použiť skôr definovanú symbolickú konštantu&lt;br /&gt;
*SQL SECURUTY - vytvorí na databázovom serveri uloženú procedúru&lt;br /&gt;
*select_statement - definuje a vytvára nemenovanú tabuľku výsledkov.&lt;br /&gt;
&lt;br /&gt;
'''Príklad:'''&lt;br /&gt;
&lt;br /&gt;
Vytvorte pohľad na základe dotazu: Koľko je v databáze projektov, rozdelených podľa typov projektov. Nezaujíma nás teda celkový počet projektov ale počet projektov podľa typu projektu.&lt;br /&gt;
&lt;br /&gt;
Riešenie:&lt;br /&gt;
SQL dotaz, pomocou ktorého dosiahneme požadovaný výsledok&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE ALGORITHM = UNDEFINED VIEW `clenenie_projektov` AS SELECT * &lt;br /&gt;
FROM `projekt` &lt;br /&gt;
ORDER BY `projekt`.`typ_projektu` ASC &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vytvorenie pohľadu ''rodelenie_projektov''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE ALGORITHM = UNDEFINED VIEW `Rozdelenie_projektov` AS SELECT id, typ_projektu&lt;br /&gt;
FROM `projekt` &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===CREATE PROCEDURE===&lt;br /&gt;
Príkaz CREATE PROCEDURE&amp;lt;ref&amp;gt;CREATE PROCEDURE (mysql) http://dev.mysql.com/doc/refman/5.5/en/create-procedure.html&amp;lt;/ref&amp;gt; vytvorí na databázovom serveri uloženú procedúru. Podrobnejšie o uložených procedúrach hovorí kapitola [[SQL - uložené procedúry]]. Syntax je nasledujúca:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE&lt;br /&gt;
    [DEFINER = { user | CURRENT_USER }]&lt;br /&gt;
    PROCEDURE sp_name ([proc_parameter[,...]])&lt;br /&gt;
    routine_body&lt;br /&gt;
&lt;br /&gt;
proc_parameter:&lt;br /&gt;
    [ IN | OUT | INOUT ] param_name type&lt;br /&gt;
&lt;br /&gt;
type:&lt;br /&gt;
    Ľubovoľný dátový SQL typ.&lt;br /&gt;
&lt;br /&gt;
routine_body:&lt;br /&gt;
    SQL príkaz&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
kde:&lt;br /&gt;
*DEFINER - nastavuje užívateľskú premennú alebo zobrazí jej hodnotu&lt;br /&gt;
*sp_name - názov procedúry&lt;br /&gt;
*proc_parameter - procedúra parametrov&lt;br /&gt;
**IN - operátor umožňuje zadať viac hodnôt v klauzule WHERE.&lt;br /&gt;
**OUT - je odovzdaný na riadenie, ale môže byť menený a odlišný od zmeneného stavu, kedy konanie skončí.&lt;br /&gt;
**INOUT - premenná je odovzdaná do riadenia alebo funkcie, a to môže byť používaná v zmenenom bloku.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Úloha:'''&lt;br /&gt;
Vytvorte uloženú ktorá v tabuľke rozpočet zvýši určitému projektu (jeho ID bude vstupný parameter procedúry) bežné a kapitálové výdavky 1.1x.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Riešenie:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE PROCEDURE zvysKV(.....&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ukážka použitia uloženej procedúry&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
   CALL zvysKV(1)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===CREATE TRIGGER===&lt;br /&gt;
Príkaz CREATE TRIGGER&amp;lt;ref&amp;gt;CREATE TRIGGER (mysql) http://dev.mysql.com/doc/refman/5.5/en/create-trigger.html&amp;lt;/ref&amp;gt; vytvorí v databáze trigger (spúšťač, resp. automaticky spúšťanú procedúru). Jeho syntax je nasledovná:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE&lt;br /&gt;
    [DEFINER = { user | CURRENT_USER }]&lt;br /&gt;
    TRIGGER trigger_name trigger_time trigger_event&lt;br /&gt;
    ON tbl_name FOR EACH ROW trigger_body&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
kde:&lt;br /&gt;
*DEFINER - nastavuje užívateľskú premennú alebo zobrazí jej hodnotu&lt;br /&gt;
*trigger_name - názov triggeru&lt;br /&gt;
*trigger_time - čas triggeru&lt;br /&gt;
*trigger_event - akcia triggeru&lt;br /&gt;
*FOR EACH ROW - táto klauzula hovorí, či sa trigger má vykonať zvlášť pre každý riadok, alebo iba raz&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Úloha:'''&lt;br /&gt;
Vytvorte trigger, ktorý sa bude spúšťať pred modifikáciou záznamu v tabuľke rozpočet. Tento trigger nedovolí urobiť zmenu rozpočtu aktuálneho projektu mimo obdobia riešenia projektu. Teda ak je projekt naplánovaný od roku 2010 do 2012, tak ak sa niekto pokúsi urobiť zmenu mimo tohoto obdobia, tento trigger mu to nedovolí.&lt;br /&gt;
&lt;br /&gt;
Riešenie:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
...riešnie&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==ALTER==&lt;br /&gt;
Príkaz ALTER slúži na modifikovanie štruktúry databázových objektov.&lt;br /&gt;
===ALTER DATABASE===&lt;br /&gt;
Príkaz ALTER DATABASE&amp;lt;ref&amp;gt;ALTER DATABASE (mysql) http://dev.mysql.com/doc/refman/5.5/en/alter-database.html&amp;lt;/ref&amp;gt;dovoľuje zmeniť vlastnosti databázy ako napríklad meno, znakovú sadu, zotriedenie. Syntax je nasledujúca:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
ALTER {DATABASE | SCHEMA} [db_name]&lt;br /&gt;
    alter_specification ...&lt;br /&gt;
ALTER {DATABASE | SCHEMA} db_name&lt;br /&gt;
    UPGRADE DATA DIRECTORY NAME&lt;br /&gt;
&lt;br /&gt;
alter_specification:&lt;br /&gt;
    [DEFAULT] CHARACTER SET [=] charset_name&lt;br /&gt;
  | [DEFAULT] COLLATE [=] collation_name&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
kde:&lt;br /&gt;
*alter_specification - &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Úloha:'''&lt;br /&gt;
Zmeňte znakovú sadu databázy projekty na utf8-slovak-ci.&lt;br /&gt;
&lt;br /&gt;
Riešenie:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
...riešenie&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===ALTER TABLE===&lt;br /&gt;
Príkaz ALTER TABLE&amp;lt;ref&amp;gt;ALTER TABLE(mysql) http://dev.mysql.com/doc/refman/5.5/en/alter-table.html&amp;lt;/ref&amp;gt;dovoľuje zmeniť vlastnosti tabuľky ako napríklad meno, dátový typ, znakovú sadu, zotriedenie. Syntax je nasledujúca:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
ALTER [IGNORE] TABLE tbl_name alter_spec [, alter_spec ...] &lt;br /&gt;
&lt;br /&gt;
alter_specification: &lt;br /&gt;
    ADD [COLUMN] create_definition [FIRST | AFTER column_name ] &lt;br /&gt;
| ADD [COLUMN] (create_definition, create_definition,...) &lt;br /&gt;
| ADD INDEX [index_name] (index_col_name,...) &lt;br /&gt;
| ADD PRIMARY KEY (index_col_name,...) &lt;br /&gt;
| ADD UNIQUE [index_name] (index_col_name,...) &lt;br /&gt;
| ADD FULLTEXT [index_name] (index_col_name,...) &lt;br /&gt;
| ALTER [COLUMN] col_name {SET DEFAULT literal | DROP DEFAULT} &lt;br /&gt;
| CHANGE [COLUMN] old_col_name create_definition &lt;br /&gt;
| MODIFY [COLUMN] create_definition &lt;br /&gt;
| DROP [COLUMN] col_name &lt;br /&gt;
| DROP PRIMARY KEY &lt;br /&gt;
| DROP INDEX index_name &lt;br /&gt;
| RENAME [TO] new_tbl_name &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
kde:&lt;br /&gt;
*IGNORE - ignorovať &lt;br /&gt;
*FIRST, AFTER - keď všetky operácie uvedené v spustení príkazu SQL sa úspešne implementovali.&lt;br /&gt;
*ADD - pridávanie dát&lt;br /&gt;
*ALTER - zmeniť&lt;br /&gt;
*CHANGE - príkaz možno použiť pre zmenu detailu alebo stĺpca v MySQL&lt;br /&gt;
*MODIFY - používa sa ak chcete zmeniť veľkosť stĺpca&lt;br /&gt;
*DROP - slúži na odstranienie niečoho v tabulke, napr: DROP INDEX slúži na odstránenie indexu v tabuľke.&lt;br /&gt;
*RENAME - zmena mena&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Úloha:'''&lt;br /&gt;
Zmente názov atribútu ''zaciatok'' na ''zaciatok_riesenia'' a názov atribútu ''koniec'' na ''koniec_riesenia''.&lt;br /&gt;
&lt;br /&gt;
Riešenie:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
   ALTER TABLE `projekt` CHANGE `zaciatok` `zaciatok_riesenia` DATE NOT NULL&lt;br /&gt;
   ALTER TABLE `projekt` CHANGE `koniec` `koniec_riesenia` DATE NOT NULL  &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==DROP==&lt;br /&gt;
Pomocou príkazu DROP sa mažú databázové objekty. Príkaz DROP môžeme použiť na mazanie&lt;br /&gt;
*databáz - DROP DATABASE&lt;br /&gt;
*tabuliek - DROP TABLE&lt;br /&gt;
*procedúr - DROP PROCEDURE&lt;br /&gt;
*triggerov - DROP TRIGGER&lt;br /&gt;
*pohľadov - DROP VIEW&lt;br /&gt;
===DROP TABLE===&lt;br /&gt;
Zmazanie tabuľky sa realizuje pomocou príkazu DROP TABLE&amp;lt;ref&amp;gt;Drop table (mysql) http://dev.mysql.com/doc/refman/5.5/en/drop-table.html&amp;lt;/ref&amp;gt;. Syntax je nasledujúca:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
DROP [TEMPORARY] TABLE [IF EXISTS]&lt;br /&gt;
    tbl_name [, tbl_name] ...&lt;br /&gt;
    [RESTRICT | CASCADE]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
kde:&lt;br /&gt;
*tbl_name - názov tabuľky, ktorú ideme mazať.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Úloha:'''&lt;br /&gt;
Zmažte všetky tabuľky na databáze ''projekty''.&lt;br /&gt;
&lt;br /&gt;
Riešenie:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
DROP [TEMPORARY] TABLE 'projekt' AND 'rozpocet'&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===DROP DATABASE===&lt;br /&gt;
Zmazanie databázy sa realizuje pomocou príkazu DROP DATABASE&amp;lt;ref&amp;gt;Drop database (mysql) http://dev.mysql.com/doc/refman/5.5/en/drop-database.html&amp;lt;/ref&amp;gt;. Syntax je nasledujúca:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
   DROP {DATABASE | SCHEMA} [IF EXISTS] db_name&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Úloha:'''&lt;br /&gt;
Zmažte databázu ''projekty''.&lt;br /&gt;
&lt;br /&gt;
Riešenie:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
DROP {DATABASE | SCHEMA} [IF EXISTS] 'projekty' &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
===Mazanie ostatných objektov===&lt;br /&gt;
&lt;br /&gt;
'''Mazanie pohľadu:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
DROP VIEW `rozdelenie_projektov`&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Mazanie uloženej procedúry:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
DROP VIEW 'PROCEDURE zvysKV'&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Mazanie triggera:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Zdroje a odkazy==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lusing</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=SQL_-_DDL&amp;diff=8594</id>
		<title>SQL - DDL</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=SQL_-_DDL&amp;diff=8594"/>
		<updated>2010-12-27T16:07:12Z</updated>

		<summary type="html">&lt;p&gt;Lusing: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Skripta_dbs}}&lt;br /&gt;
{{Draft}}&lt;br /&gt;
DDL (Data Definition Language) - jazyk pre dátových štruktúr. V databázových systémoch predstavuje podskupinu jazyka SQL pre vytváranie a modifikáciu databázových objektov.&lt;br /&gt;
==Prípadová štúdia - evidencia projektov==&lt;br /&gt;
V tejto kapitole bude opísaný postup pri vytváraní novej databázy, nových tabuliek. Následne sa vytvorené tabuľky pokúsime zmodifikovať (pridanie atribútov, zmena názvu atribútov...) a na koniec zmažeme všetky tabuľky aj databázu.&lt;br /&gt;
&lt;br /&gt;
Pre túto kapitolu si zoberme príklad evidencie projektov a ich rozpočtu. V našom príklade indentifikujeme 2 základné entity: projekt a rozpočet na projekt. Atribúty týchto entít:&lt;br /&gt;
*'''projekt'''&lt;br /&gt;
**id projektu (id) - primárny kľúč&lt;br /&gt;
**názov projektu (nazov) - reťazec&lt;br /&gt;
**typ projektu (typ_projektu) - vymenovaný typ:  IP, ESF, STREP, CRAFT, CRP &amp;lt;ref&amp;gt;Typy projekov - http://www.bic.sk/projects.php?id=32&amp;amp;tid=24&amp;lt;/ref&amp;gt;&lt;br /&gt;
**začiatok riešenia projektu (zaciatok) - dátum&lt;br /&gt;
**koniec riešenia projektu (koniec) - dátum&lt;br /&gt;
**obsah riešenia projektu (obsah) - text&lt;br /&gt;
&lt;br /&gt;
Keďže v projektoch sa robí na každý rok iný rozpočet, v tabuľke rozpočet bude predstavovať jeden záznam rozpočet pre daný projekt na jeden rok. Ak by sa projekt riešil 5 rokov, v tabuľke rozpočet bude pre tento projekt 5 záznamov.&lt;br /&gt;
*'''rozpočet'''&lt;br /&gt;
**id projektu, pre ktorý je tento rozpočet (projekt_id) - primárny kľúč&lt;br /&gt;
**rok riešenia projektu (projekt_rok) - primárny kľúč&lt;br /&gt;
**bežné výdavky (bezne) - celé číslo &lt;br /&gt;
**kapitálové výdavky (kapitalove) - celé číslo&lt;br /&gt;
&lt;br /&gt;
==CREATE==&lt;br /&gt;
===CREATE DATABASE&amp;lt;ref&amp;gt;Create database (mysql) http://dev.mysql.com/doc/refman/5.5/en/create-database.html&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name&lt;br /&gt;
    [create_specification] ...&lt;br /&gt;
&lt;br /&gt;
create_specification:&lt;br /&gt;
    [DEFAULT] CHARACTER SET [=] charset_name&lt;br /&gt;
  | [DEFAULT] COLLATE [=] collation_name&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tu bude popis nasledujúcich parametrov:&lt;br /&gt;
*IF NOT EXISTS - príkaz neprevedie žiadnu akciu&lt;br /&gt;
*db_name - názov databázy&lt;br /&gt;
*CHARACTER SET - Ak by ste nepoužili príkaz SET CHARACTER SET utf8, databáza by sa snažila vkladané textové reťazce ešte raz konvertovať do UTF-8. Vzniklo by tzv. &amp;quot;dvojité&amp;quot; kódovanie&lt;br /&gt;
*COLLATE  - usporiadanie reťazcov&lt;br /&gt;
&lt;br /&gt;
'''Príklad:'''&lt;br /&gt;
&lt;br /&gt;
Vytvorte databázu ''projekty''. Znakovú sadu pre celú databázu nastavte utf-8.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
   CREATE DATABASE Projekty CHARACTER SET utf8&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===CREATE TABLE&amp;lt;ref&amp;gt;Create tabel (mysql) http://dev.mysql.com/doc/refman/5.5/en/create-table.html&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name&lt;br /&gt;
    (create_definition,...)&lt;br /&gt;
    [table_options]&lt;br /&gt;
    [partition_options]&lt;br /&gt;
&lt;br /&gt;
create_definition:&lt;br /&gt;
    col_name column_definition&lt;br /&gt;
  | [CONSTRAINT [symbol]] PRIMARY KEY [index_type] (index_col_name,...)&lt;br /&gt;
      [index_option] ...&lt;br /&gt;
  | {INDEX|KEY} [index_name] [index_type] (index_col_name,...)&lt;br /&gt;
      [index_option] ...&lt;br /&gt;
&lt;br /&gt;
column_definition:&lt;br /&gt;
    data_type [NOT NULL | NULL] [DEFAULT default_value]&lt;br /&gt;
      [AUTO_INCREMENT] [UNIQUE [KEY] | [PRIMARY] KEY]&lt;br /&gt;
      [COMMENT 'string']&lt;br /&gt;
&lt;br /&gt;
data_type:&lt;br /&gt;
    pozri &amp;quot;Dátové typy&amp;quot;&lt;br /&gt;
&lt;br /&gt;
index_type:&lt;br /&gt;
    USING {BTREE | HASH}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
kde pri definícii tabuľky:&lt;br /&gt;
*TEMPORARY - ten označuje, že sa má vykonať následujúca operacia, ale že se bude jednať len o dočasný príkaz&lt;br /&gt;
*IF NOT EXISTS - príkaz neprevedie žiadnu akciu&lt;br /&gt;
*tbl_name - názov tabuľky&lt;br /&gt;
pri definícii štruktúry tabuľky(create_definition):&lt;br /&gt;
*CONSTRAINT - jedná sa v podstate o obmedzené pomenovanie&lt;br /&gt;
*PRIMARY KEY - primarny kľúč&lt;br /&gt;
*INDEX - spracujú vždy všetky vety v databáze&lt;br /&gt;
*KEY - kľúč&lt;br /&gt;
pri definícii konkrétneho typu (column_definition):&lt;br /&gt;
*NOT NULL - hodnota bez nuly&lt;br /&gt;
*NULL - nula&lt;br /&gt;
*DEFAULT - je príkaz ktorý nám vraví čo sa má stať&lt;br /&gt;
*AUTO_INCREMENT - pomáha vygenerovať hodnotu&lt;br /&gt;
*UNIQUE - bude vytvorený unikátný index z hodnôt tochto slpca, hodnota NULL je z indexu vylúčena &lt;br /&gt;
*PRIMARY - primárny kľúč&lt;br /&gt;
*COMMENT - Poznamka autora k vysvetleniu čo daný skript robí&lt;br /&gt;
Pri definícii typu indexu (index_type):&lt;br /&gt;
*BTREE - Je špecifický tím, že má rád n a limity na maximálne (n), i minimálne (\left \lceil \frac{n}{2} \right \rceil) počet potomkov vrcholu.&lt;br /&gt;
*HASH - Pre každý príkaz vyhľadá a zapametá polohu v ceste pre hľadanie príkazu.&lt;br /&gt;
&lt;br /&gt;
'''Úloha:'''&lt;br /&gt;
&lt;br /&gt;
Podľa prípadovej štúdie (evidencia projektov) vytvorte tabuľky ''projekt'' a ''rozpocet''. Typy jednotlivých atribútov sú opísané taktiež v tejto prípadovej štúdii na začiatku tejto kapitoly.&lt;br /&gt;
&lt;br /&gt;
Riešenie:&lt;br /&gt;
&lt;br /&gt;
Tabuľka ''projekt'':&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE TABLE `projekty`.`Projekt` (&lt;br /&gt;
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,&lt;br /&gt;
`nazov` VARCHAR( 64 ) NOT NULL ,&lt;br /&gt;
`typ_projektu` ENUM( 'IP', 'ESF', 'STREP', 'CRAFT', 'CRP' ) NOT NULL ,&lt;br /&gt;
`zaciatok` DATE NOT NULL ,&lt;br /&gt;
`koniec` DATE NOT NULL ,&lt;br /&gt;
`obsah` TEXT NOT NULL&lt;br /&gt;
) ENGINE = InnoDB;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tabuľka ''rozpocet'':&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE TABLE `projekty`.`rozpocet` (&lt;br /&gt;
`projekt_id` INT NOT NULL ,&lt;br /&gt;
`projekt_rok` INT NOT NULL ,&lt;br /&gt;
`bezne` REAL NOT NULL ,&lt;br /&gt;
`kapitalove` REAL NOT NULL ,&lt;br /&gt;
PRIMARY KEY ( `projekt_id` , `projekt_rok` ) &lt;br /&gt;
) ENGINE = InnoDB;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===CREATE VIEW===&lt;br /&gt;
Príkazom CREATE VIEW&amp;lt;ref&amp;gt;create view (mysql) http://dev.mysql.com/doc/refman/5.5/en/create-view.html&amp;lt;/ref&amp;gt; môžeme vytvoriť pohľad. Pohľadom sa venuje samostatná [[SQL - pohľady|kapitola]]. Syntax príkazu CREATE VIEW je nasledovná&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE&lt;br /&gt;
    [OR REPLACE]&lt;br /&gt;
    [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]&lt;br /&gt;
    [DEFINER = { user | CURRENT_USER }]&lt;br /&gt;
    [SQL SECURITY { DEFINER | INVOKER }]&lt;br /&gt;
    VIEW view_name [(column_list)]&lt;br /&gt;
    AS select_statement&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
kde:&lt;br /&gt;
*OR REPLACE - Funkcia nahradí všetky výskytnuté určené reťazce ako hľadaný reťazec s náhradným reťazcom.&lt;br /&gt;
*ALGORITHM - základy kryptografie&lt;br /&gt;
*DEFINER - môže v rámci konštantného výrazu použiť skôr definovanú symbolickú konštantu&lt;br /&gt;
*SQL SECURUTY - vytvorí na databázovom serveri uloženú procedúru&lt;br /&gt;
*select_statement - definuje a vytvára nemenovanú tabuľku výsledkov.&lt;br /&gt;
&lt;br /&gt;
'''Príklad:'''&lt;br /&gt;
&lt;br /&gt;
Vytvorte pohľad na základe dotazu: Koľko je v databáze projektov, rozdelených podľa typov projektov. Nezaujíma nás teda celkový počet projektov ale počet projektov podľa typu projektu.&lt;br /&gt;
&lt;br /&gt;
Riešenie:&lt;br /&gt;
SQL dotaz, pomocou ktorého dosiahneme požadovaný výsledok&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE ALGORITHM = UNDEFINED VIEW `clenenie_projektov` AS SELECT * &lt;br /&gt;
FROM `projekt` &lt;br /&gt;
ORDER BY `projekt`.`typ_projektu` ASC &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vytvorenie pohľadu ''rodelenie_projektov''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE ALGORITHM = UNDEFINED VIEW `Rozdelenie_projektov` AS SELECT id, typ_projektu&lt;br /&gt;
FROM `projekt` &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===CREATE PROCEDURE===&lt;br /&gt;
Príkaz CREATE PROCEDURE&amp;lt;ref&amp;gt;CREATE PROCEDURE (mysql) http://dev.mysql.com/doc/refman/5.5/en/create-procedure.html&amp;lt;/ref&amp;gt; vytvorí na databázovom serveri uloženú procedúru. Podrobnejšie o uložených procedúrach hovorí kapitola [[SQL - uložené procedúry]]. Syntax je nasledujúca:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE&lt;br /&gt;
    [DEFINER = { user | CURRENT_USER }]&lt;br /&gt;
    PROCEDURE sp_name ([proc_parameter[,...]])&lt;br /&gt;
    routine_body&lt;br /&gt;
&lt;br /&gt;
proc_parameter:&lt;br /&gt;
    [ IN | OUT | INOUT ] param_name type&lt;br /&gt;
&lt;br /&gt;
type:&lt;br /&gt;
    Ľubovoľný dátový SQL typ.&lt;br /&gt;
&lt;br /&gt;
routine_body:&lt;br /&gt;
    SQL príkaz&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
kde:&lt;br /&gt;
*DEFINER - nastavuje užívateľskú premennú alebo zobrazí jej hodnotu&lt;br /&gt;
*sp_name - názov procedúry&lt;br /&gt;
*proc_parameter - procedúra parametrov&lt;br /&gt;
**IN - operátor umožňuje zadať viac hodnôt v klauzule WHERE.&lt;br /&gt;
**OUT - je odovzdaný na riadenie, ale môže byť menený a odlišný od zmeneného stavu, kedy konanie skončí.&lt;br /&gt;
**INOUT - premenná je odovzdaná do riadenia alebo funkcie, a to môže byť používaná v zmenenom bloku.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Úloha:'''&lt;br /&gt;
Vytvorte uloženú ktorá v tabuľke rozpočet zvýši určitému projektu (jeho ID bude vstupný parameter procedúry) bežné a kapitálové výdavky 1.1x.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Riešenie:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE PROCEDURE zvysKV(.....&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ukážka použitia uloženej procedúry&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
   CALL zvysKV(1)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===CREATE TRIGGER===&lt;br /&gt;
Príkaz CREATE TRIGGER&amp;lt;ref&amp;gt;CREATE TRIGGER (mysql) http://dev.mysql.com/doc/refman/5.5/en/create-trigger.html&amp;lt;/ref&amp;gt; vytvorí v databáze trigger (spúšťač, resp. automaticky spúšťanú procedúru). Jeho syntax je nasledovná:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE&lt;br /&gt;
    [DEFINER = { user | CURRENT_USER }]&lt;br /&gt;
    TRIGGER trigger_name trigger_time trigger_event&lt;br /&gt;
    ON tbl_name FOR EACH ROW trigger_body&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
kde:&lt;br /&gt;
*DEFINER - nastavuje užívateľskú premennú alebo zobrazí jej hodnotu&lt;br /&gt;
*trigger_name - názov triggeru&lt;br /&gt;
*trigger_time - čas triggeru&lt;br /&gt;
*trigger_event - akcia triggeru&lt;br /&gt;
*FOR EACH ROW - táto klauzula hovorí, či sa trigger má vykonať zvlášť pre každý riadok, alebo iba raz&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Úloha:'''&lt;br /&gt;
Vytvorte trigger, ktorý sa bude spúšťať pred modifikáciou záznamu v tabuľke rozpočet. Tento trigger nedovolí urobiť zmenu rozpočtu aktuálneho projektu mimo obdobia riešenia projektu. Teda ak je projekt naplánovaný od roku 2010 do 2012, tak ak sa niekto pokúsi urobiť zmenu mimo tohoto obdobia, tento trigger mu to nedovolí.&lt;br /&gt;
&lt;br /&gt;
Riešenie:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
...riešnie&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==ALTER==&lt;br /&gt;
Príkaz ALTER slúži na modifikovanie štruktúry databázových objektov.&lt;br /&gt;
===ALTER DATABASE===&lt;br /&gt;
Príkaz ALTER DATABASE&amp;lt;ref&amp;gt;ALTER DATABASE (mysql) http://dev.mysql.com/doc/refman/5.5/en/alter-database.html&amp;lt;/ref&amp;gt;dovoľuje zmeniť vlastnosti databázy ako napríklad meno, znakovú sadu, zotriedenie. Syntax je nasledujúca:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
ALTER {DATABASE | SCHEMA} [db_name]&lt;br /&gt;
    alter_specification ...&lt;br /&gt;
ALTER {DATABASE | SCHEMA} db_name&lt;br /&gt;
    UPGRADE DATA DIRECTORY NAME&lt;br /&gt;
&lt;br /&gt;
alter_specification:&lt;br /&gt;
    [DEFAULT] CHARACTER SET [=] charset_name&lt;br /&gt;
  | [DEFAULT] COLLATE [=] collation_name&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
kde:&lt;br /&gt;
*alter_specification - &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Úloha:'''&lt;br /&gt;
Zmeňte znakovú sadu databázy projekty na utf8-slovak-ci.&lt;br /&gt;
&lt;br /&gt;
Riešenie:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
...riešenie&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===ALTER TABLE===&lt;br /&gt;
Príkaz ALTER TABLE&amp;lt;ref&amp;gt;ALTER TABLE(mysql) http://dev.mysql.com/doc/refman/5.5/en/alter-table.html&amp;lt;/ref&amp;gt;dovoľuje zmeniť vlastnosti tabuľky ako napríklad meno, dátový typ, znakovú sadu, zotriedenie. Syntax je nasledujúca:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
ALTER [IGNORE] TABLE tbl_name alter_spec [, alter_spec ...] &lt;br /&gt;
&lt;br /&gt;
alter_specification: &lt;br /&gt;
    ADD [COLUMN] create_definition [FIRST | AFTER column_name ] &lt;br /&gt;
| ADD [COLUMN] (create_definition, create_definition,...) &lt;br /&gt;
| ADD INDEX [index_name] (index_col_name,...) &lt;br /&gt;
| ADD PRIMARY KEY (index_col_name,...) &lt;br /&gt;
| ADD UNIQUE [index_name] (index_col_name,...) &lt;br /&gt;
| ADD FULLTEXT [index_name] (index_col_name,...) &lt;br /&gt;
| ALTER [COLUMN] col_name {SET DEFAULT literal | DROP DEFAULT} &lt;br /&gt;
| CHANGE [COLUMN] old_col_name create_definition &lt;br /&gt;
| MODIFY [COLUMN] create_definition &lt;br /&gt;
| DROP [COLUMN] col_name &lt;br /&gt;
| DROP PRIMARY KEY &lt;br /&gt;
| DROP INDEX index_name &lt;br /&gt;
| RENAME [TO] new_tbl_name &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
kde:&lt;br /&gt;
*IGNORE - ignorovať &lt;br /&gt;
*FIRST, AFTER - &lt;br /&gt;
*ADD - pridávanie dát&lt;br /&gt;
*ALTER - zmeniť&lt;br /&gt;
*CHANGE - &lt;br /&gt;
*MODIFY -&lt;br /&gt;
*DROP - Odeberie jeden alebo viac databáz alebo databazové snímky z instance SQL Server&lt;br /&gt;
*RENAME - zmena mena&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Úloha:'''&lt;br /&gt;
Zmente názov atribútu ''zaciatok'' na ''zaciatok_riesenia'' a názov atribútu ''koniec'' na ''koniec_riesenia''.&lt;br /&gt;
&lt;br /&gt;
Riešenie:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
   ALTER TABLE `projekt` CHANGE `zaciatok` `zaciatok_riesenia` DATE NOT NULL&lt;br /&gt;
   ALTER TABLE `projekt` CHANGE `koniec` `koniec_riesenia` DATE NOT NULL  &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==DROP==&lt;br /&gt;
Pomocou príkazu DROP sa mažú databázové objekty. Príkaz DROP môžeme použiť na mazanie&lt;br /&gt;
*databáz - DROP DATABASE&lt;br /&gt;
*tabuliek - DROP TABLE&lt;br /&gt;
*procedúr - DROP PROCEDURE&lt;br /&gt;
*triggerov - DROP TRIGGER&lt;br /&gt;
*pohľadov - DROP VIEW&lt;br /&gt;
===DROP TABLE===&lt;br /&gt;
Zmazanie tabuľky sa realizuje pomocou príkazu DROP TABLE&amp;lt;ref&amp;gt;Drop table (mysql) http://dev.mysql.com/doc/refman/5.5/en/drop-table.html&amp;lt;/ref&amp;gt;. Syntax je nasledujúca:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
DROP [TEMPORARY] TABLE [IF EXISTS]&lt;br /&gt;
    tbl_name [, tbl_name] ...&lt;br /&gt;
    [RESTRICT | CASCADE]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
kde:&lt;br /&gt;
*tbl_name - názov tabuľky, ktorú ideme mazať.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Úloha:'''&lt;br /&gt;
Zmažte všetky tabuľky na databáze ''projekty''.&lt;br /&gt;
&lt;br /&gt;
Riešenie:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
DROP [TEMPORARY] TABLE 'projekt' AND 'rozpocet'&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===DROP DATABASE===&lt;br /&gt;
Zmazanie databázy sa realizuje pomocou príkazu DROP DATABASE&amp;lt;ref&amp;gt;Drop database (mysql) http://dev.mysql.com/doc/refman/5.5/en/drop-database.html&amp;lt;/ref&amp;gt;. Syntax je nasledujúca:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
   DROP {DATABASE | SCHEMA} [IF EXISTS] db_name&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Úloha:'''&lt;br /&gt;
Zmažte databázu ''projekty''.&lt;br /&gt;
&lt;br /&gt;
Riešenie:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
DROP {DATABASE | SCHEMA} [IF EXISTS] 'projekty' &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
===Mazanie ostatných objektov===&lt;br /&gt;
&lt;br /&gt;
'''Mazanie pohľadu:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
DROP VIEW `rozdelenie_projektov`&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Mazanie uloženej procedúry:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
DROP VIEW 'PROCEDURE zvysKV'&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Mazanie triggera:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Zdroje a odkazy==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lusing</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=SQL_-_DDL&amp;diff=8593</id>
		<title>SQL - DDL</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=SQL_-_DDL&amp;diff=8593"/>
		<updated>2010-12-27T15:49:46Z</updated>

		<summary type="html">&lt;p&gt;Lusing: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Skripta_dbs}}&lt;br /&gt;
{{Draft}}&lt;br /&gt;
DDL (Data Definition Language) - jazyk pre dátových štruktúr. V databázových systémoch predstavuje podskupinu jazyka SQL pre vytváranie a modifikáciu databázových objektov.&lt;br /&gt;
==Prípadová štúdia - evidencia projektov==&lt;br /&gt;
V tejto kapitole bude opísaný postup pri vytváraní novej databázy, nových tabuliek. Následne sa vytvorené tabuľky pokúsime zmodifikovať (pridanie atribútov, zmena názvu atribútov...) a na koniec zmažeme všetky tabuľky aj databázu.&lt;br /&gt;
&lt;br /&gt;
Pre túto kapitolu si zoberme príklad evidencie projektov a ich rozpočtu. V našom príklade indentifikujeme 2 základné entity: projekt a rozpočet na projekt. Atribúty týchto entít:&lt;br /&gt;
*'''projekt'''&lt;br /&gt;
**id projektu (id) - primárny kľúč&lt;br /&gt;
**názov projektu (nazov) - reťazec&lt;br /&gt;
**typ projektu (typ_projektu) - vymenovaný typ:  IP, ESF, STREP, CRAFT, CRP &amp;lt;ref&amp;gt;Typy projekov - http://www.bic.sk/projects.php?id=32&amp;amp;tid=24&amp;lt;/ref&amp;gt;&lt;br /&gt;
**začiatok riešenia projektu (zaciatok) - dátum&lt;br /&gt;
**koniec riešenia projektu (koniec) - dátum&lt;br /&gt;
**obsah riešenia projektu (obsah) - text&lt;br /&gt;
&lt;br /&gt;
Keďže v projektoch sa robí na každý rok iný rozpočet, v tabuľke rozpočet bude predstavovať jeden záznam rozpočet pre daný projekt na jeden rok. Ak by sa projekt riešil 5 rokov, v tabuľke rozpočet bude pre tento projekt 5 záznamov.&lt;br /&gt;
*'''rozpočet'''&lt;br /&gt;
**id projektu, pre ktorý je tento rozpočet (projekt_id) - primárny kľúč&lt;br /&gt;
**rok riešenia projektu (projekt_rok) - primárny kľúč&lt;br /&gt;
**bežné výdavky (bezne) - celé číslo &lt;br /&gt;
**kapitálové výdavky (kapitalove) - celé číslo&lt;br /&gt;
&lt;br /&gt;
==CREATE==&lt;br /&gt;
===CREATE DATABASE&amp;lt;ref&amp;gt;Create database (mysql) http://dev.mysql.com/doc/refman/5.5/en/create-database.html&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name&lt;br /&gt;
    [create_specification] ...&lt;br /&gt;
&lt;br /&gt;
create_specification:&lt;br /&gt;
    [DEFAULT] CHARACTER SET [=] charset_name&lt;br /&gt;
  | [DEFAULT] COLLATE [=] collation_name&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tu bude popis nasledujúcich parametrov:&lt;br /&gt;
*IF NOT EXISTS - príkaz neprevedie žiadnu akciu&lt;br /&gt;
*db_name - názov databázy&lt;br /&gt;
*CHARACTER SET - Ak by ste nepoužili príkaz SET CHARACTER SET utf8, databáza by sa snažila vkladané textové reťazce ešte raz konvertovať do UTF-8. Vzniklo by tzv. &amp;quot;dvojité&amp;quot; kódovanie&lt;br /&gt;
*COLLATE  - usporiadanie reťazcov&lt;br /&gt;
&lt;br /&gt;
'''Príklad:'''&lt;br /&gt;
&lt;br /&gt;
Vytvorte databázu ''projekty''. Znakovú sadu pre celú databázu nastavte utf-8.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
   CREATE DATABASE Projekty CHARACTER SET utf8&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===CREATE TABLE&amp;lt;ref&amp;gt;Create tabel (mysql) http://dev.mysql.com/doc/refman/5.5/en/create-table.html&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name&lt;br /&gt;
    (create_definition,...)&lt;br /&gt;
    [table_options]&lt;br /&gt;
    [partition_options]&lt;br /&gt;
&lt;br /&gt;
create_definition:&lt;br /&gt;
    col_name column_definition&lt;br /&gt;
  | [CONSTRAINT [symbol]] PRIMARY KEY [index_type] (index_col_name,...)&lt;br /&gt;
      [index_option] ...&lt;br /&gt;
  | {INDEX|KEY} [index_name] [index_type] (index_col_name,...)&lt;br /&gt;
      [index_option] ...&lt;br /&gt;
&lt;br /&gt;
column_definition:&lt;br /&gt;
    data_type [NOT NULL | NULL] [DEFAULT default_value]&lt;br /&gt;
      [AUTO_INCREMENT] [UNIQUE [KEY] | [PRIMARY] KEY]&lt;br /&gt;
      [COMMENT 'string']&lt;br /&gt;
&lt;br /&gt;
data_type:&lt;br /&gt;
    pozri &amp;quot;Dátové typy&amp;quot;&lt;br /&gt;
&lt;br /&gt;
index_type:&lt;br /&gt;
    USING {BTREE | HASH}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
kde pri definícii tabuľky:&lt;br /&gt;
*TEMPORARY - ten označuje, že sa má vykonať následujúca operacia, ale že se bude jednať len o dočasný príkaz&lt;br /&gt;
*IF NOT EXISTS - príkaz neprevedie žiadnu akciu&lt;br /&gt;
*tbl_name - názov tabuľky&lt;br /&gt;
pri definícii štruktúry tabuľky(create_definition):&lt;br /&gt;
*CONSTRAINT - jedná sa v podstate o obmedzené pomenovanie&lt;br /&gt;
*PRIMARY KEY - primarny kľúč&lt;br /&gt;
*INDEX - spracujú vždy všetky vety v databáze&lt;br /&gt;
*KEY - kľúč&lt;br /&gt;
pri definícii konkrétneho typu (column_definition):&lt;br /&gt;
*NOT NULL - hodnota bez nuly&lt;br /&gt;
*NULL - nula&lt;br /&gt;
*DEFAULT - je príkaz ktorý nám vraví čo sa má stať&lt;br /&gt;
*AUTO_INCREMENT - pomáha vygenerovať hodnotu&lt;br /&gt;
*UNIQUE - bude vytvorený unikátný index z hodnôt tochto slpca, hodnota NULL je z indexu vylúčena &lt;br /&gt;
*PRIMARY - primárny kľúč&lt;br /&gt;
*COMMENT - Poznamka autora k vysvetleniu čo daný skript robí&lt;br /&gt;
Pri definícii typu indexu (index_type):&lt;br /&gt;
*BTREE - Je špecifický tím, že má rád n a limity na maximálne (n), i minimálne (\left \lceil \frac{n}{2} \right \rceil) počet potomkov vrcholu.&lt;br /&gt;
*HASH - Pre každý príkaz vyhľadá a zapametá polohu v ceste pre hľadanie príkazu.&lt;br /&gt;
&lt;br /&gt;
'''Úloha:'''&lt;br /&gt;
&lt;br /&gt;
Podľa prípadovej štúdie (evidencia projektov) vytvorte tabuľky ''projekt'' a ''rozpocet''. Typy jednotlivých atribútov sú opísané taktiež v tejto prípadovej štúdii na začiatku tejto kapitoly.&lt;br /&gt;
&lt;br /&gt;
Riešenie:&lt;br /&gt;
&lt;br /&gt;
Tabuľka ''projekt'':&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE TABLE `projekty`.`Projekt` (&lt;br /&gt;
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,&lt;br /&gt;
`nazov` VARCHAR( 64 ) NOT NULL ,&lt;br /&gt;
`typ_projektu` ENUM( 'IP', 'ESF', 'STREP', 'CRAFT', 'CRP' ) NOT NULL ,&lt;br /&gt;
`zaciatok` DATE NOT NULL ,&lt;br /&gt;
`koniec` DATE NOT NULL ,&lt;br /&gt;
`obsah` TEXT NOT NULL&lt;br /&gt;
) ENGINE = InnoDB;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tabuľka ''rozpocet'':&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE TABLE `projekty`.`rozpocet` (&lt;br /&gt;
`projekt_id` INT NOT NULL ,&lt;br /&gt;
`projekt_rok` INT NOT NULL ,&lt;br /&gt;
`bezne` REAL NOT NULL ,&lt;br /&gt;
`kapitalove` REAL NOT NULL ,&lt;br /&gt;
PRIMARY KEY ( `projekt_id` , `projekt_rok` ) &lt;br /&gt;
) ENGINE = InnoDB;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===CREATE VIEW===&lt;br /&gt;
Príkazom CREATE VIEW&amp;lt;ref&amp;gt;create view (mysql) http://dev.mysql.com/doc/refman/5.5/en/create-view.html&amp;lt;/ref&amp;gt; môžeme vytvoriť pohľad. Pohľadom sa venuje samostatná [[SQL - pohľady|kapitola]]. Syntax príkazu CREATE VIEW je nasledovná&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE&lt;br /&gt;
    [OR REPLACE]&lt;br /&gt;
    [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]&lt;br /&gt;
    [DEFINER = { user | CURRENT_USER }]&lt;br /&gt;
    [SQL SECURITY { DEFINER | INVOKER }]&lt;br /&gt;
    VIEW view_name [(column_list)]&lt;br /&gt;
    AS select_statement&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
kde:&lt;br /&gt;
*OR REPLACE - Funkcia nahradí všetky výskytnuté určené reťazce ako hľadaný reťazec s náhradným reťazcom.&lt;br /&gt;
*ALGORITHM - základy kryptografie&lt;br /&gt;
*DEFINER - môže v rámci konštantného výrazu použiť skôr definovanú symbolickú konštantu&lt;br /&gt;
*SQL SECURUTY - vytvorí na databázovom serveri uloženú procedúru&lt;br /&gt;
*select_statement - definuje a vytvára nemenovanú tabuľku výsledkov.&lt;br /&gt;
&lt;br /&gt;
'''Príklad:'''&lt;br /&gt;
&lt;br /&gt;
Vytvorte pohľad na základe dotazu: Koľko je v databáze projektov, rozdelených podľa typov projektov. Nezaujíma nás teda celkový počet projektov ale počet projektov podľa typu projektu.&lt;br /&gt;
&lt;br /&gt;
Riešenie:&lt;br /&gt;
SQL dotaz, pomocou ktorého dosiahneme požadovaný výsledok&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE ALGORITHM = UNDEFINED VIEW `clenenie_projektov` AS SELECT * &lt;br /&gt;
FROM `projekt` &lt;br /&gt;
ORDER BY `projekt`.`typ_projektu` ASC &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vytvorenie pohľadu ''rodelenie_projektov''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE ALGORITHM = UNDEFINED VIEW `Rozdelenie_projektov` AS SELECT id, typ_projektu&lt;br /&gt;
FROM `projekt` &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===CREATE PROCEDURE===&lt;br /&gt;
Príkaz CREATE PROCEDURE&amp;lt;ref&amp;gt;CREATE PROCEDURE (mysql) http://dev.mysql.com/doc/refman/5.5/en/create-procedure.html&amp;lt;/ref&amp;gt; vytvorí na databázovom serveri uloženú procedúru. Podrobnejšie o uložených procedúrach hovorí kapitola [[SQL - uložené procedúry]]. Syntax je nasledujúca:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE&lt;br /&gt;
    [DEFINER = { user | CURRENT_USER }]&lt;br /&gt;
    PROCEDURE sp_name ([proc_parameter[,...]])&lt;br /&gt;
    routine_body&lt;br /&gt;
&lt;br /&gt;
proc_parameter:&lt;br /&gt;
    [ IN | OUT | INOUT ] param_name type&lt;br /&gt;
&lt;br /&gt;
type:&lt;br /&gt;
    Ľubovoľný dátový SQL typ.&lt;br /&gt;
&lt;br /&gt;
routine_body:&lt;br /&gt;
    SQL príkaz&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
kde:&lt;br /&gt;
*DEFINER - nastavuje užívateľskú premennú alebo zobrazí jej hodnotu&lt;br /&gt;
*sp_name - názov procedúry&lt;br /&gt;
*proc_parameter - procedúra parametrov&lt;br /&gt;
**IN - V &lt;br /&gt;
**OUT - nesprávna procedúra &lt;br /&gt;
**INOUT - v nesprávnej procedúre&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Úloha:'''&lt;br /&gt;
Vytvorte uloženú ktorá v tabuľke rozpočet zvýši určitému projektu (jeho ID bude vstupný parameter procedúry) bežné a kapitálové výdavky 1.1x.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Riešenie:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE PROCEDURE zvysKV(.....&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ukážka použitia uloženej procedúry&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
   CALL zvysKV(1)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===CREATE TRIGGER===&lt;br /&gt;
Príkaz CREATE TRIGGER&amp;lt;ref&amp;gt;CREATE TRIGGER (mysql) http://dev.mysql.com/doc/refman/5.5/en/create-trigger.html&amp;lt;/ref&amp;gt; vytvorí v databáze trigger (spúšťač, resp. automaticky spúšťanú procedúru). Jeho syntax je nasledovná:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE&lt;br /&gt;
    [DEFINER = { user | CURRENT_USER }]&lt;br /&gt;
    TRIGGER trigger_name trigger_time trigger_event&lt;br /&gt;
    ON tbl_name FOR EACH ROW trigger_body&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
kde:&lt;br /&gt;
*DEFINER - nastavuje užívateľskú premennú alebo zobrazí jej hodnotu&lt;br /&gt;
*trigger_name - názov triggeru&lt;br /&gt;
*trigger_time - čas triggeru&lt;br /&gt;
*trigger_event - akcia triggeru&lt;br /&gt;
*FOR EACH ROW - táto klauzula hovorí, či sa trigger má vykonať zvlášť pre každý riadok, alebo iba raz&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Úloha:'''&lt;br /&gt;
Vytvorte trigger, ktorý sa bude spúšťať pred modifikáciou záznamu v tabuľke rozpočet. Tento trigger nedovolí urobiť zmenu rozpočtu aktuálneho projektu mimo obdobia riešenia projektu. Teda ak je projekt naplánovaný od roku 2010 do 2012, tak ak sa niekto pokúsi urobiť zmenu mimo tohoto obdobia, tento trigger mu to nedovolí.&lt;br /&gt;
&lt;br /&gt;
Riešenie:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
...riešnie&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==ALTER==&lt;br /&gt;
Príkaz ALTER slúži na modifikovanie štruktúry databázových objektov.&lt;br /&gt;
===ALTER DATABASE===&lt;br /&gt;
Príkaz ALTER DATABASE&amp;lt;ref&amp;gt;ALTER DATABASE (mysql) http://dev.mysql.com/doc/refman/5.5/en/alter-database.html&amp;lt;/ref&amp;gt;dovoľuje zmeniť vlastnosti databázy ako napríklad meno, znakovú sadu, zotriedenie. Syntax je nasledujúca:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
ALTER {DATABASE | SCHEMA} [db_name]&lt;br /&gt;
    alter_specification ...&lt;br /&gt;
ALTER {DATABASE | SCHEMA} db_name&lt;br /&gt;
    UPGRADE DATA DIRECTORY NAME&lt;br /&gt;
&lt;br /&gt;
alter_specification:&lt;br /&gt;
    [DEFAULT] CHARACTER SET [=] charset_name&lt;br /&gt;
  | [DEFAULT] COLLATE [=] collation_name&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
kde:&lt;br /&gt;
*alter_specification - &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Úloha:'''&lt;br /&gt;
Zmeňte znakovú sadu databázy projekty na utf8-slovak-ci.&lt;br /&gt;
&lt;br /&gt;
Riešenie:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
...riešenie&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===ALTER TABLE===&lt;br /&gt;
Príkaz ALTER TABLE&amp;lt;ref&amp;gt;ALTER TABLE(mysql) http://dev.mysql.com/doc/refman/5.5/en/alter-table.html&amp;lt;/ref&amp;gt;dovoľuje zmeniť vlastnosti tabuľky ako napríklad meno, dátový typ, znakovú sadu, zotriedenie. Syntax je nasledujúca:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
ALTER [IGNORE] TABLE tbl_name alter_spec [, alter_spec ...] &lt;br /&gt;
&lt;br /&gt;
alter_specification: &lt;br /&gt;
    ADD [COLUMN] create_definition [FIRST | AFTER column_name ] &lt;br /&gt;
| ADD [COLUMN] (create_definition, create_definition,...) &lt;br /&gt;
| ADD INDEX [index_name] (index_col_name,...) &lt;br /&gt;
| ADD PRIMARY KEY (index_col_name,...) &lt;br /&gt;
| ADD UNIQUE [index_name] (index_col_name,...) &lt;br /&gt;
| ADD FULLTEXT [index_name] (index_col_name,...) &lt;br /&gt;
| ALTER [COLUMN] col_name {SET DEFAULT literal | DROP DEFAULT} &lt;br /&gt;
| CHANGE [COLUMN] old_col_name create_definition &lt;br /&gt;
| MODIFY [COLUMN] create_definition &lt;br /&gt;
| DROP [COLUMN] col_name &lt;br /&gt;
| DROP PRIMARY KEY &lt;br /&gt;
| DROP INDEX index_name &lt;br /&gt;
| RENAME [TO] new_tbl_name &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
kde:&lt;br /&gt;
*IGNORE - ignorovať &lt;br /&gt;
*FIRST, AFTER - &lt;br /&gt;
*ADD - pridávanie dát&lt;br /&gt;
*ALTER - zmeniť&lt;br /&gt;
*CHANGE - &lt;br /&gt;
*MODIFY -&lt;br /&gt;
*DROP - Odeberie jeden alebo viac databáz alebo databazové snímky z instance SQL Server&lt;br /&gt;
*RENAME - zmena mena&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Úloha:'''&lt;br /&gt;
Zmente názov atribútu ''zaciatok'' na ''zaciatok_riesenia'' a názov atribútu ''koniec'' na ''koniec_riesenia''.&lt;br /&gt;
&lt;br /&gt;
Riešenie:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
   ALTER TABLE `projekt` CHANGE `zaciatok` `zaciatok_riesenia` DATE NOT NULL&lt;br /&gt;
   ALTER TABLE `projekt` CHANGE `koniec` `koniec_riesenia` DATE NOT NULL  &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==DROP==&lt;br /&gt;
Pomocou príkazu DROP sa mažú databázové objekty. Príkaz DROP môžeme použiť na mazanie&lt;br /&gt;
*databáz - DROP DATABASE&lt;br /&gt;
*tabuliek - DROP TABLE&lt;br /&gt;
*procedúr - DROP PROCEDURE&lt;br /&gt;
*triggerov - DROP TRIGGER&lt;br /&gt;
*pohľadov - DROP VIEW&lt;br /&gt;
===DROP TABLE===&lt;br /&gt;
Zmazanie tabuľky sa realizuje pomocou príkazu DROP TABLE&amp;lt;ref&amp;gt;Drop table (mysql) http://dev.mysql.com/doc/refman/5.5/en/drop-table.html&amp;lt;/ref&amp;gt;. Syntax je nasledujúca:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
DROP [TEMPORARY] TABLE [IF EXISTS]&lt;br /&gt;
    tbl_name [, tbl_name] ...&lt;br /&gt;
    [RESTRICT | CASCADE]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
kde:&lt;br /&gt;
*tbl_name - názov tabuľky, ktorú ideme mazať.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Úloha:'''&lt;br /&gt;
Zmažte všetky tabuľky na databáze ''projekty''.&lt;br /&gt;
&lt;br /&gt;
Riešenie:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
DROP [TEMPORARY] TABLE 'projekt' AND 'rozpocet'&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===DROP DATABASE===&lt;br /&gt;
Zmazanie databázy sa realizuje pomocou príkazu DROP DATABASE&amp;lt;ref&amp;gt;Drop database (mysql) http://dev.mysql.com/doc/refman/5.5/en/drop-database.html&amp;lt;/ref&amp;gt;. Syntax je nasledujúca:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
   DROP {DATABASE | SCHEMA} [IF EXISTS] db_name&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Úloha:'''&lt;br /&gt;
Zmažte databázu ''projekty''.&lt;br /&gt;
&lt;br /&gt;
Riešenie:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
DROP {DATABASE | SCHEMA} [IF EXISTS] 'projekty' &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
===Mazanie ostatných objektov===&lt;br /&gt;
&lt;br /&gt;
'''Mazanie pohľadu:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
DROP VIEW `rozdelenie_projektov`&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Mazanie uloženej procedúry:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
DROP VIEW 'PROCEDURE zvysKV'&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Mazanie triggera:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Zdroje a odkazy==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lusing</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=SQL_-_DDL&amp;diff=8592</id>
		<title>SQL - DDL</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=SQL_-_DDL&amp;diff=8592"/>
		<updated>2010-12-27T15:49:13Z</updated>

		<summary type="html">&lt;p&gt;Lusing: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Skripta_dbs}}&lt;br /&gt;
{{Draft}}&lt;br /&gt;
DDL (Data Definition Language) - jazyk pre dátových štruktúr. V databázových systémoch predstavuje podskupinu jazyka SQL pre vytváranie a modifikáciu databázových objektov.&lt;br /&gt;
==Prípadová štúdia - evidencia projektov==&lt;br /&gt;
V tejto kapitole bude opísaný postup pri vytváraní novej databázy, nových tabuliek. Následne sa vytvorené tabuľky pokúsime zmodifikovať (pridanie atribútov, zmena názvu atribútov...) a na koniec zmažeme všetky tabuľky aj databázu.&lt;br /&gt;
&lt;br /&gt;
Pre túto kapitolu si zoberme príklad evidencie projektov a ich rozpočtu. V našom príklade indentifikujeme 2 základné entity: projekt a rozpočet na projekt. Atribúty týchto entít:&lt;br /&gt;
*'''projekt'''&lt;br /&gt;
**id projektu (id) - primárny kľúč&lt;br /&gt;
**názov projektu (nazov) - reťazec&lt;br /&gt;
**typ projektu (typ_projektu) - vymenovaný typ:  IP, ESF, STREP, CRAFT, CRP &amp;lt;ref&amp;gt;Typy projekov - http://www.bic.sk/projects.php?id=32&amp;amp;tid=24&amp;lt;/ref&amp;gt;&lt;br /&gt;
**začiatok riešenia projektu (zaciatok) - dátum&lt;br /&gt;
**koniec riešenia projektu (koniec) - dátum&lt;br /&gt;
**obsah riešenia projektu (obsah) - text&lt;br /&gt;
&lt;br /&gt;
Keďže v projektoch sa robí na každý rok iný rozpočet, v tabuľke rozpočet bude predstavovať jeden záznam rozpočet pre daný projekt na jeden rok. Ak by sa projekt riešil 5 rokov, v tabuľke rozpočet bude pre tento projekt 5 záznamov.&lt;br /&gt;
*'''rozpočet'''&lt;br /&gt;
**id projektu, pre ktorý je tento rozpočet (projekt_id) - primárny kľúč&lt;br /&gt;
**rok riešenia projektu (projekt_rok) - primárny kľúč&lt;br /&gt;
**bežné výdavky (bezne) - celé číslo &lt;br /&gt;
**kapitálové výdavky (kapitalove) - celé číslo&lt;br /&gt;
&lt;br /&gt;
==CREATE==&lt;br /&gt;
===CREATE DATABASE&amp;lt;ref&amp;gt;Create database (mysql) http://dev.mysql.com/doc/refman/5.5/en/create-database.html&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name&lt;br /&gt;
    [create_specification] ...&lt;br /&gt;
&lt;br /&gt;
create_specification:&lt;br /&gt;
    [DEFAULT] CHARACTER SET [=] charset_name&lt;br /&gt;
  | [DEFAULT] COLLATE [=] collation_name&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tu bude popis nasledujúcich parametrov:&lt;br /&gt;
*IF NOT EXISTS - príkaz neprevedie žiadnu akciu&lt;br /&gt;
*db_name - názov databázy&lt;br /&gt;
*CHARACTER SET - Ak by ste nepoužili príkaz SET CHARACTER SET utf8, databáza by sa snažila vkladané textové reťazce ešte raz konvertovať do UTF-8. Vzniklo by tzv. &amp;quot;dvojité&amp;quot; kódovanie&lt;br /&gt;
*COLLATE  - usporiadanie reťazcov&lt;br /&gt;
&lt;br /&gt;
'''Príklad:'''&lt;br /&gt;
&lt;br /&gt;
Vytvorte databázu ''projekty''. Znakovú sadu pre celú databázu nastavte utf-8.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
   CREATE DATABASE Projekty CHARACTER SET utf8&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===CREATE TABLE&amp;lt;ref&amp;gt;Create tabel (mysql) http://dev.mysql.com/doc/refman/5.5/en/create-table.html&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name&lt;br /&gt;
    (create_definition,...)&lt;br /&gt;
    [table_options]&lt;br /&gt;
    [partition_options]&lt;br /&gt;
&lt;br /&gt;
create_definition:&lt;br /&gt;
    col_name column_definition&lt;br /&gt;
  | [CONSTRAINT [symbol]] PRIMARY KEY [index_type] (index_col_name,...)&lt;br /&gt;
      [index_option] ...&lt;br /&gt;
  | {INDEX|KEY} [index_name] [index_type] (index_col_name,...)&lt;br /&gt;
      [index_option] ...&lt;br /&gt;
&lt;br /&gt;
column_definition:&lt;br /&gt;
    data_type [NOT NULL | NULL] [DEFAULT default_value]&lt;br /&gt;
      [AUTO_INCREMENT] [UNIQUE [KEY] | [PRIMARY] KEY]&lt;br /&gt;
      [COMMENT 'string']&lt;br /&gt;
&lt;br /&gt;
data_type:&lt;br /&gt;
    pozri &amp;quot;Dátové typy&amp;quot;&lt;br /&gt;
&lt;br /&gt;
index_type:&lt;br /&gt;
    USING {BTREE | HASH}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
kde pri definícii tabuľky:&lt;br /&gt;
*TEMPORARY - ten označuje, že sa má vykonať následujúca operacia, ale že se bude jednať len o dočasný príkaz&lt;br /&gt;
*IF NOT EXISTS - príkaz neprevedie žiadnu akciu&lt;br /&gt;
*tbl_name - názov tabuľky&lt;br /&gt;
pri definícii štruktúry tabuľky(create_definition):&lt;br /&gt;
*CONSTRAINT - jedná sa v podstate o obmedzené pomenovanie&lt;br /&gt;
*PRIMARY KEY - primarny kľúč&lt;br /&gt;
*INDEX - spracujú vždy všetky vety v databáze&lt;br /&gt;
*KEY - kľúč&lt;br /&gt;
pri definícii konkrétneho typu (column_definition):&lt;br /&gt;
*NOT NULL - hodnota bez nuly&lt;br /&gt;
*NULL - nula&lt;br /&gt;
*DEFAULT - je príkaz ktorý nám vraví čo sa má stať&lt;br /&gt;
*AUTO_INCREMENT - pomáha vygenerovať hodnotu&lt;br /&gt;
*UNIQUE - bude vytvorený unikátný index z hodnôt tochto slpca, hodnota NULL je z indexu vylúčena &lt;br /&gt;
*PRIMARY - primárny kľúč&lt;br /&gt;
*COMMENT - Poznamka autora k vysvetleniu čo daný skript robí&lt;br /&gt;
Pri definícii typu indexu (index_type):&lt;br /&gt;
*BTREE - Je špecifický tím, že má rád n a limity na maximálne (n), i minimálne (\left \lceil \frac{n}{2} \right \rceil) počet potomkov vrcholu.&lt;br /&gt;
*HASH - Pre každý príkaz vyhľadá a zapametá polohu v ceste pre hľadanie príkazu.&lt;br /&gt;
&lt;br /&gt;
'''Úloha:'''&lt;br /&gt;
&lt;br /&gt;
Podľa prípadovej štúdie (evidencia projektov) vytvorte tabuľky ''projekt'' a ''rozpocet''. Typy jednotlivých atribútov sú opísané taktiež v tejto prípadovej štúdii na začiatku tejto kapitoly.&lt;br /&gt;
&lt;br /&gt;
Riešenie:&lt;br /&gt;
&lt;br /&gt;
Tabuľka ''projekt'':&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE TABLE `projekty`.`Projekt` (&lt;br /&gt;
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,&lt;br /&gt;
`nazov` VARCHAR( 64 ) NOT NULL ,&lt;br /&gt;
`typ_projektu` ENUM( 'IP', 'ESF', 'STREP', 'CRAFT', 'CRP' ) NOT NULL ,&lt;br /&gt;
`zaciatok` DATE NOT NULL ,&lt;br /&gt;
`koniec` DATE NOT NULL ,&lt;br /&gt;
`obsah` TEXT NOT NULL&lt;br /&gt;
) ENGINE = InnoDB;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tabuľka ''rozpocet'':&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE TABLE `projekty`.`rozpocet` (&lt;br /&gt;
`projekt_id` INT NOT NULL ,&lt;br /&gt;
`projekt_rok` INT NOT NULL ,&lt;br /&gt;
`bezne` REAL NOT NULL ,&lt;br /&gt;
`kapitalove` REAL NOT NULL ,&lt;br /&gt;
PRIMARY KEY ( `projekt_id` , `projekt_rok` ) &lt;br /&gt;
) ENGINE = InnoDB;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===CREATE VIEW===&lt;br /&gt;
Príkazom CREATE VIEW&amp;lt;ref&amp;gt;create view (mysql) http://dev.mysql.com/doc/refman/5.5/en/create-view.html&amp;lt;/ref&amp;gt; môžeme vytvoriť pohľad. Pohľadom sa venuje samostatná [[SQL - pohľady|kapitola]]. Syntax príkazu CREATE VIEW je nasledovná&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE&lt;br /&gt;
    [OR REPLACE]&lt;br /&gt;
    [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]&lt;br /&gt;
    [DEFINER = { user | CURRENT_USER }]&lt;br /&gt;
    [SQL SECURITY { DEFINER | INVOKER }]&lt;br /&gt;
    VIEW view_name [(column_list)]&lt;br /&gt;
    AS select_statement&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
kde:&lt;br /&gt;
*OR REPLACE - Funkcia nahradí všetky výskytnuté určené reťazce ako hľadaný reťazec s náhradným reťazcom.&lt;br /&gt;
*ALGORITHM - základy kryptografie&lt;br /&gt;
*DEFINER - môže v rámci konštantného výrazu použiť skôr definovanú symbolickú konštantu&lt;br /&gt;
*SQL SECURUTY - vytvorí na databázovom serveri uloženú procedúru&lt;br /&gt;
*select_statement - definuje a vytvára nemenovaný tabuľka výsledkov.&lt;br /&gt;
&lt;br /&gt;
'''Príklad:'''&lt;br /&gt;
&lt;br /&gt;
Vytvorte pohľad na základe dotazu: Koľko je v databáze projektov, rozdelených podľa typov projektov. Nezaujíma nás teda celkový počet projektov ale počet projektov podľa typu projektu.&lt;br /&gt;
&lt;br /&gt;
Riešenie:&lt;br /&gt;
SQL dotaz, pomocou ktorého dosiahneme požadovaný výsledok&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE ALGORITHM = UNDEFINED VIEW `clenenie_projektov` AS SELECT * &lt;br /&gt;
FROM `projekt` &lt;br /&gt;
ORDER BY `projekt`.`typ_projektu` ASC &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vytvorenie pohľadu ''rodelenie_projektov''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE ALGORITHM = UNDEFINED VIEW `Rozdelenie_projektov` AS SELECT id, typ_projektu&lt;br /&gt;
FROM `projekt` &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===CREATE PROCEDURE===&lt;br /&gt;
Príkaz CREATE PROCEDURE&amp;lt;ref&amp;gt;CREATE PROCEDURE (mysql) http://dev.mysql.com/doc/refman/5.5/en/create-procedure.html&amp;lt;/ref&amp;gt; vytvorí na databázovom serveri uloženú procedúru. Podrobnejšie o uložených procedúrach hovorí kapitola [[SQL - uložené procedúry]]. Syntax je nasledujúca:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE&lt;br /&gt;
    [DEFINER = { user | CURRENT_USER }]&lt;br /&gt;
    PROCEDURE sp_name ([proc_parameter[,...]])&lt;br /&gt;
    routine_body&lt;br /&gt;
&lt;br /&gt;
proc_parameter:&lt;br /&gt;
    [ IN | OUT | INOUT ] param_name type&lt;br /&gt;
&lt;br /&gt;
type:&lt;br /&gt;
    Ľubovoľný dátový SQL typ.&lt;br /&gt;
&lt;br /&gt;
routine_body:&lt;br /&gt;
    SQL príkaz&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
kde:&lt;br /&gt;
*DEFINER - nastavuje užívateľskú premennú alebo zobrazí jej hodnotu&lt;br /&gt;
*sp_name - názov procedúry&lt;br /&gt;
*proc_parameter - procedúra parametrov&lt;br /&gt;
**IN - V &lt;br /&gt;
**OUT - nesprávna procedúra &lt;br /&gt;
**INOUT - v nesprávnej procedúre&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Úloha:'''&lt;br /&gt;
Vytvorte uloženú ktorá v tabuľke rozpočet zvýši určitému projektu (jeho ID bude vstupný parameter procedúry) bežné a kapitálové výdavky 1.1x.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Riešenie:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE PROCEDURE zvysKV(.....&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ukážka použitia uloženej procedúry&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
   CALL zvysKV(1)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===CREATE TRIGGER===&lt;br /&gt;
Príkaz CREATE TRIGGER&amp;lt;ref&amp;gt;CREATE TRIGGER (mysql) http://dev.mysql.com/doc/refman/5.5/en/create-trigger.html&amp;lt;/ref&amp;gt; vytvorí v databáze trigger (spúšťač, resp. automaticky spúšťanú procedúru). Jeho syntax je nasledovná:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE&lt;br /&gt;
    [DEFINER = { user | CURRENT_USER }]&lt;br /&gt;
    TRIGGER trigger_name trigger_time trigger_event&lt;br /&gt;
    ON tbl_name FOR EACH ROW trigger_body&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
kde:&lt;br /&gt;
*DEFINER - nastavuje užívateľskú premennú alebo zobrazí jej hodnotu&lt;br /&gt;
*trigger_name - názov triggeru&lt;br /&gt;
*trigger_time - čas triggeru&lt;br /&gt;
*trigger_event - akcia triggeru&lt;br /&gt;
*FOR EACH ROW - táto klauzula hovorí, či sa trigger má vykonať zvlášť pre každý riadok, alebo iba raz&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Úloha:'''&lt;br /&gt;
Vytvorte trigger, ktorý sa bude spúšťať pred modifikáciou záznamu v tabuľke rozpočet. Tento trigger nedovolí urobiť zmenu rozpočtu aktuálneho projektu mimo obdobia riešenia projektu. Teda ak je projekt naplánovaný od roku 2010 do 2012, tak ak sa niekto pokúsi urobiť zmenu mimo tohoto obdobia, tento trigger mu to nedovolí.&lt;br /&gt;
&lt;br /&gt;
Riešenie:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
...riešnie&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==ALTER==&lt;br /&gt;
Príkaz ALTER slúži na modifikovanie štruktúry databázových objektov.&lt;br /&gt;
===ALTER DATABASE===&lt;br /&gt;
Príkaz ALTER DATABASE&amp;lt;ref&amp;gt;ALTER DATABASE (mysql) http://dev.mysql.com/doc/refman/5.5/en/alter-database.html&amp;lt;/ref&amp;gt;dovoľuje zmeniť vlastnosti databázy ako napríklad meno, znakovú sadu, zotriedenie. Syntax je nasledujúca:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
ALTER {DATABASE | SCHEMA} [db_name]&lt;br /&gt;
    alter_specification ...&lt;br /&gt;
ALTER {DATABASE | SCHEMA} db_name&lt;br /&gt;
    UPGRADE DATA DIRECTORY NAME&lt;br /&gt;
&lt;br /&gt;
alter_specification:&lt;br /&gt;
    [DEFAULT] CHARACTER SET [=] charset_name&lt;br /&gt;
  | [DEFAULT] COLLATE [=] collation_name&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
kde:&lt;br /&gt;
*alter_specification - &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Úloha:'''&lt;br /&gt;
Zmeňte znakovú sadu databázy projekty na utf8-slovak-ci.&lt;br /&gt;
&lt;br /&gt;
Riešenie:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
...riešenie&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===ALTER TABLE===&lt;br /&gt;
Príkaz ALTER TABLE&amp;lt;ref&amp;gt;ALTER TABLE(mysql) http://dev.mysql.com/doc/refman/5.5/en/alter-table.html&amp;lt;/ref&amp;gt;dovoľuje zmeniť vlastnosti tabuľky ako napríklad meno, dátový typ, znakovú sadu, zotriedenie. Syntax je nasledujúca:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
ALTER [IGNORE] TABLE tbl_name alter_spec [, alter_spec ...] &lt;br /&gt;
&lt;br /&gt;
alter_specification: &lt;br /&gt;
    ADD [COLUMN] create_definition [FIRST | AFTER column_name ] &lt;br /&gt;
| ADD [COLUMN] (create_definition, create_definition,...) &lt;br /&gt;
| ADD INDEX [index_name] (index_col_name,...) &lt;br /&gt;
| ADD PRIMARY KEY (index_col_name,...) &lt;br /&gt;
| ADD UNIQUE [index_name] (index_col_name,...) &lt;br /&gt;
| ADD FULLTEXT [index_name] (index_col_name,...) &lt;br /&gt;
| ALTER [COLUMN] col_name {SET DEFAULT literal | DROP DEFAULT} &lt;br /&gt;
| CHANGE [COLUMN] old_col_name create_definition &lt;br /&gt;
| MODIFY [COLUMN] create_definition &lt;br /&gt;
| DROP [COLUMN] col_name &lt;br /&gt;
| DROP PRIMARY KEY &lt;br /&gt;
| DROP INDEX index_name &lt;br /&gt;
| RENAME [TO] new_tbl_name &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
kde:&lt;br /&gt;
*IGNORE - ignorovať &lt;br /&gt;
*FIRST, AFTER - &lt;br /&gt;
*ADD - pridávanie dát&lt;br /&gt;
*ALTER - zmeniť&lt;br /&gt;
*CHANGE - &lt;br /&gt;
*MODIFY -&lt;br /&gt;
*DROP - Odeberie jeden alebo viac databáz alebo databazové snímky z instance SQL Server&lt;br /&gt;
*RENAME - zmena mena&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Úloha:'''&lt;br /&gt;
Zmente názov atribútu ''zaciatok'' na ''zaciatok_riesenia'' a názov atribútu ''koniec'' na ''koniec_riesenia''.&lt;br /&gt;
&lt;br /&gt;
Riešenie:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
   ALTER TABLE `projekt` CHANGE `zaciatok` `zaciatok_riesenia` DATE NOT NULL&lt;br /&gt;
   ALTER TABLE `projekt` CHANGE `koniec` `koniec_riesenia` DATE NOT NULL  &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==DROP==&lt;br /&gt;
Pomocou príkazu DROP sa mažú databázové objekty. Príkaz DROP môžeme použiť na mazanie&lt;br /&gt;
*databáz - DROP DATABASE&lt;br /&gt;
*tabuliek - DROP TABLE&lt;br /&gt;
*procedúr - DROP PROCEDURE&lt;br /&gt;
*triggerov - DROP TRIGGER&lt;br /&gt;
*pohľadov - DROP VIEW&lt;br /&gt;
===DROP TABLE===&lt;br /&gt;
Zmazanie tabuľky sa realizuje pomocou príkazu DROP TABLE&amp;lt;ref&amp;gt;Drop table (mysql) http://dev.mysql.com/doc/refman/5.5/en/drop-table.html&amp;lt;/ref&amp;gt;. Syntax je nasledujúca:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
DROP [TEMPORARY] TABLE [IF EXISTS]&lt;br /&gt;
    tbl_name [, tbl_name] ...&lt;br /&gt;
    [RESTRICT | CASCADE]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
kde:&lt;br /&gt;
*tbl_name - názov tabuľky, ktorú ideme mazať.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Úloha:'''&lt;br /&gt;
Zmažte všetky tabuľky na databáze ''projekty''.&lt;br /&gt;
&lt;br /&gt;
Riešenie:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
DROP [TEMPORARY] TABLE 'projekt' AND 'rozpocet'&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===DROP DATABASE===&lt;br /&gt;
Zmazanie databázy sa realizuje pomocou príkazu DROP DATABASE&amp;lt;ref&amp;gt;Drop database (mysql) http://dev.mysql.com/doc/refman/5.5/en/drop-database.html&amp;lt;/ref&amp;gt;. Syntax je nasledujúca:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
   DROP {DATABASE | SCHEMA} [IF EXISTS] db_name&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Úloha:'''&lt;br /&gt;
Zmažte databázu ''projekty''.&lt;br /&gt;
&lt;br /&gt;
Riešenie:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
DROP {DATABASE | SCHEMA} [IF EXISTS] 'projekty' &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
===Mazanie ostatných objektov===&lt;br /&gt;
&lt;br /&gt;
'''Mazanie pohľadu:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
DROP VIEW `rozdelenie_projektov`&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Mazanie uloženej procedúry:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
DROP VIEW 'PROCEDURE zvysKV'&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Mazanie triggera:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Zdroje a odkazy==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lusing</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=SQL_-_DDL&amp;diff=8589</id>
		<title>SQL - DDL</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=SQL_-_DDL&amp;diff=8589"/>
		<updated>2010-12-26T11:44:00Z</updated>

		<summary type="html">&lt;p&gt;Lusing: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Skripta_dbs}}&lt;br /&gt;
{{Draft}}&lt;br /&gt;
DDL (Data Definition Language) - jazyk pre dátových štruktúr. V databázových systémoch predstavuje podskupinu jazyka SQL pre vytváranie a modifikáciu databázových objektov.&lt;br /&gt;
==Prípadová štúdia - evidencia projektov==&lt;br /&gt;
V tejto kapitole bude opísaný postup pri vytváraní novej databázy, nových tabuliek. Následne sa vytvorené tabuľky pokúsime zmodifikovať (pridanie atribútov, zmena názvu atribútov...) a na koniec zmažeme všetky tabuľky aj databázu.&lt;br /&gt;
&lt;br /&gt;
Pre túto kapitolu si zoberme príklad evidencie projektov a ich rozpočtu. V našom príklade indentifikujeme 2 základné entity: projekt a rozpočet na projekt. Atribúty týchto entít:&lt;br /&gt;
*'''projekt'''&lt;br /&gt;
**id projektu (id) - primárny kľúč&lt;br /&gt;
**názov projektu (nazov) - reťazec&lt;br /&gt;
**typ projektu (typ_projektu) - vymenovaný typ:  IP, ESF, STREP, CRAFT, CRP &amp;lt;ref&amp;gt;Typy projekov - http://www.bic.sk/projects.php?id=32&amp;amp;tid=24&amp;lt;/ref&amp;gt;&lt;br /&gt;
**začiatok riešenia projektu (zaciatok) - dátum&lt;br /&gt;
**koniec riešenia projektu (koniec) - dátum&lt;br /&gt;
**obsah riešenia projektu (obsah) - text&lt;br /&gt;
&lt;br /&gt;
Keďže v projektoch sa robí na každý rok iný rozpočet, v tabuľke rozpočet bude predstavovať jeden záznam rozpočet pre daný projekt na jeden rok. Ak by sa projekt riešil 5 rokov, v tabuľke rozpočet bude pre tento projekt 5 záznamov.&lt;br /&gt;
*'''rozpočet'''&lt;br /&gt;
**id projektu, pre ktorý je tento rozpočet (projekt_id) - primárny kľúč&lt;br /&gt;
**rok riešenia projektu (projekt_rok) - primárny kľúč&lt;br /&gt;
**bežné výdavky (bezne) - celé číslo &lt;br /&gt;
**kapitálové výdavky (kapitalove) - celé číslo&lt;br /&gt;
&lt;br /&gt;
==CREATE==&lt;br /&gt;
===CREATE DATABASE&amp;lt;ref&amp;gt;Create database (mysql) http://dev.mysql.com/doc/refman/5.5/en/create-database.html&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name&lt;br /&gt;
    [create_specification] ...&lt;br /&gt;
&lt;br /&gt;
create_specification:&lt;br /&gt;
    [DEFAULT] CHARACTER SET [=] charset_name&lt;br /&gt;
  | [DEFAULT] COLLATE [=] collation_name&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tu bude popis nasledujúcich parametrov:&lt;br /&gt;
*IF NOT EXISTS - príkaz neprevedie žiadnu akciu&lt;br /&gt;
*db_name - názov databázy&lt;br /&gt;
*CHARACTER SET - Ak by ste nepoužili príkaz SET CHARACTER SET utf8, databáza by sa snažila vkladané textové reťazce ešte raz konvertovať do UTF-8. Vzniklo by tzv. &amp;quot;dvojité&amp;quot; kódovanie&lt;br /&gt;
*COLLATE  - usporiadanie reťazcov&lt;br /&gt;
&lt;br /&gt;
'''Príklad:'''&lt;br /&gt;
&lt;br /&gt;
Vytvorte databázu ''projekty''. Znakovú sadu pre celú databázu nastavte utf-8.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
   CREATE DATABASE Projekty CHARACTER SET utf8&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===CREATE TABLE&amp;lt;ref&amp;gt;Create tabel (mysql) http://dev.mysql.com/doc/refman/5.5/en/create-table.html&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name&lt;br /&gt;
    (create_definition,...)&lt;br /&gt;
    [table_options]&lt;br /&gt;
    [partition_options]&lt;br /&gt;
&lt;br /&gt;
create_definition:&lt;br /&gt;
    col_name column_definition&lt;br /&gt;
  | [CONSTRAINT [symbol]] PRIMARY KEY [index_type] (index_col_name,...)&lt;br /&gt;
      [index_option] ...&lt;br /&gt;
  | {INDEX|KEY} [index_name] [index_type] (index_col_name,...)&lt;br /&gt;
      [index_option] ...&lt;br /&gt;
&lt;br /&gt;
column_definition:&lt;br /&gt;
    data_type [NOT NULL | NULL] [DEFAULT default_value]&lt;br /&gt;
      [AUTO_INCREMENT] [UNIQUE [KEY] | [PRIMARY] KEY]&lt;br /&gt;
      [COMMENT 'string']&lt;br /&gt;
&lt;br /&gt;
data_type:&lt;br /&gt;
    pozri &amp;quot;Dátové typy&amp;quot;&lt;br /&gt;
&lt;br /&gt;
index_type:&lt;br /&gt;
    USING {BTREE | HASH}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
kde pri definícii tabuľky:&lt;br /&gt;
*TEMPORARY - ten označuje, že sa má vykonať následujúca operacia, ale že se bude jednať len o dočasný príkaz&lt;br /&gt;
*IF NOT EXISTS - príkaz neprevedie žiadnu akciu&lt;br /&gt;
*tbl_name - názov tabuľky&lt;br /&gt;
pri definícii štruktúry tabuľky(create_definition):&lt;br /&gt;
*CONSTRAINT - jedná sa v podstate o obmedzené pomenovanie&lt;br /&gt;
*PRIMARY KEY - primarny kľúč&lt;br /&gt;
*INDEX - spracujú vždy všetky vety v databáze&lt;br /&gt;
*KEY - kľúč&lt;br /&gt;
pri definícii konkrétneho typu (column_definition):&lt;br /&gt;
*NOT NULL - hodnota bez nuly&lt;br /&gt;
*NULL - nula&lt;br /&gt;
*DEFAULT - je príkaz ktorý nám vraví čo sa má stať&lt;br /&gt;
*AUTO_INCREMENT - pomáha vygenerovať hodnotu&lt;br /&gt;
*UNIQUE - bude vytvorený unikátný index z hodnôt tochto slpca, hodnota NULL je z indexu vylúčena &lt;br /&gt;
*PRIMARY - primárny kľúč&lt;br /&gt;
*COMMENT - Poznamka autora k vysvetleniu čo daný skript robí&lt;br /&gt;
Pri definícii typu indexu (index_type):&lt;br /&gt;
*BTREE - Je špecifický tím, že má rád n a limity na maximálne (n), i minimálne (\left \lceil \frac{n}{2} \right \rceil) počet potomkov vrcholu.&lt;br /&gt;
*HASH - Pre každý príkaz vyhľadá a zapametá polohu v ceste pre hľadanie príkazu.&lt;br /&gt;
&lt;br /&gt;
'''Úloha:'''&lt;br /&gt;
&lt;br /&gt;
Podľa prípadovej štúdie (evidencia projektov) vytvorte tabuľky ''projekt'' a ''rozpocet''. Typy jednotlivých atribútov sú opísané taktiež v tejto prípadovej štúdii na začiatku tejto kapitoly.&lt;br /&gt;
&lt;br /&gt;
Riešenie:&lt;br /&gt;
&lt;br /&gt;
Tabuľka ''projekt'':&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE TABLE `projekty`.`Projekt` (&lt;br /&gt;
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,&lt;br /&gt;
`nazov` VARCHAR( 64 ) NOT NULL ,&lt;br /&gt;
`typ_projektu` ENUM( 'IP', 'ESF', 'STREP', 'CRAFT', 'CRP' ) NOT NULL ,&lt;br /&gt;
`zaciatok` DATE NOT NULL ,&lt;br /&gt;
`koniec` DATE NOT NULL ,&lt;br /&gt;
`obsah` TEXT NOT NULL&lt;br /&gt;
) ENGINE = InnoDB;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tabuľka ''rozpocet'':&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE TABLE `projekty`.`rozpocet` (&lt;br /&gt;
`projekt_id` INT NOT NULL ,&lt;br /&gt;
`projekt_rok` INT NOT NULL ,&lt;br /&gt;
`bezne` REAL NOT NULL ,&lt;br /&gt;
`kapitalove` REAL NOT NULL ,&lt;br /&gt;
PRIMARY KEY ( `projekt_id` , `projekt_rok` ) &lt;br /&gt;
) ENGINE = InnoDB;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===CREATE VIEW===&lt;br /&gt;
Príkazom CREATE VIEW&amp;lt;ref&amp;gt;create view (mysql) http://dev.mysql.com/doc/refman/5.5/en/create-view.html&amp;lt;/ref&amp;gt; môžeme vytvoriť pohľad. Pohľadom sa venuje samostatná [[SQL - pohľady|kapitola]]. Syntax príkazu CREATE VIEW je nasledovná&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE&lt;br /&gt;
    [OR REPLACE]&lt;br /&gt;
    [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]&lt;br /&gt;
    [DEFINER = { user | CURRENT_USER }]&lt;br /&gt;
    [SQL SECURITY { DEFINER | INVOKER }]&lt;br /&gt;
    VIEW view_name [(column_list)]&lt;br /&gt;
    AS select_statement&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
kde:&lt;br /&gt;
*OR REPLACE - Funkcia nahradí všetky výskytnuté určené reťazce ako hľadaný reťazec s náhradným reťazcom.&lt;br /&gt;
*ALGORITHM - základy kryptografie&lt;br /&gt;
*DEFINER - môže v rámci konštantného výrazu použiť skôr definovanú symbolickú konštantu&lt;br /&gt;
*SQL SECURUTY - vytvorí na databázovom serveri uloženú procedúru&lt;br /&gt;
*select_statement -&lt;br /&gt;
&lt;br /&gt;
'''Príklad:'''&lt;br /&gt;
&lt;br /&gt;
Vytvorte pohľad na základe dotazu: Koľko je v databáze projektov, rozdelených podľa typov projektov. Nezaujíma nás teda celkový počet projektov ale počet projektov podľa typu projektu.&lt;br /&gt;
&lt;br /&gt;
Riešenie:&lt;br /&gt;
SQL dotaz, pomocou ktorého dosiahneme požadovaný výsledok&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE ALGORITHM = UNDEFINED VIEW `clenenie_projektov` AS SELECT * &lt;br /&gt;
FROM `projekt` &lt;br /&gt;
ORDER BY `projekt`.`typ_projektu` ASC &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vytvorenie pohľadu ''rodelenie_projektov''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE ALGORITHM = UNDEFINED VIEW `Rozdelenie_projektov` AS SELECT id, typ_projektu&lt;br /&gt;
FROM `projekt` &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===CREATE PROCEDURE===&lt;br /&gt;
Príkaz CREATE PROCEDURE&amp;lt;ref&amp;gt;CREATE PROCEDURE (mysql) http://dev.mysql.com/doc/refman/5.5/en/create-procedure.html&amp;lt;/ref&amp;gt; vytvorí na databázovom serveri uloženú procedúru. Podrobnejšie o uložených procedúrach hovorí kapitola [[SQL - uložené procedúry]]. Syntax je nasledujúca:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE&lt;br /&gt;
    [DEFINER = { user | CURRENT_USER }]&lt;br /&gt;
    PROCEDURE sp_name ([proc_parameter[,...]])&lt;br /&gt;
    routine_body&lt;br /&gt;
&lt;br /&gt;
proc_parameter:&lt;br /&gt;
    [ IN | OUT | INOUT ] param_name type&lt;br /&gt;
&lt;br /&gt;
type:&lt;br /&gt;
    Ľubovoľný dátový SQL typ.&lt;br /&gt;
&lt;br /&gt;
routine_body:&lt;br /&gt;
    SQL príkaz&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
kde:&lt;br /&gt;
*DEFINER - nastavuje užívateľskú premennú alebo zobrazí jej hodnotu&lt;br /&gt;
*sp_name - názov procedúry&lt;br /&gt;
*proc_parameter - procedúra parametrov&lt;br /&gt;
**IN - V &lt;br /&gt;
**OUT - nesprávna procedúra &lt;br /&gt;
**INOUT - v nesprávnej procedúre&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Úloha:'''&lt;br /&gt;
Vytvorte uloženú ktorá v tabuľke rozpočet zvýši určitému projektu (jeho ID bude vstupný parameter procedúry) bežné a kapitálové výdavky 1.1x.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Riešenie:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE PROCEDURE zvysKV(.....&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ukážka použitia uloženej procedúry&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
   CALL zvysKV(1)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===CREATE TRIGGER===&lt;br /&gt;
Príkaz CREATE TRIGGER&amp;lt;ref&amp;gt;CREATE TRIGGER (mysql) http://dev.mysql.com/doc/refman/5.5/en/create-trigger.html&amp;lt;/ref&amp;gt; vytvorí v databáze trigger (spúšťač, resp. automaticky spúšťanú procedúru). Jeho syntax je nasledovná:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE&lt;br /&gt;
    [DEFINER = { user | CURRENT_USER }]&lt;br /&gt;
    TRIGGER trigger_name trigger_time trigger_event&lt;br /&gt;
    ON tbl_name FOR EACH ROW trigger_body&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
kde:&lt;br /&gt;
*DEFINER - nastavuje užívateľskú premennú alebo zobrazí jej hodnotu&lt;br /&gt;
*trigger_name - názov triggeru&lt;br /&gt;
*trigger_time - čas triggeru&lt;br /&gt;
*trigger_event - akcia triggeru&lt;br /&gt;
*FOR EACH ROW - táto klauzula hovorí, či sa trigger má vykonať zvlášť pre každý riadok, alebo iba raz&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Úloha:'''&lt;br /&gt;
Vytvorte trigger, ktorý sa bude spúšťať pred modifikáciou záznamu v tabuľke rozpočet. Tento trigger nedovolí urobiť zmenu rozpočtu aktuálneho projektu mimo obdobia riešenia projektu. Teda ak je projekt naplánovaný od roku 2010 do 2012, tak ak sa niekto pokúsi urobiť zmenu mimo tohoto obdobia, tento trigger mu to nedovolí.&lt;br /&gt;
&lt;br /&gt;
Riešenie:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
...riešnie&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==ALTER==&lt;br /&gt;
Príkaz ALTER slúži na modifikovanie štruktúry databázových objektov.&lt;br /&gt;
===ALTER DATABASE===&lt;br /&gt;
Príkaz ALTER DATABASE&amp;lt;ref&amp;gt;ALTER DATABASE (mysql) http://dev.mysql.com/doc/refman/5.5/en/alter-database.html&amp;lt;/ref&amp;gt;dovoľuje zmeniť vlastnosti databázy ako napríklad meno, znakovú sadu, zotriedenie. Syntax je nasledujúca:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
ALTER {DATABASE | SCHEMA} [db_name]&lt;br /&gt;
    alter_specification ...&lt;br /&gt;
ALTER {DATABASE | SCHEMA} db_name&lt;br /&gt;
    UPGRADE DATA DIRECTORY NAME&lt;br /&gt;
&lt;br /&gt;
alter_specification:&lt;br /&gt;
    [DEFAULT] CHARACTER SET [=] charset_name&lt;br /&gt;
  | [DEFAULT] COLLATE [=] collation_name&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
kde:&lt;br /&gt;
*alter_specification - &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Úloha:'''&lt;br /&gt;
Zmeňte znakovú sadu databázy projekty na utf8-slovak-ci.&lt;br /&gt;
&lt;br /&gt;
Riešenie:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
...riešenie&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===ALTER TABLE===&lt;br /&gt;
Príkaz ALTER TABLE&amp;lt;ref&amp;gt;ALTER TABLE(mysql) http://dev.mysql.com/doc/refman/5.5/en/alter-table.html&amp;lt;/ref&amp;gt;dovoľuje zmeniť vlastnosti tabuľky ako napríklad meno, dátový typ, znakovú sadu, zotriedenie. Syntax je nasledujúca:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
ALTER [IGNORE] TABLE tbl_name alter_spec [, alter_spec ...] &lt;br /&gt;
&lt;br /&gt;
alter_specification: &lt;br /&gt;
    ADD [COLUMN] create_definition [FIRST | AFTER column_name ] &lt;br /&gt;
| ADD [COLUMN] (create_definition, create_definition,...) &lt;br /&gt;
| ADD INDEX [index_name] (index_col_name,...) &lt;br /&gt;
| ADD PRIMARY KEY (index_col_name,...) &lt;br /&gt;
| ADD UNIQUE [index_name] (index_col_name,...) &lt;br /&gt;
| ADD FULLTEXT [index_name] (index_col_name,...) &lt;br /&gt;
| ALTER [COLUMN] col_name {SET DEFAULT literal | DROP DEFAULT} &lt;br /&gt;
| CHANGE [COLUMN] old_col_name create_definition &lt;br /&gt;
| MODIFY [COLUMN] create_definition &lt;br /&gt;
| DROP [COLUMN] col_name &lt;br /&gt;
| DROP PRIMARY KEY &lt;br /&gt;
| DROP INDEX index_name &lt;br /&gt;
| RENAME [TO] new_tbl_name &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
kde:&lt;br /&gt;
*IGNORE - ignorovať &lt;br /&gt;
*FIRST, AFTER - &lt;br /&gt;
*ADD - pridávanie dát&lt;br /&gt;
*ALTER - zmeniť&lt;br /&gt;
*CHANGE - &lt;br /&gt;
*MODIFY -&lt;br /&gt;
*DROP - Odeberie jeden alebo viac databáz alebo databazové snímky z instance SQL Server&lt;br /&gt;
*RENAME - zmena mena&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Úloha:'''&lt;br /&gt;
Zmente názov atribútu ''zaciatok'' na ''zaciatok_riesenia'' a názov atribútu ''koniec'' na ''koniec_riesenia''.&lt;br /&gt;
&lt;br /&gt;
Riešenie:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
   ALTER TABLE `projekt` CHANGE `zaciatok` `zaciatok_riesenia` DATE NOT NULL&lt;br /&gt;
   ALTER TABLE `projekt` CHANGE `koniec` `koniec_riesenia` DATE NOT NULL  &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==DROP==&lt;br /&gt;
Pomocou príkazu DROP sa mažú databázové objekty. Príkaz DROP môžeme použiť na mazanie&lt;br /&gt;
*databáz - DROP DATABASE&lt;br /&gt;
*tabuliek - DROP TABLE&lt;br /&gt;
*procedúr - DROP PROCEDURE&lt;br /&gt;
*triggerov - DROP TRIGGER&lt;br /&gt;
*pohľadov - DROP VIEW&lt;br /&gt;
===DROP TABLE===&lt;br /&gt;
Zmazanie tabuľky sa realizuje pomocou príkazu DROP TABLE&amp;lt;ref&amp;gt;Drop table (mysql) http://dev.mysql.com/doc/refman/5.5/en/drop-table.html&amp;lt;/ref&amp;gt;. Syntax je nasledujúca:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
DROP [TEMPORARY] TABLE [IF EXISTS]&lt;br /&gt;
    tbl_name [, tbl_name] ...&lt;br /&gt;
    [RESTRICT | CASCADE]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
kde:&lt;br /&gt;
*tbl_name - názov tabuľky, ktorú ideme mazať.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Úloha:'''&lt;br /&gt;
Zmažte všetky tabuľky na databáze ''projekty''.&lt;br /&gt;
&lt;br /&gt;
Riešenie:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
DROP [TEMPORARY] TABLE 'projekt' AND 'rozpocet'&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===DROP DATABASE===&lt;br /&gt;
Zmazanie databázy sa realizuje pomocou príkazu DROP DATABASE&amp;lt;ref&amp;gt;Drop database (mysql) http://dev.mysql.com/doc/refman/5.5/en/drop-database.html&amp;lt;/ref&amp;gt;. Syntax je nasledujúca:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
   DROP {DATABASE | SCHEMA} [IF EXISTS] db_name&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Úloha:'''&lt;br /&gt;
Zmažte databázu ''projekty''.&lt;br /&gt;
&lt;br /&gt;
Riešenie:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
DROP {DATABASE | SCHEMA} [IF EXISTS] 'projekty' &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
===Mazanie ostatných objektov===&lt;br /&gt;
&lt;br /&gt;
'''Mazanie pohľadu:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
DROP VIEW `rozdelenie_projektov`&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Mazanie uloženej procedúry:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
DROP VIEW 'PROCEDURE zvysKV'&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Mazanie triggera:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Zdroje a odkazy==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lusing</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=SQL_-_DDL&amp;diff=8574</id>
		<title>SQL - DDL</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=SQL_-_DDL&amp;diff=8574"/>
		<updated>2010-12-15T16:04:37Z</updated>

		<summary type="html">&lt;p&gt;Lusing: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Skripta_dbs}}&lt;br /&gt;
{{Draft}}&lt;br /&gt;
DDL (Data Definition Language) - jazyk pre dátových štruktúr. V databázových systémoch predstavuje podskupinu jazyka SQL pre vytváranie a modifikáciu databázových objektov.&lt;br /&gt;
==Prípadová štúdia - evidencia projektov==&lt;br /&gt;
V tejto kapitole bude opísaný postup pri vytváraní novej databázy, nových tabuliek. Následne sa vytvorené tabuľky pokúsime zmodifikovať (pridanie atribútov, zmena názvu atribútov...) a na koniec zmažeme všetky tabuľky aj databázu.&lt;br /&gt;
&lt;br /&gt;
Pre túto kapitolu si zoberme príklad evidencie projektov a ich rozpočtu. V našom príklade indentifikujeme 2 základné entity: projekt a rozpočet na projekt. Atribúty týchto entít:&lt;br /&gt;
*'''projekt'''&lt;br /&gt;
**id projektu (id) - primárny kľúč&lt;br /&gt;
**názov projektu (nazov) - reťazec&lt;br /&gt;
**typ projektu (typ_projektu) - vymenovaný typ:  IP, ESF, STREP, CRAFT, CRP &amp;lt;ref&amp;gt;Typy projekov - http://www.bic.sk/projects.php?id=32&amp;amp;tid=24&amp;lt;/ref&amp;gt;&lt;br /&gt;
**začiatok riešenia projektu (zaciatok) - dátum&lt;br /&gt;
**koniec riešenia projektu (koniec) - dátum&lt;br /&gt;
**obsah riešenia projektu (obsah) - text&lt;br /&gt;
&lt;br /&gt;
Keďže v projektoch sa robí na každý rok iný rozpočet, v tabuľke rozpočet bude predstavovať jeden záznam rozpočet pre daný projekt na jeden rok. Ak by sa projekt riešil 5 rokov, v tabuľke rozpočet bude pre tento projekt 5 záznamov.&lt;br /&gt;
*'''rozpočet'''&lt;br /&gt;
**id projektu, pre ktorý je tento rozpočet (projekt_id) - primárny kľúč&lt;br /&gt;
**rok riešenia projektu (projekt_rok) - primárny kľúč&lt;br /&gt;
**bežné výdavky (bezne) - celé číslo &lt;br /&gt;
**kapitálové výdavky (kapitalove) - celé číslo&lt;br /&gt;
&lt;br /&gt;
==CREATE==&lt;br /&gt;
===CREATE DATABASE&amp;lt;ref&amp;gt;Create database (mysql) http://dev.mysql.com/doc/refman/5.5/en/create-database.html&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name&lt;br /&gt;
    [create_specification] ...&lt;br /&gt;
&lt;br /&gt;
create_specification:&lt;br /&gt;
    [DEFAULT] CHARACTER SET [=] charset_name&lt;br /&gt;
  | [DEFAULT] COLLATE [=] collation_name&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tu bude popis nasledujúcich parametrov:&lt;br /&gt;
*IF NOT EXISTS - príkaz neprevedie žiadnu akciu&lt;br /&gt;
*db_name - názov databázy&lt;br /&gt;
*CHARACTER SET - Ak by ste nepoužili príkaz SET CHARACTER SET utf8, databáza by sa snažila vkladané textové reťazce ešte raz konvertovať do UTF-8. Vzniklo by tzv. &amp;quot;dvojité&amp;quot; kódovanie&lt;br /&gt;
*COLLATE  - usporiadanie reťazcov&lt;br /&gt;
&lt;br /&gt;
'''Príklad:'''&lt;br /&gt;
&lt;br /&gt;
Vytvorte databázu ''projekty''. Znakovú sadu pre celú databázu nastavte utf-8.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
   CREATE DATABASE Projekty CHARACTER SET utf8&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===CREATE TABLE&amp;lt;ref&amp;gt;Create tabel (mysql) http://dev.mysql.com/doc/refman/5.5/en/create-table.html&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name&lt;br /&gt;
    (create_definition,...)&lt;br /&gt;
    [table_options]&lt;br /&gt;
    [partition_options]&lt;br /&gt;
&lt;br /&gt;
create_definition:&lt;br /&gt;
    col_name column_definition&lt;br /&gt;
  | [CONSTRAINT [symbol]] PRIMARY KEY [index_type] (index_col_name,...)&lt;br /&gt;
      [index_option] ...&lt;br /&gt;
  | {INDEX|KEY} [index_name] [index_type] (index_col_name,...)&lt;br /&gt;
      [index_option] ...&lt;br /&gt;
&lt;br /&gt;
column_definition:&lt;br /&gt;
    data_type [NOT NULL | NULL] [DEFAULT default_value]&lt;br /&gt;
      [AUTO_INCREMENT] [UNIQUE [KEY] | [PRIMARY] KEY]&lt;br /&gt;
      [COMMENT 'string']&lt;br /&gt;
&lt;br /&gt;
data_type:&lt;br /&gt;
    pozri &amp;quot;Dátové typy&amp;quot;&lt;br /&gt;
&lt;br /&gt;
index_type:&lt;br /&gt;
    USING {BTREE | HASH}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
kde pri definícii tabuľky:&lt;br /&gt;
*TEMPORARY - ten označuje, že se má vykonať následujúcu operaciu, ale že se bude jednať len o dočasný príkaz&lt;br /&gt;
*IF NOT EXISTS - príkaz neprevedie žiadnu akciu&lt;br /&gt;
*tbl_name - názov tabuľky&lt;br /&gt;
pri definícii štruktúry tabuľky(create_definition):&lt;br /&gt;
*CONSTRAINT - jedná sa v podstate o obmedzené pomenovanie&lt;br /&gt;
*PRIMARY KEY - primarny kľúč&lt;br /&gt;
*INDEX - spracujú vždy všetky vety v databáze&lt;br /&gt;
*KEY - kľúč&lt;br /&gt;
pri definícii konkrétneho typu (column_definition):&lt;br /&gt;
*NOT NULL - hodnota bez nuly&lt;br /&gt;
*NULL - ziadna hodnota&lt;br /&gt;
*DEFAULT - je príkaz ktorý nám vraví čo sa má stať&lt;br /&gt;
*AUTO_INCREMENT - pomáha vygenerovať hodnotu&lt;br /&gt;
*UNIQUE - bude vytvorený unikátný index z hodnôt tochto slpca, hodnota NULL je z indexu vylúčena &lt;br /&gt;
*PRIMARY - &lt;br /&gt;
*COMMENT - Poznamka autora k vysvetleniu čo daný skript robí&lt;br /&gt;
Pri definícii typu indexu (index_type):&lt;br /&gt;
*BTREE -&lt;br /&gt;
*HASH - Pre každý příkaz vyhľadá a zapametá polohu v ceste pre hledanie príkazu.&lt;br /&gt;
&lt;br /&gt;
'''Úloha:'''&lt;br /&gt;
&lt;br /&gt;
Podľa prípadovej štúdie (evidencia projektov) vytvorte tabuľky ''projekt'' a ''rozpocet''. Typy jednotlivých atribútov sú opísané taktiež v tejto prípadovej štúdii na začiatku tejto kapitoly.&lt;br /&gt;
&lt;br /&gt;
Riešenie:&lt;br /&gt;
&lt;br /&gt;
Tabuľka ''projekt'':&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE TABLE `projekty`.`Projekt` (&lt;br /&gt;
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,&lt;br /&gt;
`nazov` VARCHAR( 64 ) NOT NULL ,&lt;br /&gt;
`typ_projektu` ENUM( 'IP', 'ESF', 'STREP', 'CRAFT', 'CRP' ) NOT NULL ,&lt;br /&gt;
`zaciatok` DATE NOT NULL ,&lt;br /&gt;
`koniec` DATE NOT NULL ,&lt;br /&gt;
`obsah` TEXT NOT NULL&lt;br /&gt;
) ENGINE = InnoDB;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tabuľka ''rozpocet'':&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE TABLE `projekty`.`rozpocet` (&lt;br /&gt;
`projekt_id` INT NOT NULL ,&lt;br /&gt;
`projekt_rok` INT NOT NULL ,&lt;br /&gt;
`bezne` REAL NOT NULL ,&lt;br /&gt;
`kapitalove` REAL NOT NULL ,&lt;br /&gt;
PRIMARY KEY ( `projekt_id` , `projekt_rok` ) &lt;br /&gt;
) ENGINE = InnoDB;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===CREATE VIEW===&lt;br /&gt;
Príkazom CREATE VIEW&amp;lt;ref&amp;gt;create view (mysql) http://dev.mysql.com/doc/refman/5.5/en/create-view.html&amp;lt;/ref&amp;gt; môžeme vytvoriť pohľad. Pohľadom sa venuje samostatná [[SQL - pohľady|kapitola]]. Syntax príkazu CREATE VIEW je nasledovná&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE&lt;br /&gt;
    [OR REPLACE]&lt;br /&gt;
    [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]&lt;br /&gt;
    [DEFINER = { user | CURRENT_USER }]&lt;br /&gt;
    [SQL SECURITY { DEFINER | INVOKER }]&lt;br /&gt;
    VIEW view_name [(column_list)]&lt;br /&gt;
    AS select_statement&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
kde:&lt;br /&gt;
*OR REPLACE - Funkcia nahradí všetky výskytnuté určené reťazce ako hľadaný reťazec s náhradným reťazcom.&lt;br /&gt;
*ALGORITHM - základy kryptografie&lt;br /&gt;
*DEFINER - môže v rámci konštantného výrazu použiť skôr definovanú symbolickú konštantu&lt;br /&gt;
*SQL SECURUTY - vytvorí na databázovom serveri uloženú procedúru&lt;br /&gt;
*select_statement -&lt;br /&gt;
&lt;br /&gt;
'''Príklad:'''&lt;br /&gt;
&lt;br /&gt;
Vytvorte pohľad na základe dotazu: Koľko je v databáze projektov, rozdelených podľa typov projektov. Nezaujíma nás teda celkový počet projektov ale počet projektov podľa typu projektu.&lt;br /&gt;
&lt;br /&gt;
Riešenie:&lt;br /&gt;
SQL dotaz, pomocou ktorého dosiahneme požadovaný výsledok&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE ALGORITHM = UNDEFINED VIEW `clenenie_projektov` AS SELECT * &lt;br /&gt;
FROM `projekt` &lt;br /&gt;
ORDER BY `projekt`.`typ_projektu` ASC &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vytvorenie pohľadu ''rodelenie_projektov''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE ALGORITHM = UNDEFINED VIEW `Rozdelenie_projektov` AS SELECT id, typ_projektu&lt;br /&gt;
FROM `projekt` &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===CREATE PROCEDURE===&lt;br /&gt;
Príkaz CREATE PROCEDURE&amp;lt;ref&amp;gt;CREATE PROCEDURE (mysql) http://dev.mysql.com/doc/refman/5.5/en/create-procedure.html&amp;lt;/ref&amp;gt; vytvorí na databázovom serveri uloženú procedúru. Podrobnejšie o uložených procedúrach hovorí kapitola [[SQL - uložené procedúry]]. Syntax je nasledujúca:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE&lt;br /&gt;
    [DEFINER = { user | CURRENT_USER }]&lt;br /&gt;
    PROCEDURE sp_name ([proc_parameter[,...]])&lt;br /&gt;
    routine_body&lt;br /&gt;
&lt;br /&gt;
proc_parameter:&lt;br /&gt;
    [ IN | OUT | INOUT ] param_name type&lt;br /&gt;
&lt;br /&gt;
type:&lt;br /&gt;
    Ľubovoľný dátový SQL typ.&lt;br /&gt;
&lt;br /&gt;
routine_body:&lt;br /&gt;
    SQL príkaz&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
kde:&lt;br /&gt;
*DEFINER - nastavuje užívateľskú premennú alebo zobrazí jej hodnotu&lt;br /&gt;
*sp_name - názov procedúry&lt;br /&gt;
*proc_parameter - procedúra parametrov&lt;br /&gt;
**IN - V &lt;br /&gt;
**OUT - nesprávna procedúra &lt;br /&gt;
**INOUT - v nesprávnej procedúre&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Úloha:'''&lt;br /&gt;
Vytvorte uloženú ktorá v tabuľke rozpočet zvýši určitému projektu (jeho ID bude vstupný parameter procedúry) bežné a kapitálové výdavky 1.1x.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Riešenie:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE PROCEDURE zvysKV(.....&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ukážka použitia uloženej procedúry&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
   CALL zvysKV(1)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===CREATE TRIGGER===&lt;br /&gt;
Príkaz CREATE TRIGGER&amp;lt;ref&amp;gt;CREATE TRIGGER (mysql) http://dev.mysql.com/doc/refman/5.5/en/create-trigger.html&amp;lt;/ref&amp;gt; vytvorí v databáze trigger (spúšťač, resp. automaticky spúšťanú procedúru). Jeho syntax je nasledovná:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE&lt;br /&gt;
    [DEFINER = { user | CURRENT_USER }]&lt;br /&gt;
    TRIGGER trigger_name trigger_time trigger_event&lt;br /&gt;
    ON tbl_name FOR EACH ROW trigger_body&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
kde:&lt;br /&gt;
*DEFINER - nastavuje užívateľskú premennú alebo zobrazí jej hodnotu&lt;br /&gt;
*trigger_name - názov triggeru&lt;br /&gt;
*trigger_time - čas triggeru&lt;br /&gt;
*trigger_event - akcia triggeru&lt;br /&gt;
*FOR EACH ROW - táto klauzula hovorí, či sa trigger má vykonať zvlášť pre každý riadok, alebo iba raz&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Úloha:'''&lt;br /&gt;
Vytvorte trigger, ktorý sa bude spúšťať pred modifikáciou záznamu v tabuľke rozpočet. Tento trigger nedovolí urobiť zmenu rozpočtu aktuálneho projektu mimo obdobia riešenia projektu. Teda ak je projekt naplánovaný od roku 2010 do 2012, tak ak sa niekto pokúsi urobiť zmenu mimo tohoto obdobia, tento trigger mu to nedovolí.&lt;br /&gt;
&lt;br /&gt;
Riešenie:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
...riešnie&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==ALTER==&lt;br /&gt;
Príkaz ALTER slúži na modifikovanie štruktúry databázových objektov.&lt;br /&gt;
===ALTER DATABASE===&lt;br /&gt;
Príkaz ALTER DATABASE&amp;lt;ref&amp;gt;ALTER DATABASE (mysql) http://dev.mysql.com/doc/refman/5.5/en/alter-database.html&amp;lt;/ref&amp;gt;dovoľuje zmeniť vlastnosti databázy ako napríklad meno, znakovú sadu, zotriedenie. Syntax je nasledujúca:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
ALTER {DATABASE | SCHEMA} [db_name]&lt;br /&gt;
    alter_specification ...&lt;br /&gt;
ALTER {DATABASE | SCHEMA} db_name&lt;br /&gt;
    UPGRADE DATA DIRECTORY NAME&lt;br /&gt;
&lt;br /&gt;
alter_specification:&lt;br /&gt;
    [DEFAULT] CHARACTER SET [=] charset_name&lt;br /&gt;
  | [DEFAULT] COLLATE [=] collation_name&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
kde:&lt;br /&gt;
*alter_specification - &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Úloha:'''&lt;br /&gt;
Zmeňte znakovú sadu databázy projekty na utf8-slovak-ci.&lt;br /&gt;
&lt;br /&gt;
Riešenie:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
...riešenie&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===ALTER TABLE===&lt;br /&gt;
Príkaz ALTER TABLE&amp;lt;ref&amp;gt;ALTER TABLE(mysql) http://dev.mysql.com/doc/refman/5.5/en/alter-table.html&amp;lt;/ref&amp;gt;dovoľuje zmeniť vlastnosti tabuľky ako napríklad meno, dátový typ, znakovú sadu, zotriedenie. Syntax je nasledujúca:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
ALTER [IGNORE] TABLE tbl_name alter_spec [, alter_spec ...] &lt;br /&gt;
&lt;br /&gt;
alter_specification: &lt;br /&gt;
    ADD [COLUMN] create_definition [FIRST | AFTER column_name ] &lt;br /&gt;
| ADD [COLUMN] (create_definition, create_definition,...) &lt;br /&gt;
| ADD INDEX [index_name] (index_col_name,...) &lt;br /&gt;
| ADD PRIMARY KEY (index_col_name,...) &lt;br /&gt;
| ADD UNIQUE [index_name] (index_col_name,...) &lt;br /&gt;
| ADD FULLTEXT [index_name] (index_col_name,...) &lt;br /&gt;
| ALTER [COLUMN] col_name {SET DEFAULT literal | DROP DEFAULT} &lt;br /&gt;
| CHANGE [COLUMN] old_col_name create_definition &lt;br /&gt;
| MODIFY [COLUMN] create_definition &lt;br /&gt;
| DROP [COLUMN] col_name &lt;br /&gt;
| DROP PRIMARY KEY &lt;br /&gt;
| DROP INDEX index_name &lt;br /&gt;
| RENAME [TO] new_tbl_name &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
kde:&lt;br /&gt;
*IGNORE - ignorovať &lt;br /&gt;
*FIRST, AFTER - &lt;br /&gt;
*ADD - pridávanie dát&lt;br /&gt;
*ALTER - zmeniť&lt;br /&gt;
*CHANGE - &lt;br /&gt;
*MODIFY -&lt;br /&gt;
*DROP - Odeberie jeden alebo viac databáz alebo databazové snímky z instance SQL Server&lt;br /&gt;
*RENAME - zmena mena&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Úloha:'''&lt;br /&gt;
Zmente názov atribútu ''zaciatok'' na ''zaciatok_riesenia'' a názov atribútu ''koniec'' na ''koniec_riesenia''.&lt;br /&gt;
&lt;br /&gt;
Riešenie:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
   ALTER TABLE `projekt` CHANGE `zaciatok` `zaciatok_riesenia` DATE NOT NULL&lt;br /&gt;
   ALTER TABLE `projekt` CHANGE `koniec` `koniec_riesenia` DATE NOT NULL  &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==DROP==&lt;br /&gt;
Pomocou príkazu DROP sa mažú databázové objekty. Príkaz DROP môžeme použiť na mazanie&lt;br /&gt;
*databáz - DROP DATABASE&lt;br /&gt;
*tabuliek - DROP TABLE&lt;br /&gt;
*procedúr - DROP PROCEDURE&lt;br /&gt;
*triggerov - DROP TRIGGER&lt;br /&gt;
*pohľadov - DROP VIEW&lt;br /&gt;
===DROP TABLE===&lt;br /&gt;
Zmazanie tabuľky sa realizuje pomocou príkazu DROP TABLE&amp;lt;ref&amp;gt;Drop table (mysql) http://dev.mysql.com/doc/refman/5.5/en/drop-table.html&amp;lt;/ref&amp;gt;. Syntax je nasledujúca:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
DROP [TEMPORARY] TABLE [IF EXISTS]&lt;br /&gt;
    tbl_name [, tbl_name] ...&lt;br /&gt;
    [RESTRICT | CASCADE]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
kde:&lt;br /&gt;
*tbl_name - názov tabuľky, ktorú ideme mazať.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Úloha:'''&lt;br /&gt;
Zmažte všetky tabuľky na databáze ''projekty''.&lt;br /&gt;
&lt;br /&gt;
Riešenie:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
DROP [TEMPORARY] TABLE 'projekt' AND 'rozpocet'&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===DROP DATABASE===&lt;br /&gt;
Zmazanie databázy sa realizuje pomocou príkazu DROP DATABASE&amp;lt;ref&amp;gt;Drop database (mysql) http://dev.mysql.com/doc/refman/5.5/en/drop-database.html&amp;lt;/ref&amp;gt;. Syntax je nasledujúca:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
   DROP {DATABASE | SCHEMA} [IF EXISTS] db_name&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Úloha:'''&lt;br /&gt;
Zmažte databázu ''projekty''.&lt;br /&gt;
&lt;br /&gt;
Riešenie:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
DROP {DATABASE | SCHEMA} [IF EXISTS] 'projekty' &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
===Mazanie ostatných objektov===&lt;br /&gt;
&lt;br /&gt;
'''Mazanie pohľadu:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
DROP VIEW `rozdelenie_projektov`&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Mazanie uloženej procedúry:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
DROP VIEW 'PROCEDURE zvysKV'&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Mazanie triggera:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Zdroje a odkazy==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lusing</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=SQL_-_DDL&amp;diff=8564</id>
		<title>SQL - DDL</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=SQL_-_DDL&amp;diff=8564"/>
		<updated>2010-12-14T19:42:33Z</updated>

		<summary type="html">&lt;p&gt;Lusing: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Skripta_dbs}}&lt;br /&gt;
{{Draft}}&lt;br /&gt;
DDL (Data Definition Language) - jazyk pre dátových štruktúr. V databázových systémoch predstavuje podskupinu jazyka SQL pre vytváranie a modifikáciu databázových objektov.&lt;br /&gt;
==Prípadová štúdia - evidencia projektov==&lt;br /&gt;
V tejto kapitole bude opísaný postup pri vytváraní novej databázy, nových tabuliek. Následne sa vytvorené tabuľky pokúsime zmodifikovať (pridanie atribútov, zmena názvu atribútov...) a na koniec zmažeme všetky tabuľky aj databázu.&lt;br /&gt;
&lt;br /&gt;
Pre túto kapitolu si zoberme príklad evidencie projektov a ich rozpočtu. V našom príklade indentifikujeme 2 základné entity: projekt a rozpočet na projekt. Atribúty týchto entít:&lt;br /&gt;
*'''projekt'''&lt;br /&gt;
**id projektu (id) - primárny kľúč&lt;br /&gt;
**názov projektu (nazov) - reťazec&lt;br /&gt;
**typ projektu (typ_projektu) - vymenovaný typ:  IP, ESF, STREP, CRAFT, CRP &amp;lt;ref&amp;gt;Typy projekov - http://www.bic.sk/projects.php?id=32&amp;amp;tid=24&amp;lt;/ref&amp;gt;&lt;br /&gt;
**začiatok riešenia projektu (zaciatok) - dátum&lt;br /&gt;
**koniec riešenia projektu (koniec) - dátum&lt;br /&gt;
**obsah riešenia projektu (obsah) - text&lt;br /&gt;
&lt;br /&gt;
Keďže v projektoch sa robí na každý rok iný rozpočet, v tabuľke rozpočet bude predstavovať jeden záznam rozpočet pre daný projekt na jeden rok. Ak by sa projekt riešil 5 rokov, v tabuľke rozpočet bude pre tento projekt 5 záznamov.&lt;br /&gt;
*'''rozpočet'''&lt;br /&gt;
**id projektu, pre ktorý je tento rozpočet (projekt_id) - primárny kľúč&lt;br /&gt;
**rok riešenia projektu (projekt_rok) - primárny kľúč&lt;br /&gt;
**bežné výdavky (bezne) - celé číslo &lt;br /&gt;
**kapitálové výdavky (kapitalove) - celé číslo&lt;br /&gt;
&lt;br /&gt;
==CREATE==&lt;br /&gt;
===CREATE DATABASE&amp;lt;ref&amp;gt;Create database (mysql) http://dev.mysql.com/doc/refman/5.5/en/create-database.html&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name&lt;br /&gt;
    [create_specification] ...&lt;br /&gt;
&lt;br /&gt;
create_specification:&lt;br /&gt;
    [DEFAULT] CHARACTER SET [=] charset_name&lt;br /&gt;
  | [DEFAULT] COLLATE [=] collation_name&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tu bude popis nasledujúcich parametrov:&lt;br /&gt;
*IF NOT EXISTS - príkaz neprevedie žiadnu akciu&lt;br /&gt;
*db_name - názov databázy&lt;br /&gt;
*CHARACTER SET - Ak by ste nepoužili príkaz SET CHARACTER SET utf8, databáza by sa snažila vkladané textové reťazce ešte raz konvertovať do UTF-8. Vzniklo by tzv. &amp;quot;dvojité&amp;quot; kódovanie&lt;br /&gt;
*COLLATE  - usporiadanie reťazcov&lt;br /&gt;
&lt;br /&gt;
'''Príklad:'''&lt;br /&gt;
&lt;br /&gt;
Vytvorte databázu ''projekty''. Znakovú sadu pre celú databázu nastavte utf-8.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
   CREATE DATABASE Projekty CHARACTER SET utf8&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===CREATE TABLE&amp;lt;ref&amp;gt;Create tabel (mysql) http://dev.mysql.com/doc/refman/5.5/en/create-table.html&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name&lt;br /&gt;
    (create_definition,...)&lt;br /&gt;
    [table_options]&lt;br /&gt;
    [partition_options]&lt;br /&gt;
&lt;br /&gt;
create_definition:&lt;br /&gt;
    col_name column_definition&lt;br /&gt;
  | [CONSTRAINT [symbol]] PRIMARY KEY [index_type] (index_col_name,...)&lt;br /&gt;
      [index_option] ...&lt;br /&gt;
  | {INDEX|KEY} [index_name] [index_type] (index_col_name,...)&lt;br /&gt;
      [index_option] ...&lt;br /&gt;
&lt;br /&gt;
column_definition:&lt;br /&gt;
    data_type [NOT NULL | NULL] [DEFAULT default_value]&lt;br /&gt;
      [AUTO_INCREMENT] [UNIQUE [KEY] | [PRIMARY] KEY]&lt;br /&gt;
      [COMMENT 'string']&lt;br /&gt;
&lt;br /&gt;
data_type:&lt;br /&gt;
    pozri &amp;quot;Dátové typy&amp;quot;&lt;br /&gt;
&lt;br /&gt;
index_type:&lt;br /&gt;
    USING {BTREE | HASH}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
kde pri definícii tabuľky:&lt;br /&gt;
*TEMPORARY - ten označuje, že se má vykonať následujúcu operaciu, ale že se bude jednať len o dočasný príkaz&lt;br /&gt;
*IF NOT EXISTS - príkaz neprevedie žiadnu akciu&lt;br /&gt;
*tbl_name - názov tabuľky&lt;br /&gt;
pri definícii štruktúry tabuľky(create_definition):&lt;br /&gt;
*CONSTRAINT - jedná sa v podstate o obmedzené pomenovanie&lt;br /&gt;
*PRIMARY KEY - primarny kľúč&lt;br /&gt;
*INDEX - spracujú vždy všetky vety v databáze&lt;br /&gt;
*KEY - kľúč&lt;br /&gt;
pri definícii konkrétneho typu (column_definition):&lt;br /&gt;
*NOT NULL - hodnota bez nuly&lt;br /&gt;
*NULL - ziadna hodnota&lt;br /&gt;
*DEFAULT - je príkaz ktorý nám vraví čo sa má stať&lt;br /&gt;
*AUTO_INCREMENT - pomáha vygenerovať hodnotu&lt;br /&gt;
*UNIQUE - bude vytvorený unikátný index z hodnôt tochto slpca, hodnota NULL je z indexu vylúčena &lt;br /&gt;
*PRIMARY - &lt;br /&gt;
*COMMENT - Poznamka autora k vysvetleniu čo daný skript robí&lt;br /&gt;
Pri definícii typu indexu (index_type):&lt;br /&gt;
*BTREE -&lt;br /&gt;
*HASH - Pre každý příkaz vyhľadá a zapametá polohu v ceste pre hledanie príkazu.&lt;br /&gt;
&lt;br /&gt;
'''Úloha:'''&lt;br /&gt;
&lt;br /&gt;
Podľa prípadovej štúdie (evidencia projektov) vytvorte tabuľky ''projekt'' a ''rozpocet''. Typy jednotlivých atribútov sú opísané taktiež v tejto prípadovej štúdii na začiatku tejto kapitoly.&lt;br /&gt;
&lt;br /&gt;
Riešenie:&lt;br /&gt;
&lt;br /&gt;
Tabuľka ''projekt'':&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE TABLE `projekty`.`Projekt` (&lt;br /&gt;
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,&lt;br /&gt;
`nazov` VARCHAR( 64 ) NOT NULL ,&lt;br /&gt;
`typ_projektu` ENUM( 'IP', 'ESF', 'STREP', 'CRAFT', 'CRP' ) NOT NULL ,&lt;br /&gt;
`zaciatok` DATE NOT NULL ,&lt;br /&gt;
`koniec` DATE NOT NULL ,&lt;br /&gt;
`obsah` TEXT NOT NULL&lt;br /&gt;
) ENGINE = InnoDB;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tabuľka ''rozpocet'':&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE TABLE `projekty`.`rozpocet` (&lt;br /&gt;
`projekt_id` INT NOT NULL ,&lt;br /&gt;
`projekt_rok` INT NOT NULL ,&lt;br /&gt;
`bezne` INT NOT NULL ,&lt;br /&gt;
`kapitalove` INT NOT NULL ,&lt;br /&gt;
PRIMARY KEY ( `projekt_id` , `projekt_rok` ) &lt;br /&gt;
) ENGINE = MYISAM ;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===CREATE VIEW===&lt;br /&gt;
Príkazom CREATE VIEW&amp;lt;ref&amp;gt;create view (mysql) http://dev.mysql.com/doc/refman/5.5/en/create-view.html&amp;lt;/ref&amp;gt; môžeme vytvoriť pohľad. Pohľadom sa venuje samostatná [[SQL - pohľady|kapitola]]. Syntax príkazu CREATE VIEW je nasledovná&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE&lt;br /&gt;
    [OR REPLACE]&lt;br /&gt;
    [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]&lt;br /&gt;
    [DEFINER = { user | CURRENT_USER }]&lt;br /&gt;
    [SQL SECURITY { DEFINER | INVOKER }]&lt;br /&gt;
    VIEW view_name [(column_list)]&lt;br /&gt;
    AS select_statement&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
kde:&lt;br /&gt;
*OR REPLACE - Funkcia nahradí všetky výskytnuté určené reťazce ako hľadaný reťazec s náhradným reťazcom.&lt;br /&gt;
*ALGORITHM - základy kryptografie&lt;br /&gt;
*DEFINER - môže v rámci konštantného výrazu použiť skôr definovanú symbolickú konštantu&lt;br /&gt;
*SQL SECURUTY - vytvorí na databázovom serveri uloženú procedúru&lt;br /&gt;
*select_statement -&lt;br /&gt;
&lt;br /&gt;
'''Príklad:'''&lt;br /&gt;
&lt;br /&gt;
Vytvorte pohľad na základe dotazu: Koľko je v databáze projektov, rozdelených podľa typov projektov. Nezaujíma nás teda celkový počet projektov ale počet projektov podľa typu projektu.&lt;br /&gt;
&lt;br /&gt;
Riešenie:&lt;br /&gt;
SQL dotaz, pomocou ktorého dosiahneme požadovaný výsledok&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE ALGORITHM = UNDEFINED VIEW `clenenie_projektov` AS SELECT * &lt;br /&gt;
FROM `projekt` &lt;br /&gt;
ORDER BY `projekt`.`typ_projektu` ASC &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vytvorenie pohľadu ''rodelenie_projektov''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE ALGORITHM = UNDEFINED VIEW `Rozdelenie_projektov` AS SELECT id, typ_projektu&lt;br /&gt;
FROM `projekt` &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===CREATE PROCEDURE===&lt;br /&gt;
Príkaz CREATE PROCEDURE&amp;lt;ref&amp;gt;CREATE PROCEDURE (mysql) http://dev.mysql.com/doc/refman/5.5/en/create-procedure.html&amp;lt;/ref&amp;gt; vytvorí na databázovom serveri uloženú procedúru. Podrobnejšie o uložených procedúrach hovorí kapitola [[SQL - uložené procedúry]]. Syntax je nasledujúca:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE&lt;br /&gt;
    [DEFINER = { user | CURRENT_USER }]&lt;br /&gt;
    PROCEDURE sp_name ([proc_parameter[,...]])&lt;br /&gt;
    routine_body&lt;br /&gt;
&lt;br /&gt;
proc_parameter:&lt;br /&gt;
    [ IN | OUT | INOUT ] param_name type&lt;br /&gt;
&lt;br /&gt;
type:&lt;br /&gt;
    Ľubovoľný dátový SQL typ.&lt;br /&gt;
&lt;br /&gt;
routine_body:&lt;br /&gt;
    SQL príkaz&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
kde:&lt;br /&gt;
*DEFINER - nastavuje užívateľskú premennú alebo zobrazí jej hodnotu&lt;br /&gt;
*sp_name - názov procedúry&lt;br /&gt;
*proc_parameter - procedúra parametrov&lt;br /&gt;
**IN - V &lt;br /&gt;
**OUT - nesprávna procedúra &lt;br /&gt;
**INOUT - v nesprávnej procedúre&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Úloha:'''&lt;br /&gt;
Vytvorte uloženú ktorá v tabuľke rozpočet zvýši určitému projektu (jeho ID bude vstupný parameter procedúry) bežné a kapitálové výdavky 1.1x.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Riešenie:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE PROCEDURE zvysKV(.....&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ukážka použitia uloženej procedúry&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
   CALL zvysKV(1)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===CREATE TRIGGER===&lt;br /&gt;
Príkaz CREATE TRIGGER&amp;lt;ref&amp;gt;CREATE TRIGGER (mysql) http://dev.mysql.com/doc/refman/5.5/en/create-trigger.html&amp;lt;/ref&amp;gt; vytvorí v databáze trigger (spúšťač, resp. automaticky spúšťanú procedúru). Jeho syntax je nasledovná:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE&lt;br /&gt;
    [DEFINER = { user | CURRENT_USER }]&lt;br /&gt;
    TRIGGER trigger_name trigger_time trigger_event&lt;br /&gt;
    ON tbl_name FOR EACH ROW trigger_body&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
kde:&lt;br /&gt;
*DEFINER - nastavuje užívateľskú premennú alebo zobrazí jej hodnotu&lt;br /&gt;
*trigger_name - názov triggeru&lt;br /&gt;
*trigger_time - čas triggeru&lt;br /&gt;
*trigger_event - akcia triggeru&lt;br /&gt;
*FOR EACH ROW - táto klauzula hovorí, či sa trigger má vykonať zvlášť pre každý riadok, alebo iba raz&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Úloha:'''&lt;br /&gt;
Vytvorte trigger, ktorý sa bude spúšťať pred modifikáciou záznamu v tabuľke rozpočet. Tento trigger nedovolí urobiť zmenu rozpočtu aktuálneho projektu mimo obdobia riešenia projektu. Teda ak je projekt naplánovaný od roku 2010 do 2012, tak ak sa niekto pokúsi urobiť zmenu mimo tohoto obdobia, tento trigger mu to nedovolí.&lt;br /&gt;
&lt;br /&gt;
Riešenie:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
...riešnie&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==ALTER==&lt;br /&gt;
Príkaz ALTER slúži na modifikovanie štruktúry databázových objektov.&lt;br /&gt;
===ALTER DATABASE===&lt;br /&gt;
Príkaz ALTER DATABASE&amp;lt;ref&amp;gt;ALTER DATABASE (mysql) http://dev.mysql.com/doc/refman/5.5/en/alter-database.html&amp;lt;/ref&amp;gt;dovoľuje zmeniť vlastnosti databázy ako napríklad meno, znakovú sadu, zotriedenie. Syntax je nasledujúca:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
ALTER {DATABASE | SCHEMA} [db_name]&lt;br /&gt;
    alter_specification ...&lt;br /&gt;
ALTER {DATABASE | SCHEMA} db_name&lt;br /&gt;
    UPGRADE DATA DIRECTORY NAME&lt;br /&gt;
&lt;br /&gt;
alter_specification:&lt;br /&gt;
    [DEFAULT] CHARACTER SET [=] charset_name&lt;br /&gt;
  | [DEFAULT] COLLATE [=] collation_name&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
kde:&lt;br /&gt;
*alter_specification - &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Úloha:'''&lt;br /&gt;
Zmeňte znakovú sadu databázy projekty na utf8-slovak-ci.&lt;br /&gt;
&lt;br /&gt;
Riešenie:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
...riešenie&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===ALTER TABLE===&lt;br /&gt;
Príkaz ALTER TABLE&amp;lt;ref&amp;gt;ALTER TABLE(mysql) http://dev.mysql.com/doc/refman/5.5/en/alter-table.html&amp;lt;/ref&amp;gt;dovoľuje zmeniť vlastnosti tabuľky ako napríklad meno, dátový typ, znakovú sadu, zotriedenie. Syntax je nasledujúca:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
ALTER [IGNORE] TABLE tbl_name alter_spec [, alter_spec ...] &lt;br /&gt;
&lt;br /&gt;
alter_specification: &lt;br /&gt;
    ADD [COLUMN] create_definition [FIRST | AFTER column_name ] &lt;br /&gt;
| ADD [COLUMN] (create_definition, create_definition,...) &lt;br /&gt;
| ADD INDEX [index_name] (index_col_name,...) &lt;br /&gt;
| ADD PRIMARY KEY (index_col_name,...) &lt;br /&gt;
| ADD UNIQUE [index_name] (index_col_name,...) &lt;br /&gt;
| ADD FULLTEXT [index_name] (index_col_name,...) &lt;br /&gt;
| ALTER [COLUMN] col_name {SET DEFAULT literal | DROP DEFAULT} &lt;br /&gt;
| CHANGE [COLUMN] old_col_name create_definition &lt;br /&gt;
| MODIFY [COLUMN] create_definition &lt;br /&gt;
| DROP [COLUMN] col_name &lt;br /&gt;
| DROP PRIMARY KEY &lt;br /&gt;
| DROP INDEX index_name &lt;br /&gt;
| RENAME [TO] new_tbl_name &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
kde:&lt;br /&gt;
*IGNORE - ignorovať &lt;br /&gt;
*FIRST, AFTER - &lt;br /&gt;
*ADD - pridávanie dát&lt;br /&gt;
*ALTER - zmeniť&lt;br /&gt;
*CHANGE - &lt;br /&gt;
*MODIFY -&lt;br /&gt;
*DROP - Odeberie jeden alebo viac databáz alebo databazové snímky z instance SQL Server&lt;br /&gt;
*RENAME - zmena mena&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Úloha:'''&lt;br /&gt;
Zmente názov atribútu ''zaciatok'' na ''zaciatok_riesenia'' a názov atribútu ''koniec'' na ''koniec_riesenia''.&lt;br /&gt;
&lt;br /&gt;
Riešenie:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
   ALTER TABLE `projekt` CHANGE `zaciatok` `zaciatok_riesenia` DATE NOT NULL&lt;br /&gt;
   ALTER TABLE `projekt` CHANGE `koniec` `koniec_riesenia` DATE NOT NULL  &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==DROP==&lt;br /&gt;
Pomocou príkazu DROP sa mažú databázové objekty. Príkaz DROP môžeme použiť na mazanie&lt;br /&gt;
*databáz - DROP DATABASE&lt;br /&gt;
*tabuliek - DROP TABLE&lt;br /&gt;
*procedúr - DROP PROCEDURE&lt;br /&gt;
*triggerov - DROP TRIGGER&lt;br /&gt;
*pohľadov - DROP VIEW&lt;br /&gt;
===DROP TABLE===&lt;br /&gt;
Zmazanie tabuľky sa realizuje pomocou príkazu DROP TABLE&amp;lt;ref&amp;gt;Drop table (mysql) http://dev.mysql.com/doc/refman/5.5/en/drop-table.html&amp;lt;/ref&amp;gt;. Syntax je nasledujúca:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
DROP [TEMPORARY] TABLE [IF EXISTS]&lt;br /&gt;
    tbl_name [, tbl_name] ...&lt;br /&gt;
    [RESTRICT | CASCADE]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
kde:&lt;br /&gt;
*tbl_name - názov tabuľky, ktorú ideme mazať.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Úloha:'''&lt;br /&gt;
Zmažte všetky tabuľky na databáze ''projekty''.&lt;br /&gt;
&lt;br /&gt;
Riešenie:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
DROP [TEMPORARY] TABLE 'projekt' AND 'rozpocet'&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===DROP DATABASE===&lt;br /&gt;
Zmazanie databázy sa realizuje pomocou príkazu DROP DATABASE&amp;lt;ref&amp;gt;Drop database (mysql) http://dev.mysql.com/doc/refman/5.5/en/drop-database.html&amp;lt;/ref&amp;gt;. Syntax je nasledujúca:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
   DROP {DATABASE | SCHEMA} [IF EXISTS] db_name&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Úloha:'''&lt;br /&gt;
Zmažte databázu ''projekty''.&lt;br /&gt;
&lt;br /&gt;
Riešenie:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
DROP {DATABASE | SCHEMA} [IF EXISTS] 'projekty' &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
===Mazanie ostatných objektov===&lt;br /&gt;
&lt;br /&gt;
'''Mazanie pohľadu:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
DROP VIEW `rozdelenie_projektov`&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Mazanie uloženej procedúry:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
DROP VIEW 'PROCEDURE zvysKV'&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Mazanie triggera:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Zdroje a odkazy==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lusing</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=SQL_-_DDL&amp;diff=8563</id>
		<title>SQL - DDL</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=SQL_-_DDL&amp;diff=8563"/>
		<updated>2010-12-14T16:49:58Z</updated>

		<summary type="html">&lt;p&gt;Lusing: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Skripta_dbs}}&lt;br /&gt;
{{Draft}}&lt;br /&gt;
DDL (Data Definition Language) - jazyk pre dátových štruktúr. V databázových systémoch predstavuje podskupinu jazyka SQL pre vytváranie a modifikáciu databázových objektov.&lt;br /&gt;
==Prípadová štúdia - evidencia projektov==&lt;br /&gt;
V tejto kapitole bude opísaný postup pri vytváraní novej databázy, nových tabuliek. Následne sa vytvorené tabuľky pokúsime zmodifikovať (pridanie atribútov, zmena názvu atribútov...) a na koniec zmažeme všetky tabuľky aj databázu.&lt;br /&gt;
&lt;br /&gt;
Pre túto kapitolu si zoberme príklad evidencie projektov a ich rozpočtu. V našom príklade indentifikujeme 2 základné entity: projekt a rozpočet na projekt. Atribúty týchto entít:&lt;br /&gt;
*'''projekt'''&lt;br /&gt;
**id projektu (id) - primárny kľúč&lt;br /&gt;
**názov projektu (nazov) - reťazec&lt;br /&gt;
**typ projektu (typ_projektu) - vymenovaný typ:  IP, ESF, STREP, CRAFT, CRP &amp;lt;ref&amp;gt;Typy projekov - http://www.bic.sk/projects.php?id=32&amp;amp;tid=24&amp;lt;/ref&amp;gt;&lt;br /&gt;
**začiatok riešenia projektu (zaciatok) - dátum&lt;br /&gt;
**koniec riešenia projektu (koniec) - dátum&lt;br /&gt;
**obsah riešenia projektu (obsah) - text&lt;br /&gt;
&lt;br /&gt;
Keďže v projektoch sa robí na každý rok iný rozpočet, v tabuľke rozpočet bude predstavovať jeden záznam rozpočet pre daný projekt na jeden rok. Ak by sa projekt riešil 5 rokov, v tabuľke rozpočet bude pre tento projekt 5 záznamov.&lt;br /&gt;
*'''rozpočet'''&lt;br /&gt;
**id projektu, pre ktorý je tento rozpočet (projekt_id) - primárny kľúč&lt;br /&gt;
**rok riešenia projektu (projekt_rok) - primárny kľúč&lt;br /&gt;
**bežné výdavky (bezne) - celé číslo &lt;br /&gt;
**kapitálové výdavky (kapitalove) - celé číslo&lt;br /&gt;
&lt;br /&gt;
==CREATE==&lt;br /&gt;
===CREATE DATABASE&amp;lt;ref&amp;gt;Create database (mysql) http://dev.mysql.com/doc/refman/5.5/en/create-database.html&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name&lt;br /&gt;
    [create_specification] ...&lt;br /&gt;
&lt;br /&gt;
create_specification:&lt;br /&gt;
    [DEFAULT] CHARACTER SET [=] charset_name&lt;br /&gt;
  | [DEFAULT] COLLATE [=] collation_name&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tu bude popis nasledujúcich parametrov:&lt;br /&gt;
*IF NOT EXISTS - &lt;br /&gt;
*db_name - &lt;br /&gt;
*CHARACTER SET -&lt;br /&gt;
*COLLATE  - &lt;br /&gt;
&lt;br /&gt;
'''Príklad:'''&lt;br /&gt;
&lt;br /&gt;
Vytvorte databázu ''projekty''. Znakovú sadu pre celú databázu nastavte utf-8.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
   CREATE DATABASE Projekty CHARACTER SET utf8&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===CREATE TABLE&amp;lt;ref&amp;gt;Create tabel (mysql) http://dev.mysql.com/doc/refman/5.5/en/create-table.html&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name&lt;br /&gt;
    (create_definition,...)&lt;br /&gt;
    [table_options]&lt;br /&gt;
    [partition_options]&lt;br /&gt;
&lt;br /&gt;
create_definition:&lt;br /&gt;
    col_name column_definition&lt;br /&gt;
  | [CONSTRAINT [symbol]] PRIMARY KEY [index_type] (index_col_name,...)&lt;br /&gt;
      [index_option] ...&lt;br /&gt;
  | {INDEX|KEY} [index_name] [index_type] (index_col_name,...)&lt;br /&gt;
      [index_option] ...&lt;br /&gt;
&lt;br /&gt;
column_definition:&lt;br /&gt;
    data_type [NOT NULL | NULL] [DEFAULT default_value]&lt;br /&gt;
      [AUTO_INCREMENT] [UNIQUE [KEY] | [PRIMARY] KEY]&lt;br /&gt;
      [COMMENT 'string']&lt;br /&gt;
&lt;br /&gt;
data_type:&lt;br /&gt;
    pozri &amp;quot;Dátové typy&amp;quot;&lt;br /&gt;
&lt;br /&gt;
index_type:&lt;br /&gt;
    USING {BTREE | HASH}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
kde pri definícii tabuľky:&lt;br /&gt;
*TEMPORARY - &lt;br /&gt;
*IF NOT EXISTS -&lt;br /&gt;
*tbl_name -&lt;br /&gt;
pri definícii štruktúry tabuľky(create_definition):&lt;br /&gt;
*CONSTRAINT - &lt;br /&gt;
*PRIMARY KEY - &lt;br /&gt;
*INDEX -&lt;br /&gt;
*KEY -&lt;br /&gt;
pri definícii konkrétneho typu (column_definition):&lt;br /&gt;
*NOT NULL -&lt;br /&gt;
*NULL -&lt;br /&gt;
*DEFAULT -&lt;br /&gt;
*AUTO_INCREMENT -&lt;br /&gt;
*UNIQUE -&lt;br /&gt;
*PRIMARY -&lt;br /&gt;
*COMMENT -&lt;br /&gt;
Pri definícii typu indexu (index_type):&lt;br /&gt;
*BTREE -&lt;br /&gt;
*HASH -&lt;br /&gt;
&lt;br /&gt;
'''Úloha:'''&lt;br /&gt;
&lt;br /&gt;
Podľa prípadovej štúdie (evidencia projektov) vytvorte tabuľky ''projekt'' a ''rozpocet''. Typy jednotlivých atribútov sú opísané taktiež v tejto prípadovej štúdii na začiatku tejto kapitoly.&lt;br /&gt;
&lt;br /&gt;
Riešenie:&lt;br /&gt;
&lt;br /&gt;
Tabuľka ''projekt'':&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE TABLE `projekty`.`Projekt` (&lt;br /&gt;
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,&lt;br /&gt;
`nazov` VARCHAR( 64 ) NOT NULL ,&lt;br /&gt;
`typ_projektu` ENUM( 'IP', 'ESF', 'STREP', 'CRAFT', 'CRP' ) NOT NULL ,&lt;br /&gt;
`zaciatok` DATE NOT NULL ,&lt;br /&gt;
`koniec` DATE NOT NULL ,&lt;br /&gt;
`obsah` TEXT NOT NULL&lt;br /&gt;
) ENGINE = InnoDB;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tabuľka ''rozpocet'':&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE TABLE `projekty`.`rozpocet` (&lt;br /&gt;
`projekt_id` INT NOT NULL ,&lt;br /&gt;
`projekt_rok` INT NOT NULL ,&lt;br /&gt;
`bezne` INT NOT NULL ,&lt;br /&gt;
`kapitalove` INT NOT NULL ,&lt;br /&gt;
PRIMARY KEY ( `projekt_id` , `projekt_rok` ) &lt;br /&gt;
) ENGINE = MYISAM ;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===CREATE VIEW===&lt;br /&gt;
Príkazom CREATE VIEW&amp;lt;ref&amp;gt;create view (mysql) http://dev.mysql.com/doc/refman/5.5/en/create-view.html&amp;lt;/ref&amp;gt; môžeme vytvoriť pohľad. Pohľadom sa venuje samostatná [[SQL - pohľady|kapitola]]. Syntax príkazu CREATE VIEW je nasledovná&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE&lt;br /&gt;
    [OR REPLACE]&lt;br /&gt;
    [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]&lt;br /&gt;
    [DEFINER = { user | CURRENT_USER }]&lt;br /&gt;
    [SQL SECURITY { DEFINER | INVOKER }]&lt;br /&gt;
    VIEW view_name [(column_list)]&lt;br /&gt;
    AS select_statement&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
kde:&lt;br /&gt;
*OR REPLACE - &lt;br /&gt;
*ALGORITHM -&lt;br /&gt;
*DEFINER -&lt;br /&gt;
*SQL SECURUTY -&lt;br /&gt;
*select_statement -&lt;br /&gt;
&lt;br /&gt;
'''Príklad:'''&lt;br /&gt;
&lt;br /&gt;
Vytvorte pohľad na základe dotazu: Koľko je v databáze projektov, rozdelených podľa typov projektov. Nezaujíma nás teda celkový počet projektov ale počet projektov podľa typu projektu.&lt;br /&gt;
&lt;br /&gt;
Riešenie:&lt;br /&gt;
SQL dotaz, pomocou ktorého dosiahneme požadovaný výsledok&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE ALGORITHM = UNDEFINED VIEW `clenenie_projektov` AS SELECT * &lt;br /&gt;
FROM `projekt` &lt;br /&gt;
ORDER BY `projekt`.`typ_projektu` ASC &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vytvorenie pohľadu ''rodelenie_projektov''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE ALGORITHM = UNDEFINED VIEW `Rozdelenie_projektov` AS SELECT id, typ_projektu&lt;br /&gt;
FROM `projekt` &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===CREATE PROCEDURE===&lt;br /&gt;
Príkaz CREATE PROCEDURE&amp;lt;ref&amp;gt;CREATE PROCEDURE (mysql) http://dev.mysql.com/doc/refman/5.5/en/create-procedure.html&amp;lt;/ref&amp;gt; vytvorí na databázovom serveri uloženú procedúru. Podrobnejšie o uložených procedúrach hovorí kapitola [[SQL - uložené procedúry]]. Syntax je nasledujúca:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE&lt;br /&gt;
    [DEFINER = { user | CURRENT_USER }]&lt;br /&gt;
    PROCEDURE sp_name ([proc_parameter[,...]])&lt;br /&gt;
    routine_body&lt;br /&gt;
&lt;br /&gt;
proc_parameter:&lt;br /&gt;
    [ IN | OUT | INOUT ] param_name type&lt;br /&gt;
&lt;br /&gt;
type:&lt;br /&gt;
    Ľubovoľný dátový SQL typ.&lt;br /&gt;
&lt;br /&gt;
routine_body:&lt;br /&gt;
    SQL príkaz&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
kde:&lt;br /&gt;
*DEFINER&lt;br /&gt;
*sp_name&lt;br /&gt;
*proc_parameter&lt;br /&gt;
**IN&lt;br /&gt;
**OUT&lt;br /&gt;
**INOUT&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Úloha:'''&lt;br /&gt;
Vytvorte uloženú ktorá v tabuľke rozpočet zvýši určitému projektu (jeho ID bude vstupný parameter procedúry) bežné a kapitálové výdavky 1.1x.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Riešenie:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE PROCEDURE zvysKV(.....&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ukážka použitia uloženej procedúry&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
   CALL zvysKV(1)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===CREATE TRIGGER===&lt;br /&gt;
Príkaz CREATE TRIGGER&amp;lt;ref&amp;gt;CREATE TRIGGER (mysql) http://dev.mysql.com/doc/refman/5.5/en/create-trigger.html&amp;lt;/ref&amp;gt; vytvorí v databáze trigger (spúšťač, resp. automaticky spúšťanú procedúru). Jeho syntax je nasledovná:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE&lt;br /&gt;
    [DEFINER = { user | CURRENT_USER }]&lt;br /&gt;
    TRIGGER trigger_name trigger_time trigger_event&lt;br /&gt;
    ON tbl_name FOR EACH ROW trigger_body&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
kde:&lt;br /&gt;
*DEFINER&lt;br /&gt;
*trigger_name&lt;br /&gt;
*trigger_time&lt;br /&gt;
*trigger_event&lt;br /&gt;
*FOR EACH ROW&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Úloha:'''&lt;br /&gt;
Vytvorte trigger, ktorý sa bude spúšťať pred modifikáciou záznamu v tabuľke rozpočet. Tento trigger nedovolí urobiť zmenu rozpočtu aktuálneho projektu mimo obdobia riešenia projektu. Teda ak je projekt naplánovaný od roku 2010 do 2012, tak ak sa niekto pokúsi urobiť zmenu mimo tohoto obdobia, tento trigger mu to nedovolí.&lt;br /&gt;
&lt;br /&gt;
Riešenie:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
...riešnie&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==ALTER==&lt;br /&gt;
Príkaz ALTER slúži na modifikovanie štruktúry databázových objektov.&lt;br /&gt;
===ALTER DATABASE===&lt;br /&gt;
Príkaz ALTER DATABASE&amp;lt;ref&amp;gt;ALTER DATABASE (mysql) http://dev.mysql.com/doc/refman/5.5/en/alter-database.html&amp;lt;/ref&amp;gt;dovoľuje zmeniť vlastnosti databázy ako napríklad meno, znakovú sadu, zotriedenie. Syntax je nasledujúca:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
ALTER {DATABASE | SCHEMA} [db_name]&lt;br /&gt;
    alter_specification ...&lt;br /&gt;
ALTER {DATABASE | SCHEMA} db_name&lt;br /&gt;
    UPGRADE DATA DIRECTORY NAME&lt;br /&gt;
&lt;br /&gt;
alter_specification:&lt;br /&gt;
    [DEFAULT] CHARACTER SET [=] charset_name&lt;br /&gt;
  | [DEFAULT] COLLATE [=] collation_name&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
kde:&lt;br /&gt;
*alter_specification - &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Úloha:'''&lt;br /&gt;
Zmeňte znakovú sadu databázy projekty na utf8-slovak-ci.&lt;br /&gt;
&lt;br /&gt;
Riešenie:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
...riešenie&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===ALTER TABLE===&lt;br /&gt;
Príkaz ALTER TABLE&amp;lt;ref&amp;gt;ALTER TABLE(mysql) http://dev.mysql.com/doc/refman/5.5/en/alter-table.html&amp;lt;/ref&amp;gt;dovoľuje zmeniť vlastnosti tabuľky ako napríklad meno, dátový typ, znakovú sadu, zotriedenie. Syntax je nasledujúca:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
ALTER [IGNORE] TABLE tbl_name alter_spec [, alter_spec ...] &lt;br /&gt;
&lt;br /&gt;
alter_specification: &lt;br /&gt;
    ADD [COLUMN] create_definition [FIRST | AFTER column_name ] &lt;br /&gt;
| ADD [COLUMN] (create_definition, create_definition,...) &lt;br /&gt;
| ADD INDEX [index_name] (index_col_name,...) &lt;br /&gt;
| ADD PRIMARY KEY (index_col_name,...) &lt;br /&gt;
| ADD UNIQUE [index_name] (index_col_name,...) &lt;br /&gt;
| ADD FULLTEXT [index_name] (index_col_name,...) &lt;br /&gt;
| ALTER [COLUMN] col_name {SET DEFAULT literal | DROP DEFAULT} &lt;br /&gt;
| CHANGE [COLUMN] old_col_name create_definition &lt;br /&gt;
| MODIFY [COLUMN] create_definition &lt;br /&gt;
| DROP [COLUMN] col_name &lt;br /&gt;
| DROP PRIMARY KEY &lt;br /&gt;
| DROP INDEX index_name &lt;br /&gt;
| RENAME [TO] new_tbl_name &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
kde:&lt;br /&gt;
*IGNORE&lt;br /&gt;
*FIRST, AFTER&lt;br /&gt;
*ADD&lt;br /&gt;
*ALTER&lt;br /&gt;
*CHANGE&lt;br /&gt;
*MODIFY&lt;br /&gt;
*DROP&lt;br /&gt;
*RENAME&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Úloha:'''&lt;br /&gt;
Zmente názov atribútu ''zaciatok'' na ''zaciatok_riesenia'' a názov atribútu ''koniec'' na ''koniec_riesenia''.&lt;br /&gt;
&lt;br /&gt;
Riešenie:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
   ALTER TABLE `projekt` CHANGE `zaciatok` `zaciatok_riesenia` DATE NOT NULL&lt;br /&gt;
   ALTER TABLE `projekt` CHANGE `koniec` `koniec_riesenia` DATE NOT NULL  &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==DROP==&lt;br /&gt;
Pomocou príkazu DROP sa mažú databázové objekty. Príkaz DROP môžeme použiť na mazanie&lt;br /&gt;
*databáz - DROP DATABASE&lt;br /&gt;
*tabuliek - DROP TABLE&lt;br /&gt;
*procedúr - DROP PROCEDURE&lt;br /&gt;
*triggerov - DROP TRIGGER&lt;br /&gt;
*pohľadov - DROP VIEW&lt;br /&gt;
===DROP TABLE===&lt;br /&gt;
Zmazanie tabuľky sa realizuje pomocou príkazu DROP TABLE&amp;lt;ref&amp;gt;Drop table (mysql) http://dev.mysql.com/doc/refman/5.5/en/drop-table.html&amp;lt;/ref&amp;gt;. Syntax je nasledujúca:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
DROP [TEMPORARY] TABLE [IF EXISTS]&lt;br /&gt;
    tbl_name [, tbl_name] ...&lt;br /&gt;
    [RESTRICT | CASCADE]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
kde:&lt;br /&gt;
*tbl_name - názov tabuľky, ktorú ideme mazať.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Úloha:'''&lt;br /&gt;
Zmažte všetky tabuľky na databáze ''projekty''.&lt;br /&gt;
&lt;br /&gt;
Riešenie:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
DROP [TEMPORARY] TABLE 'projekt' AND 'rozpocet'&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===DROP DATABASE===&lt;br /&gt;
Zmazanie databázy sa realizuje pomocou príkazu DROP DATABASE&amp;lt;ref&amp;gt;Drop database (mysql) http://dev.mysql.com/doc/refman/5.5/en/drop-database.html&amp;lt;/ref&amp;gt;. Syntax je nasledujúca:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
   DROP {DATABASE | SCHEMA} [IF EXISTS] db_name&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Úloha:'''&lt;br /&gt;
Zmažte databázu ''projekty''.&lt;br /&gt;
&lt;br /&gt;
Riešenie:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
DROP {DATABASE | SCHEMA} [IF EXISTS] 'projekty' &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
===Mazanie ostatných objektov===&lt;br /&gt;
&lt;br /&gt;
'''Mazanie pohľadu:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
DROP VIEW `rozdelenie_projektov`&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Mazanie uloženej procedúry:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
DROP VIEW 'PROCEDURE zvysKV'&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Mazanie triggera:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Zdroje a odkazy==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lusing</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=SQL_-_DDL&amp;diff=8562</id>
		<title>SQL - DDL</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=SQL_-_DDL&amp;diff=8562"/>
		<updated>2010-12-14T16:43:58Z</updated>

		<summary type="html">&lt;p&gt;Lusing: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Skripta_dbs}}&lt;br /&gt;
{{Draft}}&lt;br /&gt;
DDL (Data Definition Language) - jazyk pre dátových štruktúr. V databázových systémoch predstavuje podskupinu jazyka SQL pre vytváranie a modifikáciu databázových objektov.&lt;br /&gt;
==Prípadová štúdia - evidencia projektov==&lt;br /&gt;
V tejto kapitole bude opísaný postup pri vytváraní novej databázy, nových tabuliek. Následne sa vytvorené tabuľky pokúsime zmodifikovať (pridanie atribútov, zmena názvu atribútov...) a na koniec zmažeme všetky tabuľky aj databázu.&lt;br /&gt;
&lt;br /&gt;
Pre túto kapitolu si zoberme príklad evidencie projektov a ich rozpočtu. V našom príklade indentifikujeme 2 základné entity: projekt a rozpočet na projekt. Atribúty týchto entít:&lt;br /&gt;
*'''projekt'''&lt;br /&gt;
**id projektu (id) - primárny kľúč&lt;br /&gt;
**názov projektu (nazov) - reťazec&lt;br /&gt;
**typ projektu (typ_projektu) - vymenovaný typ:  IP, ESF, STREP, CRAFT, CRP &amp;lt;ref&amp;gt;Typy projekov - http://www.bic.sk/projects.php?id=32&amp;amp;tid=24&amp;lt;/ref&amp;gt;&lt;br /&gt;
**začiatok riešenia projektu (zaciatok) - dátum&lt;br /&gt;
**koniec riešenia projektu (koniec) - dátum&lt;br /&gt;
**obsah riešenia projektu (obsah) - text&lt;br /&gt;
&lt;br /&gt;
Keďže v projektoch sa robí na každý rok iný rozpočet, v tabuľke rozpočet bude predstavovať jeden záznam rozpočet pre daný projekt na jeden rok. Ak by sa projekt riešil 5 rokov, v tabuľke rozpočet bude pre tento projekt 5 záznamov.&lt;br /&gt;
*'''rozpočet'''&lt;br /&gt;
**id projektu, pre ktorý je tento rozpočet (projekt_id) - primárny kľúč&lt;br /&gt;
**rok riešenia projektu (projekt_rok) - primárny kľúč&lt;br /&gt;
**bežné výdavky (bezne) - celé číslo &lt;br /&gt;
**kapitálové výdavky (kapitalove) - celé číslo&lt;br /&gt;
&lt;br /&gt;
==CREATE==&lt;br /&gt;
===CREATE DATABASE&amp;lt;ref&amp;gt;Create database (mysql) http://dev.mysql.com/doc/refman/5.5/en/create-database.html&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name&lt;br /&gt;
    [create_specification] ...&lt;br /&gt;
&lt;br /&gt;
create_specification:&lt;br /&gt;
    [DEFAULT] CHARACTER SET [=] charset_name&lt;br /&gt;
  | [DEFAULT] COLLATE [=] collation_name&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tu bude popis nasledujúcich parametrov:&lt;br /&gt;
*IF NOT EXISTS - &lt;br /&gt;
*db_name - &lt;br /&gt;
*CHARACTER SET -&lt;br /&gt;
*COLLATE  - &lt;br /&gt;
&lt;br /&gt;
'''Príklad:'''&lt;br /&gt;
&lt;br /&gt;
Vytvorte databázu ''projekty''. Znakovú sadu pre celú databázu nastavte utf-8.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
   CREATE DATABASE Projekty CHARACTER SET utf8&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===CREATE TABLE&amp;lt;ref&amp;gt;Create tabel (mysql) http://dev.mysql.com/doc/refman/5.5/en/create-table.html&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name&lt;br /&gt;
    (create_definition,...)&lt;br /&gt;
    [table_options]&lt;br /&gt;
    [partition_options]&lt;br /&gt;
&lt;br /&gt;
create_definition:&lt;br /&gt;
    col_name column_definition&lt;br /&gt;
  | [CONSTRAINT [symbol]] PRIMARY KEY [index_type] (index_col_name,...)&lt;br /&gt;
      [index_option] ...&lt;br /&gt;
  | {INDEX|KEY} [index_name] [index_type] (index_col_name,...)&lt;br /&gt;
      [index_option] ...&lt;br /&gt;
&lt;br /&gt;
column_definition:&lt;br /&gt;
    data_type [NOT NULL | NULL] [DEFAULT default_value]&lt;br /&gt;
      [AUTO_INCREMENT] [UNIQUE [KEY] | [PRIMARY] KEY]&lt;br /&gt;
      [COMMENT 'string']&lt;br /&gt;
&lt;br /&gt;
data_type:&lt;br /&gt;
    pozri &amp;quot;Dátové typy&amp;quot;&lt;br /&gt;
&lt;br /&gt;
index_type:&lt;br /&gt;
    USING {BTREE | HASH}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
kde pri definícii tabuľky:&lt;br /&gt;
*TEMPORARY - &lt;br /&gt;
*IF NOT EXISTS -&lt;br /&gt;
*tbl_name -&lt;br /&gt;
pri definícii štruktúry tabuľky(create_definition):&lt;br /&gt;
*CONSTRAINT - &lt;br /&gt;
*PRIMARY KEY - &lt;br /&gt;
*INDEX -&lt;br /&gt;
*KEY -&lt;br /&gt;
pri definícii konkrétneho typu (column_definition):&lt;br /&gt;
*NOT NULL -&lt;br /&gt;
*NULL -&lt;br /&gt;
*DEFAULT -&lt;br /&gt;
*AUTO_INCREMENT -&lt;br /&gt;
*UNIQUE -&lt;br /&gt;
*PRIMARY -&lt;br /&gt;
*COMMENT -&lt;br /&gt;
Pri definícii typu indexu (index_type):&lt;br /&gt;
*BTREE -&lt;br /&gt;
*HASH -&lt;br /&gt;
&lt;br /&gt;
'''Úloha:'''&lt;br /&gt;
&lt;br /&gt;
Podľa prípadovej štúdie (evidencia projektov) vytvorte tabuľky ''projekt'' a ''rozpocet''. Typy jednotlivých atribútov sú opísané taktiež v tejto prípadovej štúdii na začiatku tejto kapitoly.&lt;br /&gt;
&lt;br /&gt;
Riešenie:&lt;br /&gt;
&lt;br /&gt;
Tabuľka ''projekt'':&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE TABLE `projekty`.`Projekt` (&lt;br /&gt;
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,&lt;br /&gt;
`nazov` VARCHAR( 64 ) NOT NULL ,&lt;br /&gt;
`typ_projektu` ENUM( 'IP', 'ESF', 'STREP', 'CRAFT', 'CRP' ) NOT NULL ,&lt;br /&gt;
`zaciatok` DATE NOT NULL ,&lt;br /&gt;
`koniec` DATE NOT NULL ,&lt;br /&gt;
`obsah` TEXT NOT NULL&lt;br /&gt;
) ENGINE = InnoDB;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tabuľka ''rozpocet'':&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE TABLE `projekty`.`rozpocet` (&lt;br /&gt;
`projekt_id` INT NOT NULL ,&lt;br /&gt;
`projekt_rok` INT NOT NULL ,&lt;br /&gt;
`bezne` INT NOT NULL ,&lt;br /&gt;
`kapitalove` INT NOT NULL ,&lt;br /&gt;
PRIMARY KEY ( `projekt_id` , `projekt_rok` ) &lt;br /&gt;
) ENGINE = MYISAM ;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===CREATE VIEW===&lt;br /&gt;
Príkazom CREATE VIEW&amp;lt;ref&amp;gt;create view (mysql) http://dev.mysql.com/doc/refman/5.5/en/create-view.html&amp;lt;/ref&amp;gt; môžeme vytvoriť pohľad. Pohľadom sa venuje samostatná [[SQL - pohľady|kapitola]]. Syntax príkazu CREATE VIEW je nasledovná&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE&lt;br /&gt;
    [OR REPLACE]&lt;br /&gt;
    [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]&lt;br /&gt;
    [DEFINER = { user | CURRENT_USER }]&lt;br /&gt;
    [SQL SECURITY { DEFINER | INVOKER }]&lt;br /&gt;
    VIEW view_name [(column_list)]&lt;br /&gt;
    AS select_statement&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
kde:&lt;br /&gt;
*OR REPLACE - &lt;br /&gt;
*ALGORITHM -&lt;br /&gt;
*DEFINER -&lt;br /&gt;
*SQL SECURUTY -&lt;br /&gt;
*select_statement -&lt;br /&gt;
&lt;br /&gt;
'''Príklad:'''&lt;br /&gt;
&lt;br /&gt;
Vytvorte pohľad na základe dotazu: Koľko je v databáze projektov, rozdelených podľa typov projektov. Nezaujíma nás teda celkový počet projektov ale počet projektov podľa typu projektu.&lt;br /&gt;
&lt;br /&gt;
Riešenie:&lt;br /&gt;
SQL dotaz, pomocou ktorého dosiahneme požadovaný výsledok&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE ALGORITHM = UNDEFINED VIEW `clenenie_projektov` AS SELECT * &lt;br /&gt;
FROM `projekt` &lt;br /&gt;
ORDER BY `projekt`.`typ_projektu` ASC &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vytvorenie pohľadu ''rodelenie_projektov''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE ALGORITHM = UNDEFINED VIEW `Rozdelenie_projektov` AS SELECT id, typ_projektu&lt;br /&gt;
FROM `projekt` &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===CREATE PROCEDURE===&lt;br /&gt;
Príkaz CREATE PROCEDURE&amp;lt;ref&amp;gt;CREATE PROCEDURE (mysql) http://dev.mysql.com/doc/refman/5.5/en/create-procedure.html&amp;lt;/ref&amp;gt; vytvorí na databázovom serveri uloženú procedúru. Podrobnejšie o uložených procedúrach hovorí kapitola [[SQL - uložené procedúry]]. Syntax je nasledujúca:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE&lt;br /&gt;
    [DEFINER = { user | CURRENT_USER }]&lt;br /&gt;
    PROCEDURE sp_name ([proc_parameter[,...]])&lt;br /&gt;
    routine_body&lt;br /&gt;
&lt;br /&gt;
proc_parameter:&lt;br /&gt;
    [ IN | OUT | INOUT ] param_name type&lt;br /&gt;
&lt;br /&gt;
type:&lt;br /&gt;
    Ľubovoľný dátový SQL typ.&lt;br /&gt;
&lt;br /&gt;
routine_body:&lt;br /&gt;
    SQL príkaz&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
kde:&lt;br /&gt;
*DEFINER&lt;br /&gt;
*sp_name&lt;br /&gt;
*proc_parameter&lt;br /&gt;
**IN&lt;br /&gt;
**OUT&lt;br /&gt;
**INOUT&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Úloha:'''&lt;br /&gt;
Vytvorte uloženú ktorá v tabuľke rozpočet zvýši určitému projektu (jeho ID bude vstupný parameter procedúry) bežné a kapitálové výdavky 1.1x.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Riešenie:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE PROCEDURE zvysKV(.....&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ukážka použitia uloženej procedúry&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
   CALL zvysKV(1)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===CREATE TRIGGER===&lt;br /&gt;
Príkaz CREATE TRIGGER&amp;lt;ref&amp;gt;CREATE TRIGGER (mysql) http://dev.mysql.com/doc/refman/5.5/en/create-trigger.html&amp;lt;/ref&amp;gt; vytvorí v databáze trigger (spúšťač, resp. automaticky spúšťanú procedúru). Jeho syntax je nasledovná:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE&lt;br /&gt;
    [DEFINER = { user | CURRENT_USER }]&lt;br /&gt;
    TRIGGER trigger_name trigger_time trigger_event&lt;br /&gt;
    ON tbl_name FOR EACH ROW trigger_body&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
kde:&lt;br /&gt;
*DEFINER&lt;br /&gt;
*trigger_name&lt;br /&gt;
*trigger_time&lt;br /&gt;
*trigger_event&lt;br /&gt;
*FOR EACH ROW&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Úloha:'''&lt;br /&gt;
Vytvorte trigger, ktorý sa bude spúšťať pred modifikáciou záznamu v tabuľke rozpočet. Tento trigger nedovolí urobiť zmenu rozpočtu aktuálneho projektu mimo obdobia riešenia projektu. Teda ak je projekt naplánovaný od roku 2010 do 2012, tak ak sa niekto pokúsi urobiť zmenu mimo tohoto obdobia, tento trigger mu to nedovolí.&lt;br /&gt;
&lt;br /&gt;
Riešenie:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
...riešnie&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==ALTER==&lt;br /&gt;
Príkaz ALTER slúži na modifikovanie štruktúry databázových objektov.&lt;br /&gt;
===ALTER DATABASE===&lt;br /&gt;
Príkaz ALTER DATABASE&amp;lt;ref&amp;gt;ALTER DATABASE (mysql) http://dev.mysql.com/doc/refman/5.5/en/alter-database.html&amp;lt;/ref&amp;gt;dovoľuje zmeniť vlastnosti databázy ako napríklad meno, znakovú sadu, zotriedenie. Syntax je nasledujúca:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
ALTER {DATABASE | SCHEMA} [db_name]&lt;br /&gt;
    alter_specification ...&lt;br /&gt;
ALTER {DATABASE | SCHEMA} db_name&lt;br /&gt;
    UPGRADE DATA DIRECTORY NAME&lt;br /&gt;
&lt;br /&gt;
alter_specification:&lt;br /&gt;
    [DEFAULT] CHARACTER SET [=] charset_name&lt;br /&gt;
  | [DEFAULT] COLLATE [=] collation_name&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
kde:&lt;br /&gt;
*alter_specification - &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Úloha:'''&lt;br /&gt;
Zmeňte znakovú sadu databázy projekty na utf8-slovak-ci.&lt;br /&gt;
&lt;br /&gt;
Riešenie:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
...riešenie&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===ALTER TABLE===&lt;br /&gt;
Príkaz ALTER TABLE&amp;lt;ref&amp;gt;ALTER TABLE(mysql) http://dev.mysql.com/doc/refman/5.5/en/alter-table.html&amp;lt;/ref&amp;gt;dovoľuje zmeniť vlastnosti tabuľky ako napríklad meno, dátový typ, znakovú sadu, zotriedenie. Syntax je nasledujúca:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
ALTER [IGNORE] TABLE tbl_name alter_spec [, alter_spec ...] &lt;br /&gt;
&lt;br /&gt;
alter_specification: &lt;br /&gt;
    ADD [COLUMN] create_definition [FIRST | AFTER column_name ] &lt;br /&gt;
| ADD [COLUMN] (create_definition, create_definition,...) &lt;br /&gt;
| ADD INDEX [index_name] (index_col_name,...) &lt;br /&gt;
| ADD PRIMARY KEY (index_col_name,...) &lt;br /&gt;
| ADD UNIQUE [index_name] (index_col_name,...) &lt;br /&gt;
| ADD FULLTEXT [index_name] (index_col_name,...) &lt;br /&gt;
| ALTER [COLUMN] col_name {SET DEFAULT literal | DROP DEFAULT} &lt;br /&gt;
| CHANGE [COLUMN] old_col_name create_definition &lt;br /&gt;
| MODIFY [COLUMN] create_definition &lt;br /&gt;
| DROP [COLUMN] col_name &lt;br /&gt;
| DROP PRIMARY KEY &lt;br /&gt;
| DROP INDEX index_name &lt;br /&gt;
| RENAME [TO] new_tbl_name &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
kde:&lt;br /&gt;
*IGNORE&lt;br /&gt;
*FIRST, AFTER&lt;br /&gt;
*ADD&lt;br /&gt;
*ALTER&lt;br /&gt;
*CHANGE&lt;br /&gt;
*MODIFY&lt;br /&gt;
*DROP&lt;br /&gt;
*RENAME&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Úloha:'''&lt;br /&gt;
Zmente názov atribútu ''zaciatok'' na ''zaciatok_riesenia'' a názov atribútu ''koniec'' na ''koniec_riesenia''.&lt;br /&gt;
&lt;br /&gt;
Riešenie:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
   ALTER TABLE `projekt` CHANGE `zaciatok` `zaciatok_riesenia` DATE NOT NULL&lt;br /&gt;
   ALTER TABLE `projekt` CHANGE `koniec` `koniec_riesenia` DATE NOT NULL  &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==DROP==&lt;br /&gt;
Pomocou príkazu DROP sa mažú databázové objekty. Príkaz DROP môžeme použiť na mazanie&lt;br /&gt;
*databáz - DROP DATABASE&lt;br /&gt;
*tabuliek - DROP TABLE&lt;br /&gt;
*procedúr - DROP PROCEDURE&lt;br /&gt;
*triggerov - DROP TRIGGER&lt;br /&gt;
*pohľadov - DROP VIEW&lt;br /&gt;
===DROP TABLE===&lt;br /&gt;
Zmazanie tabuľky sa realizuje pomocou príkazu DROP TABLE&amp;lt;ref&amp;gt;Drop table (mysql) http://dev.mysql.com/doc/refman/5.5/en/drop-table.html&amp;lt;/ref&amp;gt;. Syntax je nasledujúca:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
DROP [TEMPORARY] TABLE [IF EXISTS]&lt;br /&gt;
    tbl_name [, tbl_name] ...&lt;br /&gt;
    [RESTRICT | CASCADE]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
kde:&lt;br /&gt;
*tbl_name - názov tabuľky, ktorú ideme mazať.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Úloha:'''&lt;br /&gt;
Zmažte všetky tabuľky na databáze ''projekty''.&lt;br /&gt;
&lt;br /&gt;
Riešenie:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
...riešenie&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===DROP DATABASE===&lt;br /&gt;
Zmazanie databázy sa realizuje pomocou príkazu DROP DATABASE&amp;lt;ref&amp;gt;Drop database (mysql) http://dev.mysql.com/doc/refman/5.5/en/drop-database.html&amp;lt;/ref&amp;gt;. Syntax je nasledujúca:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
   DROP {DATABASE | SCHEMA} [IF EXISTS] db_name&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Úloha:'''&lt;br /&gt;
Zmažte databázu ''projekty''.&lt;br /&gt;
&lt;br /&gt;
Riešenie:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
...riešenie&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
===Mazanie ostatných objektov===&lt;br /&gt;
&lt;br /&gt;
'''Mazanie pohľadu:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
DROP VIEW `rozdelenie_projektov`&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Mazanie uloženej procedúry:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Mazanie triggera:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Zdroje a odkazy==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lusing</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=SQL_-_DDL&amp;diff=8560</id>
		<title>SQL - DDL</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=SQL_-_DDL&amp;diff=8560"/>
		<updated>2010-12-13T19:56:11Z</updated>

		<summary type="html">&lt;p&gt;Lusing: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Skripta_dbs}}&lt;br /&gt;
{{Draft}}&lt;br /&gt;
DDL (Data Definition Language) - jazyk pre dátových štruktúr. V databázových systémoch predstavuje podskupinu jazyka SQL pre vytváranie a modifikáciu databázových objektov.&lt;br /&gt;
==Prípadová štúdia - evidencia projektov==&lt;br /&gt;
V tejto kapitole bude opísaný postup pri vytváraní novej databázy, nových tabuliek. Následne sa vytvorené tabuľky pokúsime zmodifikovať (pridanie atribútov, zmena názvu atribútov...) a na koniec zmažeme všetky tabuľky aj databázu.&lt;br /&gt;
&lt;br /&gt;
Pre túto kapitolu si zoberme príklad evidencie projektov a ich rozpočtu. V našom príklade indentifikujeme 2 základné entity: projekt a rozpočet na projekt. Atribúty týchto entít:&lt;br /&gt;
*'''projekt'''&lt;br /&gt;
**id projektu (id) - primárny kľúč&lt;br /&gt;
**názov projektu (nazov) - reťazec&lt;br /&gt;
**typ projektu (typ_projektu) - vymenovaný typ:  IP, ESF, STREP, CRAFT, CRP &amp;lt;ref&amp;gt;Typy projekov - http://www.bic.sk/projects.php?id=32&amp;amp;tid=24&amp;lt;/ref&amp;gt;&lt;br /&gt;
**začiatok riešenia projektu (zaciatok) - dátum&lt;br /&gt;
**koniec riešenia projektu (koniec) - dátum&lt;br /&gt;
**obsah riešenia projektu (obsah) - text&lt;br /&gt;
&lt;br /&gt;
Keďže v projektoch sa robí na každý rok iný rozpočet, v tabuľke rozpočet bude predstavovať jeden záznam rozpočet pre daný projekt na jeden rok. Ak by sa projekt riešil 5 rokov, v tabuľke rozpočet bude pre tento projekt 5 záznamov.&lt;br /&gt;
*'''rozpočet'''&lt;br /&gt;
**id projektu, pre ktorý je tento rozpočet (projekt_id) - primárny kľúč&lt;br /&gt;
**rok riešenia projektu (projekt_rok) - primárny kľúč&lt;br /&gt;
**bežné výdavky (bezne) - celé číslo &lt;br /&gt;
**kapitálové výdavky (kapitalove) - celé číslo&lt;br /&gt;
&lt;br /&gt;
==CREATE==&lt;br /&gt;
===CREATE DATABASE&amp;lt;ref&amp;gt;Create database (mysql) http://dev.mysql.com/doc/refman/5.5/en/create-database.html&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name&lt;br /&gt;
    [create_specification] ...&lt;br /&gt;
&lt;br /&gt;
create_specification:&lt;br /&gt;
    [DEFAULT] CHARACTER SET [=] charset_name&lt;br /&gt;
  | [DEFAULT] COLLATE [=] collation_name&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tu bude popis nasledujúcich parametrov:&lt;br /&gt;
*IF NOT EXISTS - &lt;br /&gt;
*db_name - &lt;br /&gt;
*CHARACTER SET -&lt;br /&gt;
*COLLATE  - &lt;br /&gt;
&lt;br /&gt;
'''Príklad:'''&lt;br /&gt;
&lt;br /&gt;
Vytvorte databázu ''projekty''. Znakovú sadu pre celú databázu nastavte utf-8.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
   CREATE DATABASE Projekty CHARACTER SET utf8&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===CREATE TABLE&amp;lt;ref&amp;gt;Create tabel (mysql) http://dev.mysql.com/doc/refman/5.5/en/create-table.html&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name&lt;br /&gt;
    (create_definition,...)&lt;br /&gt;
    [table_options]&lt;br /&gt;
    [partition_options]&lt;br /&gt;
&lt;br /&gt;
create_definition:&lt;br /&gt;
    col_name column_definition&lt;br /&gt;
  | [CONSTRAINT [symbol]] PRIMARY KEY [index_type] (index_col_name,...)&lt;br /&gt;
      [index_option] ...&lt;br /&gt;
  | {INDEX|KEY} [index_name] [index_type] (index_col_name,...)&lt;br /&gt;
      [index_option] ...&lt;br /&gt;
&lt;br /&gt;
column_definition:&lt;br /&gt;
    data_type [NOT NULL | NULL] [DEFAULT default_value]&lt;br /&gt;
      [AUTO_INCREMENT] [UNIQUE [KEY] | [PRIMARY] KEY]&lt;br /&gt;
      [COMMENT 'string']&lt;br /&gt;
&lt;br /&gt;
data_type:&lt;br /&gt;
    pozri &amp;quot;Dátové typy&amp;quot;&lt;br /&gt;
&lt;br /&gt;
index_type:&lt;br /&gt;
    USING {BTREE | HASH}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
kde pri definícii tabuľky:&lt;br /&gt;
*TEMPORARY - &lt;br /&gt;
*IF NOT EXISTS -&lt;br /&gt;
*tbl_name -&lt;br /&gt;
pri definícii štruktúry tabuľky(create_definition):&lt;br /&gt;
*CONSTRAINT - &lt;br /&gt;
*PRIMARY KEY - &lt;br /&gt;
*INDEX -&lt;br /&gt;
*KEY -&lt;br /&gt;
pri definícii konkrétneho typu (column_definition):&lt;br /&gt;
*NOT NULL -&lt;br /&gt;
*NULL -&lt;br /&gt;
*DEFAULT -&lt;br /&gt;
*AUTO_INCREMENT -&lt;br /&gt;
*UNIQUE -&lt;br /&gt;
*PRIMARY -&lt;br /&gt;
*COMMENT -&lt;br /&gt;
Pri definícii typu indexu (index_type):&lt;br /&gt;
*BTREE -&lt;br /&gt;
*HASH -&lt;br /&gt;
&lt;br /&gt;
'''Úloha:'''&lt;br /&gt;
&lt;br /&gt;
Podľa prípadovej štúdie (evidencia projektov) vytvorte tabuľky ''projekt'' a ''rozpocet''. Typy jednotlivých atribútov sú opísané taktiež v tejto prípadovej štúdii na začiatku tejto kapitoly.&lt;br /&gt;
&lt;br /&gt;
Riešenie:&lt;br /&gt;
&lt;br /&gt;
Tabuľka ''projekt'':&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE TABLE `projekty`.`Projekt` (&lt;br /&gt;
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,&lt;br /&gt;
`nazov` VARCHAR( 64 ) NOT NULL ,&lt;br /&gt;
`typ_projektu` ENUM( 'IP', 'ESF', 'STREP', 'CRAFT', 'CRP' ) NOT NULL ,&lt;br /&gt;
`zaciatok` DATE NOT NULL ,&lt;br /&gt;
`koniec` DATE NOT NULL ,&lt;br /&gt;
`obsah` TEXT NOT NULL&lt;br /&gt;
) ENGINE = InnoDB;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tabuľka ''rozpocet'':&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE TABLE `projekty`.`rozpocet` (&lt;br /&gt;
`projekt_id` INT NOT NULL ,&lt;br /&gt;
`projekt_rok` INT NOT NULL ,&lt;br /&gt;
`bezne` INT NOT NULL ,&lt;br /&gt;
`kapitalove` INT NOT NULL ,&lt;br /&gt;
PRIMARY KEY ( `projekt_id` , `projekt_rok` ) &lt;br /&gt;
) ENGINE = MYISAM ;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===CREATE VIEW===&lt;br /&gt;
Príkazom CREATE VIEW&amp;lt;ref&amp;gt;create view (mysql) http://dev.mysql.com/doc/refman/5.5/en/create-view.html&amp;lt;/ref&amp;gt; môžeme vytvoriť pohľad. Pohľadom sa venuje samostatná [[SQL - pohľady|kapitola]]. Syntax príkazu CREATE VIEW je nasledovná&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE&lt;br /&gt;
    [OR REPLACE]&lt;br /&gt;
    [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]&lt;br /&gt;
    [DEFINER = { user | CURRENT_USER }]&lt;br /&gt;
    [SQL SECURITY { DEFINER | INVOKER }]&lt;br /&gt;
    VIEW view_name [(column_list)]&lt;br /&gt;
    AS select_statement&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
kde:&lt;br /&gt;
*OR REPLACE - &lt;br /&gt;
*ALGORITHM -&lt;br /&gt;
*DEFINER -&lt;br /&gt;
*SQL SECURUTY -&lt;br /&gt;
*select_statement -&lt;br /&gt;
&lt;br /&gt;
'''Príklad:'''&lt;br /&gt;
&lt;br /&gt;
Vytvorte pohľad na základe dotazu: Koľko je v databáze projektov, rozdelených podľa typov projektov. Nezaujíma nás teda celkový počet projektov ale počet projektov podľa typu projektu.&lt;br /&gt;
&lt;br /&gt;
Riešenie:&lt;br /&gt;
SQL dotaz, pomocou ktorého dosiahneme požadovaný výsledok&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE ALGORITHM = UNDEFINED VIEW `clenenie_projektov` AS SELECT * &lt;br /&gt;
FROM `projekt` &lt;br /&gt;
ORDER BY `projekt`.`typ_projektu` ASC &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vytvorenie pohľadu ''rodelenie_projektov''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
... riesenie&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===CREATE PROCEDURE===&lt;br /&gt;
Príkaz CREATE PROCEDURE&amp;lt;ref&amp;gt;CREATE PROCEDURE (mysql) http://dev.mysql.com/doc/refman/5.5/en/create-procedure.html&amp;lt;/ref&amp;gt; vytvorí na databázovom serveri uloženú procedúru. Podrobnejšie o uložených procedúrach hovorí kapitola [[SQL - uložené procedúry]]. Syntax je nasledujúca:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE&lt;br /&gt;
    [DEFINER = { user | CURRENT_USER }]&lt;br /&gt;
    PROCEDURE sp_name ([proc_parameter[,...]])&lt;br /&gt;
    routine_body&lt;br /&gt;
&lt;br /&gt;
proc_parameter:&lt;br /&gt;
    [ IN | OUT | INOUT ] param_name type&lt;br /&gt;
&lt;br /&gt;
type:&lt;br /&gt;
    Ľubovoľný dátový SQL typ.&lt;br /&gt;
&lt;br /&gt;
routine_body:&lt;br /&gt;
    SQL príkaz&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
kde:&lt;br /&gt;
*DEFINER&lt;br /&gt;
*sp_name&lt;br /&gt;
*proc_parameter&lt;br /&gt;
**IN&lt;br /&gt;
**OUT&lt;br /&gt;
**INOUT&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Úloha:'''&lt;br /&gt;
Vytvorte uloženú ktorá v tabuľke rozpočet zvýši určitému projektu (jeho ID bude vstupný parameter procedúry) bežné a kapitálové výdavky 1.1x.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Riešenie:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE PROCEDURE zvysKV(.....&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ukážka použitia uloženej procedúry&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
   CALL zvysKV(1)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===CREATE TRIGGER===&lt;br /&gt;
Príkaz CREATE TRIGGER&amp;lt;ref&amp;gt;CREATE TRIGGER (mysql) http://dev.mysql.com/doc/refman/5.5/en/create-trigger.html&amp;lt;/ref&amp;gt; vytvorí v databáze trigger (spúšťač, resp. automaticky spúšťanú procedúru). Jeho syntax je nasledovná:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE&lt;br /&gt;
    [DEFINER = { user | CURRENT_USER }]&lt;br /&gt;
    TRIGGER trigger_name trigger_time trigger_event&lt;br /&gt;
    ON tbl_name FOR EACH ROW trigger_body&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
kde:&lt;br /&gt;
*DEFINER&lt;br /&gt;
*trigger_name&lt;br /&gt;
*trigger_time&lt;br /&gt;
*trigger_event&lt;br /&gt;
*FOR EACH ROW&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Úloha:'''&lt;br /&gt;
Vytvorte trigger, ktorý sa bude spúšťať pred modifikáciou záznamu v tabuľke rozpočet. Tento trigger nedovolí urobiť zmenu rozpočtu aktuálneho projektu mimo obdobia riešenia projektu. Teda ak je projekt naplánovaný od roku 2010 do 2012, tak ak sa niekto pokúsi urobiť zmenu mimo tohoto obdobia, tento trigger mu to nedovolí.&lt;br /&gt;
&lt;br /&gt;
Riešenie:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
...riešnie&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==ALTER==&lt;br /&gt;
Príkaz ALTER slúži na modifikovanie štruktúry databázových objektov.&lt;br /&gt;
===ALTER DATABASE===&lt;br /&gt;
Príkaz ALTER DATABASE&amp;lt;ref&amp;gt;ALTER DATABASE (mysql) http://dev.mysql.com/doc/refman/5.5/en/alter-database.html&amp;lt;/ref&amp;gt;dovoľuje zmeniť vlastnosti databázy ako napríklad meno, znakovú sadu, zotriedenie. Syntax je nasledujúca:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
ALTER {DATABASE | SCHEMA} [db_name]&lt;br /&gt;
    alter_specification ...&lt;br /&gt;
ALTER {DATABASE | SCHEMA} db_name&lt;br /&gt;
    UPGRADE DATA DIRECTORY NAME&lt;br /&gt;
&lt;br /&gt;
alter_specification:&lt;br /&gt;
    [DEFAULT] CHARACTER SET [=] charset_name&lt;br /&gt;
  | [DEFAULT] COLLATE [=] collation_name&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
kde:&lt;br /&gt;
*alter_specification - &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Úloha:'''&lt;br /&gt;
Zmeňte znakovú sadu databázy projekty na utf8-slovak-ci.&lt;br /&gt;
&lt;br /&gt;
Riešenie:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
...riešenie&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===ALTER TABLE===&lt;br /&gt;
Príkaz ALTER TABLE&amp;lt;ref&amp;gt;ALTER TABLE(mysql) http://dev.mysql.com/doc/refman/5.5/en/alter-table.html&amp;lt;/ref&amp;gt;dovoľuje zmeniť vlastnosti tabuľky ako napríklad meno, dátový typ, znakovú sadu, zotriedenie. Syntax je nasledujúca:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
ALTER [IGNORE] TABLE tbl_name alter_spec [, alter_spec ...] &lt;br /&gt;
&lt;br /&gt;
alter_specification: &lt;br /&gt;
    ADD [COLUMN] create_definition [FIRST | AFTER column_name ] &lt;br /&gt;
| ADD [COLUMN] (create_definition, create_definition,...) &lt;br /&gt;
| ADD INDEX [index_name] (index_col_name,...) &lt;br /&gt;
| ADD PRIMARY KEY (index_col_name,...) &lt;br /&gt;
| ADD UNIQUE [index_name] (index_col_name,...) &lt;br /&gt;
| ADD FULLTEXT [index_name] (index_col_name,...) &lt;br /&gt;
| ALTER [COLUMN] col_name {SET DEFAULT literal | DROP DEFAULT} &lt;br /&gt;
| CHANGE [COLUMN] old_col_name create_definition &lt;br /&gt;
| MODIFY [COLUMN] create_definition &lt;br /&gt;
| DROP [COLUMN] col_name &lt;br /&gt;
| DROP PRIMARY KEY &lt;br /&gt;
| DROP INDEX index_name &lt;br /&gt;
| RENAME [TO] new_tbl_name &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
kde:&lt;br /&gt;
*IGNORE&lt;br /&gt;
*FIRST, AFTER&lt;br /&gt;
*ADD&lt;br /&gt;
*ALTER&lt;br /&gt;
*CHANGE&lt;br /&gt;
*MODIFY&lt;br /&gt;
*DROP&lt;br /&gt;
*RENAME&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Úloha:'''&lt;br /&gt;
Zmente názov atribútu ''zaciatok'' na ''zaciatok_riesenia'' a názov atribútu ''koniec'' na ''koniec_riesenia''.&lt;br /&gt;
&lt;br /&gt;
Riešenie:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
   ALTER TABLE `projekt` CHANGE `zaciatok` `zaciatok_riesenia` DATE NOT NULL&lt;br /&gt;
   ALTER TABLE `projekt` CHANGE `koniec` `koniec_riesenia` DATE NOT NULL  &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==DROP==&lt;br /&gt;
Pomocou príkazu DROP sa mažú databázové objekty. Príkaz DROP môžeme použiť na mazanie&lt;br /&gt;
*databáz - DROP DATABASE&lt;br /&gt;
*tabuliek - DROP TABLE&lt;br /&gt;
*procedúr - DROP PROCEDURE&lt;br /&gt;
*triggerov - DROP TRIGGER&lt;br /&gt;
*pohľadov - DROP VIEW&lt;br /&gt;
===DROP TABLE===&lt;br /&gt;
Zmazanie tabuľky sa realizuje pomocou príkazu DROP TABLE&amp;lt;ref&amp;gt;Drop table (mysql) http://dev.mysql.com/doc/refman/5.5/en/drop-table.html&amp;lt;/ref&amp;gt;. Syntax je nasledujúca:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
DROP [TEMPORARY] TABLE [IF EXISTS]&lt;br /&gt;
    tbl_name [, tbl_name] ...&lt;br /&gt;
    [RESTRICT | CASCADE]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
kde:&lt;br /&gt;
*tbl_name - názov tabuľky, ktorú ideme mazať.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Úloha:'''&lt;br /&gt;
Zmažte všetky tabuľky na databáze ''projekty''.&lt;br /&gt;
&lt;br /&gt;
Riešenie:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
...riešenie&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===DROP DATABASE===&lt;br /&gt;
Zmazanie databázy sa realizuje pomocou príkazu DROP DATABASE&amp;lt;ref&amp;gt;Drop database (mysql) http://dev.mysql.com/doc/refman/5.5/en/drop-database.html&amp;lt;/ref&amp;gt;. Syntax je nasledujúca:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
   DROP {DATABASE | SCHEMA} [IF EXISTS] db_name&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Úloha:'''&lt;br /&gt;
Zmažte databázu ''projekty''.&lt;br /&gt;
&lt;br /&gt;
Riešenie:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
...riešenie&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
===Mazanie ostatných objektov===&lt;br /&gt;
&lt;br /&gt;
'''Mazanie pohľadu:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Mazanie uloženej procedúry:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Mazanie triggera:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Zdroje a odkazy==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lusing</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=SQL_-_DDL&amp;diff=8558</id>
		<title>SQL - DDL</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=SQL_-_DDL&amp;diff=8558"/>
		<updated>2010-12-13T17:56:49Z</updated>

		<summary type="html">&lt;p&gt;Lusing: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Skripta_dbs}}&lt;br /&gt;
{{Draft}}&lt;br /&gt;
DDL (Data Definition Language) - jazyk pre dátových štruktúr. V databázových systémoch predstavuje podskupinu jazyka SQL pre vytváranie a modifikáciu databázových objektov.&lt;br /&gt;
==Prípadová štúdia - evidencia projektov==&lt;br /&gt;
V tejto kapitole bude opísaný postup pri vytváraní novej databázy, nových tabuliek. Následne sa vytvorené tabuľky pokúsime zmodifikovať (pridanie atribútov, zmena názvu atribútov...) a na koniec zmažeme všetky tabuľky aj databázu.&lt;br /&gt;
&lt;br /&gt;
Pre túto kapitolu si zoberme príklad evidencie projektov a ich rozpočtu. V našom príklade indentifikujeme 2 základné entity: projekt a rozpočet na projekt. Atribúty týchto entít:&lt;br /&gt;
*'''projekt'''&lt;br /&gt;
**id projektu (id) - primárny kľúč&lt;br /&gt;
**názov projektu (nazov) - reťazec&lt;br /&gt;
**typ projektu (typ_projektu) - vymenovaný typ:  IP, ESF, STREP, CRAFT, CRP &amp;lt;ref&amp;gt;Typy projekov - http://www.bic.sk/projects.php?id=32&amp;amp;tid=24&amp;lt;/ref&amp;gt;&lt;br /&gt;
**začiatok riešenia projektu (zaciatok) - dátum&lt;br /&gt;
**koniec riešenia projektu (koniec) - dátum&lt;br /&gt;
**obsah riešenia projektu (obsah) - text&lt;br /&gt;
&lt;br /&gt;
Keďže v projektoch sa robí na každý rok iný rozpočet, v tabuľke rozpočet bude predstavovať jeden záznam rozpočet pre daný projekt na jeden rok. Ak by sa projekt riešil 5 rokov, v tabuľke rozpočet bude pre tento projekt 5 záznamov.&lt;br /&gt;
*'''rozpočet'''&lt;br /&gt;
**id projektu, pre ktorý je tento rozpočet (projekt_id) - primárny kľúč&lt;br /&gt;
**rok riešenia projektu (projekt_rok) - primárny kľúč&lt;br /&gt;
**bežné výdavky (bezne) - celé číslo &lt;br /&gt;
**kapitálové výdavky (kapitalove) - celé číslo&lt;br /&gt;
&lt;br /&gt;
==CREATE==&lt;br /&gt;
===CREATE DATABASE&amp;lt;ref&amp;gt;Create database (mysql) http://dev.mysql.com/doc/refman/5.5/en/create-database.html&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name&lt;br /&gt;
    [create_specification] ...&lt;br /&gt;
&lt;br /&gt;
create_specification:&lt;br /&gt;
    [DEFAULT] CHARACTER SET [=] charset_name&lt;br /&gt;
  | [DEFAULT] COLLATE [=] collation_name&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tu bude popis nasledujúcich parametrov:&lt;br /&gt;
*IF NOT EXISTS - &lt;br /&gt;
*db_name - &lt;br /&gt;
*CHARACTER SET -&lt;br /&gt;
*COLLATE  - &lt;br /&gt;
&lt;br /&gt;
'''Príklad:'''&lt;br /&gt;
&lt;br /&gt;
Vytvorte databázu ''projekty''. Znakovú sadu pre celú databázu nastavte utf-8.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
   CREATE DATABASE Projekty CHARACTER SET utf8&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===CREATE TABLE&amp;lt;ref&amp;gt;Create tabel (mysql) http://dev.mysql.com/doc/refman/5.5/en/create-table.html&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name&lt;br /&gt;
    (create_definition,...)&lt;br /&gt;
    [table_options]&lt;br /&gt;
    [partition_options]&lt;br /&gt;
&lt;br /&gt;
create_definition:&lt;br /&gt;
    col_name column_definition&lt;br /&gt;
  | [CONSTRAINT [symbol]] PRIMARY KEY [index_type] (index_col_name,...)&lt;br /&gt;
      [index_option] ...&lt;br /&gt;
  | {INDEX|KEY} [index_name] [index_type] (index_col_name,...)&lt;br /&gt;
      [index_option] ...&lt;br /&gt;
&lt;br /&gt;
column_definition:&lt;br /&gt;
    data_type [NOT NULL | NULL] [DEFAULT default_value]&lt;br /&gt;
      [AUTO_INCREMENT] [UNIQUE [KEY] | [PRIMARY] KEY]&lt;br /&gt;
      [COMMENT 'string']&lt;br /&gt;
&lt;br /&gt;
data_type:&lt;br /&gt;
    pozri &amp;quot;Dátové typy&amp;quot;&lt;br /&gt;
&lt;br /&gt;
index_type:&lt;br /&gt;
    USING {BTREE | HASH}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
kde pri definícii tabuľky:&lt;br /&gt;
*TEMPORARY - &lt;br /&gt;
*IF NOT EXISTS -&lt;br /&gt;
*tbl_name -&lt;br /&gt;
pri definícii štruktúry tabuľky(create_definition):&lt;br /&gt;
*CONSTRAINT - &lt;br /&gt;
*PRIMARY KEY - &lt;br /&gt;
*INDEX -&lt;br /&gt;
*KEY -&lt;br /&gt;
pri definícii konkrétneho typu (column_definition):&lt;br /&gt;
*NOT NULL -&lt;br /&gt;
*NULL -&lt;br /&gt;
*DEFAULT -&lt;br /&gt;
*AUTO_INCREMENT -&lt;br /&gt;
*UNIQUE -&lt;br /&gt;
*PRIMARY -&lt;br /&gt;
*COMMENT -&lt;br /&gt;
Pri definícii typu indexu (index_type):&lt;br /&gt;
*BTREE -&lt;br /&gt;
*HASH -&lt;br /&gt;
&lt;br /&gt;
'''Úloha:'''&lt;br /&gt;
&lt;br /&gt;
Podľa prípadovej štúdie (evidencia projektov) vytvorte tabuľky ''projekt'' a ''rozpocet''. Typy jednotlivých atribútov sú opísané taktiež v tejto prípadovej štúdii na začiatku tejto kapitoly.&lt;br /&gt;
&lt;br /&gt;
Riešenie:&lt;br /&gt;
&lt;br /&gt;
Tabuľka ''projekt'':&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE TABLE `projekty`.`Projekt` (&lt;br /&gt;
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,&lt;br /&gt;
`nazov` VARCHAR( 64 ) NOT NULL ,&lt;br /&gt;
`typ_projektu` ENUM( 'IP', 'ESF', 'STREP', 'CRAFT', 'CRP' ) NOT NULL ,&lt;br /&gt;
`zaciatok` DATE NOT NULL ,&lt;br /&gt;
`koniec` DATE NOT NULL ,&lt;br /&gt;
`obsah` TEXT NOT NULL&lt;br /&gt;
) ENGINE = InnoDB;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tabuľka ''rozpocet'':&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE TABLE `projekty`.`rozpocet` (&lt;br /&gt;
`projekt_id` INT NOT NULL ,&lt;br /&gt;
`projekt_rok` INT NOT NULL ,&lt;br /&gt;
`bezne` INT NOT NULL ,&lt;br /&gt;
`kapitalove` INT NOT NULL ,&lt;br /&gt;
PRIMARY KEY ( `projekt_id` , `projekt_rok` ) &lt;br /&gt;
) ENGINE = MYISAM ;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===CREATE VIEW===&lt;br /&gt;
Príkazom CREATE VIEW&amp;lt;ref&amp;gt;create view (mysql) http://dev.mysql.com/doc/refman/5.5/en/create-view.html&amp;lt;/ref&amp;gt; môžeme vytvoriť pohľad. Pohľadom sa venuje samostatná [[SQL - pohľady|kapitola]]. Syntax príkazu CREATE VIEW je nasledovná&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE&lt;br /&gt;
    [OR REPLACE]&lt;br /&gt;
    [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]&lt;br /&gt;
    [DEFINER = { user | CURRENT_USER }]&lt;br /&gt;
    [SQL SECURITY { DEFINER | INVOKER }]&lt;br /&gt;
    VIEW view_name [(column_list)]&lt;br /&gt;
    AS select_statement&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
kde:&lt;br /&gt;
*OR REPLACE - &lt;br /&gt;
*ALGORITHM -&lt;br /&gt;
*DEFINER -&lt;br /&gt;
*SQL SECURUTY -&lt;br /&gt;
*select_statement -&lt;br /&gt;
&lt;br /&gt;
'''Príklad:'''&lt;br /&gt;
&lt;br /&gt;
Vytvorte pohľad na základe dotazu: Koľko je v databáze projektov, rozdelených podľa typov projektov. Nezaujíma nás teda celkový počet projektov ale počet projektov podľa typu projektu.&lt;br /&gt;
&lt;br /&gt;
Riešenie:&lt;br /&gt;
SQL dotaz, pomocou ktorého dosiahneme požadovaný výsledok&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
... riesenie&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vytvorenie pohľadu ''rodelenie_projektov''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
... riesenie&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===CREATE PROCEDURE===&lt;br /&gt;
Príkaz CREATE PROCEDURE&amp;lt;ref&amp;gt;CREATE PROCEDURE (mysql) http://dev.mysql.com/doc/refman/5.5/en/create-procedure.html&amp;lt;/ref&amp;gt; vytvorí na databázovom serveri uloženú procedúru. Podrobnejšie o uložených procedúrach hovorí kapitola [[SQL - uložené procedúry]]. Syntax je nasledujúca:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE&lt;br /&gt;
    [DEFINER = { user | CURRENT_USER }]&lt;br /&gt;
    PROCEDURE sp_name ([proc_parameter[,...]])&lt;br /&gt;
    routine_body&lt;br /&gt;
&lt;br /&gt;
proc_parameter:&lt;br /&gt;
    [ IN | OUT | INOUT ] param_name type&lt;br /&gt;
&lt;br /&gt;
type:&lt;br /&gt;
    Ľubovoľný dátový SQL typ.&lt;br /&gt;
&lt;br /&gt;
routine_body:&lt;br /&gt;
    SQL príkaz&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
kde:&lt;br /&gt;
*DEFINER&lt;br /&gt;
*sp_name&lt;br /&gt;
*proc_parameter&lt;br /&gt;
**IN&lt;br /&gt;
**OUT&lt;br /&gt;
**INOUT&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Úloha:'''&lt;br /&gt;
Vytvorte uloženú ktorá v tabuľke rozpočet zvýši určitému projektu (jeho ID bude vstupný parameter procedúry) bežné a kapitálové výdavky 1.1x.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Riešenie:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE PROCEDURE zvysKV(.....&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ukážka použitia uloženej procedúry&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
   CALL zvysKV(1)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===CREATE TRIGGER===&lt;br /&gt;
Príkaz CREATE TRIGGER&amp;lt;ref&amp;gt;CREATE TRIGGER (mysql) http://dev.mysql.com/doc/refman/5.5/en/create-trigger.html&amp;lt;/ref&amp;gt; vytvorí v databáze trigger (spúšťač, resp. automaticky spúšťanú procedúru). Jeho syntax je nasledovná:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE&lt;br /&gt;
    [DEFINER = { user | CURRENT_USER }]&lt;br /&gt;
    TRIGGER trigger_name trigger_time trigger_event&lt;br /&gt;
    ON tbl_name FOR EACH ROW trigger_body&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
kde:&lt;br /&gt;
*DEFINER&lt;br /&gt;
*trigger_name&lt;br /&gt;
*trigger_time&lt;br /&gt;
*trigger_event&lt;br /&gt;
*FOR EACH ROW&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Úloha:'''&lt;br /&gt;
Vytvorte trigger, ktorý sa bude spúšťať pred modifikáciou záznamu v tabuľke rozpočet. Tento trigger nedovolí urobiť zmenu rozpočtu aktuálneho projektu mimo obdobia riešenia projektu. Teda ak je projekt naplánovaný od roku 2010 do 2012, tak ak sa niekto pokúsi urobiť zmenu mimo tohoto obdobia, tento trigger mu to nedovolí.&lt;br /&gt;
&lt;br /&gt;
Riešenie:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
...riešnie&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==ALTER==&lt;br /&gt;
Príkaz ALTER slúži na modifikovanie štruktúry databázových objektov.&lt;br /&gt;
===ALTER DATABASE===&lt;br /&gt;
Príkaz ALTER DATABASE&amp;lt;ref&amp;gt;ALTER DATABASE (mysql) http://dev.mysql.com/doc/refman/5.5/en/alter-database.html&amp;lt;/ref&amp;gt;dovoľuje zmeniť vlastnosti databázy ako napríklad meno, znakovú sadu, zotriedenie. Syntax je nasledujúca:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
ALTER {DATABASE | SCHEMA} [db_name]&lt;br /&gt;
    alter_specification ...&lt;br /&gt;
ALTER {DATABASE | SCHEMA} db_name&lt;br /&gt;
    UPGRADE DATA DIRECTORY NAME&lt;br /&gt;
&lt;br /&gt;
alter_specification:&lt;br /&gt;
    [DEFAULT] CHARACTER SET [=] charset_name&lt;br /&gt;
  | [DEFAULT] COLLATE [=] collation_name&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
kde:&lt;br /&gt;
*alter_specification - &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Úloha:'''&lt;br /&gt;
Zmeňte znakovú sadu databázy projekty na utf8-slovak-ci.&lt;br /&gt;
&lt;br /&gt;
Riešenie:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
...riešenie&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===ALTER TABLE===&lt;br /&gt;
Príkaz ALTER TABLE&amp;lt;ref&amp;gt;ALTER TABLE(mysql) http://dev.mysql.com/doc/refman/5.5/en/alter-table.html&amp;lt;/ref&amp;gt;dovoľuje zmeniť vlastnosti tabuľky ako napríklad meno, dátový typ, znakovú sadu, zotriedenie. Syntax je nasledujúca:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
ALTER [IGNORE] TABLE tbl_name alter_spec [, alter_spec ...] &lt;br /&gt;
&lt;br /&gt;
alter_specification: &lt;br /&gt;
    ADD [COLUMN] create_definition [FIRST | AFTER column_name ] &lt;br /&gt;
| ADD [COLUMN] (create_definition, create_definition,...) &lt;br /&gt;
| ADD INDEX [index_name] (index_col_name,...) &lt;br /&gt;
| ADD PRIMARY KEY (index_col_name,...) &lt;br /&gt;
| ADD UNIQUE [index_name] (index_col_name,...) &lt;br /&gt;
| ADD FULLTEXT [index_name] (index_col_name,...) &lt;br /&gt;
| ALTER [COLUMN] col_name {SET DEFAULT literal | DROP DEFAULT} &lt;br /&gt;
| CHANGE [COLUMN] old_col_name create_definition &lt;br /&gt;
| MODIFY [COLUMN] create_definition &lt;br /&gt;
| DROP [COLUMN] col_name &lt;br /&gt;
| DROP PRIMARY KEY &lt;br /&gt;
| DROP INDEX index_name &lt;br /&gt;
| RENAME [TO] new_tbl_name &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
kde:&lt;br /&gt;
*IGNORE&lt;br /&gt;
*FIRST, AFTER&lt;br /&gt;
*ADD&lt;br /&gt;
*ALTER&lt;br /&gt;
*CHANGE&lt;br /&gt;
*MODIFY&lt;br /&gt;
*DROP&lt;br /&gt;
*RENAME&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Úloha:'''&lt;br /&gt;
Zmente názov atribútu ''zaciatok'' na ''zaciatok_riesenia'' a názov atribútu ''koniec'' na ''koniec_riesenia''.&lt;br /&gt;
&lt;br /&gt;
Riešenie:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
   ALTER TABLE `projekt` CHANGE `zaciatok` `zaciatok_riesenia` DATE NOT NULL&lt;br /&gt;
   ALTER TABLE `projekt` CHANGE `koniec` `koniec_riesenia` DATE NOT NULL  &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==DROP==&lt;br /&gt;
Pomocou príkazu DROP sa mažú databázové objekty. Príkaz DROP môžeme použiť na mazanie&lt;br /&gt;
*databáz - DROP DATABASE&lt;br /&gt;
*tabuliek - DROP TABLE&lt;br /&gt;
*procedúr - DROP PROCEDURE&lt;br /&gt;
*triggerov - DROP TRIGGER&lt;br /&gt;
*pohľadov - DROP VIEW&lt;br /&gt;
===DROP TABLE===&lt;br /&gt;
Zmazanie tabuľky sa realizuje pomocou príkazu DROP TABLE&amp;lt;ref&amp;gt;Drop table (mysql) http://dev.mysql.com/doc/refman/5.5/en/drop-table.html&amp;lt;/ref&amp;gt;. Syntax je nasledujúca:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
DROP [TEMPORARY] TABLE [IF EXISTS]&lt;br /&gt;
    tbl_name [, tbl_name] ...&lt;br /&gt;
    [RESTRICT | CASCADE]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
kde:&lt;br /&gt;
*tbl_name - názov tabuľky, ktorú ideme mazať.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Úloha:'''&lt;br /&gt;
Zmažte všetky tabuľky na databáze ''projekty''.&lt;br /&gt;
&lt;br /&gt;
Riešenie:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
...riešenie&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===DROP DATABASE===&lt;br /&gt;
Zmazanie databázy sa realizuje pomocou príkazu DROP DATABASE&amp;lt;ref&amp;gt;Drop database (mysql) http://dev.mysql.com/doc/refman/5.5/en/drop-database.html&amp;lt;/ref&amp;gt;. Syntax je nasledujúca:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
   DROP {DATABASE | SCHEMA} [IF EXISTS] db_name&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Úloha:'''&lt;br /&gt;
Zmažte databázu ''projekty''.&lt;br /&gt;
&lt;br /&gt;
Riešenie:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
...riešenie&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
===Mazanie ostatných objektov===&lt;br /&gt;
&lt;br /&gt;
'''Mazanie pohľadu:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Mazanie uloženej procedúry:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Mazanie triggera:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Zdroje a odkazy==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lusing</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=SQL_-_DDL&amp;diff=8556</id>
		<title>SQL - DDL</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=SQL_-_DDL&amp;diff=8556"/>
		<updated>2010-12-13T09:04:06Z</updated>

		<summary type="html">&lt;p&gt;Lusing: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Skripta_dbs}}&lt;br /&gt;
{{Draft}}&lt;br /&gt;
DDL (Data Definition Language) - jazyk pre dátových štruktúr. V databázových systémoch predstavuje podskupinu jazyka SQL pre vytváranie a modifikáciu databázových objektov.&lt;br /&gt;
==Prípadová štúdia - evidencia projektov==&lt;br /&gt;
V tejto kapitole bude opísaný postup pri vytváraní novej databázy, nových tabuliek. Následne sa vytvorené tabuľky pokúsime zmodifikovať (pridanie atribútov, zmena názvu atribútov...) a na koniec zmažeme všetky tabuľky aj databázu.&lt;br /&gt;
&lt;br /&gt;
Pre túto kapitolu si zoberme príklad evidencie projektov a ich rozpočtu. V našom príklade indentifikujeme 2 základné entity: projekt a rozpočet na projekt. Atribúty týchto entít:&lt;br /&gt;
*'''projekt'''&lt;br /&gt;
**id projektu (id) - primárny kľúč&lt;br /&gt;
**názov projektu (nazov) - reťazec&lt;br /&gt;
**typ projektu (typ_projektu) - vymenovaný typ:  IP, ESF, STREP, CRAFT, CRP &amp;lt;ref&amp;gt;Typy projekov - http://www.bic.sk/projects.php?id=32&amp;amp;tid=24&amp;lt;/ref&amp;gt;&lt;br /&gt;
**začiatok riešenia projektu (zaciatok) - dátum&lt;br /&gt;
**koniec riešenia projektu (koniec) - dátum&lt;br /&gt;
**obsah riešenia projektu (obsah) - text&lt;br /&gt;
&lt;br /&gt;
Keďže v projektoch sa robí na každý rok iný rozpočet, v tabuľke rozpočet bude predstavovať jeden záznam rozpočet pre daný projekt na jeden rok. Ak by sa projekt riešil 5 rokov, v tabuľke rozpočet bude pre tento projekt 5 záznamov.&lt;br /&gt;
*'''rozpočet'''&lt;br /&gt;
**id projektu, pre ktorý je tento rozpočet (projekt_id) - primárny kľúč&lt;br /&gt;
**rok riešenia projektu (projekt_rok) - primárny kľúč&lt;br /&gt;
**bežné výdavky (bezne) - celé číslo &lt;br /&gt;
**kapitálové výdavky (kapitalove) - celé číslo&lt;br /&gt;
&lt;br /&gt;
==CREATE==&lt;br /&gt;
===CREATE DATABASE&amp;lt;ref&amp;gt;Create database (mysql) http://dev.mysql.com/doc/refman/5.5/en/create-database.html&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name&lt;br /&gt;
    [create_specification] ...&lt;br /&gt;
&lt;br /&gt;
create_specification:&lt;br /&gt;
    [DEFAULT] CHARACTER SET [=] charset_name&lt;br /&gt;
  | [DEFAULT] COLLATE [=] collation_name&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tu bude popis nasledujúcich parametrov:&lt;br /&gt;
*IF NOT EXISTS - &lt;br /&gt;
*db_name - &lt;br /&gt;
*CHARACTER SET -&lt;br /&gt;
*COLLATE  - &lt;br /&gt;
&lt;br /&gt;
'''Príklad:'''&lt;br /&gt;
&lt;br /&gt;
Vytvorte databázu ''projekty''. Znakovú sadu pre celú databázu nastavte utf-8.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
   CREATE DATABASE Projekty CHARACTER SET utf8&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===CREATE TABLE&amp;lt;ref&amp;gt;Create tabel (mysql) http://dev.mysql.com/doc/refman/5.5/en/create-table.html&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name&lt;br /&gt;
    (create_definition,...)&lt;br /&gt;
    [table_options]&lt;br /&gt;
    [partition_options]&lt;br /&gt;
&lt;br /&gt;
create_definition:&lt;br /&gt;
    col_name column_definition&lt;br /&gt;
  | [CONSTRAINT [symbol]] PRIMARY KEY [index_type] (index_col_name,...)&lt;br /&gt;
      [index_option] ...&lt;br /&gt;
  | {INDEX|KEY} [index_name] [index_type] (index_col_name,...)&lt;br /&gt;
      [index_option] ...&lt;br /&gt;
&lt;br /&gt;
column_definition:&lt;br /&gt;
    data_type [NOT NULL | NULL] [DEFAULT default_value]&lt;br /&gt;
      [AUTO_INCREMENT] [UNIQUE [KEY] | [PRIMARY] KEY]&lt;br /&gt;
      [COMMENT 'string']&lt;br /&gt;
&lt;br /&gt;
data_type:&lt;br /&gt;
    pozri &amp;quot;Dátové typy&amp;quot;&lt;br /&gt;
&lt;br /&gt;
index_type:&lt;br /&gt;
    USING {BTREE | HASH}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
kde pri definícii tabuľky:&lt;br /&gt;
*TEMPORARY - &lt;br /&gt;
*IF NOT EXISTS -&lt;br /&gt;
*tbl_name -&lt;br /&gt;
pri definícii štruktúry tabuľky(create_definition):&lt;br /&gt;
*CONSTRAINT - &lt;br /&gt;
*PRIMARY KEY - &lt;br /&gt;
*INDEX -&lt;br /&gt;
*KEY -&lt;br /&gt;
pri definícii konkrétneho typu (column_definition):&lt;br /&gt;
*NOT NULL -&lt;br /&gt;
*NULL -&lt;br /&gt;
*DEFAULT -&lt;br /&gt;
*AUTO_INCREMENT -&lt;br /&gt;
*UNIQUE -&lt;br /&gt;
*PRIMARY -&lt;br /&gt;
*COMMENT -&lt;br /&gt;
Pri definícii typu indexu (index_type):&lt;br /&gt;
*BTREE -&lt;br /&gt;
*HASH -&lt;br /&gt;
&lt;br /&gt;
'''Úloha:'''&lt;br /&gt;
&lt;br /&gt;
Podľa prípadovej štúdie (evidencia projektov) vytvorte tabuľky ''projekt'' a ''rozpocet''. Typy jednotlivých atribútov sú opísané taktiež v tejto prípadovej štúdii na začiatku tejto kapitoly.&lt;br /&gt;
&lt;br /&gt;
Riešenie:&lt;br /&gt;
&lt;br /&gt;
Tabuľka ''projekt'':&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE TABLE `projekty`.`Projekt` (&lt;br /&gt;
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,&lt;br /&gt;
`nazov` VARCHAR( 64 ) NOT NULL ,&lt;br /&gt;
`typ_projektu` ENUM( 'IP', 'ESF', 'STREP', 'CRAFT', 'CRP' ) NOT NULL ,&lt;br /&gt;
`zaciatok` DATE NOT NULL ,&lt;br /&gt;
`koniec` DATE NOT NULL ,&lt;br /&gt;
`obsah` TEXT NOT NULL&lt;br /&gt;
) ENGINE = InnoDB;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tabuľka ''rozpocet'':&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
... vytvorenie tabulky&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===CREATE VIEW===&lt;br /&gt;
Príkazom CREATE VIEW&amp;lt;ref&amp;gt;create view (mysql) http://dev.mysql.com/doc/refman/5.5/en/create-view.html&amp;lt;/ref&amp;gt; môžeme vytvoriť pohľad. Pohľadom sa venuje samostatná [[SQL - pohľady|kapitola]]. Syntax príkazu CREATE VIEW je nasledovná&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE&lt;br /&gt;
    [OR REPLACE]&lt;br /&gt;
    [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]&lt;br /&gt;
    [DEFINER = { user | CURRENT_USER }]&lt;br /&gt;
    [SQL SECURITY { DEFINER | INVOKER }]&lt;br /&gt;
    VIEW view_name [(column_list)]&lt;br /&gt;
    AS select_statement&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
kde:&lt;br /&gt;
*OR REPLACE - &lt;br /&gt;
*ALGORITHM -&lt;br /&gt;
*DEFINER -&lt;br /&gt;
*SQL SECURUTY -&lt;br /&gt;
*select_statement -&lt;br /&gt;
&lt;br /&gt;
'''Príklad:'''&lt;br /&gt;
&lt;br /&gt;
Vytvorte pohľad na základe dotazu: Koľko je v databáze projektov, rozdelených podľa typov projektov. Nezaujíma nás teda celkový počet projektov ale počet projektov podľa typu projektu.&lt;br /&gt;
&lt;br /&gt;
Riešenie:&lt;br /&gt;
SQL dotaz, pomocou ktorého dosiahneme požadovaný výsledok&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
... riesenie&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vytvorenie pohľadu ''rodelenie_projektov''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
... riesenie&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===CREATE PROCEDURE===&lt;br /&gt;
Príkaz CREATE PROCEDURE&amp;lt;ref&amp;gt;CREATE PROCEDURE (mysql) http://dev.mysql.com/doc/refman/5.5/en/create-procedure.html&amp;lt;/ref&amp;gt; vytvorí na databázovom serveri uloženú procedúru. Podrobnejšie o uložených procedúrach hovorí kapitola [[SQL - uložené procedúry]]. Syntax je nasledujúca:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE&lt;br /&gt;
    [DEFINER = { user | CURRENT_USER }]&lt;br /&gt;
    PROCEDURE sp_name ([proc_parameter[,...]])&lt;br /&gt;
    routine_body&lt;br /&gt;
&lt;br /&gt;
proc_parameter:&lt;br /&gt;
    [ IN | OUT | INOUT ] param_name type&lt;br /&gt;
&lt;br /&gt;
type:&lt;br /&gt;
    Ľubovoľný dátový SQL typ.&lt;br /&gt;
&lt;br /&gt;
routine_body:&lt;br /&gt;
    SQL príkaz&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
kde:&lt;br /&gt;
*DEFINER&lt;br /&gt;
*sp_name&lt;br /&gt;
*proc_parameter&lt;br /&gt;
**IN&lt;br /&gt;
**OUT&lt;br /&gt;
**INOUT&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Úloha:'''&lt;br /&gt;
Vytvorte uloženú ktorá v tabuľke rozpočet zvýši určitému projektu (jeho ID bude vstupný parameter procedúry) bežné a kapitálové výdavky 1.1x.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Riešenie:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE PROCEDURE zvysKV(.....&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ukážka použitia uloženej procedúry&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
   CALL zvysKV(1)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===CREATE TRIGGER===&lt;br /&gt;
Príkaz CREATE TRIGGER&amp;lt;ref&amp;gt;CREATE TRIGGER (mysql) http://dev.mysql.com/doc/refman/5.5/en/create-trigger.html&amp;lt;/ref&amp;gt; vytvorí v databáze trigger (spúšťač, resp. automaticky spúšťanú procedúru). Jeho syntax je nasledovná:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE&lt;br /&gt;
    [DEFINER = { user | CURRENT_USER }]&lt;br /&gt;
    TRIGGER trigger_name trigger_time trigger_event&lt;br /&gt;
    ON tbl_name FOR EACH ROW trigger_body&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
kde:&lt;br /&gt;
*DEFINER&lt;br /&gt;
*trigger_name&lt;br /&gt;
*trigger_time&lt;br /&gt;
*trigger_event&lt;br /&gt;
*FOR EACH ROW&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Úloha:'''&lt;br /&gt;
Vytvorte trigger, ktorý sa bude spúšťať pred modifikáciou záznamu v tabuľke rozpočet. Tento trigger nedovolí urobiť zmenu rozpočtu aktuálneho projektu mimo obdobia riešenia projektu. Teda ak je projekt naplánovaný od roku 2010 do 2012, tak ak sa niekto pokúsi urobiť zmenu mimo tohoto obdobia, tento trigger mu to nedovolí.&lt;br /&gt;
&lt;br /&gt;
Riešenie:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
...riešnie&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==ALTER==&lt;br /&gt;
Príkaz ALTER slúži na modifikovanie štruktúry databázových objektov.&lt;br /&gt;
===ALTER DATABASE===&lt;br /&gt;
Príkaz ALTER DATABASE&amp;lt;ref&amp;gt;ALTER DATABASE (mysql) http://dev.mysql.com/doc/refman/5.5/en/alter-database.html&amp;lt;/ref&amp;gt;dovoľuje zmeniť vlastnosti databázy ako napríklad meno, znakovú sadu, zotriedenie. Syntax je nasledujúca:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
ALTER {DATABASE | SCHEMA} [db_name]&lt;br /&gt;
    alter_specification ...&lt;br /&gt;
ALTER {DATABASE | SCHEMA} db_name&lt;br /&gt;
    UPGRADE DATA DIRECTORY NAME&lt;br /&gt;
&lt;br /&gt;
alter_specification:&lt;br /&gt;
    [DEFAULT] CHARACTER SET [=] charset_name&lt;br /&gt;
  | [DEFAULT] COLLATE [=] collation_name&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
kde:&lt;br /&gt;
*alter_specification - &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Úloha:'''&lt;br /&gt;
Zmeňte znakovú sadu databázy projekty na utf8-slovak-ci.&lt;br /&gt;
&lt;br /&gt;
Riešenie:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
...riešenie&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===ALTER TABLE===&lt;br /&gt;
Príkaz ALTER TABLE&amp;lt;ref&amp;gt;ALTER TABLE(mysql) http://dev.mysql.com/doc/refman/5.5/en/alter-table.html&amp;lt;/ref&amp;gt;dovoľuje zmeniť vlastnosti tabuľky ako napríklad meno, dátový typ, znakovú sadu, zotriedenie. Syntax je nasledujúca:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
ALTER [IGNORE] TABLE tbl_name alter_spec [, alter_spec ...] &lt;br /&gt;
&lt;br /&gt;
alter_specification: &lt;br /&gt;
    ADD [COLUMN] create_definition [FIRST | AFTER column_name ] &lt;br /&gt;
| ADD [COLUMN] (create_definition, create_definition,...) &lt;br /&gt;
| ADD INDEX [index_name] (index_col_name,...) &lt;br /&gt;
| ADD PRIMARY KEY (index_col_name,...) &lt;br /&gt;
| ADD UNIQUE [index_name] (index_col_name,...) &lt;br /&gt;
| ADD FULLTEXT [index_name] (index_col_name,...) &lt;br /&gt;
| ALTER [COLUMN] col_name {SET DEFAULT literal | DROP DEFAULT} &lt;br /&gt;
| CHANGE [COLUMN] old_col_name create_definition &lt;br /&gt;
| MODIFY [COLUMN] create_definition &lt;br /&gt;
| DROP [COLUMN] col_name &lt;br /&gt;
| DROP PRIMARY KEY &lt;br /&gt;
| DROP INDEX index_name &lt;br /&gt;
| RENAME [TO] new_tbl_name &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
kde:&lt;br /&gt;
*IGNORE&lt;br /&gt;
*FIRST, AFTER&lt;br /&gt;
*ADD&lt;br /&gt;
*ALTER&lt;br /&gt;
*CHANGE&lt;br /&gt;
*MODIFY&lt;br /&gt;
*DROP&lt;br /&gt;
*RENAME&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Úloha:'''&lt;br /&gt;
Zmente názov atribútu ''zaciatok'' na ''zaciatok_riesenia'' a názov atribútu ''koniec'' na ''koniec_riesenia''.&lt;br /&gt;
&lt;br /&gt;
Riešenie:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
   ALTER TABLE `projekt` CHANGE `zaciatok` `zaciatok_riesenia` DATE NOT NULL&lt;br /&gt;
   ALTER TABLE `projekt` CHANGE `koniec` `koniec_riesenia` DATE NOT NULL  &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==DROP==&lt;br /&gt;
Pomocou príkazu DROP sa mažú databázové objekty. Príkaz DROP môžeme použiť na mazanie&lt;br /&gt;
*databáz - DROP DATABASE&lt;br /&gt;
*tabuliek - DROP TABLE&lt;br /&gt;
*procedúr - DROP PROCEDURE&lt;br /&gt;
*triggerov - DROP TRIGGER&lt;br /&gt;
*pohľadov - DROP VIEW&lt;br /&gt;
===DROP TABLE===&lt;br /&gt;
Zmazanie tabuľky sa realizuje pomocou príkazu DROP TABLE&amp;lt;ref&amp;gt;Drop table (mysql) http://dev.mysql.com/doc/refman/5.5/en/drop-table.html&amp;lt;/ref&amp;gt;. Syntax je nasledujúca:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
DROP [TEMPORARY] TABLE [IF EXISTS]&lt;br /&gt;
    tbl_name [, tbl_name] ...&lt;br /&gt;
    [RESTRICT | CASCADE]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
kde:&lt;br /&gt;
*tbl_name - názov tabuľky, ktorú ideme mazať.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Úloha:'''&lt;br /&gt;
Zmažte všetky tabuľky na databáze ''projekty''.&lt;br /&gt;
&lt;br /&gt;
Riešenie:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
...riešenie&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===DROP DATABASE===&lt;br /&gt;
Zmazanie databázy sa realizuje pomocou príkazu DROP DATABASE&amp;lt;ref&amp;gt;Drop database (mysql) http://dev.mysql.com/doc/refman/5.5/en/drop-database.html&amp;lt;/ref&amp;gt;. Syntax je nasledujúca:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
   DROP {DATABASE | SCHEMA} [IF EXISTS] db_name&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Úloha:'''&lt;br /&gt;
Zmažte databázu ''projekty''.&lt;br /&gt;
&lt;br /&gt;
Riešenie:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
...riešenie&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
===Mazanie ostatných objektov===&lt;br /&gt;
&lt;br /&gt;
'''Mazanie pohľadu:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Mazanie uloženej procedúry:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Mazanie triggera:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Zdroje a odkazy==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lusing</name></author>
		
	</entry>
</feed>