View
30
Download
2
Category
Preview:
DESCRIPTION
Základní obeznámení s jazykem SQL. Datab á zov é syst é my. Úvod. Structured Query Language standardní jazyk pro přístup k relačním databázím původně snaha o co nejpřirozenější formulace DB požadavků (např. příkaz SELECT je to v podstatě „věta“ – proto je tak složitý) - PowerPoint PPT Presentation
Citation preview
Zaacutekladniacute obeznaacutemeniacute s
jazykem SQL
Databaacutezoveacute
systeacutemy
Uacutevod Structured Query Language
standardniacute jazyk pro přiacutestup k relačniacutem databaacuteziacutem původně snaha o co nejpřirozenějšiacute formulace DB požadavků
(např přiacutekaz SELECT je to v podstatě bdquovětaldquo ndash proto je tak složityacute) je zaacuteroveň jazykem pro
definici dat (DDL) vytvaacuteřeniacutemodifikace scheacutemat resp tabulek
manipulaci s daty (DML) dotazovaacuteniacute vklaacutedaacuteniacute aktualizace mazaacuteniacute dat
definici integritniacutech omezeniacute moduly (programovaciacute jazyk) řiacutezeniacute transakciacute atd
Historie70-ta leacuteta ndash vznikl z vyacutezkumneacuteho projektu o relačniacutech databaacuteziacutech vedeneacuteho
v firmou IBM - Sequel1986 ndash byl přijat jako oficiaacutelniacute standard ANSI (označovaacuten SQL86)1989 ndash integritniacute dodatek (označovaacuten SQL89)1992 ndash opravenaacute verze označovaacutena jako SQL92 - je standardem dodnes ndash dalšiacute standardy X_OPEN SQL (Unix) SAA-SQL (IBM) 1996 ndash dodatek pro uloženeacute moduly1999 ndash posledniacute sada dokumentů SQL99
objektově-relačniacute rozšiacuteřeniacute typy STRING BOOLEAN REF ARRAY typy pro full-text obraacutezky
prostorovaacute data triggery role programovaciacute jazyk regulaacuterniacute vyacuterazy rekurzivniacute dotazy atd
2003 ndash dalšiacute rozšiacuteřeniacute např XML management autočiacutesla std sekvence nicmeacuteně zmizel např typ BIT
Dotazy v SQL
dotaz v SQL vs kalkuly a algebra přiacutekaz SELECT sdiacuteliacute prvky obou aparaacutetů
rozšiacuteřenyacute DRK (praacutece se sloupci kvantifikaacutetory agregačniacute funkce) algebra (některeacute operace ndash projekce selekce spojeniacute kartsoučin
množinoveacute operace) na rozdiacutel od striktniacute formulace relačniacuteho modelu jsou povoleny
duplikaacutetniacute řaacutedky a nuloveacute hodnoty atributů
validaacutetor syntaxe pro SQL 92 1999 2003 umožnuje zkontrolovat dotaz (nebo jinyacute SQL přiacutekaz) podle normy httpdevelopermimercomvalidatorindexhtm
SQL patři do kategorie tzv deklarativniacutech programovaciacutech jazyků - koacuted jazyka SQL nepiacutešeme v žaacutedneacutem samostatneacutem programu ale vklaacutedaacuteme jej do jineacuteho programovaciacuteho jazyka kteryacute je již proceduraacutelniacute
Se samotnyacutem jazykem SQL můžeme pracovat pouze v přiacutepadě že se terminaacutelem připojiacuteme na SQL server a na přiacutekazovyacute řaacutedek zadaacutevaacuteme přiacutemo přiacutekazy jazyka SQL
Pro řešeniacute probleacutemů různyacutech syntaxi SQL (použiacutevanyacutech před zavedeniacutem standardu) Microsoft formalizoval CLI ndash Common Language Interface pro pracovniacute stanice a oznaacutemil že jeho produkty by měli použiacutevat toto rozhraniacute ndash nazyacutevaacute ho ODBC ndash Open Databaze Connectivity
Kontexty použitiacute jazyka SQL1048766 přiacutemyacute (direct) SQL 1048766 hostitelskaacute verze (embedded) SQL 1048766 jazyk modulů
Hlavniacute kategorie přiacutekazů bull1048766 definice dat a pohledů (DDL ndash Data Definition Language) bull1048766 manipulace s daty (DML ndash Data Manipulation Language)
1048766 - pro přiacutemyacute SQL 1048766 - pro hostitelskou verzi
bull1048766 autorizace (řiacutezeniacute přiacutestupovyacutech praacutev) bull1048766 integrita dat bull1048766 řiacutezeniacute transakciacute
Dotazy v SQL
pro vysvětleniacute použijeme syntaxi SQL 86 pomociacute diagramů orientovanyacute graf - automat rozpoznaacutevajiacuteciacute SQL rozlišovaacuteniacute termů v diagramu
malaacute piacutesmena podtrženiacute ndash podvyacuteraz v raacutemci daneacute konstrukce velkaacute piacutesmena ndash kliacutečoveacute slovo SQL malaacute piacutesmena kurziacuteva ndash jmeacuteno (tabulkysloupce)
miacutesto atributdomeacutena relace budeme použiacutevat označeniacute
sloupec tabulka
CREATE TABLE ndash zaacutekladniacute konstrukce
vytvořeniacute scheacutematu a praacutezdneacute tabulky (pokud již neniacute tabulka s danyacutem jmeacutenem založena)
tabulka maacute definovaacuteny jednak sloupce (atributy a souvisejiacuteciacute atributovaacute IO) a jednak tabulkovaacute IO
CREATE TABLE ndash definice sloupce
každyacute sloupec maacute vždy přiřazen jednak datovyacute typ (data_type) nepovinně je možno specifikovat
implicitniacute hodnotu v nově vytvořeneacutem zaacuteznamu (DEFAULT NULL | value) sloupcoveacute integritniacute omezeniacute
CREATE TABLE ndash integritniacute omezeniacute sloupce (lokaacutelniacute)
sloupcoveacute IO umožňuje omezit množinu platnyacutech hodnot daneacuteho atributu v raacutemci zaacuteznamu (noveacuteho nebo modifikovaneacuteho)
pojmenovaneacute CREATE TABLE ( CONSTRAINT constraint ) nepojmenovaneacute
5 typů omezeniacute na platnou hodnotu atributu NOT NULL ndash hodnota musiacute byacutet nenulovaacute UNIQUE ndash hodnota musiacute byacutet unikaacutetniacute (v raacutemci všech řaacutedků v tabulce) PRIMARY KEY ndash definuje primaacuterniacute kliacuteč (toteacutež jako NOT NULL + UNIQUE) REFERENCES ndash definuje jednoatributovyacute ciziacute kliacuteč (oba atributy musiacute byacutet kompatibilniacute) CHECK ndash obecnaacute podmiacutenka
vyhodnotiacute se pouze na vklaacutedaneacutem řaacutedku (řaacutedciacutech) při vyhodnoceniacute podmiacutenky na TRUE je hodnota atributu platnaacute
při pokusu o aktualizaciřaacutedků s neplatnou hodnotou atributu se aktualizace celeacuteho řaacutedkuneprovede
CREATE TABLE ndash integritniacute omezeniacute tabulky (globaacutelniacute)
zobecněniacute atributovyacutech IO pro kombinace hodnot viacutece sloupců kromě NOT NULL to maacute smysl pouze u jednotlivyacutech atributů
UNIQUE ndash n-tice hodnot je unikaacutetniacute FOREIGN KEY ndash stejně jako REFERENCES u atributu CHECK
Referenčniacute integrita při aktualizaci tabulky referujiacuteciacute (ta pro kterou je IO definovaacuteno) nebo
referovaneacute může nastat porušeniacute integrity ciziacutech kliacutečů pokus o vloženiacuteaktualizaci zaacuteznamu s hodnotou ciziacuteho kliacuteče kteraacute se nevyskytuje v sloupci referovaneacute
tabulky pokus o smazaacuteniacute zaacuteznamu z referovaneacute tabulky když pro mazanou hodnotu kliacuteče existuje reference
při porušeniacute integrity ciziacutech kliacutečů může nastat hlaacutešeniacute chyby aktualizace pokud neniacute definovaacutena referenčniacute akce (SQL 89) vykonaacuteniacute referenčniacute akce referential_action (SQL 92)
ON UPDATE ON DELETE ndash podmiacutenka spuštěniacute akce při modifikaci referovaneacute hodnoty nebo smazaacuteniacute řaacutedku v referovaneacute tabulce
CASCADE ndash zaacuteznam s referujiacuteciacute hodnotou se takeacute smaže nebo aktualizuje novou hodnotou SET NULL ndash hodnota dotčeneacuteho zaacuteznamu se nastaviacute na NULL SET DEFAULT ndash hodnota dotčeneacuteho zaacuteznamu se nastaviacute na implicitniacute hodnotu definovanou v
CREATE TABLE NO ACTION ndash implicitniacute neprovede se nic resp SŘBD ohlaacutesiacute chybu tj chovaacuteniacute v raacutemci SQL 89
Modifikaacutetory AUTO_INCREMENT ndash (automatickeacute čiacuteslo) definuje datovyacute typ pole kteryacute při
přidaacuteniacute noveacuteho zaacuteznamu do tabulky automaticky uložiacute jedinečneacute čiacuteslo o jedničku většiacute než předchoziacute Nedovoliacute uložit už jednou použitou hodnotu i když zaacuteznam s touto hodnotou byl již z databaacuteze odstraněn Modifikaacutetor AUTO_INCREMENT lze použiacutet pouze u poliacute s celočiacuteselnyacutemi hodnotami
ZEROFILL ndash použiacutevaacute se k zobrazeniacute vedouciacutech nul u čiacutesel kteraacute jsou založena na šiacuteřce zobrazeniacute tj vyžadujiacute určityacute počet čiacuteslic Chceme-li čiacuteslo 23 zobrazit jako 000023 musiacuteme pole deklarovat jako INT(6) ZEROFILL
BINARY ndash umožňuje uklaacutedaacuteniacute textovyacutech informaciacute jako binaacuterniacutech řetězců Řetězce uloženeacute v binaacuterniacutem formaacutetu rozlišujiacute velikost piacutesmen To se projeviacute takeacute na třiacuteděniacute těchto poliacute
DEFAULT ndash umožňuje určit hodnotu pole jehož hodnota nebude při uloženiacute zaacuteznamu (řaacutedku) znaacutemaacute Vyacutechoziacute hodnotou použiacutevanou v systeacutemu MySQL je NULL Hodnota NULL je dosazovaacutena do všech praacutezdnyacutech poliacute kromě poliacute typu ENUM
Vytvořeniacute baacutezoveacute tabulky
- přiacutekaz vytvořiacute novou praacutezdnou tabulku s definovanyacutem počtem sloupců a popis uložiacute do katalogu
Integritniacute omezeniacute jsou omezeniacute kladenaacute na hodnoty ve sloupciacutech tabulky aby nedošlo k porušeniacute integrity dat
CREATE TABLE naacutezev_tabulky (definice_sloupce hellip [definice_integritniacutech_omezeniacute_tabulky] )
jmeacuteno_sloupce TYP [impl_hodnota] [integritniacute omezeniacute_sloupce]
Definice sloupce
Integritniacute omezeniacute celeacute tabulky
PRIMARY KEY (jm_sloupce hellip) UNIQUE (jm_sloupce hellip) FOREIGN KEY (jm_sloupce hellip) REFERENCES tabulka [(jm_sloupce hellip)] [udaacutelost ref_akce]
CHECK (podmiacuteněnyacute_vyacuteraz)
Integritniacute omezeniacute sloupce
NULL resp NOT NULL CHECK (podmiacuteněnyacute_vyacuteraz) PRIMARY KEY UNIQUE FOREIGN KEY REFERENCES tabulka [(jm_sloupce)]
[udaacutelost ref_akce]
Referenčniacute akce - CASCADE SET DEFAULT SET NULL
Přiacuteklad Spořitelna ndash tabulky s globaacutelniacutemi IO
KLIENTr_cislo jmeno prijmeni ulice mesto6010121224 Jan Novyacute Jaacutenskaacute 25 Zliacuten8261115267 Petra Novaacutekovaacute Poštovaacute 128 Lešnaacute5805064891 Pavel Novaacuteček Nezvalova 697 Zliacuten7953022459 Ivana Novotnaacute Pod mlyacutenem 12 Lukov
UCET POBOCKAc_uctu stav r_cislo pobocka c_p nazev jmeni4568517 42000 8261115267 2 1 Naacutem Miacuteru 12 50000006585485 75000 5805064891 1 2 Zaraacutemiacute 325 80000003256151 25000 8261115267 1
TRANSAKCEc_uctu c_transakce castka datum6585485 1 -2100 110920074568517 1 -4560 110920076585485 2 10000 12092007
CREATE TABLE Klient(r_cislo VARCHAR(11) NOT NULL jmeno VARCHAR(20) NOT NULL prijmeni VARCHAR(30) NOT NULL ulice VARCHAR(30) NOT NULL mesto VARCHAR(30) NOT NULL CONSTRAINT pk PRIMARY KEY (r_cislo)) CREATE TABLE Pobocka(c_p INT NOT NULL nazev VARCHAR(10) jmeni DECIMAL(102) CONSTRAINT pk PRIMARY KEY (c_p))
CREATE TABLE Ucet (c_uctu DECIMAL(70) NOT NULL stav DECIMAL(102) r_cislo VARCHAR(11) NOT NULL pobocka VARCHAR(20) NOT NULL CONSTRAINT pk PRIMARY KEY (c_uctu) CONSTRAINT fk1 FOREIGN KEY (r_cislo) REFERENCES Klient CONSTRAINT fk2 FOREIGN KEY (pobocka) REFERENCES Pobocka )
ALTER TABLE
změna definice scheacutematu atributy ndash přidaacuteniacuteodebraacuteniacute atributu změna DEFAULT hodnoty IO ndash přidaacuteniacuteodebraacuteniacute IO
pozor v tabulce už mohou byacutet data kteraacute nedovoliacute změnit IO (např zaveacutest IO primaacuterniacute kliacuteč)
ALTER TABLE table-name
ADD [COLUMN] column-name column-definition
ADD constraint-definition
ALTER [COLUMN] column-name SET
ALTER [COLUMN] column-name DROP
DROP COLUMN column-name
DROP CONSTRAINT constraint-name
Změna struktury tabulky
ALTER TABLE naacutezev_tabulky aktualizace
ALTER TABLE naacutezev_tabulkyADD COLUMN jmeacuteno_sloupce typ_sloupce [integritniacute omezeniacute]
Modifikuje tabulku a změniacute informace v katalogu
V přiacutepadě že v tabulce již nějakaacute data jsou lze použiacutet naacutesledujiacuteciacute přiacutekaz
Přidaacuteniacute sloupců do tabulky
Uacuteprava definice sloupců
ALTER TABLE naacutezev_tabulkyCHANGE COLUMN stareacute_jmeacuteno_sloupce noveacute_jmeacuteno_sloupce typ_sloupce [integritniacute mezeniacute]
ALTER TABLE naacutezev_tabulky DROP COLUMN jmeacuteno_sloupce [CASCADE]
Zaacutekladniacute přiacutekaz
Mazaacuteniacute sloupců
Maacuteme-li nějakyacute sloupec jehož hodnoty už opravdu nepotřebujeme jednoduše jej smažeme naacutesledujiacuteciacutem přiacutekazem
Přejmenovaacuteniacute sloupce
Prvniacute možnost je rychlejšiacute a využijeme v niacute již znaacutemyacute přiacutekaz
Druhaacute možnost je obecnějšiacute je potřeba proveacutest ji ve viacutece krociacutech
ALTER TABLE naacutezev_tabulkyCHANGE COLUMN stareacute_jmeacuteno_sloupce
noveacute_jmeacuteno_sloupce typ_sloupce [integritniacute omezeniacute]
ALTER TABLE naacutezev_tabulky ADD COLUMN jmeacuteno_sloupce typ_sloupce [integritniacute omezeniacute]
UPDATE naacutezev_tabulkySET stareacute_jmeacuteno_sloupce = noveacute_jmeacuteno_sloupce
ALTER TABLE naacutezev_tabulkyDROP stareacute_jmeacuteno_sloupce
DROP TABLE DROP TABLE table komplementaacuterniacute k přiacutekazu CREATE TABLE table smaže se jak obsah tabulky tak i scheacutema tabulky
pokud chceme vymazat pouze obsah tabulky použijeme přiacutekaz DELETE FROM table
Pokud provedeme přiacutekaz DROP TABLE tak přijdeme o všechna data kteraacute v mazaneacute tabulce byla uložena
Odstraněniacute tabulky
DROP TABLE naacutezev_tabulky
Modifikace dat SQL obsahuje kromě SELECT tři přiacutekazy pro manipulaci s
daty INSERT INTO ndash vloženiacute řaacutedků DELETE FROM ndash vymazaacuteniacute řaacutedků UPDATE ndash aktualizace hodnot v řaacutedciacutech
INSERT INTO vklaacutedaacuteniacute řaacutedku vyacutečtem hodnot dvě možnosti
INSERT INTO table VALUES (h1 h2 h3 h4) INSERT INTO table (s1 s2 s4) VALUES (h1 h2 h4)
vklaacutedaacuteniacute viacutece řaacutedků vyacutečtem hodnot INSERT INTO table VALUES (h11 h12 h13)(h21 h22 h23)
vklaacutedaacuteniacute viacutece řaacutedků jejichž hodnoty vzniknou jako vyacutesledek dotazu INSERT INTO tabulka | (vyacutečet atributů) | (SELECT FROM )
INSERT INTO naacutezev_tabulky [(naacutez_sloupce]] zdroj
Zdroje pro vklaacutedaniacute dat Řaacutedek implicitniacutech hodnot ndash z přiacutekazu CREATE TABLE
Řaacutedek zadanyacutech hodnot
DEFAULT_VALUES
VALUES (skalarniacute_vyacuteraz|NULL|DEFAULThellip)
Vyacutesledek poddotazu
tabulkovyacute_vyacuteraz
Přiacuteklad
INSERT INTO Klient VALUES (lsquo6010121224lsquolsquoJanlsquolsquoNovyacutelsquolsquoJaacutenskaacute 25lsquolsquoZliacutenlsquo)
INSERT INTO Klient (r_cislo jmeno prijmeni ulice mesto)VALUES (lsquo8261115267lsquolsquoPetralsquolsquoNovaacutekovaacutelsquolsquoPoštovaacute 128lsquolsquoLešnaacutelsquo)
(lsquo5805064891lsquolsquoPavellsquolsquoNovaacutečeklsquolsquoNezvalova 697lsquolsquoZliacutenlsquo)
UPDATE aktualizace zaacuteznamů splňujiacuteciacutech podmiacutenku hodnoty zvolenyacutech atributů vybranyacutech zaacuteznamů jsou
nastaveny na NULL hodnotu expression (např konstanta) vyacutesledek dotazu
Aktualizace dat
UPDATE naacutezev_tabulky SET sloupec = rsquohodnotarsquo
UPDATE naacutezev_tabulky SET sloupec1 = rsquohodnota1rsquosloupec2 = rsquohodnota2rsquohellip
UPDATE naacutezev_tabulky SET sloupec1 = rsquohodnota1rsquoWHERE sloupec2 = rsquohodnota2rsquo
Použitiacute klauzule WHERE
Pro změnu viacutece hodnot se použiacutevaacute zaacutepis
Přiacuteklad
UPDATE Klient SET jmeno = lsquoJakubrsquo WHERE r_cislo = lsquo6010121224rsquo
UPDATE Ucet AS u SET stav = stav+ (SELECT castka FROM Transakce AS t WHERE uc_uctu = tc_uctu)
DELETE FROM
vymaže zaacuteznamy ktereacute splňujiacute podmiacutenku bez nadefinovaacuteniacute podmiacutenky vymaže všechny zaacuteznamy
DELETE FROM naacutezev_tabulky WHERE sloupec = rsquohodnotarsquo
Odstraňovaacuteniacute dat
POZOR ndash po odstraněniacute zaacuteznamu už neniacute možneacute zaacuteznam obnovit Je dobreacute miacutet data pro jistotu zaacutelohovanaacute Při odstraňovaacuteniacute dat je nutneacute použiacutevat podmiacutenku WHERE jinak se může staacutet že z tabulky odstraniacutete všechna data
Chcete-li zajistit většiacute bezpečnost před nechtěnyacutem odstraněniacutem zaacuteznamů můžete použiacutet klauzuli LIMIT kteraacute omeziacute počet odstraňovanyacutech zaacuteznamů
DELETE FROM naacutezev_tabulky WHERE sloupec = rsquohodnotarsquoLIMIT 1
Uacutevod Structured Query Language
standardniacute jazyk pro přiacutestup k relačniacutem databaacuteziacutem původně snaha o co nejpřirozenějšiacute formulace DB požadavků
(např přiacutekaz SELECT je to v podstatě bdquovětaldquo ndash proto je tak složityacute) je zaacuteroveň jazykem pro
definici dat (DDL) vytvaacuteřeniacutemodifikace scheacutemat resp tabulek
manipulaci s daty (DML) dotazovaacuteniacute vklaacutedaacuteniacute aktualizace mazaacuteniacute dat
definici integritniacutech omezeniacute moduly (programovaciacute jazyk) řiacutezeniacute transakciacute atd
Historie70-ta leacuteta ndash vznikl z vyacutezkumneacuteho projektu o relačniacutech databaacuteziacutech vedeneacuteho
v firmou IBM - Sequel1986 ndash byl přijat jako oficiaacutelniacute standard ANSI (označovaacuten SQL86)1989 ndash integritniacute dodatek (označovaacuten SQL89)1992 ndash opravenaacute verze označovaacutena jako SQL92 - je standardem dodnes ndash dalšiacute standardy X_OPEN SQL (Unix) SAA-SQL (IBM) 1996 ndash dodatek pro uloženeacute moduly1999 ndash posledniacute sada dokumentů SQL99
objektově-relačniacute rozšiacuteřeniacute typy STRING BOOLEAN REF ARRAY typy pro full-text obraacutezky
prostorovaacute data triggery role programovaciacute jazyk regulaacuterniacute vyacuterazy rekurzivniacute dotazy atd
2003 ndash dalšiacute rozšiacuteřeniacute např XML management autočiacutesla std sekvence nicmeacuteně zmizel např typ BIT
Dotazy v SQL
dotaz v SQL vs kalkuly a algebra přiacutekaz SELECT sdiacuteliacute prvky obou aparaacutetů
rozšiacuteřenyacute DRK (praacutece se sloupci kvantifikaacutetory agregačniacute funkce) algebra (některeacute operace ndash projekce selekce spojeniacute kartsoučin
množinoveacute operace) na rozdiacutel od striktniacute formulace relačniacuteho modelu jsou povoleny
duplikaacutetniacute řaacutedky a nuloveacute hodnoty atributů
validaacutetor syntaxe pro SQL 92 1999 2003 umožnuje zkontrolovat dotaz (nebo jinyacute SQL přiacutekaz) podle normy httpdevelopermimercomvalidatorindexhtm
SQL patři do kategorie tzv deklarativniacutech programovaciacutech jazyků - koacuted jazyka SQL nepiacutešeme v žaacutedneacutem samostatneacutem programu ale vklaacutedaacuteme jej do jineacuteho programovaciacuteho jazyka kteryacute je již proceduraacutelniacute
Se samotnyacutem jazykem SQL můžeme pracovat pouze v přiacutepadě že se terminaacutelem připojiacuteme na SQL server a na přiacutekazovyacute řaacutedek zadaacutevaacuteme přiacutemo přiacutekazy jazyka SQL
Pro řešeniacute probleacutemů různyacutech syntaxi SQL (použiacutevanyacutech před zavedeniacutem standardu) Microsoft formalizoval CLI ndash Common Language Interface pro pracovniacute stanice a oznaacutemil že jeho produkty by měli použiacutevat toto rozhraniacute ndash nazyacutevaacute ho ODBC ndash Open Databaze Connectivity
Kontexty použitiacute jazyka SQL1048766 přiacutemyacute (direct) SQL 1048766 hostitelskaacute verze (embedded) SQL 1048766 jazyk modulů
Hlavniacute kategorie přiacutekazů bull1048766 definice dat a pohledů (DDL ndash Data Definition Language) bull1048766 manipulace s daty (DML ndash Data Manipulation Language)
1048766 - pro přiacutemyacute SQL 1048766 - pro hostitelskou verzi
bull1048766 autorizace (řiacutezeniacute přiacutestupovyacutech praacutev) bull1048766 integrita dat bull1048766 řiacutezeniacute transakciacute
Dotazy v SQL
pro vysvětleniacute použijeme syntaxi SQL 86 pomociacute diagramů orientovanyacute graf - automat rozpoznaacutevajiacuteciacute SQL rozlišovaacuteniacute termů v diagramu
malaacute piacutesmena podtrženiacute ndash podvyacuteraz v raacutemci daneacute konstrukce velkaacute piacutesmena ndash kliacutečoveacute slovo SQL malaacute piacutesmena kurziacuteva ndash jmeacuteno (tabulkysloupce)
miacutesto atributdomeacutena relace budeme použiacutevat označeniacute
sloupec tabulka
CREATE TABLE ndash zaacutekladniacute konstrukce
vytvořeniacute scheacutematu a praacutezdneacute tabulky (pokud již neniacute tabulka s danyacutem jmeacutenem založena)
tabulka maacute definovaacuteny jednak sloupce (atributy a souvisejiacuteciacute atributovaacute IO) a jednak tabulkovaacute IO
CREATE TABLE ndash definice sloupce
každyacute sloupec maacute vždy přiřazen jednak datovyacute typ (data_type) nepovinně je možno specifikovat
implicitniacute hodnotu v nově vytvořeneacutem zaacuteznamu (DEFAULT NULL | value) sloupcoveacute integritniacute omezeniacute
CREATE TABLE ndash integritniacute omezeniacute sloupce (lokaacutelniacute)
sloupcoveacute IO umožňuje omezit množinu platnyacutech hodnot daneacuteho atributu v raacutemci zaacuteznamu (noveacuteho nebo modifikovaneacuteho)
pojmenovaneacute CREATE TABLE ( CONSTRAINT constraint ) nepojmenovaneacute
5 typů omezeniacute na platnou hodnotu atributu NOT NULL ndash hodnota musiacute byacutet nenulovaacute UNIQUE ndash hodnota musiacute byacutet unikaacutetniacute (v raacutemci všech řaacutedků v tabulce) PRIMARY KEY ndash definuje primaacuterniacute kliacuteč (toteacutež jako NOT NULL + UNIQUE) REFERENCES ndash definuje jednoatributovyacute ciziacute kliacuteč (oba atributy musiacute byacutet kompatibilniacute) CHECK ndash obecnaacute podmiacutenka
vyhodnotiacute se pouze na vklaacutedaneacutem řaacutedku (řaacutedciacutech) při vyhodnoceniacute podmiacutenky na TRUE je hodnota atributu platnaacute
při pokusu o aktualizaciřaacutedků s neplatnou hodnotou atributu se aktualizace celeacuteho řaacutedkuneprovede
CREATE TABLE ndash integritniacute omezeniacute tabulky (globaacutelniacute)
zobecněniacute atributovyacutech IO pro kombinace hodnot viacutece sloupců kromě NOT NULL to maacute smysl pouze u jednotlivyacutech atributů
UNIQUE ndash n-tice hodnot je unikaacutetniacute FOREIGN KEY ndash stejně jako REFERENCES u atributu CHECK
Referenčniacute integrita při aktualizaci tabulky referujiacuteciacute (ta pro kterou je IO definovaacuteno) nebo
referovaneacute může nastat porušeniacute integrity ciziacutech kliacutečů pokus o vloženiacuteaktualizaci zaacuteznamu s hodnotou ciziacuteho kliacuteče kteraacute se nevyskytuje v sloupci referovaneacute
tabulky pokus o smazaacuteniacute zaacuteznamu z referovaneacute tabulky když pro mazanou hodnotu kliacuteče existuje reference
při porušeniacute integrity ciziacutech kliacutečů může nastat hlaacutešeniacute chyby aktualizace pokud neniacute definovaacutena referenčniacute akce (SQL 89) vykonaacuteniacute referenčniacute akce referential_action (SQL 92)
ON UPDATE ON DELETE ndash podmiacutenka spuštěniacute akce při modifikaci referovaneacute hodnoty nebo smazaacuteniacute řaacutedku v referovaneacute tabulce
CASCADE ndash zaacuteznam s referujiacuteciacute hodnotou se takeacute smaže nebo aktualizuje novou hodnotou SET NULL ndash hodnota dotčeneacuteho zaacuteznamu se nastaviacute na NULL SET DEFAULT ndash hodnota dotčeneacuteho zaacuteznamu se nastaviacute na implicitniacute hodnotu definovanou v
CREATE TABLE NO ACTION ndash implicitniacute neprovede se nic resp SŘBD ohlaacutesiacute chybu tj chovaacuteniacute v raacutemci SQL 89
Modifikaacutetory AUTO_INCREMENT ndash (automatickeacute čiacuteslo) definuje datovyacute typ pole kteryacute při
přidaacuteniacute noveacuteho zaacuteznamu do tabulky automaticky uložiacute jedinečneacute čiacuteslo o jedničku většiacute než předchoziacute Nedovoliacute uložit už jednou použitou hodnotu i když zaacuteznam s touto hodnotou byl již z databaacuteze odstraněn Modifikaacutetor AUTO_INCREMENT lze použiacutet pouze u poliacute s celočiacuteselnyacutemi hodnotami
ZEROFILL ndash použiacutevaacute se k zobrazeniacute vedouciacutech nul u čiacutesel kteraacute jsou založena na šiacuteřce zobrazeniacute tj vyžadujiacute určityacute počet čiacuteslic Chceme-li čiacuteslo 23 zobrazit jako 000023 musiacuteme pole deklarovat jako INT(6) ZEROFILL
BINARY ndash umožňuje uklaacutedaacuteniacute textovyacutech informaciacute jako binaacuterniacutech řetězců Řetězce uloženeacute v binaacuterniacutem formaacutetu rozlišujiacute velikost piacutesmen To se projeviacute takeacute na třiacuteděniacute těchto poliacute
DEFAULT ndash umožňuje určit hodnotu pole jehož hodnota nebude při uloženiacute zaacuteznamu (řaacutedku) znaacutemaacute Vyacutechoziacute hodnotou použiacutevanou v systeacutemu MySQL je NULL Hodnota NULL je dosazovaacutena do všech praacutezdnyacutech poliacute kromě poliacute typu ENUM
Vytvořeniacute baacutezoveacute tabulky
- přiacutekaz vytvořiacute novou praacutezdnou tabulku s definovanyacutem počtem sloupců a popis uložiacute do katalogu
Integritniacute omezeniacute jsou omezeniacute kladenaacute na hodnoty ve sloupciacutech tabulky aby nedošlo k porušeniacute integrity dat
CREATE TABLE naacutezev_tabulky (definice_sloupce hellip [definice_integritniacutech_omezeniacute_tabulky] )
jmeacuteno_sloupce TYP [impl_hodnota] [integritniacute omezeniacute_sloupce]
Definice sloupce
Integritniacute omezeniacute celeacute tabulky
PRIMARY KEY (jm_sloupce hellip) UNIQUE (jm_sloupce hellip) FOREIGN KEY (jm_sloupce hellip) REFERENCES tabulka [(jm_sloupce hellip)] [udaacutelost ref_akce]
CHECK (podmiacuteněnyacute_vyacuteraz)
Integritniacute omezeniacute sloupce
NULL resp NOT NULL CHECK (podmiacuteněnyacute_vyacuteraz) PRIMARY KEY UNIQUE FOREIGN KEY REFERENCES tabulka [(jm_sloupce)]
[udaacutelost ref_akce]
Referenčniacute akce - CASCADE SET DEFAULT SET NULL
Přiacuteklad Spořitelna ndash tabulky s globaacutelniacutemi IO
KLIENTr_cislo jmeno prijmeni ulice mesto6010121224 Jan Novyacute Jaacutenskaacute 25 Zliacuten8261115267 Petra Novaacutekovaacute Poštovaacute 128 Lešnaacute5805064891 Pavel Novaacuteček Nezvalova 697 Zliacuten7953022459 Ivana Novotnaacute Pod mlyacutenem 12 Lukov
UCET POBOCKAc_uctu stav r_cislo pobocka c_p nazev jmeni4568517 42000 8261115267 2 1 Naacutem Miacuteru 12 50000006585485 75000 5805064891 1 2 Zaraacutemiacute 325 80000003256151 25000 8261115267 1
TRANSAKCEc_uctu c_transakce castka datum6585485 1 -2100 110920074568517 1 -4560 110920076585485 2 10000 12092007
CREATE TABLE Klient(r_cislo VARCHAR(11) NOT NULL jmeno VARCHAR(20) NOT NULL prijmeni VARCHAR(30) NOT NULL ulice VARCHAR(30) NOT NULL mesto VARCHAR(30) NOT NULL CONSTRAINT pk PRIMARY KEY (r_cislo)) CREATE TABLE Pobocka(c_p INT NOT NULL nazev VARCHAR(10) jmeni DECIMAL(102) CONSTRAINT pk PRIMARY KEY (c_p))
CREATE TABLE Ucet (c_uctu DECIMAL(70) NOT NULL stav DECIMAL(102) r_cislo VARCHAR(11) NOT NULL pobocka VARCHAR(20) NOT NULL CONSTRAINT pk PRIMARY KEY (c_uctu) CONSTRAINT fk1 FOREIGN KEY (r_cislo) REFERENCES Klient CONSTRAINT fk2 FOREIGN KEY (pobocka) REFERENCES Pobocka )
ALTER TABLE
změna definice scheacutematu atributy ndash přidaacuteniacuteodebraacuteniacute atributu změna DEFAULT hodnoty IO ndash přidaacuteniacuteodebraacuteniacute IO
pozor v tabulce už mohou byacutet data kteraacute nedovoliacute změnit IO (např zaveacutest IO primaacuterniacute kliacuteč)
ALTER TABLE table-name
ADD [COLUMN] column-name column-definition
ADD constraint-definition
ALTER [COLUMN] column-name SET
ALTER [COLUMN] column-name DROP
DROP COLUMN column-name
DROP CONSTRAINT constraint-name
Změna struktury tabulky
ALTER TABLE naacutezev_tabulky aktualizace
ALTER TABLE naacutezev_tabulkyADD COLUMN jmeacuteno_sloupce typ_sloupce [integritniacute omezeniacute]
Modifikuje tabulku a změniacute informace v katalogu
V přiacutepadě že v tabulce již nějakaacute data jsou lze použiacutet naacutesledujiacuteciacute přiacutekaz
Přidaacuteniacute sloupců do tabulky
Uacuteprava definice sloupců
ALTER TABLE naacutezev_tabulkyCHANGE COLUMN stareacute_jmeacuteno_sloupce noveacute_jmeacuteno_sloupce typ_sloupce [integritniacute mezeniacute]
ALTER TABLE naacutezev_tabulky DROP COLUMN jmeacuteno_sloupce [CASCADE]
Zaacutekladniacute přiacutekaz
Mazaacuteniacute sloupců
Maacuteme-li nějakyacute sloupec jehož hodnoty už opravdu nepotřebujeme jednoduše jej smažeme naacutesledujiacuteciacutem přiacutekazem
Přejmenovaacuteniacute sloupce
Prvniacute možnost je rychlejšiacute a využijeme v niacute již znaacutemyacute přiacutekaz
Druhaacute možnost je obecnějšiacute je potřeba proveacutest ji ve viacutece krociacutech
ALTER TABLE naacutezev_tabulkyCHANGE COLUMN stareacute_jmeacuteno_sloupce
noveacute_jmeacuteno_sloupce typ_sloupce [integritniacute omezeniacute]
ALTER TABLE naacutezev_tabulky ADD COLUMN jmeacuteno_sloupce typ_sloupce [integritniacute omezeniacute]
UPDATE naacutezev_tabulkySET stareacute_jmeacuteno_sloupce = noveacute_jmeacuteno_sloupce
ALTER TABLE naacutezev_tabulkyDROP stareacute_jmeacuteno_sloupce
DROP TABLE DROP TABLE table komplementaacuterniacute k přiacutekazu CREATE TABLE table smaže se jak obsah tabulky tak i scheacutema tabulky
pokud chceme vymazat pouze obsah tabulky použijeme přiacutekaz DELETE FROM table
Pokud provedeme přiacutekaz DROP TABLE tak přijdeme o všechna data kteraacute v mazaneacute tabulce byla uložena
Odstraněniacute tabulky
DROP TABLE naacutezev_tabulky
Modifikace dat SQL obsahuje kromě SELECT tři přiacutekazy pro manipulaci s
daty INSERT INTO ndash vloženiacute řaacutedků DELETE FROM ndash vymazaacuteniacute řaacutedků UPDATE ndash aktualizace hodnot v řaacutedciacutech
INSERT INTO vklaacutedaacuteniacute řaacutedku vyacutečtem hodnot dvě možnosti
INSERT INTO table VALUES (h1 h2 h3 h4) INSERT INTO table (s1 s2 s4) VALUES (h1 h2 h4)
vklaacutedaacuteniacute viacutece řaacutedků vyacutečtem hodnot INSERT INTO table VALUES (h11 h12 h13)(h21 h22 h23)
vklaacutedaacuteniacute viacutece řaacutedků jejichž hodnoty vzniknou jako vyacutesledek dotazu INSERT INTO tabulka | (vyacutečet atributů) | (SELECT FROM )
INSERT INTO naacutezev_tabulky [(naacutez_sloupce]] zdroj
Zdroje pro vklaacutedaniacute dat Řaacutedek implicitniacutech hodnot ndash z přiacutekazu CREATE TABLE
Řaacutedek zadanyacutech hodnot
DEFAULT_VALUES
VALUES (skalarniacute_vyacuteraz|NULL|DEFAULThellip)
Vyacutesledek poddotazu
tabulkovyacute_vyacuteraz
Přiacuteklad
INSERT INTO Klient VALUES (lsquo6010121224lsquolsquoJanlsquolsquoNovyacutelsquolsquoJaacutenskaacute 25lsquolsquoZliacutenlsquo)
INSERT INTO Klient (r_cislo jmeno prijmeni ulice mesto)VALUES (lsquo8261115267lsquolsquoPetralsquolsquoNovaacutekovaacutelsquolsquoPoštovaacute 128lsquolsquoLešnaacutelsquo)
(lsquo5805064891lsquolsquoPavellsquolsquoNovaacutečeklsquolsquoNezvalova 697lsquolsquoZliacutenlsquo)
UPDATE aktualizace zaacuteznamů splňujiacuteciacutech podmiacutenku hodnoty zvolenyacutech atributů vybranyacutech zaacuteznamů jsou
nastaveny na NULL hodnotu expression (např konstanta) vyacutesledek dotazu
Aktualizace dat
UPDATE naacutezev_tabulky SET sloupec = rsquohodnotarsquo
UPDATE naacutezev_tabulky SET sloupec1 = rsquohodnota1rsquosloupec2 = rsquohodnota2rsquohellip
UPDATE naacutezev_tabulky SET sloupec1 = rsquohodnota1rsquoWHERE sloupec2 = rsquohodnota2rsquo
Použitiacute klauzule WHERE
Pro změnu viacutece hodnot se použiacutevaacute zaacutepis
Přiacuteklad
UPDATE Klient SET jmeno = lsquoJakubrsquo WHERE r_cislo = lsquo6010121224rsquo
UPDATE Ucet AS u SET stav = stav+ (SELECT castka FROM Transakce AS t WHERE uc_uctu = tc_uctu)
DELETE FROM
vymaže zaacuteznamy ktereacute splňujiacute podmiacutenku bez nadefinovaacuteniacute podmiacutenky vymaže všechny zaacuteznamy
DELETE FROM naacutezev_tabulky WHERE sloupec = rsquohodnotarsquo
Odstraňovaacuteniacute dat
POZOR ndash po odstraněniacute zaacuteznamu už neniacute možneacute zaacuteznam obnovit Je dobreacute miacutet data pro jistotu zaacutelohovanaacute Při odstraňovaacuteniacute dat je nutneacute použiacutevat podmiacutenku WHERE jinak se může staacutet že z tabulky odstraniacutete všechna data
Chcete-li zajistit většiacute bezpečnost před nechtěnyacutem odstraněniacutem zaacuteznamů můžete použiacutet klauzuli LIMIT kteraacute omeziacute počet odstraňovanyacutech zaacuteznamů
DELETE FROM naacutezev_tabulky WHERE sloupec = rsquohodnotarsquoLIMIT 1
Historie70-ta leacuteta ndash vznikl z vyacutezkumneacuteho projektu o relačniacutech databaacuteziacutech vedeneacuteho
v firmou IBM - Sequel1986 ndash byl přijat jako oficiaacutelniacute standard ANSI (označovaacuten SQL86)1989 ndash integritniacute dodatek (označovaacuten SQL89)1992 ndash opravenaacute verze označovaacutena jako SQL92 - je standardem dodnes ndash dalšiacute standardy X_OPEN SQL (Unix) SAA-SQL (IBM) 1996 ndash dodatek pro uloženeacute moduly1999 ndash posledniacute sada dokumentů SQL99
objektově-relačniacute rozšiacuteřeniacute typy STRING BOOLEAN REF ARRAY typy pro full-text obraacutezky
prostorovaacute data triggery role programovaciacute jazyk regulaacuterniacute vyacuterazy rekurzivniacute dotazy atd
2003 ndash dalšiacute rozšiacuteřeniacute např XML management autočiacutesla std sekvence nicmeacuteně zmizel např typ BIT
Dotazy v SQL
dotaz v SQL vs kalkuly a algebra přiacutekaz SELECT sdiacuteliacute prvky obou aparaacutetů
rozšiacuteřenyacute DRK (praacutece se sloupci kvantifikaacutetory agregačniacute funkce) algebra (některeacute operace ndash projekce selekce spojeniacute kartsoučin
množinoveacute operace) na rozdiacutel od striktniacute formulace relačniacuteho modelu jsou povoleny
duplikaacutetniacute řaacutedky a nuloveacute hodnoty atributů
validaacutetor syntaxe pro SQL 92 1999 2003 umožnuje zkontrolovat dotaz (nebo jinyacute SQL přiacutekaz) podle normy httpdevelopermimercomvalidatorindexhtm
SQL patři do kategorie tzv deklarativniacutech programovaciacutech jazyků - koacuted jazyka SQL nepiacutešeme v žaacutedneacutem samostatneacutem programu ale vklaacutedaacuteme jej do jineacuteho programovaciacuteho jazyka kteryacute je již proceduraacutelniacute
Se samotnyacutem jazykem SQL můžeme pracovat pouze v přiacutepadě že se terminaacutelem připojiacuteme na SQL server a na přiacutekazovyacute řaacutedek zadaacutevaacuteme přiacutemo přiacutekazy jazyka SQL
Pro řešeniacute probleacutemů různyacutech syntaxi SQL (použiacutevanyacutech před zavedeniacutem standardu) Microsoft formalizoval CLI ndash Common Language Interface pro pracovniacute stanice a oznaacutemil že jeho produkty by měli použiacutevat toto rozhraniacute ndash nazyacutevaacute ho ODBC ndash Open Databaze Connectivity
Kontexty použitiacute jazyka SQL1048766 přiacutemyacute (direct) SQL 1048766 hostitelskaacute verze (embedded) SQL 1048766 jazyk modulů
Hlavniacute kategorie přiacutekazů bull1048766 definice dat a pohledů (DDL ndash Data Definition Language) bull1048766 manipulace s daty (DML ndash Data Manipulation Language)
1048766 - pro přiacutemyacute SQL 1048766 - pro hostitelskou verzi
bull1048766 autorizace (řiacutezeniacute přiacutestupovyacutech praacutev) bull1048766 integrita dat bull1048766 řiacutezeniacute transakciacute
Dotazy v SQL
pro vysvětleniacute použijeme syntaxi SQL 86 pomociacute diagramů orientovanyacute graf - automat rozpoznaacutevajiacuteciacute SQL rozlišovaacuteniacute termů v diagramu
malaacute piacutesmena podtrženiacute ndash podvyacuteraz v raacutemci daneacute konstrukce velkaacute piacutesmena ndash kliacutečoveacute slovo SQL malaacute piacutesmena kurziacuteva ndash jmeacuteno (tabulkysloupce)
miacutesto atributdomeacutena relace budeme použiacutevat označeniacute
sloupec tabulka
CREATE TABLE ndash zaacutekladniacute konstrukce
vytvořeniacute scheacutematu a praacutezdneacute tabulky (pokud již neniacute tabulka s danyacutem jmeacutenem založena)
tabulka maacute definovaacuteny jednak sloupce (atributy a souvisejiacuteciacute atributovaacute IO) a jednak tabulkovaacute IO
CREATE TABLE ndash definice sloupce
každyacute sloupec maacute vždy přiřazen jednak datovyacute typ (data_type) nepovinně je možno specifikovat
implicitniacute hodnotu v nově vytvořeneacutem zaacuteznamu (DEFAULT NULL | value) sloupcoveacute integritniacute omezeniacute
CREATE TABLE ndash integritniacute omezeniacute sloupce (lokaacutelniacute)
sloupcoveacute IO umožňuje omezit množinu platnyacutech hodnot daneacuteho atributu v raacutemci zaacuteznamu (noveacuteho nebo modifikovaneacuteho)
pojmenovaneacute CREATE TABLE ( CONSTRAINT constraint ) nepojmenovaneacute
5 typů omezeniacute na platnou hodnotu atributu NOT NULL ndash hodnota musiacute byacutet nenulovaacute UNIQUE ndash hodnota musiacute byacutet unikaacutetniacute (v raacutemci všech řaacutedků v tabulce) PRIMARY KEY ndash definuje primaacuterniacute kliacuteč (toteacutež jako NOT NULL + UNIQUE) REFERENCES ndash definuje jednoatributovyacute ciziacute kliacuteč (oba atributy musiacute byacutet kompatibilniacute) CHECK ndash obecnaacute podmiacutenka
vyhodnotiacute se pouze na vklaacutedaneacutem řaacutedku (řaacutedciacutech) při vyhodnoceniacute podmiacutenky na TRUE je hodnota atributu platnaacute
při pokusu o aktualizaciřaacutedků s neplatnou hodnotou atributu se aktualizace celeacuteho řaacutedkuneprovede
CREATE TABLE ndash integritniacute omezeniacute tabulky (globaacutelniacute)
zobecněniacute atributovyacutech IO pro kombinace hodnot viacutece sloupců kromě NOT NULL to maacute smysl pouze u jednotlivyacutech atributů
UNIQUE ndash n-tice hodnot je unikaacutetniacute FOREIGN KEY ndash stejně jako REFERENCES u atributu CHECK
Referenčniacute integrita při aktualizaci tabulky referujiacuteciacute (ta pro kterou je IO definovaacuteno) nebo
referovaneacute může nastat porušeniacute integrity ciziacutech kliacutečů pokus o vloženiacuteaktualizaci zaacuteznamu s hodnotou ciziacuteho kliacuteče kteraacute se nevyskytuje v sloupci referovaneacute
tabulky pokus o smazaacuteniacute zaacuteznamu z referovaneacute tabulky když pro mazanou hodnotu kliacuteče existuje reference
při porušeniacute integrity ciziacutech kliacutečů může nastat hlaacutešeniacute chyby aktualizace pokud neniacute definovaacutena referenčniacute akce (SQL 89) vykonaacuteniacute referenčniacute akce referential_action (SQL 92)
ON UPDATE ON DELETE ndash podmiacutenka spuštěniacute akce při modifikaci referovaneacute hodnoty nebo smazaacuteniacute řaacutedku v referovaneacute tabulce
CASCADE ndash zaacuteznam s referujiacuteciacute hodnotou se takeacute smaže nebo aktualizuje novou hodnotou SET NULL ndash hodnota dotčeneacuteho zaacuteznamu se nastaviacute na NULL SET DEFAULT ndash hodnota dotčeneacuteho zaacuteznamu se nastaviacute na implicitniacute hodnotu definovanou v
CREATE TABLE NO ACTION ndash implicitniacute neprovede se nic resp SŘBD ohlaacutesiacute chybu tj chovaacuteniacute v raacutemci SQL 89
Modifikaacutetory AUTO_INCREMENT ndash (automatickeacute čiacuteslo) definuje datovyacute typ pole kteryacute při
přidaacuteniacute noveacuteho zaacuteznamu do tabulky automaticky uložiacute jedinečneacute čiacuteslo o jedničku většiacute než předchoziacute Nedovoliacute uložit už jednou použitou hodnotu i když zaacuteznam s touto hodnotou byl již z databaacuteze odstraněn Modifikaacutetor AUTO_INCREMENT lze použiacutet pouze u poliacute s celočiacuteselnyacutemi hodnotami
ZEROFILL ndash použiacutevaacute se k zobrazeniacute vedouciacutech nul u čiacutesel kteraacute jsou založena na šiacuteřce zobrazeniacute tj vyžadujiacute určityacute počet čiacuteslic Chceme-li čiacuteslo 23 zobrazit jako 000023 musiacuteme pole deklarovat jako INT(6) ZEROFILL
BINARY ndash umožňuje uklaacutedaacuteniacute textovyacutech informaciacute jako binaacuterniacutech řetězců Řetězce uloženeacute v binaacuterniacutem formaacutetu rozlišujiacute velikost piacutesmen To se projeviacute takeacute na třiacuteděniacute těchto poliacute
DEFAULT ndash umožňuje určit hodnotu pole jehož hodnota nebude při uloženiacute zaacuteznamu (řaacutedku) znaacutemaacute Vyacutechoziacute hodnotou použiacutevanou v systeacutemu MySQL je NULL Hodnota NULL je dosazovaacutena do všech praacutezdnyacutech poliacute kromě poliacute typu ENUM
Vytvořeniacute baacutezoveacute tabulky
- přiacutekaz vytvořiacute novou praacutezdnou tabulku s definovanyacutem počtem sloupců a popis uložiacute do katalogu
Integritniacute omezeniacute jsou omezeniacute kladenaacute na hodnoty ve sloupciacutech tabulky aby nedošlo k porušeniacute integrity dat
CREATE TABLE naacutezev_tabulky (definice_sloupce hellip [definice_integritniacutech_omezeniacute_tabulky] )
jmeacuteno_sloupce TYP [impl_hodnota] [integritniacute omezeniacute_sloupce]
Definice sloupce
Integritniacute omezeniacute celeacute tabulky
PRIMARY KEY (jm_sloupce hellip) UNIQUE (jm_sloupce hellip) FOREIGN KEY (jm_sloupce hellip) REFERENCES tabulka [(jm_sloupce hellip)] [udaacutelost ref_akce]
CHECK (podmiacuteněnyacute_vyacuteraz)
Integritniacute omezeniacute sloupce
NULL resp NOT NULL CHECK (podmiacuteněnyacute_vyacuteraz) PRIMARY KEY UNIQUE FOREIGN KEY REFERENCES tabulka [(jm_sloupce)]
[udaacutelost ref_akce]
Referenčniacute akce - CASCADE SET DEFAULT SET NULL
Přiacuteklad Spořitelna ndash tabulky s globaacutelniacutemi IO
KLIENTr_cislo jmeno prijmeni ulice mesto6010121224 Jan Novyacute Jaacutenskaacute 25 Zliacuten8261115267 Petra Novaacutekovaacute Poštovaacute 128 Lešnaacute5805064891 Pavel Novaacuteček Nezvalova 697 Zliacuten7953022459 Ivana Novotnaacute Pod mlyacutenem 12 Lukov
UCET POBOCKAc_uctu stav r_cislo pobocka c_p nazev jmeni4568517 42000 8261115267 2 1 Naacutem Miacuteru 12 50000006585485 75000 5805064891 1 2 Zaraacutemiacute 325 80000003256151 25000 8261115267 1
TRANSAKCEc_uctu c_transakce castka datum6585485 1 -2100 110920074568517 1 -4560 110920076585485 2 10000 12092007
CREATE TABLE Klient(r_cislo VARCHAR(11) NOT NULL jmeno VARCHAR(20) NOT NULL prijmeni VARCHAR(30) NOT NULL ulice VARCHAR(30) NOT NULL mesto VARCHAR(30) NOT NULL CONSTRAINT pk PRIMARY KEY (r_cislo)) CREATE TABLE Pobocka(c_p INT NOT NULL nazev VARCHAR(10) jmeni DECIMAL(102) CONSTRAINT pk PRIMARY KEY (c_p))
CREATE TABLE Ucet (c_uctu DECIMAL(70) NOT NULL stav DECIMAL(102) r_cislo VARCHAR(11) NOT NULL pobocka VARCHAR(20) NOT NULL CONSTRAINT pk PRIMARY KEY (c_uctu) CONSTRAINT fk1 FOREIGN KEY (r_cislo) REFERENCES Klient CONSTRAINT fk2 FOREIGN KEY (pobocka) REFERENCES Pobocka )
ALTER TABLE
změna definice scheacutematu atributy ndash přidaacuteniacuteodebraacuteniacute atributu změna DEFAULT hodnoty IO ndash přidaacuteniacuteodebraacuteniacute IO
pozor v tabulce už mohou byacutet data kteraacute nedovoliacute změnit IO (např zaveacutest IO primaacuterniacute kliacuteč)
ALTER TABLE table-name
ADD [COLUMN] column-name column-definition
ADD constraint-definition
ALTER [COLUMN] column-name SET
ALTER [COLUMN] column-name DROP
DROP COLUMN column-name
DROP CONSTRAINT constraint-name
Změna struktury tabulky
ALTER TABLE naacutezev_tabulky aktualizace
ALTER TABLE naacutezev_tabulkyADD COLUMN jmeacuteno_sloupce typ_sloupce [integritniacute omezeniacute]
Modifikuje tabulku a změniacute informace v katalogu
V přiacutepadě že v tabulce již nějakaacute data jsou lze použiacutet naacutesledujiacuteciacute přiacutekaz
Přidaacuteniacute sloupců do tabulky
Uacuteprava definice sloupců
ALTER TABLE naacutezev_tabulkyCHANGE COLUMN stareacute_jmeacuteno_sloupce noveacute_jmeacuteno_sloupce typ_sloupce [integritniacute mezeniacute]
ALTER TABLE naacutezev_tabulky DROP COLUMN jmeacuteno_sloupce [CASCADE]
Zaacutekladniacute přiacutekaz
Mazaacuteniacute sloupců
Maacuteme-li nějakyacute sloupec jehož hodnoty už opravdu nepotřebujeme jednoduše jej smažeme naacutesledujiacuteciacutem přiacutekazem
Přejmenovaacuteniacute sloupce
Prvniacute možnost je rychlejšiacute a využijeme v niacute již znaacutemyacute přiacutekaz
Druhaacute možnost je obecnějšiacute je potřeba proveacutest ji ve viacutece krociacutech
ALTER TABLE naacutezev_tabulkyCHANGE COLUMN stareacute_jmeacuteno_sloupce
noveacute_jmeacuteno_sloupce typ_sloupce [integritniacute omezeniacute]
ALTER TABLE naacutezev_tabulky ADD COLUMN jmeacuteno_sloupce typ_sloupce [integritniacute omezeniacute]
UPDATE naacutezev_tabulkySET stareacute_jmeacuteno_sloupce = noveacute_jmeacuteno_sloupce
ALTER TABLE naacutezev_tabulkyDROP stareacute_jmeacuteno_sloupce
DROP TABLE DROP TABLE table komplementaacuterniacute k přiacutekazu CREATE TABLE table smaže se jak obsah tabulky tak i scheacutema tabulky
pokud chceme vymazat pouze obsah tabulky použijeme přiacutekaz DELETE FROM table
Pokud provedeme přiacutekaz DROP TABLE tak přijdeme o všechna data kteraacute v mazaneacute tabulce byla uložena
Odstraněniacute tabulky
DROP TABLE naacutezev_tabulky
Modifikace dat SQL obsahuje kromě SELECT tři přiacutekazy pro manipulaci s
daty INSERT INTO ndash vloženiacute řaacutedků DELETE FROM ndash vymazaacuteniacute řaacutedků UPDATE ndash aktualizace hodnot v řaacutedciacutech
INSERT INTO vklaacutedaacuteniacute řaacutedku vyacutečtem hodnot dvě možnosti
INSERT INTO table VALUES (h1 h2 h3 h4) INSERT INTO table (s1 s2 s4) VALUES (h1 h2 h4)
vklaacutedaacuteniacute viacutece řaacutedků vyacutečtem hodnot INSERT INTO table VALUES (h11 h12 h13)(h21 h22 h23)
vklaacutedaacuteniacute viacutece řaacutedků jejichž hodnoty vzniknou jako vyacutesledek dotazu INSERT INTO tabulka | (vyacutečet atributů) | (SELECT FROM )
INSERT INTO naacutezev_tabulky [(naacutez_sloupce]] zdroj
Zdroje pro vklaacutedaniacute dat Řaacutedek implicitniacutech hodnot ndash z přiacutekazu CREATE TABLE
Řaacutedek zadanyacutech hodnot
DEFAULT_VALUES
VALUES (skalarniacute_vyacuteraz|NULL|DEFAULThellip)
Vyacutesledek poddotazu
tabulkovyacute_vyacuteraz
Přiacuteklad
INSERT INTO Klient VALUES (lsquo6010121224lsquolsquoJanlsquolsquoNovyacutelsquolsquoJaacutenskaacute 25lsquolsquoZliacutenlsquo)
INSERT INTO Klient (r_cislo jmeno prijmeni ulice mesto)VALUES (lsquo8261115267lsquolsquoPetralsquolsquoNovaacutekovaacutelsquolsquoPoštovaacute 128lsquolsquoLešnaacutelsquo)
(lsquo5805064891lsquolsquoPavellsquolsquoNovaacutečeklsquolsquoNezvalova 697lsquolsquoZliacutenlsquo)
UPDATE aktualizace zaacuteznamů splňujiacuteciacutech podmiacutenku hodnoty zvolenyacutech atributů vybranyacutech zaacuteznamů jsou
nastaveny na NULL hodnotu expression (např konstanta) vyacutesledek dotazu
Aktualizace dat
UPDATE naacutezev_tabulky SET sloupec = rsquohodnotarsquo
UPDATE naacutezev_tabulky SET sloupec1 = rsquohodnota1rsquosloupec2 = rsquohodnota2rsquohellip
UPDATE naacutezev_tabulky SET sloupec1 = rsquohodnota1rsquoWHERE sloupec2 = rsquohodnota2rsquo
Použitiacute klauzule WHERE
Pro změnu viacutece hodnot se použiacutevaacute zaacutepis
Přiacuteklad
UPDATE Klient SET jmeno = lsquoJakubrsquo WHERE r_cislo = lsquo6010121224rsquo
UPDATE Ucet AS u SET stav = stav+ (SELECT castka FROM Transakce AS t WHERE uc_uctu = tc_uctu)
DELETE FROM
vymaže zaacuteznamy ktereacute splňujiacute podmiacutenku bez nadefinovaacuteniacute podmiacutenky vymaže všechny zaacuteznamy
DELETE FROM naacutezev_tabulky WHERE sloupec = rsquohodnotarsquo
Odstraňovaacuteniacute dat
POZOR ndash po odstraněniacute zaacuteznamu už neniacute možneacute zaacuteznam obnovit Je dobreacute miacutet data pro jistotu zaacutelohovanaacute Při odstraňovaacuteniacute dat je nutneacute použiacutevat podmiacutenku WHERE jinak se může staacutet že z tabulky odstraniacutete všechna data
Chcete-li zajistit většiacute bezpečnost před nechtěnyacutem odstraněniacutem zaacuteznamů můžete použiacutet klauzuli LIMIT kteraacute omeziacute počet odstraňovanyacutech zaacuteznamů
DELETE FROM naacutezev_tabulky WHERE sloupec = rsquohodnotarsquoLIMIT 1
Dotazy v SQL
dotaz v SQL vs kalkuly a algebra přiacutekaz SELECT sdiacuteliacute prvky obou aparaacutetů
rozšiacuteřenyacute DRK (praacutece se sloupci kvantifikaacutetory agregačniacute funkce) algebra (některeacute operace ndash projekce selekce spojeniacute kartsoučin
množinoveacute operace) na rozdiacutel od striktniacute formulace relačniacuteho modelu jsou povoleny
duplikaacutetniacute řaacutedky a nuloveacute hodnoty atributů
validaacutetor syntaxe pro SQL 92 1999 2003 umožnuje zkontrolovat dotaz (nebo jinyacute SQL přiacutekaz) podle normy httpdevelopermimercomvalidatorindexhtm
SQL patři do kategorie tzv deklarativniacutech programovaciacutech jazyků - koacuted jazyka SQL nepiacutešeme v žaacutedneacutem samostatneacutem programu ale vklaacutedaacuteme jej do jineacuteho programovaciacuteho jazyka kteryacute je již proceduraacutelniacute
Se samotnyacutem jazykem SQL můžeme pracovat pouze v přiacutepadě že se terminaacutelem připojiacuteme na SQL server a na přiacutekazovyacute řaacutedek zadaacutevaacuteme přiacutemo přiacutekazy jazyka SQL
Pro řešeniacute probleacutemů různyacutech syntaxi SQL (použiacutevanyacutech před zavedeniacutem standardu) Microsoft formalizoval CLI ndash Common Language Interface pro pracovniacute stanice a oznaacutemil že jeho produkty by měli použiacutevat toto rozhraniacute ndash nazyacutevaacute ho ODBC ndash Open Databaze Connectivity
Kontexty použitiacute jazyka SQL1048766 přiacutemyacute (direct) SQL 1048766 hostitelskaacute verze (embedded) SQL 1048766 jazyk modulů
Hlavniacute kategorie přiacutekazů bull1048766 definice dat a pohledů (DDL ndash Data Definition Language) bull1048766 manipulace s daty (DML ndash Data Manipulation Language)
1048766 - pro přiacutemyacute SQL 1048766 - pro hostitelskou verzi
bull1048766 autorizace (řiacutezeniacute přiacutestupovyacutech praacutev) bull1048766 integrita dat bull1048766 řiacutezeniacute transakciacute
Dotazy v SQL
pro vysvětleniacute použijeme syntaxi SQL 86 pomociacute diagramů orientovanyacute graf - automat rozpoznaacutevajiacuteciacute SQL rozlišovaacuteniacute termů v diagramu
malaacute piacutesmena podtrženiacute ndash podvyacuteraz v raacutemci daneacute konstrukce velkaacute piacutesmena ndash kliacutečoveacute slovo SQL malaacute piacutesmena kurziacuteva ndash jmeacuteno (tabulkysloupce)
miacutesto atributdomeacutena relace budeme použiacutevat označeniacute
sloupec tabulka
CREATE TABLE ndash zaacutekladniacute konstrukce
vytvořeniacute scheacutematu a praacutezdneacute tabulky (pokud již neniacute tabulka s danyacutem jmeacutenem založena)
tabulka maacute definovaacuteny jednak sloupce (atributy a souvisejiacuteciacute atributovaacute IO) a jednak tabulkovaacute IO
CREATE TABLE ndash definice sloupce
každyacute sloupec maacute vždy přiřazen jednak datovyacute typ (data_type) nepovinně je možno specifikovat
implicitniacute hodnotu v nově vytvořeneacutem zaacuteznamu (DEFAULT NULL | value) sloupcoveacute integritniacute omezeniacute
CREATE TABLE ndash integritniacute omezeniacute sloupce (lokaacutelniacute)
sloupcoveacute IO umožňuje omezit množinu platnyacutech hodnot daneacuteho atributu v raacutemci zaacuteznamu (noveacuteho nebo modifikovaneacuteho)
pojmenovaneacute CREATE TABLE ( CONSTRAINT constraint ) nepojmenovaneacute
5 typů omezeniacute na platnou hodnotu atributu NOT NULL ndash hodnota musiacute byacutet nenulovaacute UNIQUE ndash hodnota musiacute byacutet unikaacutetniacute (v raacutemci všech řaacutedků v tabulce) PRIMARY KEY ndash definuje primaacuterniacute kliacuteč (toteacutež jako NOT NULL + UNIQUE) REFERENCES ndash definuje jednoatributovyacute ciziacute kliacuteč (oba atributy musiacute byacutet kompatibilniacute) CHECK ndash obecnaacute podmiacutenka
vyhodnotiacute se pouze na vklaacutedaneacutem řaacutedku (řaacutedciacutech) při vyhodnoceniacute podmiacutenky na TRUE je hodnota atributu platnaacute
při pokusu o aktualizaciřaacutedků s neplatnou hodnotou atributu se aktualizace celeacuteho řaacutedkuneprovede
CREATE TABLE ndash integritniacute omezeniacute tabulky (globaacutelniacute)
zobecněniacute atributovyacutech IO pro kombinace hodnot viacutece sloupců kromě NOT NULL to maacute smysl pouze u jednotlivyacutech atributů
UNIQUE ndash n-tice hodnot je unikaacutetniacute FOREIGN KEY ndash stejně jako REFERENCES u atributu CHECK
Referenčniacute integrita při aktualizaci tabulky referujiacuteciacute (ta pro kterou je IO definovaacuteno) nebo
referovaneacute může nastat porušeniacute integrity ciziacutech kliacutečů pokus o vloženiacuteaktualizaci zaacuteznamu s hodnotou ciziacuteho kliacuteče kteraacute se nevyskytuje v sloupci referovaneacute
tabulky pokus o smazaacuteniacute zaacuteznamu z referovaneacute tabulky když pro mazanou hodnotu kliacuteče existuje reference
při porušeniacute integrity ciziacutech kliacutečů může nastat hlaacutešeniacute chyby aktualizace pokud neniacute definovaacutena referenčniacute akce (SQL 89) vykonaacuteniacute referenčniacute akce referential_action (SQL 92)
ON UPDATE ON DELETE ndash podmiacutenka spuštěniacute akce při modifikaci referovaneacute hodnoty nebo smazaacuteniacute řaacutedku v referovaneacute tabulce
CASCADE ndash zaacuteznam s referujiacuteciacute hodnotou se takeacute smaže nebo aktualizuje novou hodnotou SET NULL ndash hodnota dotčeneacuteho zaacuteznamu se nastaviacute na NULL SET DEFAULT ndash hodnota dotčeneacuteho zaacuteznamu se nastaviacute na implicitniacute hodnotu definovanou v
CREATE TABLE NO ACTION ndash implicitniacute neprovede se nic resp SŘBD ohlaacutesiacute chybu tj chovaacuteniacute v raacutemci SQL 89
Modifikaacutetory AUTO_INCREMENT ndash (automatickeacute čiacuteslo) definuje datovyacute typ pole kteryacute při
přidaacuteniacute noveacuteho zaacuteznamu do tabulky automaticky uložiacute jedinečneacute čiacuteslo o jedničku většiacute než předchoziacute Nedovoliacute uložit už jednou použitou hodnotu i když zaacuteznam s touto hodnotou byl již z databaacuteze odstraněn Modifikaacutetor AUTO_INCREMENT lze použiacutet pouze u poliacute s celočiacuteselnyacutemi hodnotami
ZEROFILL ndash použiacutevaacute se k zobrazeniacute vedouciacutech nul u čiacutesel kteraacute jsou založena na šiacuteřce zobrazeniacute tj vyžadujiacute určityacute počet čiacuteslic Chceme-li čiacuteslo 23 zobrazit jako 000023 musiacuteme pole deklarovat jako INT(6) ZEROFILL
BINARY ndash umožňuje uklaacutedaacuteniacute textovyacutech informaciacute jako binaacuterniacutech řetězců Řetězce uloženeacute v binaacuterniacutem formaacutetu rozlišujiacute velikost piacutesmen To se projeviacute takeacute na třiacuteděniacute těchto poliacute
DEFAULT ndash umožňuje určit hodnotu pole jehož hodnota nebude při uloženiacute zaacuteznamu (řaacutedku) znaacutemaacute Vyacutechoziacute hodnotou použiacutevanou v systeacutemu MySQL je NULL Hodnota NULL je dosazovaacutena do všech praacutezdnyacutech poliacute kromě poliacute typu ENUM
Vytvořeniacute baacutezoveacute tabulky
- přiacutekaz vytvořiacute novou praacutezdnou tabulku s definovanyacutem počtem sloupců a popis uložiacute do katalogu
Integritniacute omezeniacute jsou omezeniacute kladenaacute na hodnoty ve sloupciacutech tabulky aby nedošlo k porušeniacute integrity dat
CREATE TABLE naacutezev_tabulky (definice_sloupce hellip [definice_integritniacutech_omezeniacute_tabulky] )
jmeacuteno_sloupce TYP [impl_hodnota] [integritniacute omezeniacute_sloupce]
Definice sloupce
Integritniacute omezeniacute celeacute tabulky
PRIMARY KEY (jm_sloupce hellip) UNIQUE (jm_sloupce hellip) FOREIGN KEY (jm_sloupce hellip) REFERENCES tabulka [(jm_sloupce hellip)] [udaacutelost ref_akce]
CHECK (podmiacuteněnyacute_vyacuteraz)
Integritniacute omezeniacute sloupce
NULL resp NOT NULL CHECK (podmiacuteněnyacute_vyacuteraz) PRIMARY KEY UNIQUE FOREIGN KEY REFERENCES tabulka [(jm_sloupce)]
[udaacutelost ref_akce]
Referenčniacute akce - CASCADE SET DEFAULT SET NULL
Přiacuteklad Spořitelna ndash tabulky s globaacutelniacutemi IO
KLIENTr_cislo jmeno prijmeni ulice mesto6010121224 Jan Novyacute Jaacutenskaacute 25 Zliacuten8261115267 Petra Novaacutekovaacute Poštovaacute 128 Lešnaacute5805064891 Pavel Novaacuteček Nezvalova 697 Zliacuten7953022459 Ivana Novotnaacute Pod mlyacutenem 12 Lukov
UCET POBOCKAc_uctu stav r_cislo pobocka c_p nazev jmeni4568517 42000 8261115267 2 1 Naacutem Miacuteru 12 50000006585485 75000 5805064891 1 2 Zaraacutemiacute 325 80000003256151 25000 8261115267 1
TRANSAKCEc_uctu c_transakce castka datum6585485 1 -2100 110920074568517 1 -4560 110920076585485 2 10000 12092007
CREATE TABLE Klient(r_cislo VARCHAR(11) NOT NULL jmeno VARCHAR(20) NOT NULL prijmeni VARCHAR(30) NOT NULL ulice VARCHAR(30) NOT NULL mesto VARCHAR(30) NOT NULL CONSTRAINT pk PRIMARY KEY (r_cislo)) CREATE TABLE Pobocka(c_p INT NOT NULL nazev VARCHAR(10) jmeni DECIMAL(102) CONSTRAINT pk PRIMARY KEY (c_p))
CREATE TABLE Ucet (c_uctu DECIMAL(70) NOT NULL stav DECIMAL(102) r_cislo VARCHAR(11) NOT NULL pobocka VARCHAR(20) NOT NULL CONSTRAINT pk PRIMARY KEY (c_uctu) CONSTRAINT fk1 FOREIGN KEY (r_cislo) REFERENCES Klient CONSTRAINT fk2 FOREIGN KEY (pobocka) REFERENCES Pobocka )
ALTER TABLE
změna definice scheacutematu atributy ndash přidaacuteniacuteodebraacuteniacute atributu změna DEFAULT hodnoty IO ndash přidaacuteniacuteodebraacuteniacute IO
pozor v tabulce už mohou byacutet data kteraacute nedovoliacute změnit IO (např zaveacutest IO primaacuterniacute kliacuteč)
ALTER TABLE table-name
ADD [COLUMN] column-name column-definition
ADD constraint-definition
ALTER [COLUMN] column-name SET
ALTER [COLUMN] column-name DROP
DROP COLUMN column-name
DROP CONSTRAINT constraint-name
Změna struktury tabulky
ALTER TABLE naacutezev_tabulky aktualizace
ALTER TABLE naacutezev_tabulkyADD COLUMN jmeacuteno_sloupce typ_sloupce [integritniacute omezeniacute]
Modifikuje tabulku a změniacute informace v katalogu
V přiacutepadě že v tabulce již nějakaacute data jsou lze použiacutet naacutesledujiacuteciacute přiacutekaz
Přidaacuteniacute sloupců do tabulky
Uacuteprava definice sloupců
ALTER TABLE naacutezev_tabulkyCHANGE COLUMN stareacute_jmeacuteno_sloupce noveacute_jmeacuteno_sloupce typ_sloupce [integritniacute mezeniacute]
ALTER TABLE naacutezev_tabulky DROP COLUMN jmeacuteno_sloupce [CASCADE]
Zaacutekladniacute přiacutekaz
Mazaacuteniacute sloupců
Maacuteme-li nějakyacute sloupec jehož hodnoty už opravdu nepotřebujeme jednoduše jej smažeme naacutesledujiacuteciacutem přiacutekazem
Přejmenovaacuteniacute sloupce
Prvniacute možnost je rychlejšiacute a využijeme v niacute již znaacutemyacute přiacutekaz
Druhaacute možnost je obecnějšiacute je potřeba proveacutest ji ve viacutece krociacutech
ALTER TABLE naacutezev_tabulkyCHANGE COLUMN stareacute_jmeacuteno_sloupce
noveacute_jmeacuteno_sloupce typ_sloupce [integritniacute omezeniacute]
ALTER TABLE naacutezev_tabulky ADD COLUMN jmeacuteno_sloupce typ_sloupce [integritniacute omezeniacute]
UPDATE naacutezev_tabulkySET stareacute_jmeacuteno_sloupce = noveacute_jmeacuteno_sloupce
ALTER TABLE naacutezev_tabulkyDROP stareacute_jmeacuteno_sloupce
DROP TABLE DROP TABLE table komplementaacuterniacute k přiacutekazu CREATE TABLE table smaže se jak obsah tabulky tak i scheacutema tabulky
pokud chceme vymazat pouze obsah tabulky použijeme přiacutekaz DELETE FROM table
Pokud provedeme přiacutekaz DROP TABLE tak přijdeme o všechna data kteraacute v mazaneacute tabulce byla uložena
Odstraněniacute tabulky
DROP TABLE naacutezev_tabulky
Modifikace dat SQL obsahuje kromě SELECT tři přiacutekazy pro manipulaci s
daty INSERT INTO ndash vloženiacute řaacutedků DELETE FROM ndash vymazaacuteniacute řaacutedků UPDATE ndash aktualizace hodnot v řaacutedciacutech
INSERT INTO vklaacutedaacuteniacute řaacutedku vyacutečtem hodnot dvě možnosti
INSERT INTO table VALUES (h1 h2 h3 h4) INSERT INTO table (s1 s2 s4) VALUES (h1 h2 h4)
vklaacutedaacuteniacute viacutece řaacutedků vyacutečtem hodnot INSERT INTO table VALUES (h11 h12 h13)(h21 h22 h23)
vklaacutedaacuteniacute viacutece řaacutedků jejichž hodnoty vzniknou jako vyacutesledek dotazu INSERT INTO tabulka | (vyacutečet atributů) | (SELECT FROM )
INSERT INTO naacutezev_tabulky [(naacutez_sloupce]] zdroj
Zdroje pro vklaacutedaniacute dat Řaacutedek implicitniacutech hodnot ndash z přiacutekazu CREATE TABLE
Řaacutedek zadanyacutech hodnot
DEFAULT_VALUES
VALUES (skalarniacute_vyacuteraz|NULL|DEFAULThellip)
Vyacutesledek poddotazu
tabulkovyacute_vyacuteraz
Přiacuteklad
INSERT INTO Klient VALUES (lsquo6010121224lsquolsquoJanlsquolsquoNovyacutelsquolsquoJaacutenskaacute 25lsquolsquoZliacutenlsquo)
INSERT INTO Klient (r_cislo jmeno prijmeni ulice mesto)VALUES (lsquo8261115267lsquolsquoPetralsquolsquoNovaacutekovaacutelsquolsquoPoštovaacute 128lsquolsquoLešnaacutelsquo)
(lsquo5805064891lsquolsquoPavellsquolsquoNovaacutečeklsquolsquoNezvalova 697lsquolsquoZliacutenlsquo)
UPDATE aktualizace zaacuteznamů splňujiacuteciacutech podmiacutenku hodnoty zvolenyacutech atributů vybranyacutech zaacuteznamů jsou
nastaveny na NULL hodnotu expression (např konstanta) vyacutesledek dotazu
Aktualizace dat
UPDATE naacutezev_tabulky SET sloupec = rsquohodnotarsquo
UPDATE naacutezev_tabulky SET sloupec1 = rsquohodnota1rsquosloupec2 = rsquohodnota2rsquohellip
UPDATE naacutezev_tabulky SET sloupec1 = rsquohodnota1rsquoWHERE sloupec2 = rsquohodnota2rsquo
Použitiacute klauzule WHERE
Pro změnu viacutece hodnot se použiacutevaacute zaacutepis
Přiacuteklad
UPDATE Klient SET jmeno = lsquoJakubrsquo WHERE r_cislo = lsquo6010121224rsquo
UPDATE Ucet AS u SET stav = stav+ (SELECT castka FROM Transakce AS t WHERE uc_uctu = tc_uctu)
DELETE FROM
vymaže zaacuteznamy ktereacute splňujiacute podmiacutenku bez nadefinovaacuteniacute podmiacutenky vymaže všechny zaacuteznamy
DELETE FROM naacutezev_tabulky WHERE sloupec = rsquohodnotarsquo
Odstraňovaacuteniacute dat
POZOR ndash po odstraněniacute zaacuteznamu už neniacute možneacute zaacuteznam obnovit Je dobreacute miacutet data pro jistotu zaacutelohovanaacute Při odstraňovaacuteniacute dat je nutneacute použiacutevat podmiacutenku WHERE jinak se může staacutet že z tabulky odstraniacutete všechna data
Chcete-li zajistit většiacute bezpečnost před nechtěnyacutem odstraněniacutem zaacuteznamů můžete použiacutet klauzuli LIMIT kteraacute omeziacute počet odstraňovanyacutech zaacuteznamů
DELETE FROM naacutezev_tabulky WHERE sloupec = rsquohodnotarsquoLIMIT 1
SQL patři do kategorie tzv deklarativniacutech programovaciacutech jazyků - koacuted jazyka SQL nepiacutešeme v žaacutedneacutem samostatneacutem programu ale vklaacutedaacuteme jej do jineacuteho programovaciacuteho jazyka kteryacute je již proceduraacutelniacute
Se samotnyacutem jazykem SQL můžeme pracovat pouze v přiacutepadě že se terminaacutelem připojiacuteme na SQL server a na přiacutekazovyacute řaacutedek zadaacutevaacuteme přiacutemo přiacutekazy jazyka SQL
Pro řešeniacute probleacutemů různyacutech syntaxi SQL (použiacutevanyacutech před zavedeniacutem standardu) Microsoft formalizoval CLI ndash Common Language Interface pro pracovniacute stanice a oznaacutemil že jeho produkty by měli použiacutevat toto rozhraniacute ndash nazyacutevaacute ho ODBC ndash Open Databaze Connectivity
Kontexty použitiacute jazyka SQL1048766 přiacutemyacute (direct) SQL 1048766 hostitelskaacute verze (embedded) SQL 1048766 jazyk modulů
Hlavniacute kategorie přiacutekazů bull1048766 definice dat a pohledů (DDL ndash Data Definition Language) bull1048766 manipulace s daty (DML ndash Data Manipulation Language)
1048766 - pro přiacutemyacute SQL 1048766 - pro hostitelskou verzi
bull1048766 autorizace (řiacutezeniacute přiacutestupovyacutech praacutev) bull1048766 integrita dat bull1048766 řiacutezeniacute transakciacute
Dotazy v SQL
pro vysvětleniacute použijeme syntaxi SQL 86 pomociacute diagramů orientovanyacute graf - automat rozpoznaacutevajiacuteciacute SQL rozlišovaacuteniacute termů v diagramu
malaacute piacutesmena podtrženiacute ndash podvyacuteraz v raacutemci daneacute konstrukce velkaacute piacutesmena ndash kliacutečoveacute slovo SQL malaacute piacutesmena kurziacuteva ndash jmeacuteno (tabulkysloupce)
miacutesto atributdomeacutena relace budeme použiacutevat označeniacute
sloupec tabulka
CREATE TABLE ndash zaacutekladniacute konstrukce
vytvořeniacute scheacutematu a praacutezdneacute tabulky (pokud již neniacute tabulka s danyacutem jmeacutenem založena)
tabulka maacute definovaacuteny jednak sloupce (atributy a souvisejiacuteciacute atributovaacute IO) a jednak tabulkovaacute IO
CREATE TABLE ndash definice sloupce
každyacute sloupec maacute vždy přiřazen jednak datovyacute typ (data_type) nepovinně je možno specifikovat
implicitniacute hodnotu v nově vytvořeneacutem zaacuteznamu (DEFAULT NULL | value) sloupcoveacute integritniacute omezeniacute
CREATE TABLE ndash integritniacute omezeniacute sloupce (lokaacutelniacute)
sloupcoveacute IO umožňuje omezit množinu platnyacutech hodnot daneacuteho atributu v raacutemci zaacuteznamu (noveacuteho nebo modifikovaneacuteho)
pojmenovaneacute CREATE TABLE ( CONSTRAINT constraint ) nepojmenovaneacute
5 typů omezeniacute na platnou hodnotu atributu NOT NULL ndash hodnota musiacute byacutet nenulovaacute UNIQUE ndash hodnota musiacute byacutet unikaacutetniacute (v raacutemci všech řaacutedků v tabulce) PRIMARY KEY ndash definuje primaacuterniacute kliacuteč (toteacutež jako NOT NULL + UNIQUE) REFERENCES ndash definuje jednoatributovyacute ciziacute kliacuteč (oba atributy musiacute byacutet kompatibilniacute) CHECK ndash obecnaacute podmiacutenka
vyhodnotiacute se pouze na vklaacutedaneacutem řaacutedku (řaacutedciacutech) při vyhodnoceniacute podmiacutenky na TRUE je hodnota atributu platnaacute
při pokusu o aktualizaciřaacutedků s neplatnou hodnotou atributu se aktualizace celeacuteho řaacutedkuneprovede
CREATE TABLE ndash integritniacute omezeniacute tabulky (globaacutelniacute)
zobecněniacute atributovyacutech IO pro kombinace hodnot viacutece sloupců kromě NOT NULL to maacute smysl pouze u jednotlivyacutech atributů
UNIQUE ndash n-tice hodnot je unikaacutetniacute FOREIGN KEY ndash stejně jako REFERENCES u atributu CHECK
Referenčniacute integrita při aktualizaci tabulky referujiacuteciacute (ta pro kterou je IO definovaacuteno) nebo
referovaneacute může nastat porušeniacute integrity ciziacutech kliacutečů pokus o vloženiacuteaktualizaci zaacuteznamu s hodnotou ciziacuteho kliacuteče kteraacute se nevyskytuje v sloupci referovaneacute
tabulky pokus o smazaacuteniacute zaacuteznamu z referovaneacute tabulky když pro mazanou hodnotu kliacuteče existuje reference
při porušeniacute integrity ciziacutech kliacutečů může nastat hlaacutešeniacute chyby aktualizace pokud neniacute definovaacutena referenčniacute akce (SQL 89) vykonaacuteniacute referenčniacute akce referential_action (SQL 92)
ON UPDATE ON DELETE ndash podmiacutenka spuštěniacute akce při modifikaci referovaneacute hodnoty nebo smazaacuteniacute řaacutedku v referovaneacute tabulce
CASCADE ndash zaacuteznam s referujiacuteciacute hodnotou se takeacute smaže nebo aktualizuje novou hodnotou SET NULL ndash hodnota dotčeneacuteho zaacuteznamu se nastaviacute na NULL SET DEFAULT ndash hodnota dotčeneacuteho zaacuteznamu se nastaviacute na implicitniacute hodnotu definovanou v
CREATE TABLE NO ACTION ndash implicitniacute neprovede se nic resp SŘBD ohlaacutesiacute chybu tj chovaacuteniacute v raacutemci SQL 89
Modifikaacutetory AUTO_INCREMENT ndash (automatickeacute čiacuteslo) definuje datovyacute typ pole kteryacute při
přidaacuteniacute noveacuteho zaacuteznamu do tabulky automaticky uložiacute jedinečneacute čiacuteslo o jedničku většiacute než předchoziacute Nedovoliacute uložit už jednou použitou hodnotu i když zaacuteznam s touto hodnotou byl již z databaacuteze odstraněn Modifikaacutetor AUTO_INCREMENT lze použiacutet pouze u poliacute s celočiacuteselnyacutemi hodnotami
ZEROFILL ndash použiacutevaacute se k zobrazeniacute vedouciacutech nul u čiacutesel kteraacute jsou založena na šiacuteřce zobrazeniacute tj vyžadujiacute určityacute počet čiacuteslic Chceme-li čiacuteslo 23 zobrazit jako 000023 musiacuteme pole deklarovat jako INT(6) ZEROFILL
BINARY ndash umožňuje uklaacutedaacuteniacute textovyacutech informaciacute jako binaacuterniacutech řetězců Řetězce uloženeacute v binaacuterniacutem formaacutetu rozlišujiacute velikost piacutesmen To se projeviacute takeacute na třiacuteděniacute těchto poliacute
DEFAULT ndash umožňuje určit hodnotu pole jehož hodnota nebude při uloženiacute zaacuteznamu (řaacutedku) znaacutemaacute Vyacutechoziacute hodnotou použiacutevanou v systeacutemu MySQL je NULL Hodnota NULL je dosazovaacutena do všech praacutezdnyacutech poliacute kromě poliacute typu ENUM
Vytvořeniacute baacutezoveacute tabulky
- přiacutekaz vytvořiacute novou praacutezdnou tabulku s definovanyacutem počtem sloupců a popis uložiacute do katalogu
Integritniacute omezeniacute jsou omezeniacute kladenaacute na hodnoty ve sloupciacutech tabulky aby nedošlo k porušeniacute integrity dat
CREATE TABLE naacutezev_tabulky (definice_sloupce hellip [definice_integritniacutech_omezeniacute_tabulky] )
jmeacuteno_sloupce TYP [impl_hodnota] [integritniacute omezeniacute_sloupce]
Definice sloupce
Integritniacute omezeniacute celeacute tabulky
PRIMARY KEY (jm_sloupce hellip) UNIQUE (jm_sloupce hellip) FOREIGN KEY (jm_sloupce hellip) REFERENCES tabulka [(jm_sloupce hellip)] [udaacutelost ref_akce]
CHECK (podmiacuteněnyacute_vyacuteraz)
Integritniacute omezeniacute sloupce
NULL resp NOT NULL CHECK (podmiacuteněnyacute_vyacuteraz) PRIMARY KEY UNIQUE FOREIGN KEY REFERENCES tabulka [(jm_sloupce)]
[udaacutelost ref_akce]
Referenčniacute akce - CASCADE SET DEFAULT SET NULL
Přiacuteklad Spořitelna ndash tabulky s globaacutelniacutemi IO
KLIENTr_cislo jmeno prijmeni ulice mesto6010121224 Jan Novyacute Jaacutenskaacute 25 Zliacuten8261115267 Petra Novaacutekovaacute Poštovaacute 128 Lešnaacute5805064891 Pavel Novaacuteček Nezvalova 697 Zliacuten7953022459 Ivana Novotnaacute Pod mlyacutenem 12 Lukov
UCET POBOCKAc_uctu stav r_cislo pobocka c_p nazev jmeni4568517 42000 8261115267 2 1 Naacutem Miacuteru 12 50000006585485 75000 5805064891 1 2 Zaraacutemiacute 325 80000003256151 25000 8261115267 1
TRANSAKCEc_uctu c_transakce castka datum6585485 1 -2100 110920074568517 1 -4560 110920076585485 2 10000 12092007
CREATE TABLE Klient(r_cislo VARCHAR(11) NOT NULL jmeno VARCHAR(20) NOT NULL prijmeni VARCHAR(30) NOT NULL ulice VARCHAR(30) NOT NULL mesto VARCHAR(30) NOT NULL CONSTRAINT pk PRIMARY KEY (r_cislo)) CREATE TABLE Pobocka(c_p INT NOT NULL nazev VARCHAR(10) jmeni DECIMAL(102) CONSTRAINT pk PRIMARY KEY (c_p))
CREATE TABLE Ucet (c_uctu DECIMAL(70) NOT NULL stav DECIMAL(102) r_cislo VARCHAR(11) NOT NULL pobocka VARCHAR(20) NOT NULL CONSTRAINT pk PRIMARY KEY (c_uctu) CONSTRAINT fk1 FOREIGN KEY (r_cislo) REFERENCES Klient CONSTRAINT fk2 FOREIGN KEY (pobocka) REFERENCES Pobocka )
ALTER TABLE
změna definice scheacutematu atributy ndash přidaacuteniacuteodebraacuteniacute atributu změna DEFAULT hodnoty IO ndash přidaacuteniacuteodebraacuteniacute IO
pozor v tabulce už mohou byacutet data kteraacute nedovoliacute změnit IO (např zaveacutest IO primaacuterniacute kliacuteč)
ALTER TABLE table-name
ADD [COLUMN] column-name column-definition
ADD constraint-definition
ALTER [COLUMN] column-name SET
ALTER [COLUMN] column-name DROP
DROP COLUMN column-name
DROP CONSTRAINT constraint-name
Změna struktury tabulky
ALTER TABLE naacutezev_tabulky aktualizace
ALTER TABLE naacutezev_tabulkyADD COLUMN jmeacuteno_sloupce typ_sloupce [integritniacute omezeniacute]
Modifikuje tabulku a změniacute informace v katalogu
V přiacutepadě že v tabulce již nějakaacute data jsou lze použiacutet naacutesledujiacuteciacute přiacutekaz
Přidaacuteniacute sloupců do tabulky
Uacuteprava definice sloupců
ALTER TABLE naacutezev_tabulkyCHANGE COLUMN stareacute_jmeacuteno_sloupce noveacute_jmeacuteno_sloupce typ_sloupce [integritniacute mezeniacute]
ALTER TABLE naacutezev_tabulky DROP COLUMN jmeacuteno_sloupce [CASCADE]
Zaacutekladniacute přiacutekaz
Mazaacuteniacute sloupců
Maacuteme-li nějakyacute sloupec jehož hodnoty už opravdu nepotřebujeme jednoduše jej smažeme naacutesledujiacuteciacutem přiacutekazem
Přejmenovaacuteniacute sloupce
Prvniacute možnost je rychlejšiacute a využijeme v niacute již znaacutemyacute přiacutekaz
Druhaacute možnost je obecnějšiacute je potřeba proveacutest ji ve viacutece krociacutech
ALTER TABLE naacutezev_tabulkyCHANGE COLUMN stareacute_jmeacuteno_sloupce
noveacute_jmeacuteno_sloupce typ_sloupce [integritniacute omezeniacute]
ALTER TABLE naacutezev_tabulky ADD COLUMN jmeacuteno_sloupce typ_sloupce [integritniacute omezeniacute]
UPDATE naacutezev_tabulkySET stareacute_jmeacuteno_sloupce = noveacute_jmeacuteno_sloupce
ALTER TABLE naacutezev_tabulkyDROP stareacute_jmeacuteno_sloupce
DROP TABLE DROP TABLE table komplementaacuterniacute k přiacutekazu CREATE TABLE table smaže se jak obsah tabulky tak i scheacutema tabulky
pokud chceme vymazat pouze obsah tabulky použijeme přiacutekaz DELETE FROM table
Pokud provedeme přiacutekaz DROP TABLE tak přijdeme o všechna data kteraacute v mazaneacute tabulce byla uložena
Odstraněniacute tabulky
DROP TABLE naacutezev_tabulky
Modifikace dat SQL obsahuje kromě SELECT tři přiacutekazy pro manipulaci s
daty INSERT INTO ndash vloženiacute řaacutedků DELETE FROM ndash vymazaacuteniacute řaacutedků UPDATE ndash aktualizace hodnot v řaacutedciacutech
INSERT INTO vklaacutedaacuteniacute řaacutedku vyacutečtem hodnot dvě možnosti
INSERT INTO table VALUES (h1 h2 h3 h4) INSERT INTO table (s1 s2 s4) VALUES (h1 h2 h4)
vklaacutedaacuteniacute viacutece řaacutedků vyacutečtem hodnot INSERT INTO table VALUES (h11 h12 h13)(h21 h22 h23)
vklaacutedaacuteniacute viacutece řaacutedků jejichž hodnoty vzniknou jako vyacutesledek dotazu INSERT INTO tabulka | (vyacutečet atributů) | (SELECT FROM )
INSERT INTO naacutezev_tabulky [(naacutez_sloupce]] zdroj
Zdroje pro vklaacutedaniacute dat Řaacutedek implicitniacutech hodnot ndash z přiacutekazu CREATE TABLE
Řaacutedek zadanyacutech hodnot
DEFAULT_VALUES
VALUES (skalarniacute_vyacuteraz|NULL|DEFAULThellip)
Vyacutesledek poddotazu
tabulkovyacute_vyacuteraz
Přiacuteklad
INSERT INTO Klient VALUES (lsquo6010121224lsquolsquoJanlsquolsquoNovyacutelsquolsquoJaacutenskaacute 25lsquolsquoZliacutenlsquo)
INSERT INTO Klient (r_cislo jmeno prijmeni ulice mesto)VALUES (lsquo8261115267lsquolsquoPetralsquolsquoNovaacutekovaacutelsquolsquoPoštovaacute 128lsquolsquoLešnaacutelsquo)
(lsquo5805064891lsquolsquoPavellsquolsquoNovaacutečeklsquolsquoNezvalova 697lsquolsquoZliacutenlsquo)
UPDATE aktualizace zaacuteznamů splňujiacuteciacutech podmiacutenku hodnoty zvolenyacutech atributů vybranyacutech zaacuteznamů jsou
nastaveny na NULL hodnotu expression (např konstanta) vyacutesledek dotazu
Aktualizace dat
UPDATE naacutezev_tabulky SET sloupec = rsquohodnotarsquo
UPDATE naacutezev_tabulky SET sloupec1 = rsquohodnota1rsquosloupec2 = rsquohodnota2rsquohellip
UPDATE naacutezev_tabulky SET sloupec1 = rsquohodnota1rsquoWHERE sloupec2 = rsquohodnota2rsquo
Použitiacute klauzule WHERE
Pro změnu viacutece hodnot se použiacutevaacute zaacutepis
Přiacuteklad
UPDATE Klient SET jmeno = lsquoJakubrsquo WHERE r_cislo = lsquo6010121224rsquo
UPDATE Ucet AS u SET stav = stav+ (SELECT castka FROM Transakce AS t WHERE uc_uctu = tc_uctu)
DELETE FROM
vymaže zaacuteznamy ktereacute splňujiacute podmiacutenku bez nadefinovaacuteniacute podmiacutenky vymaže všechny zaacuteznamy
DELETE FROM naacutezev_tabulky WHERE sloupec = rsquohodnotarsquo
Odstraňovaacuteniacute dat
POZOR ndash po odstraněniacute zaacuteznamu už neniacute možneacute zaacuteznam obnovit Je dobreacute miacutet data pro jistotu zaacutelohovanaacute Při odstraňovaacuteniacute dat je nutneacute použiacutevat podmiacutenku WHERE jinak se může staacutet že z tabulky odstraniacutete všechna data
Chcete-li zajistit většiacute bezpečnost před nechtěnyacutem odstraněniacutem zaacuteznamů můžete použiacutet klauzuli LIMIT kteraacute omeziacute počet odstraňovanyacutech zaacuteznamů
DELETE FROM naacutezev_tabulky WHERE sloupec = rsquohodnotarsquoLIMIT 1
Kontexty použitiacute jazyka SQL1048766 přiacutemyacute (direct) SQL 1048766 hostitelskaacute verze (embedded) SQL 1048766 jazyk modulů
Hlavniacute kategorie přiacutekazů bull1048766 definice dat a pohledů (DDL ndash Data Definition Language) bull1048766 manipulace s daty (DML ndash Data Manipulation Language)
1048766 - pro přiacutemyacute SQL 1048766 - pro hostitelskou verzi
bull1048766 autorizace (řiacutezeniacute přiacutestupovyacutech praacutev) bull1048766 integrita dat bull1048766 řiacutezeniacute transakciacute
Dotazy v SQL
pro vysvětleniacute použijeme syntaxi SQL 86 pomociacute diagramů orientovanyacute graf - automat rozpoznaacutevajiacuteciacute SQL rozlišovaacuteniacute termů v diagramu
malaacute piacutesmena podtrženiacute ndash podvyacuteraz v raacutemci daneacute konstrukce velkaacute piacutesmena ndash kliacutečoveacute slovo SQL malaacute piacutesmena kurziacuteva ndash jmeacuteno (tabulkysloupce)
miacutesto atributdomeacutena relace budeme použiacutevat označeniacute
sloupec tabulka
CREATE TABLE ndash zaacutekladniacute konstrukce
vytvořeniacute scheacutematu a praacutezdneacute tabulky (pokud již neniacute tabulka s danyacutem jmeacutenem založena)
tabulka maacute definovaacuteny jednak sloupce (atributy a souvisejiacuteciacute atributovaacute IO) a jednak tabulkovaacute IO
CREATE TABLE ndash definice sloupce
každyacute sloupec maacute vždy přiřazen jednak datovyacute typ (data_type) nepovinně je možno specifikovat
implicitniacute hodnotu v nově vytvořeneacutem zaacuteznamu (DEFAULT NULL | value) sloupcoveacute integritniacute omezeniacute
CREATE TABLE ndash integritniacute omezeniacute sloupce (lokaacutelniacute)
sloupcoveacute IO umožňuje omezit množinu platnyacutech hodnot daneacuteho atributu v raacutemci zaacuteznamu (noveacuteho nebo modifikovaneacuteho)
pojmenovaneacute CREATE TABLE ( CONSTRAINT constraint ) nepojmenovaneacute
5 typů omezeniacute na platnou hodnotu atributu NOT NULL ndash hodnota musiacute byacutet nenulovaacute UNIQUE ndash hodnota musiacute byacutet unikaacutetniacute (v raacutemci všech řaacutedků v tabulce) PRIMARY KEY ndash definuje primaacuterniacute kliacuteč (toteacutež jako NOT NULL + UNIQUE) REFERENCES ndash definuje jednoatributovyacute ciziacute kliacuteč (oba atributy musiacute byacutet kompatibilniacute) CHECK ndash obecnaacute podmiacutenka
vyhodnotiacute se pouze na vklaacutedaneacutem řaacutedku (řaacutedciacutech) při vyhodnoceniacute podmiacutenky na TRUE je hodnota atributu platnaacute
při pokusu o aktualizaciřaacutedků s neplatnou hodnotou atributu se aktualizace celeacuteho řaacutedkuneprovede
CREATE TABLE ndash integritniacute omezeniacute tabulky (globaacutelniacute)
zobecněniacute atributovyacutech IO pro kombinace hodnot viacutece sloupců kromě NOT NULL to maacute smysl pouze u jednotlivyacutech atributů
UNIQUE ndash n-tice hodnot je unikaacutetniacute FOREIGN KEY ndash stejně jako REFERENCES u atributu CHECK
Referenčniacute integrita při aktualizaci tabulky referujiacuteciacute (ta pro kterou je IO definovaacuteno) nebo
referovaneacute může nastat porušeniacute integrity ciziacutech kliacutečů pokus o vloženiacuteaktualizaci zaacuteznamu s hodnotou ciziacuteho kliacuteče kteraacute se nevyskytuje v sloupci referovaneacute
tabulky pokus o smazaacuteniacute zaacuteznamu z referovaneacute tabulky když pro mazanou hodnotu kliacuteče existuje reference
při porušeniacute integrity ciziacutech kliacutečů může nastat hlaacutešeniacute chyby aktualizace pokud neniacute definovaacutena referenčniacute akce (SQL 89) vykonaacuteniacute referenčniacute akce referential_action (SQL 92)
ON UPDATE ON DELETE ndash podmiacutenka spuštěniacute akce při modifikaci referovaneacute hodnoty nebo smazaacuteniacute řaacutedku v referovaneacute tabulce
CASCADE ndash zaacuteznam s referujiacuteciacute hodnotou se takeacute smaže nebo aktualizuje novou hodnotou SET NULL ndash hodnota dotčeneacuteho zaacuteznamu se nastaviacute na NULL SET DEFAULT ndash hodnota dotčeneacuteho zaacuteznamu se nastaviacute na implicitniacute hodnotu definovanou v
CREATE TABLE NO ACTION ndash implicitniacute neprovede se nic resp SŘBD ohlaacutesiacute chybu tj chovaacuteniacute v raacutemci SQL 89
Modifikaacutetory AUTO_INCREMENT ndash (automatickeacute čiacuteslo) definuje datovyacute typ pole kteryacute při
přidaacuteniacute noveacuteho zaacuteznamu do tabulky automaticky uložiacute jedinečneacute čiacuteslo o jedničku většiacute než předchoziacute Nedovoliacute uložit už jednou použitou hodnotu i když zaacuteznam s touto hodnotou byl již z databaacuteze odstraněn Modifikaacutetor AUTO_INCREMENT lze použiacutet pouze u poliacute s celočiacuteselnyacutemi hodnotami
ZEROFILL ndash použiacutevaacute se k zobrazeniacute vedouciacutech nul u čiacutesel kteraacute jsou založena na šiacuteřce zobrazeniacute tj vyžadujiacute určityacute počet čiacuteslic Chceme-li čiacuteslo 23 zobrazit jako 000023 musiacuteme pole deklarovat jako INT(6) ZEROFILL
BINARY ndash umožňuje uklaacutedaacuteniacute textovyacutech informaciacute jako binaacuterniacutech řetězců Řetězce uloženeacute v binaacuterniacutem formaacutetu rozlišujiacute velikost piacutesmen To se projeviacute takeacute na třiacuteděniacute těchto poliacute
DEFAULT ndash umožňuje určit hodnotu pole jehož hodnota nebude při uloženiacute zaacuteznamu (řaacutedku) znaacutemaacute Vyacutechoziacute hodnotou použiacutevanou v systeacutemu MySQL je NULL Hodnota NULL je dosazovaacutena do všech praacutezdnyacutech poliacute kromě poliacute typu ENUM
Vytvořeniacute baacutezoveacute tabulky
- přiacutekaz vytvořiacute novou praacutezdnou tabulku s definovanyacutem počtem sloupců a popis uložiacute do katalogu
Integritniacute omezeniacute jsou omezeniacute kladenaacute na hodnoty ve sloupciacutech tabulky aby nedošlo k porušeniacute integrity dat
CREATE TABLE naacutezev_tabulky (definice_sloupce hellip [definice_integritniacutech_omezeniacute_tabulky] )
jmeacuteno_sloupce TYP [impl_hodnota] [integritniacute omezeniacute_sloupce]
Definice sloupce
Integritniacute omezeniacute celeacute tabulky
PRIMARY KEY (jm_sloupce hellip) UNIQUE (jm_sloupce hellip) FOREIGN KEY (jm_sloupce hellip) REFERENCES tabulka [(jm_sloupce hellip)] [udaacutelost ref_akce]
CHECK (podmiacuteněnyacute_vyacuteraz)
Integritniacute omezeniacute sloupce
NULL resp NOT NULL CHECK (podmiacuteněnyacute_vyacuteraz) PRIMARY KEY UNIQUE FOREIGN KEY REFERENCES tabulka [(jm_sloupce)]
[udaacutelost ref_akce]
Referenčniacute akce - CASCADE SET DEFAULT SET NULL
Přiacuteklad Spořitelna ndash tabulky s globaacutelniacutemi IO
KLIENTr_cislo jmeno prijmeni ulice mesto6010121224 Jan Novyacute Jaacutenskaacute 25 Zliacuten8261115267 Petra Novaacutekovaacute Poštovaacute 128 Lešnaacute5805064891 Pavel Novaacuteček Nezvalova 697 Zliacuten7953022459 Ivana Novotnaacute Pod mlyacutenem 12 Lukov
UCET POBOCKAc_uctu stav r_cislo pobocka c_p nazev jmeni4568517 42000 8261115267 2 1 Naacutem Miacuteru 12 50000006585485 75000 5805064891 1 2 Zaraacutemiacute 325 80000003256151 25000 8261115267 1
TRANSAKCEc_uctu c_transakce castka datum6585485 1 -2100 110920074568517 1 -4560 110920076585485 2 10000 12092007
CREATE TABLE Klient(r_cislo VARCHAR(11) NOT NULL jmeno VARCHAR(20) NOT NULL prijmeni VARCHAR(30) NOT NULL ulice VARCHAR(30) NOT NULL mesto VARCHAR(30) NOT NULL CONSTRAINT pk PRIMARY KEY (r_cislo)) CREATE TABLE Pobocka(c_p INT NOT NULL nazev VARCHAR(10) jmeni DECIMAL(102) CONSTRAINT pk PRIMARY KEY (c_p))
CREATE TABLE Ucet (c_uctu DECIMAL(70) NOT NULL stav DECIMAL(102) r_cislo VARCHAR(11) NOT NULL pobocka VARCHAR(20) NOT NULL CONSTRAINT pk PRIMARY KEY (c_uctu) CONSTRAINT fk1 FOREIGN KEY (r_cislo) REFERENCES Klient CONSTRAINT fk2 FOREIGN KEY (pobocka) REFERENCES Pobocka )
ALTER TABLE
změna definice scheacutematu atributy ndash přidaacuteniacuteodebraacuteniacute atributu změna DEFAULT hodnoty IO ndash přidaacuteniacuteodebraacuteniacute IO
pozor v tabulce už mohou byacutet data kteraacute nedovoliacute změnit IO (např zaveacutest IO primaacuterniacute kliacuteč)
ALTER TABLE table-name
ADD [COLUMN] column-name column-definition
ADD constraint-definition
ALTER [COLUMN] column-name SET
ALTER [COLUMN] column-name DROP
DROP COLUMN column-name
DROP CONSTRAINT constraint-name
Změna struktury tabulky
ALTER TABLE naacutezev_tabulky aktualizace
ALTER TABLE naacutezev_tabulkyADD COLUMN jmeacuteno_sloupce typ_sloupce [integritniacute omezeniacute]
Modifikuje tabulku a změniacute informace v katalogu
V přiacutepadě že v tabulce již nějakaacute data jsou lze použiacutet naacutesledujiacuteciacute přiacutekaz
Přidaacuteniacute sloupců do tabulky
Uacuteprava definice sloupců
ALTER TABLE naacutezev_tabulkyCHANGE COLUMN stareacute_jmeacuteno_sloupce noveacute_jmeacuteno_sloupce typ_sloupce [integritniacute mezeniacute]
ALTER TABLE naacutezev_tabulky DROP COLUMN jmeacuteno_sloupce [CASCADE]
Zaacutekladniacute přiacutekaz
Mazaacuteniacute sloupců
Maacuteme-li nějakyacute sloupec jehož hodnoty už opravdu nepotřebujeme jednoduše jej smažeme naacutesledujiacuteciacutem přiacutekazem
Přejmenovaacuteniacute sloupce
Prvniacute možnost je rychlejšiacute a využijeme v niacute již znaacutemyacute přiacutekaz
Druhaacute možnost je obecnějšiacute je potřeba proveacutest ji ve viacutece krociacutech
ALTER TABLE naacutezev_tabulkyCHANGE COLUMN stareacute_jmeacuteno_sloupce
noveacute_jmeacuteno_sloupce typ_sloupce [integritniacute omezeniacute]
ALTER TABLE naacutezev_tabulky ADD COLUMN jmeacuteno_sloupce typ_sloupce [integritniacute omezeniacute]
UPDATE naacutezev_tabulkySET stareacute_jmeacuteno_sloupce = noveacute_jmeacuteno_sloupce
ALTER TABLE naacutezev_tabulkyDROP stareacute_jmeacuteno_sloupce
DROP TABLE DROP TABLE table komplementaacuterniacute k přiacutekazu CREATE TABLE table smaže se jak obsah tabulky tak i scheacutema tabulky
pokud chceme vymazat pouze obsah tabulky použijeme přiacutekaz DELETE FROM table
Pokud provedeme přiacutekaz DROP TABLE tak přijdeme o všechna data kteraacute v mazaneacute tabulce byla uložena
Odstraněniacute tabulky
DROP TABLE naacutezev_tabulky
Modifikace dat SQL obsahuje kromě SELECT tři přiacutekazy pro manipulaci s
daty INSERT INTO ndash vloženiacute řaacutedků DELETE FROM ndash vymazaacuteniacute řaacutedků UPDATE ndash aktualizace hodnot v řaacutedciacutech
INSERT INTO vklaacutedaacuteniacute řaacutedku vyacutečtem hodnot dvě možnosti
INSERT INTO table VALUES (h1 h2 h3 h4) INSERT INTO table (s1 s2 s4) VALUES (h1 h2 h4)
vklaacutedaacuteniacute viacutece řaacutedků vyacutečtem hodnot INSERT INTO table VALUES (h11 h12 h13)(h21 h22 h23)
vklaacutedaacuteniacute viacutece řaacutedků jejichž hodnoty vzniknou jako vyacutesledek dotazu INSERT INTO tabulka | (vyacutečet atributů) | (SELECT FROM )
INSERT INTO naacutezev_tabulky [(naacutez_sloupce]] zdroj
Zdroje pro vklaacutedaniacute dat Řaacutedek implicitniacutech hodnot ndash z přiacutekazu CREATE TABLE
Řaacutedek zadanyacutech hodnot
DEFAULT_VALUES
VALUES (skalarniacute_vyacuteraz|NULL|DEFAULThellip)
Vyacutesledek poddotazu
tabulkovyacute_vyacuteraz
Přiacuteklad
INSERT INTO Klient VALUES (lsquo6010121224lsquolsquoJanlsquolsquoNovyacutelsquolsquoJaacutenskaacute 25lsquolsquoZliacutenlsquo)
INSERT INTO Klient (r_cislo jmeno prijmeni ulice mesto)VALUES (lsquo8261115267lsquolsquoPetralsquolsquoNovaacutekovaacutelsquolsquoPoštovaacute 128lsquolsquoLešnaacutelsquo)
(lsquo5805064891lsquolsquoPavellsquolsquoNovaacutečeklsquolsquoNezvalova 697lsquolsquoZliacutenlsquo)
UPDATE aktualizace zaacuteznamů splňujiacuteciacutech podmiacutenku hodnoty zvolenyacutech atributů vybranyacutech zaacuteznamů jsou
nastaveny na NULL hodnotu expression (např konstanta) vyacutesledek dotazu
Aktualizace dat
UPDATE naacutezev_tabulky SET sloupec = rsquohodnotarsquo
UPDATE naacutezev_tabulky SET sloupec1 = rsquohodnota1rsquosloupec2 = rsquohodnota2rsquohellip
UPDATE naacutezev_tabulky SET sloupec1 = rsquohodnota1rsquoWHERE sloupec2 = rsquohodnota2rsquo
Použitiacute klauzule WHERE
Pro změnu viacutece hodnot se použiacutevaacute zaacutepis
Přiacuteklad
UPDATE Klient SET jmeno = lsquoJakubrsquo WHERE r_cislo = lsquo6010121224rsquo
UPDATE Ucet AS u SET stav = stav+ (SELECT castka FROM Transakce AS t WHERE uc_uctu = tc_uctu)
DELETE FROM
vymaže zaacuteznamy ktereacute splňujiacute podmiacutenku bez nadefinovaacuteniacute podmiacutenky vymaže všechny zaacuteznamy
DELETE FROM naacutezev_tabulky WHERE sloupec = rsquohodnotarsquo
Odstraňovaacuteniacute dat
POZOR ndash po odstraněniacute zaacuteznamu už neniacute možneacute zaacuteznam obnovit Je dobreacute miacutet data pro jistotu zaacutelohovanaacute Při odstraňovaacuteniacute dat je nutneacute použiacutevat podmiacutenku WHERE jinak se může staacutet že z tabulky odstraniacutete všechna data
Chcete-li zajistit většiacute bezpečnost před nechtěnyacutem odstraněniacutem zaacuteznamů můžete použiacutet klauzuli LIMIT kteraacute omeziacute počet odstraňovanyacutech zaacuteznamů
DELETE FROM naacutezev_tabulky WHERE sloupec = rsquohodnotarsquoLIMIT 1
Dotazy v SQL
pro vysvětleniacute použijeme syntaxi SQL 86 pomociacute diagramů orientovanyacute graf - automat rozpoznaacutevajiacuteciacute SQL rozlišovaacuteniacute termů v diagramu
malaacute piacutesmena podtrženiacute ndash podvyacuteraz v raacutemci daneacute konstrukce velkaacute piacutesmena ndash kliacutečoveacute slovo SQL malaacute piacutesmena kurziacuteva ndash jmeacuteno (tabulkysloupce)
miacutesto atributdomeacutena relace budeme použiacutevat označeniacute
sloupec tabulka
CREATE TABLE ndash zaacutekladniacute konstrukce
vytvořeniacute scheacutematu a praacutezdneacute tabulky (pokud již neniacute tabulka s danyacutem jmeacutenem založena)
tabulka maacute definovaacuteny jednak sloupce (atributy a souvisejiacuteciacute atributovaacute IO) a jednak tabulkovaacute IO
CREATE TABLE ndash definice sloupce
každyacute sloupec maacute vždy přiřazen jednak datovyacute typ (data_type) nepovinně je možno specifikovat
implicitniacute hodnotu v nově vytvořeneacutem zaacuteznamu (DEFAULT NULL | value) sloupcoveacute integritniacute omezeniacute
CREATE TABLE ndash integritniacute omezeniacute sloupce (lokaacutelniacute)
sloupcoveacute IO umožňuje omezit množinu platnyacutech hodnot daneacuteho atributu v raacutemci zaacuteznamu (noveacuteho nebo modifikovaneacuteho)
pojmenovaneacute CREATE TABLE ( CONSTRAINT constraint ) nepojmenovaneacute
5 typů omezeniacute na platnou hodnotu atributu NOT NULL ndash hodnota musiacute byacutet nenulovaacute UNIQUE ndash hodnota musiacute byacutet unikaacutetniacute (v raacutemci všech řaacutedků v tabulce) PRIMARY KEY ndash definuje primaacuterniacute kliacuteč (toteacutež jako NOT NULL + UNIQUE) REFERENCES ndash definuje jednoatributovyacute ciziacute kliacuteč (oba atributy musiacute byacutet kompatibilniacute) CHECK ndash obecnaacute podmiacutenka
vyhodnotiacute se pouze na vklaacutedaneacutem řaacutedku (řaacutedciacutech) při vyhodnoceniacute podmiacutenky na TRUE je hodnota atributu platnaacute
při pokusu o aktualizaciřaacutedků s neplatnou hodnotou atributu se aktualizace celeacuteho řaacutedkuneprovede
CREATE TABLE ndash integritniacute omezeniacute tabulky (globaacutelniacute)
zobecněniacute atributovyacutech IO pro kombinace hodnot viacutece sloupců kromě NOT NULL to maacute smysl pouze u jednotlivyacutech atributů
UNIQUE ndash n-tice hodnot je unikaacutetniacute FOREIGN KEY ndash stejně jako REFERENCES u atributu CHECK
Referenčniacute integrita při aktualizaci tabulky referujiacuteciacute (ta pro kterou je IO definovaacuteno) nebo
referovaneacute může nastat porušeniacute integrity ciziacutech kliacutečů pokus o vloženiacuteaktualizaci zaacuteznamu s hodnotou ciziacuteho kliacuteče kteraacute se nevyskytuje v sloupci referovaneacute
tabulky pokus o smazaacuteniacute zaacuteznamu z referovaneacute tabulky když pro mazanou hodnotu kliacuteče existuje reference
při porušeniacute integrity ciziacutech kliacutečů může nastat hlaacutešeniacute chyby aktualizace pokud neniacute definovaacutena referenčniacute akce (SQL 89) vykonaacuteniacute referenčniacute akce referential_action (SQL 92)
ON UPDATE ON DELETE ndash podmiacutenka spuštěniacute akce při modifikaci referovaneacute hodnoty nebo smazaacuteniacute řaacutedku v referovaneacute tabulce
CASCADE ndash zaacuteznam s referujiacuteciacute hodnotou se takeacute smaže nebo aktualizuje novou hodnotou SET NULL ndash hodnota dotčeneacuteho zaacuteznamu se nastaviacute na NULL SET DEFAULT ndash hodnota dotčeneacuteho zaacuteznamu se nastaviacute na implicitniacute hodnotu definovanou v
CREATE TABLE NO ACTION ndash implicitniacute neprovede se nic resp SŘBD ohlaacutesiacute chybu tj chovaacuteniacute v raacutemci SQL 89
Modifikaacutetory AUTO_INCREMENT ndash (automatickeacute čiacuteslo) definuje datovyacute typ pole kteryacute při
přidaacuteniacute noveacuteho zaacuteznamu do tabulky automaticky uložiacute jedinečneacute čiacuteslo o jedničku většiacute než předchoziacute Nedovoliacute uložit už jednou použitou hodnotu i když zaacuteznam s touto hodnotou byl již z databaacuteze odstraněn Modifikaacutetor AUTO_INCREMENT lze použiacutet pouze u poliacute s celočiacuteselnyacutemi hodnotami
ZEROFILL ndash použiacutevaacute se k zobrazeniacute vedouciacutech nul u čiacutesel kteraacute jsou založena na šiacuteřce zobrazeniacute tj vyžadujiacute určityacute počet čiacuteslic Chceme-li čiacuteslo 23 zobrazit jako 000023 musiacuteme pole deklarovat jako INT(6) ZEROFILL
BINARY ndash umožňuje uklaacutedaacuteniacute textovyacutech informaciacute jako binaacuterniacutech řetězců Řetězce uloženeacute v binaacuterniacutem formaacutetu rozlišujiacute velikost piacutesmen To se projeviacute takeacute na třiacuteděniacute těchto poliacute
DEFAULT ndash umožňuje určit hodnotu pole jehož hodnota nebude při uloženiacute zaacuteznamu (řaacutedku) znaacutemaacute Vyacutechoziacute hodnotou použiacutevanou v systeacutemu MySQL je NULL Hodnota NULL je dosazovaacutena do všech praacutezdnyacutech poliacute kromě poliacute typu ENUM
Vytvořeniacute baacutezoveacute tabulky
- přiacutekaz vytvořiacute novou praacutezdnou tabulku s definovanyacutem počtem sloupců a popis uložiacute do katalogu
Integritniacute omezeniacute jsou omezeniacute kladenaacute na hodnoty ve sloupciacutech tabulky aby nedošlo k porušeniacute integrity dat
CREATE TABLE naacutezev_tabulky (definice_sloupce hellip [definice_integritniacutech_omezeniacute_tabulky] )
jmeacuteno_sloupce TYP [impl_hodnota] [integritniacute omezeniacute_sloupce]
Definice sloupce
Integritniacute omezeniacute celeacute tabulky
PRIMARY KEY (jm_sloupce hellip) UNIQUE (jm_sloupce hellip) FOREIGN KEY (jm_sloupce hellip) REFERENCES tabulka [(jm_sloupce hellip)] [udaacutelost ref_akce]
CHECK (podmiacuteněnyacute_vyacuteraz)
Integritniacute omezeniacute sloupce
NULL resp NOT NULL CHECK (podmiacuteněnyacute_vyacuteraz) PRIMARY KEY UNIQUE FOREIGN KEY REFERENCES tabulka [(jm_sloupce)]
[udaacutelost ref_akce]
Referenčniacute akce - CASCADE SET DEFAULT SET NULL
Přiacuteklad Spořitelna ndash tabulky s globaacutelniacutemi IO
KLIENTr_cislo jmeno prijmeni ulice mesto6010121224 Jan Novyacute Jaacutenskaacute 25 Zliacuten8261115267 Petra Novaacutekovaacute Poštovaacute 128 Lešnaacute5805064891 Pavel Novaacuteček Nezvalova 697 Zliacuten7953022459 Ivana Novotnaacute Pod mlyacutenem 12 Lukov
UCET POBOCKAc_uctu stav r_cislo pobocka c_p nazev jmeni4568517 42000 8261115267 2 1 Naacutem Miacuteru 12 50000006585485 75000 5805064891 1 2 Zaraacutemiacute 325 80000003256151 25000 8261115267 1
TRANSAKCEc_uctu c_transakce castka datum6585485 1 -2100 110920074568517 1 -4560 110920076585485 2 10000 12092007
CREATE TABLE Klient(r_cislo VARCHAR(11) NOT NULL jmeno VARCHAR(20) NOT NULL prijmeni VARCHAR(30) NOT NULL ulice VARCHAR(30) NOT NULL mesto VARCHAR(30) NOT NULL CONSTRAINT pk PRIMARY KEY (r_cislo)) CREATE TABLE Pobocka(c_p INT NOT NULL nazev VARCHAR(10) jmeni DECIMAL(102) CONSTRAINT pk PRIMARY KEY (c_p))
CREATE TABLE Ucet (c_uctu DECIMAL(70) NOT NULL stav DECIMAL(102) r_cislo VARCHAR(11) NOT NULL pobocka VARCHAR(20) NOT NULL CONSTRAINT pk PRIMARY KEY (c_uctu) CONSTRAINT fk1 FOREIGN KEY (r_cislo) REFERENCES Klient CONSTRAINT fk2 FOREIGN KEY (pobocka) REFERENCES Pobocka )
ALTER TABLE
změna definice scheacutematu atributy ndash přidaacuteniacuteodebraacuteniacute atributu změna DEFAULT hodnoty IO ndash přidaacuteniacuteodebraacuteniacute IO
pozor v tabulce už mohou byacutet data kteraacute nedovoliacute změnit IO (např zaveacutest IO primaacuterniacute kliacuteč)
ALTER TABLE table-name
ADD [COLUMN] column-name column-definition
ADD constraint-definition
ALTER [COLUMN] column-name SET
ALTER [COLUMN] column-name DROP
DROP COLUMN column-name
DROP CONSTRAINT constraint-name
Změna struktury tabulky
ALTER TABLE naacutezev_tabulky aktualizace
ALTER TABLE naacutezev_tabulkyADD COLUMN jmeacuteno_sloupce typ_sloupce [integritniacute omezeniacute]
Modifikuje tabulku a změniacute informace v katalogu
V přiacutepadě že v tabulce již nějakaacute data jsou lze použiacutet naacutesledujiacuteciacute přiacutekaz
Přidaacuteniacute sloupců do tabulky
Uacuteprava definice sloupců
ALTER TABLE naacutezev_tabulkyCHANGE COLUMN stareacute_jmeacuteno_sloupce noveacute_jmeacuteno_sloupce typ_sloupce [integritniacute mezeniacute]
ALTER TABLE naacutezev_tabulky DROP COLUMN jmeacuteno_sloupce [CASCADE]
Zaacutekladniacute přiacutekaz
Mazaacuteniacute sloupců
Maacuteme-li nějakyacute sloupec jehož hodnoty už opravdu nepotřebujeme jednoduše jej smažeme naacutesledujiacuteciacutem přiacutekazem
Přejmenovaacuteniacute sloupce
Prvniacute možnost je rychlejšiacute a využijeme v niacute již znaacutemyacute přiacutekaz
Druhaacute možnost je obecnějšiacute je potřeba proveacutest ji ve viacutece krociacutech
ALTER TABLE naacutezev_tabulkyCHANGE COLUMN stareacute_jmeacuteno_sloupce
noveacute_jmeacuteno_sloupce typ_sloupce [integritniacute omezeniacute]
ALTER TABLE naacutezev_tabulky ADD COLUMN jmeacuteno_sloupce typ_sloupce [integritniacute omezeniacute]
UPDATE naacutezev_tabulkySET stareacute_jmeacuteno_sloupce = noveacute_jmeacuteno_sloupce
ALTER TABLE naacutezev_tabulkyDROP stareacute_jmeacuteno_sloupce
DROP TABLE DROP TABLE table komplementaacuterniacute k přiacutekazu CREATE TABLE table smaže se jak obsah tabulky tak i scheacutema tabulky
pokud chceme vymazat pouze obsah tabulky použijeme přiacutekaz DELETE FROM table
Pokud provedeme přiacutekaz DROP TABLE tak přijdeme o všechna data kteraacute v mazaneacute tabulce byla uložena
Odstraněniacute tabulky
DROP TABLE naacutezev_tabulky
Modifikace dat SQL obsahuje kromě SELECT tři přiacutekazy pro manipulaci s
daty INSERT INTO ndash vloženiacute řaacutedků DELETE FROM ndash vymazaacuteniacute řaacutedků UPDATE ndash aktualizace hodnot v řaacutedciacutech
INSERT INTO vklaacutedaacuteniacute řaacutedku vyacutečtem hodnot dvě možnosti
INSERT INTO table VALUES (h1 h2 h3 h4) INSERT INTO table (s1 s2 s4) VALUES (h1 h2 h4)
vklaacutedaacuteniacute viacutece řaacutedků vyacutečtem hodnot INSERT INTO table VALUES (h11 h12 h13)(h21 h22 h23)
vklaacutedaacuteniacute viacutece řaacutedků jejichž hodnoty vzniknou jako vyacutesledek dotazu INSERT INTO tabulka | (vyacutečet atributů) | (SELECT FROM )
INSERT INTO naacutezev_tabulky [(naacutez_sloupce]] zdroj
Zdroje pro vklaacutedaniacute dat Řaacutedek implicitniacutech hodnot ndash z přiacutekazu CREATE TABLE
Řaacutedek zadanyacutech hodnot
DEFAULT_VALUES
VALUES (skalarniacute_vyacuteraz|NULL|DEFAULThellip)
Vyacutesledek poddotazu
tabulkovyacute_vyacuteraz
Přiacuteklad
INSERT INTO Klient VALUES (lsquo6010121224lsquolsquoJanlsquolsquoNovyacutelsquolsquoJaacutenskaacute 25lsquolsquoZliacutenlsquo)
INSERT INTO Klient (r_cislo jmeno prijmeni ulice mesto)VALUES (lsquo8261115267lsquolsquoPetralsquolsquoNovaacutekovaacutelsquolsquoPoštovaacute 128lsquolsquoLešnaacutelsquo)
(lsquo5805064891lsquolsquoPavellsquolsquoNovaacutečeklsquolsquoNezvalova 697lsquolsquoZliacutenlsquo)
UPDATE aktualizace zaacuteznamů splňujiacuteciacutech podmiacutenku hodnoty zvolenyacutech atributů vybranyacutech zaacuteznamů jsou
nastaveny na NULL hodnotu expression (např konstanta) vyacutesledek dotazu
Aktualizace dat
UPDATE naacutezev_tabulky SET sloupec = rsquohodnotarsquo
UPDATE naacutezev_tabulky SET sloupec1 = rsquohodnota1rsquosloupec2 = rsquohodnota2rsquohellip
UPDATE naacutezev_tabulky SET sloupec1 = rsquohodnota1rsquoWHERE sloupec2 = rsquohodnota2rsquo
Použitiacute klauzule WHERE
Pro změnu viacutece hodnot se použiacutevaacute zaacutepis
Přiacuteklad
UPDATE Klient SET jmeno = lsquoJakubrsquo WHERE r_cislo = lsquo6010121224rsquo
UPDATE Ucet AS u SET stav = stav+ (SELECT castka FROM Transakce AS t WHERE uc_uctu = tc_uctu)
DELETE FROM
vymaže zaacuteznamy ktereacute splňujiacute podmiacutenku bez nadefinovaacuteniacute podmiacutenky vymaže všechny zaacuteznamy
DELETE FROM naacutezev_tabulky WHERE sloupec = rsquohodnotarsquo
Odstraňovaacuteniacute dat
POZOR ndash po odstraněniacute zaacuteznamu už neniacute možneacute zaacuteznam obnovit Je dobreacute miacutet data pro jistotu zaacutelohovanaacute Při odstraňovaacuteniacute dat je nutneacute použiacutevat podmiacutenku WHERE jinak se může staacutet že z tabulky odstraniacutete všechna data
Chcete-li zajistit většiacute bezpečnost před nechtěnyacutem odstraněniacutem zaacuteznamů můžete použiacutet klauzuli LIMIT kteraacute omeziacute počet odstraňovanyacutech zaacuteznamů
DELETE FROM naacutezev_tabulky WHERE sloupec = rsquohodnotarsquoLIMIT 1
CREATE TABLE ndash zaacutekladniacute konstrukce
vytvořeniacute scheacutematu a praacutezdneacute tabulky (pokud již neniacute tabulka s danyacutem jmeacutenem založena)
tabulka maacute definovaacuteny jednak sloupce (atributy a souvisejiacuteciacute atributovaacute IO) a jednak tabulkovaacute IO
CREATE TABLE ndash definice sloupce
každyacute sloupec maacute vždy přiřazen jednak datovyacute typ (data_type) nepovinně je možno specifikovat
implicitniacute hodnotu v nově vytvořeneacutem zaacuteznamu (DEFAULT NULL | value) sloupcoveacute integritniacute omezeniacute
CREATE TABLE ndash integritniacute omezeniacute sloupce (lokaacutelniacute)
sloupcoveacute IO umožňuje omezit množinu platnyacutech hodnot daneacuteho atributu v raacutemci zaacuteznamu (noveacuteho nebo modifikovaneacuteho)
pojmenovaneacute CREATE TABLE ( CONSTRAINT constraint ) nepojmenovaneacute
5 typů omezeniacute na platnou hodnotu atributu NOT NULL ndash hodnota musiacute byacutet nenulovaacute UNIQUE ndash hodnota musiacute byacutet unikaacutetniacute (v raacutemci všech řaacutedků v tabulce) PRIMARY KEY ndash definuje primaacuterniacute kliacuteč (toteacutež jako NOT NULL + UNIQUE) REFERENCES ndash definuje jednoatributovyacute ciziacute kliacuteč (oba atributy musiacute byacutet kompatibilniacute) CHECK ndash obecnaacute podmiacutenka
vyhodnotiacute se pouze na vklaacutedaneacutem řaacutedku (řaacutedciacutech) při vyhodnoceniacute podmiacutenky na TRUE je hodnota atributu platnaacute
při pokusu o aktualizaciřaacutedků s neplatnou hodnotou atributu se aktualizace celeacuteho řaacutedkuneprovede
CREATE TABLE ndash integritniacute omezeniacute tabulky (globaacutelniacute)
zobecněniacute atributovyacutech IO pro kombinace hodnot viacutece sloupců kromě NOT NULL to maacute smysl pouze u jednotlivyacutech atributů
UNIQUE ndash n-tice hodnot je unikaacutetniacute FOREIGN KEY ndash stejně jako REFERENCES u atributu CHECK
Referenčniacute integrita při aktualizaci tabulky referujiacuteciacute (ta pro kterou je IO definovaacuteno) nebo
referovaneacute může nastat porušeniacute integrity ciziacutech kliacutečů pokus o vloženiacuteaktualizaci zaacuteznamu s hodnotou ciziacuteho kliacuteče kteraacute se nevyskytuje v sloupci referovaneacute
tabulky pokus o smazaacuteniacute zaacuteznamu z referovaneacute tabulky když pro mazanou hodnotu kliacuteče existuje reference
při porušeniacute integrity ciziacutech kliacutečů může nastat hlaacutešeniacute chyby aktualizace pokud neniacute definovaacutena referenčniacute akce (SQL 89) vykonaacuteniacute referenčniacute akce referential_action (SQL 92)
ON UPDATE ON DELETE ndash podmiacutenka spuštěniacute akce při modifikaci referovaneacute hodnoty nebo smazaacuteniacute řaacutedku v referovaneacute tabulce
CASCADE ndash zaacuteznam s referujiacuteciacute hodnotou se takeacute smaže nebo aktualizuje novou hodnotou SET NULL ndash hodnota dotčeneacuteho zaacuteznamu se nastaviacute na NULL SET DEFAULT ndash hodnota dotčeneacuteho zaacuteznamu se nastaviacute na implicitniacute hodnotu definovanou v
CREATE TABLE NO ACTION ndash implicitniacute neprovede se nic resp SŘBD ohlaacutesiacute chybu tj chovaacuteniacute v raacutemci SQL 89
Modifikaacutetory AUTO_INCREMENT ndash (automatickeacute čiacuteslo) definuje datovyacute typ pole kteryacute při
přidaacuteniacute noveacuteho zaacuteznamu do tabulky automaticky uložiacute jedinečneacute čiacuteslo o jedničku většiacute než předchoziacute Nedovoliacute uložit už jednou použitou hodnotu i když zaacuteznam s touto hodnotou byl již z databaacuteze odstraněn Modifikaacutetor AUTO_INCREMENT lze použiacutet pouze u poliacute s celočiacuteselnyacutemi hodnotami
ZEROFILL ndash použiacutevaacute se k zobrazeniacute vedouciacutech nul u čiacutesel kteraacute jsou založena na šiacuteřce zobrazeniacute tj vyžadujiacute určityacute počet čiacuteslic Chceme-li čiacuteslo 23 zobrazit jako 000023 musiacuteme pole deklarovat jako INT(6) ZEROFILL
BINARY ndash umožňuje uklaacutedaacuteniacute textovyacutech informaciacute jako binaacuterniacutech řetězců Řetězce uloženeacute v binaacuterniacutem formaacutetu rozlišujiacute velikost piacutesmen To se projeviacute takeacute na třiacuteděniacute těchto poliacute
DEFAULT ndash umožňuje určit hodnotu pole jehož hodnota nebude při uloženiacute zaacuteznamu (řaacutedku) znaacutemaacute Vyacutechoziacute hodnotou použiacutevanou v systeacutemu MySQL je NULL Hodnota NULL je dosazovaacutena do všech praacutezdnyacutech poliacute kromě poliacute typu ENUM
Vytvořeniacute baacutezoveacute tabulky
- přiacutekaz vytvořiacute novou praacutezdnou tabulku s definovanyacutem počtem sloupců a popis uložiacute do katalogu
Integritniacute omezeniacute jsou omezeniacute kladenaacute na hodnoty ve sloupciacutech tabulky aby nedošlo k porušeniacute integrity dat
CREATE TABLE naacutezev_tabulky (definice_sloupce hellip [definice_integritniacutech_omezeniacute_tabulky] )
jmeacuteno_sloupce TYP [impl_hodnota] [integritniacute omezeniacute_sloupce]
Definice sloupce
Integritniacute omezeniacute celeacute tabulky
PRIMARY KEY (jm_sloupce hellip) UNIQUE (jm_sloupce hellip) FOREIGN KEY (jm_sloupce hellip) REFERENCES tabulka [(jm_sloupce hellip)] [udaacutelost ref_akce]
CHECK (podmiacuteněnyacute_vyacuteraz)
Integritniacute omezeniacute sloupce
NULL resp NOT NULL CHECK (podmiacuteněnyacute_vyacuteraz) PRIMARY KEY UNIQUE FOREIGN KEY REFERENCES tabulka [(jm_sloupce)]
[udaacutelost ref_akce]
Referenčniacute akce - CASCADE SET DEFAULT SET NULL
Přiacuteklad Spořitelna ndash tabulky s globaacutelniacutemi IO
KLIENTr_cislo jmeno prijmeni ulice mesto6010121224 Jan Novyacute Jaacutenskaacute 25 Zliacuten8261115267 Petra Novaacutekovaacute Poštovaacute 128 Lešnaacute5805064891 Pavel Novaacuteček Nezvalova 697 Zliacuten7953022459 Ivana Novotnaacute Pod mlyacutenem 12 Lukov
UCET POBOCKAc_uctu stav r_cislo pobocka c_p nazev jmeni4568517 42000 8261115267 2 1 Naacutem Miacuteru 12 50000006585485 75000 5805064891 1 2 Zaraacutemiacute 325 80000003256151 25000 8261115267 1
TRANSAKCEc_uctu c_transakce castka datum6585485 1 -2100 110920074568517 1 -4560 110920076585485 2 10000 12092007
CREATE TABLE Klient(r_cislo VARCHAR(11) NOT NULL jmeno VARCHAR(20) NOT NULL prijmeni VARCHAR(30) NOT NULL ulice VARCHAR(30) NOT NULL mesto VARCHAR(30) NOT NULL CONSTRAINT pk PRIMARY KEY (r_cislo)) CREATE TABLE Pobocka(c_p INT NOT NULL nazev VARCHAR(10) jmeni DECIMAL(102) CONSTRAINT pk PRIMARY KEY (c_p))
CREATE TABLE Ucet (c_uctu DECIMAL(70) NOT NULL stav DECIMAL(102) r_cislo VARCHAR(11) NOT NULL pobocka VARCHAR(20) NOT NULL CONSTRAINT pk PRIMARY KEY (c_uctu) CONSTRAINT fk1 FOREIGN KEY (r_cislo) REFERENCES Klient CONSTRAINT fk2 FOREIGN KEY (pobocka) REFERENCES Pobocka )
ALTER TABLE
změna definice scheacutematu atributy ndash přidaacuteniacuteodebraacuteniacute atributu změna DEFAULT hodnoty IO ndash přidaacuteniacuteodebraacuteniacute IO
pozor v tabulce už mohou byacutet data kteraacute nedovoliacute změnit IO (např zaveacutest IO primaacuterniacute kliacuteč)
ALTER TABLE table-name
ADD [COLUMN] column-name column-definition
ADD constraint-definition
ALTER [COLUMN] column-name SET
ALTER [COLUMN] column-name DROP
DROP COLUMN column-name
DROP CONSTRAINT constraint-name
Změna struktury tabulky
ALTER TABLE naacutezev_tabulky aktualizace
ALTER TABLE naacutezev_tabulkyADD COLUMN jmeacuteno_sloupce typ_sloupce [integritniacute omezeniacute]
Modifikuje tabulku a změniacute informace v katalogu
V přiacutepadě že v tabulce již nějakaacute data jsou lze použiacutet naacutesledujiacuteciacute přiacutekaz
Přidaacuteniacute sloupců do tabulky
Uacuteprava definice sloupců
ALTER TABLE naacutezev_tabulkyCHANGE COLUMN stareacute_jmeacuteno_sloupce noveacute_jmeacuteno_sloupce typ_sloupce [integritniacute mezeniacute]
ALTER TABLE naacutezev_tabulky DROP COLUMN jmeacuteno_sloupce [CASCADE]
Zaacutekladniacute přiacutekaz
Mazaacuteniacute sloupců
Maacuteme-li nějakyacute sloupec jehož hodnoty už opravdu nepotřebujeme jednoduše jej smažeme naacutesledujiacuteciacutem přiacutekazem
Přejmenovaacuteniacute sloupce
Prvniacute možnost je rychlejšiacute a využijeme v niacute již znaacutemyacute přiacutekaz
Druhaacute možnost je obecnějšiacute je potřeba proveacutest ji ve viacutece krociacutech
ALTER TABLE naacutezev_tabulkyCHANGE COLUMN stareacute_jmeacuteno_sloupce
noveacute_jmeacuteno_sloupce typ_sloupce [integritniacute omezeniacute]
ALTER TABLE naacutezev_tabulky ADD COLUMN jmeacuteno_sloupce typ_sloupce [integritniacute omezeniacute]
UPDATE naacutezev_tabulkySET stareacute_jmeacuteno_sloupce = noveacute_jmeacuteno_sloupce
ALTER TABLE naacutezev_tabulkyDROP stareacute_jmeacuteno_sloupce
DROP TABLE DROP TABLE table komplementaacuterniacute k přiacutekazu CREATE TABLE table smaže se jak obsah tabulky tak i scheacutema tabulky
pokud chceme vymazat pouze obsah tabulky použijeme přiacutekaz DELETE FROM table
Pokud provedeme přiacutekaz DROP TABLE tak přijdeme o všechna data kteraacute v mazaneacute tabulce byla uložena
Odstraněniacute tabulky
DROP TABLE naacutezev_tabulky
Modifikace dat SQL obsahuje kromě SELECT tři přiacutekazy pro manipulaci s
daty INSERT INTO ndash vloženiacute řaacutedků DELETE FROM ndash vymazaacuteniacute řaacutedků UPDATE ndash aktualizace hodnot v řaacutedciacutech
INSERT INTO vklaacutedaacuteniacute řaacutedku vyacutečtem hodnot dvě možnosti
INSERT INTO table VALUES (h1 h2 h3 h4) INSERT INTO table (s1 s2 s4) VALUES (h1 h2 h4)
vklaacutedaacuteniacute viacutece řaacutedků vyacutečtem hodnot INSERT INTO table VALUES (h11 h12 h13)(h21 h22 h23)
vklaacutedaacuteniacute viacutece řaacutedků jejichž hodnoty vzniknou jako vyacutesledek dotazu INSERT INTO tabulka | (vyacutečet atributů) | (SELECT FROM )
INSERT INTO naacutezev_tabulky [(naacutez_sloupce]] zdroj
Zdroje pro vklaacutedaniacute dat Řaacutedek implicitniacutech hodnot ndash z přiacutekazu CREATE TABLE
Řaacutedek zadanyacutech hodnot
DEFAULT_VALUES
VALUES (skalarniacute_vyacuteraz|NULL|DEFAULThellip)
Vyacutesledek poddotazu
tabulkovyacute_vyacuteraz
Přiacuteklad
INSERT INTO Klient VALUES (lsquo6010121224lsquolsquoJanlsquolsquoNovyacutelsquolsquoJaacutenskaacute 25lsquolsquoZliacutenlsquo)
INSERT INTO Klient (r_cislo jmeno prijmeni ulice mesto)VALUES (lsquo8261115267lsquolsquoPetralsquolsquoNovaacutekovaacutelsquolsquoPoštovaacute 128lsquolsquoLešnaacutelsquo)
(lsquo5805064891lsquolsquoPavellsquolsquoNovaacutečeklsquolsquoNezvalova 697lsquolsquoZliacutenlsquo)
UPDATE aktualizace zaacuteznamů splňujiacuteciacutech podmiacutenku hodnoty zvolenyacutech atributů vybranyacutech zaacuteznamů jsou
nastaveny na NULL hodnotu expression (např konstanta) vyacutesledek dotazu
Aktualizace dat
UPDATE naacutezev_tabulky SET sloupec = rsquohodnotarsquo
UPDATE naacutezev_tabulky SET sloupec1 = rsquohodnota1rsquosloupec2 = rsquohodnota2rsquohellip
UPDATE naacutezev_tabulky SET sloupec1 = rsquohodnota1rsquoWHERE sloupec2 = rsquohodnota2rsquo
Použitiacute klauzule WHERE
Pro změnu viacutece hodnot se použiacutevaacute zaacutepis
Přiacuteklad
UPDATE Klient SET jmeno = lsquoJakubrsquo WHERE r_cislo = lsquo6010121224rsquo
UPDATE Ucet AS u SET stav = stav+ (SELECT castka FROM Transakce AS t WHERE uc_uctu = tc_uctu)
DELETE FROM
vymaže zaacuteznamy ktereacute splňujiacute podmiacutenku bez nadefinovaacuteniacute podmiacutenky vymaže všechny zaacuteznamy
DELETE FROM naacutezev_tabulky WHERE sloupec = rsquohodnotarsquo
Odstraňovaacuteniacute dat
POZOR ndash po odstraněniacute zaacuteznamu už neniacute možneacute zaacuteznam obnovit Je dobreacute miacutet data pro jistotu zaacutelohovanaacute Při odstraňovaacuteniacute dat je nutneacute použiacutevat podmiacutenku WHERE jinak se může staacutet že z tabulky odstraniacutete všechna data
Chcete-li zajistit většiacute bezpečnost před nechtěnyacutem odstraněniacutem zaacuteznamů můžete použiacutet klauzuli LIMIT kteraacute omeziacute počet odstraňovanyacutech zaacuteznamů
DELETE FROM naacutezev_tabulky WHERE sloupec = rsquohodnotarsquoLIMIT 1
CREATE TABLE ndash definice sloupce
každyacute sloupec maacute vždy přiřazen jednak datovyacute typ (data_type) nepovinně je možno specifikovat
implicitniacute hodnotu v nově vytvořeneacutem zaacuteznamu (DEFAULT NULL | value) sloupcoveacute integritniacute omezeniacute
CREATE TABLE ndash integritniacute omezeniacute sloupce (lokaacutelniacute)
sloupcoveacute IO umožňuje omezit množinu platnyacutech hodnot daneacuteho atributu v raacutemci zaacuteznamu (noveacuteho nebo modifikovaneacuteho)
pojmenovaneacute CREATE TABLE ( CONSTRAINT constraint ) nepojmenovaneacute
5 typů omezeniacute na platnou hodnotu atributu NOT NULL ndash hodnota musiacute byacutet nenulovaacute UNIQUE ndash hodnota musiacute byacutet unikaacutetniacute (v raacutemci všech řaacutedků v tabulce) PRIMARY KEY ndash definuje primaacuterniacute kliacuteč (toteacutež jako NOT NULL + UNIQUE) REFERENCES ndash definuje jednoatributovyacute ciziacute kliacuteč (oba atributy musiacute byacutet kompatibilniacute) CHECK ndash obecnaacute podmiacutenka
vyhodnotiacute se pouze na vklaacutedaneacutem řaacutedku (řaacutedciacutech) při vyhodnoceniacute podmiacutenky na TRUE je hodnota atributu platnaacute
při pokusu o aktualizaciřaacutedků s neplatnou hodnotou atributu se aktualizace celeacuteho řaacutedkuneprovede
CREATE TABLE ndash integritniacute omezeniacute tabulky (globaacutelniacute)
zobecněniacute atributovyacutech IO pro kombinace hodnot viacutece sloupců kromě NOT NULL to maacute smysl pouze u jednotlivyacutech atributů
UNIQUE ndash n-tice hodnot je unikaacutetniacute FOREIGN KEY ndash stejně jako REFERENCES u atributu CHECK
Referenčniacute integrita při aktualizaci tabulky referujiacuteciacute (ta pro kterou je IO definovaacuteno) nebo
referovaneacute může nastat porušeniacute integrity ciziacutech kliacutečů pokus o vloženiacuteaktualizaci zaacuteznamu s hodnotou ciziacuteho kliacuteče kteraacute se nevyskytuje v sloupci referovaneacute
tabulky pokus o smazaacuteniacute zaacuteznamu z referovaneacute tabulky když pro mazanou hodnotu kliacuteče existuje reference
při porušeniacute integrity ciziacutech kliacutečů může nastat hlaacutešeniacute chyby aktualizace pokud neniacute definovaacutena referenčniacute akce (SQL 89) vykonaacuteniacute referenčniacute akce referential_action (SQL 92)
ON UPDATE ON DELETE ndash podmiacutenka spuštěniacute akce při modifikaci referovaneacute hodnoty nebo smazaacuteniacute řaacutedku v referovaneacute tabulce
CASCADE ndash zaacuteznam s referujiacuteciacute hodnotou se takeacute smaže nebo aktualizuje novou hodnotou SET NULL ndash hodnota dotčeneacuteho zaacuteznamu se nastaviacute na NULL SET DEFAULT ndash hodnota dotčeneacuteho zaacuteznamu se nastaviacute na implicitniacute hodnotu definovanou v
CREATE TABLE NO ACTION ndash implicitniacute neprovede se nic resp SŘBD ohlaacutesiacute chybu tj chovaacuteniacute v raacutemci SQL 89
Modifikaacutetory AUTO_INCREMENT ndash (automatickeacute čiacuteslo) definuje datovyacute typ pole kteryacute při
přidaacuteniacute noveacuteho zaacuteznamu do tabulky automaticky uložiacute jedinečneacute čiacuteslo o jedničku většiacute než předchoziacute Nedovoliacute uložit už jednou použitou hodnotu i když zaacuteznam s touto hodnotou byl již z databaacuteze odstraněn Modifikaacutetor AUTO_INCREMENT lze použiacutet pouze u poliacute s celočiacuteselnyacutemi hodnotami
ZEROFILL ndash použiacutevaacute se k zobrazeniacute vedouciacutech nul u čiacutesel kteraacute jsou založena na šiacuteřce zobrazeniacute tj vyžadujiacute určityacute počet čiacuteslic Chceme-li čiacuteslo 23 zobrazit jako 000023 musiacuteme pole deklarovat jako INT(6) ZEROFILL
BINARY ndash umožňuje uklaacutedaacuteniacute textovyacutech informaciacute jako binaacuterniacutech řetězců Řetězce uloženeacute v binaacuterniacutem formaacutetu rozlišujiacute velikost piacutesmen To se projeviacute takeacute na třiacuteděniacute těchto poliacute
DEFAULT ndash umožňuje určit hodnotu pole jehož hodnota nebude při uloženiacute zaacuteznamu (řaacutedku) znaacutemaacute Vyacutechoziacute hodnotou použiacutevanou v systeacutemu MySQL je NULL Hodnota NULL je dosazovaacutena do všech praacutezdnyacutech poliacute kromě poliacute typu ENUM
Vytvořeniacute baacutezoveacute tabulky
- přiacutekaz vytvořiacute novou praacutezdnou tabulku s definovanyacutem počtem sloupců a popis uložiacute do katalogu
Integritniacute omezeniacute jsou omezeniacute kladenaacute na hodnoty ve sloupciacutech tabulky aby nedošlo k porušeniacute integrity dat
CREATE TABLE naacutezev_tabulky (definice_sloupce hellip [definice_integritniacutech_omezeniacute_tabulky] )
jmeacuteno_sloupce TYP [impl_hodnota] [integritniacute omezeniacute_sloupce]
Definice sloupce
Integritniacute omezeniacute celeacute tabulky
PRIMARY KEY (jm_sloupce hellip) UNIQUE (jm_sloupce hellip) FOREIGN KEY (jm_sloupce hellip) REFERENCES tabulka [(jm_sloupce hellip)] [udaacutelost ref_akce]
CHECK (podmiacuteněnyacute_vyacuteraz)
Integritniacute omezeniacute sloupce
NULL resp NOT NULL CHECK (podmiacuteněnyacute_vyacuteraz) PRIMARY KEY UNIQUE FOREIGN KEY REFERENCES tabulka [(jm_sloupce)]
[udaacutelost ref_akce]
Referenčniacute akce - CASCADE SET DEFAULT SET NULL
Přiacuteklad Spořitelna ndash tabulky s globaacutelniacutemi IO
KLIENTr_cislo jmeno prijmeni ulice mesto6010121224 Jan Novyacute Jaacutenskaacute 25 Zliacuten8261115267 Petra Novaacutekovaacute Poštovaacute 128 Lešnaacute5805064891 Pavel Novaacuteček Nezvalova 697 Zliacuten7953022459 Ivana Novotnaacute Pod mlyacutenem 12 Lukov
UCET POBOCKAc_uctu stav r_cislo pobocka c_p nazev jmeni4568517 42000 8261115267 2 1 Naacutem Miacuteru 12 50000006585485 75000 5805064891 1 2 Zaraacutemiacute 325 80000003256151 25000 8261115267 1
TRANSAKCEc_uctu c_transakce castka datum6585485 1 -2100 110920074568517 1 -4560 110920076585485 2 10000 12092007
CREATE TABLE Klient(r_cislo VARCHAR(11) NOT NULL jmeno VARCHAR(20) NOT NULL prijmeni VARCHAR(30) NOT NULL ulice VARCHAR(30) NOT NULL mesto VARCHAR(30) NOT NULL CONSTRAINT pk PRIMARY KEY (r_cislo)) CREATE TABLE Pobocka(c_p INT NOT NULL nazev VARCHAR(10) jmeni DECIMAL(102) CONSTRAINT pk PRIMARY KEY (c_p))
CREATE TABLE Ucet (c_uctu DECIMAL(70) NOT NULL stav DECIMAL(102) r_cislo VARCHAR(11) NOT NULL pobocka VARCHAR(20) NOT NULL CONSTRAINT pk PRIMARY KEY (c_uctu) CONSTRAINT fk1 FOREIGN KEY (r_cislo) REFERENCES Klient CONSTRAINT fk2 FOREIGN KEY (pobocka) REFERENCES Pobocka )
ALTER TABLE
změna definice scheacutematu atributy ndash přidaacuteniacuteodebraacuteniacute atributu změna DEFAULT hodnoty IO ndash přidaacuteniacuteodebraacuteniacute IO
pozor v tabulce už mohou byacutet data kteraacute nedovoliacute změnit IO (např zaveacutest IO primaacuterniacute kliacuteč)
ALTER TABLE table-name
ADD [COLUMN] column-name column-definition
ADD constraint-definition
ALTER [COLUMN] column-name SET
ALTER [COLUMN] column-name DROP
DROP COLUMN column-name
DROP CONSTRAINT constraint-name
Změna struktury tabulky
ALTER TABLE naacutezev_tabulky aktualizace
ALTER TABLE naacutezev_tabulkyADD COLUMN jmeacuteno_sloupce typ_sloupce [integritniacute omezeniacute]
Modifikuje tabulku a změniacute informace v katalogu
V přiacutepadě že v tabulce již nějakaacute data jsou lze použiacutet naacutesledujiacuteciacute přiacutekaz
Přidaacuteniacute sloupců do tabulky
Uacuteprava definice sloupců
ALTER TABLE naacutezev_tabulkyCHANGE COLUMN stareacute_jmeacuteno_sloupce noveacute_jmeacuteno_sloupce typ_sloupce [integritniacute mezeniacute]
ALTER TABLE naacutezev_tabulky DROP COLUMN jmeacuteno_sloupce [CASCADE]
Zaacutekladniacute přiacutekaz
Mazaacuteniacute sloupců
Maacuteme-li nějakyacute sloupec jehož hodnoty už opravdu nepotřebujeme jednoduše jej smažeme naacutesledujiacuteciacutem přiacutekazem
Přejmenovaacuteniacute sloupce
Prvniacute možnost je rychlejšiacute a využijeme v niacute již znaacutemyacute přiacutekaz
Druhaacute možnost je obecnějšiacute je potřeba proveacutest ji ve viacutece krociacutech
ALTER TABLE naacutezev_tabulkyCHANGE COLUMN stareacute_jmeacuteno_sloupce
noveacute_jmeacuteno_sloupce typ_sloupce [integritniacute omezeniacute]
ALTER TABLE naacutezev_tabulky ADD COLUMN jmeacuteno_sloupce typ_sloupce [integritniacute omezeniacute]
UPDATE naacutezev_tabulkySET stareacute_jmeacuteno_sloupce = noveacute_jmeacuteno_sloupce
ALTER TABLE naacutezev_tabulkyDROP stareacute_jmeacuteno_sloupce
DROP TABLE DROP TABLE table komplementaacuterniacute k přiacutekazu CREATE TABLE table smaže se jak obsah tabulky tak i scheacutema tabulky
pokud chceme vymazat pouze obsah tabulky použijeme přiacutekaz DELETE FROM table
Pokud provedeme přiacutekaz DROP TABLE tak přijdeme o všechna data kteraacute v mazaneacute tabulce byla uložena
Odstraněniacute tabulky
DROP TABLE naacutezev_tabulky
Modifikace dat SQL obsahuje kromě SELECT tři přiacutekazy pro manipulaci s
daty INSERT INTO ndash vloženiacute řaacutedků DELETE FROM ndash vymazaacuteniacute řaacutedků UPDATE ndash aktualizace hodnot v řaacutedciacutech
INSERT INTO vklaacutedaacuteniacute řaacutedku vyacutečtem hodnot dvě možnosti
INSERT INTO table VALUES (h1 h2 h3 h4) INSERT INTO table (s1 s2 s4) VALUES (h1 h2 h4)
vklaacutedaacuteniacute viacutece řaacutedků vyacutečtem hodnot INSERT INTO table VALUES (h11 h12 h13)(h21 h22 h23)
vklaacutedaacuteniacute viacutece řaacutedků jejichž hodnoty vzniknou jako vyacutesledek dotazu INSERT INTO tabulka | (vyacutečet atributů) | (SELECT FROM )
INSERT INTO naacutezev_tabulky [(naacutez_sloupce]] zdroj
Zdroje pro vklaacutedaniacute dat Řaacutedek implicitniacutech hodnot ndash z přiacutekazu CREATE TABLE
Řaacutedek zadanyacutech hodnot
DEFAULT_VALUES
VALUES (skalarniacute_vyacuteraz|NULL|DEFAULThellip)
Vyacutesledek poddotazu
tabulkovyacute_vyacuteraz
Přiacuteklad
INSERT INTO Klient VALUES (lsquo6010121224lsquolsquoJanlsquolsquoNovyacutelsquolsquoJaacutenskaacute 25lsquolsquoZliacutenlsquo)
INSERT INTO Klient (r_cislo jmeno prijmeni ulice mesto)VALUES (lsquo8261115267lsquolsquoPetralsquolsquoNovaacutekovaacutelsquolsquoPoštovaacute 128lsquolsquoLešnaacutelsquo)
(lsquo5805064891lsquolsquoPavellsquolsquoNovaacutečeklsquolsquoNezvalova 697lsquolsquoZliacutenlsquo)
UPDATE aktualizace zaacuteznamů splňujiacuteciacutech podmiacutenku hodnoty zvolenyacutech atributů vybranyacutech zaacuteznamů jsou
nastaveny na NULL hodnotu expression (např konstanta) vyacutesledek dotazu
Aktualizace dat
UPDATE naacutezev_tabulky SET sloupec = rsquohodnotarsquo
UPDATE naacutezev_tabulky SET sloupec1 = rsquohodnota1rsquosloupec2 = rsquohodnota2rsquohellip
UPDATE naacutezev_tabulky SET sloupec1 = rsquohodnota1rsquoWHERE sloupec2 = rsquohodnota2rsquo
Použitiacute klauzule WHERE
Pro změnu viacutece hodnot se použiacutevaacute zaacutepis
Přiacuteklad
UPDATE Klient SET jmeno = lsquoJakubrsquo WHERE r_cislo = lsquo6010121224rsquo
UPDATE Ucet AS u SET stav = stav+ (SELECT castka FROM Transakce AS t WHERE uc_uctu = tc_uctu)
DELETE FROM
vymaže zaacuteznamy ktereacute splňujiacute podmiacutenku bez nadefinovaacuteniacute podmiacutenky vymaže všechny zaacuteznamy
DELETE FROM naacutezev_tabulky WHERE sloupec = rsquohodnotarsquo
Odstraňovaacuteniacute dat
POZOR ndash po odstraněniacute zaacuteznamu už neniacute možneacute zaacuteznam obnovit Je dobreacute miacutet data pro jistotu zaacutelohovanaacute Při odstraňovaacuteniacute dat je nutneacute použiacutevat podmiacutenku WHERE jinak se může staacutet že z tabulky odstraniacutete všechna data
Chcete-li zajistit většiacute bezpečnost před nechtěnyacutem odstraněniacutem zaacuteznamů můžete použiacutet klauzuli LIMIT kteraacute omeziacute počet odstraňovanyacutech zaacuteznamů
DELETE FROM naacutezev_tabulky WHERE sloupec = rsquohodnotarsquoLIMIT 1
CREATE TABLE ndash integritniacute omezeniacute sloupce (lokaacutelniacute)
sloupcoveacute IO umožňuje omezit množinu platnyacutech hodnot daneacuteho atributu v raacutemci zaacuteznamu (noveacuteho nebo modifikovaneacuteho)
pojmenovaneacute CREATE TABLE ( CONSTRAINT constraint ) nepojmenovaneacute
5 typů omezeniacute na platnou hodnotu atributu NOT NULL ndash hodnota musiacute byacutet nenulovaacute UNIQUE ndash hodnota musiacute byacutet unikaacutetniacute (v raacutemci všech řaacutedků v tabulce) PRIMARY KEY ndash definuje primaacuterniacute kliacuteč (toteacutež jako NOT NULL + UNIQUE) REFERENCES ndash definuje jednoatributovyacute ciziacute kliacuteč (oba atributy musiacute byacutet kompatibilniacute) CHECK ndash obecnaacute podmiacutenka
vyhodnotiacute se pouze na vklaacutedaneacutem řaacutedku (řaacutedciacutech) při vyhodnoceniacute podmiacutenky na TRUE je hodnota atributu platnaacute
při pokusu o aktualizaciřaacutedků s neplatnou hodnotou atributu se aktualizace celeacuteho řaacutedkuneprovede
CREATE TABLE ndash integritniacute omezeniacute tabulky (globaacutelniacute)
zobecněniacute atributovyacutech IO pro kombinace hodnot viacutece sloupců kromě NOT NULL to maacute smysl pouze u jednotlivyacutech atributů
UNIQUE ndash n-tice hodnot je unikaacutetniacute FOREIGN KEY ndash stejně jako REFERENCES u atributu CHECK
Referenčniacute integrita při aktualizaci tabulky referujiacuteciacute (ta pro kterou je IO definovaacuteno) nebo
referovaneacute může nastat porušeniacute integrity ciziacutech kliacutečů pokus o vloženiacuteaktualizaci zaacuteznamu s hodnotou ciziacuteho kliacuteče kteraacute se nevyskytuje v sloupci referovaneacute
tabulky pokus o smazaacuteniacute zaacuteznamu z referovaneacute tabulky když pro mazanou hodnotu kliacuteče existuje reference
při porušeniacute integrity ciziacutech kliacutečů může nastat hlaacutešeniacute chyby aktualizace pokud neniacute definovaacutena referenčniacute akce (SQL 89) vykonaacuteniacute referenčniacute akce referential_action (SQL 92)
ON UPDATE ON DELETE ndash podmiacutenka spuštěniacute akce při modifikaci referovaneacute hodnoty nebo smazaacuteniacute řaacutedku v referovaneacute tabulce
CASCADE ndash zaacuteznam s referujiacuteciacute hodnotou se takeacute smaže nebo aktualizuje novou hodnotou SET NULL ndash hodnota dotčeneacuteho zaacuteznamu se nastaviacute na NULL SET DEFAULT ndash hodnota dotčeneacuteho zaacuteznamu se nastaviacute na implicitniacute hodnotu definovanou v
CREATE TABLE NO ACTION ndash implicitniacute neprovede se nic resp SŘBD ohlaacutesiacute chybu tj chovaacuteniacute v raacutemci SQL 89
Modifikaacutetory AUTO_INCREMENT ndash (automatickeacute čiacuteslo) definuje datovyacute typ pole kteryacute při
přidaacuteniacute noveacuteho zaacuteznamu do tabulky automaticky uložiacute jedinečneacute čiacuteslo o jedničku většiacute než předchoziacute Nedovoliacute uložit už jednou použitou hodnotu i když zaacuteznam s touto hodnotou byl již z databaacuteze odstraněn Modifikaacutetor AUTO_INCREMENT lze použiacutet pouze u poliacute s celočiacuteselnyacutemi hodnotami
ZEROFILL ndash použiacutevaacute se k zobrazeniacute vedouciacutech nul u čiacutesel kteraacute jsou založena na šiacuteřce zobrazeniacute tj vyžadujiacute určityacute počet čiacuteslic Chceme-li čiacuteslo 23 zobrazit jako 000023 musiacuteme pole deklarovat jako INT(6) ZEROFILL
BINARY ndash umožňuje uklaacutedaacuteniacute textovyacutech informaciacute jako binaacuterniacutech řetězců Řetězce uloženeacute v binaacuterniacutem formaacutetu rozlišujiacute velikost piacutesmen To se projeviacute takeacute na třiacuteděniacute těchto poliacute
DEFAULT ndash umožňuje určit hodnotu pole jehož hodnota nebude při uloženiacute zaacuteznamu (řaacutedku) znaacutemaacute Vyacutechoziacute hodnotou použiacutevanou v systeacutemu MySQL je NULL Hodnota NULL je dosazovaacutena do všech praacutezdnyacutech poliacute kromě poliacute typu ENUM
Vytvořeniacute baacutezoveacute tabulky
- přiacutekaz vytvořiacute novou praacutezdnou tabulku s definovanyacutem počtem sloupců a popis uložiacute do katalogu
Integritniacute omezeniacute jsou omezeniacute kladenaacute na hodnoty ve sloupciacutech tabulky aby nedošlo k porušeniacute integrity dat
CREATE TABLE naacutezev_tabulky (definice_sloupce hellip [definice_integritniacutech_omezeniacute_tabulky] )
jmeacuteno_sloupce TYP [impl_hodnota] [integritniacute omezeniacute_sloupce]
Definice sloupce
Integritniacute omezeniacute celeacute tabulky
PRIMARY KEY (jm_sloupce hellip) UNIQUE (jm_sloupce hellip) FOREIGN KEY (jm_sloupce hellip) REFERENCES tabulka [(jm_sloupce hellip)] [udaacutelost ref_akce]
CHECK (podmiacuteněnyacute_vyacuteraz)
Integritniacute omezeniacute sloupce
NULL resp NOT NULL CHECK (podmiacuteněnyacute_vyacuteraz) PRIMARY KEY UNIQUE FOREIGN KEY REFERENCES tabulka [(jm_sloupce)]
[udaacutelost ref_akce]
Referenčniacute akce - CASCADE SET DEFAULT SET NULL
Přiacuteklad Spořitelna ndash tabulky s globaacutelniacutemi IO
KLIENTr_cislo jmeno prijmeni ulice mesto6010121224 Jan Novyacute Jaacutenskaacute 25 Zliacuten8261115267 Petra Novaacutekovaacute Poštovaacute 128 Lešnaacute5805064891 Pavel Novaacuteček Nezvalova 697 Zliacuten7953022459 Ivana Novotnaacute Pod mlyacutenem 12 Lukov
UCET POBOCKAc_uctu stav r_cislo pobocka c_p nazev jmeni4568517 42000 8261115267 2 1 Naacutem Miacuteru 12 50000006585485 75000 5805064891 1 2 Zaraacutemiacute 325 80000003256151 25000 8261115267 1
TRANSAKCEc_uctu c_transakce castka datum6585485 1 -2100 110920074568517 1 -4560 110920076585485 2 10000 12092007
CREATE TABLE Klient(r_cislo VARCHAR(11) NOT NULL jmeno VARCHAR(20) NOT NULL prijmeni VARCHAR(30) NOT NULL ulice VARCHAR(30) NOT NULL mesto VARCHAR(30) NOT NULL CONSTRAINT pk PRIMARY KEY (r_cislo)) CREATE TABLE Pobocka(c_p INT NOT NULL nazev VARCHAR(10) jmeni DECIMAL(102) CONSTRAINT pk PRIMARY KEY (c_p))
CREATE TABLE Ucet (c_uctu DECIMAL(70) NOT NULL stav DECIMAL(102) r_cislo VARCHAR(11) NOT NULL pobocka VARCHAR(20) NOT NULL CONSTRAINT pk PRIMARY KEY (c_uctu) CONSTRAINT fk1 FOREIGN KEY (r_cislo) REFERENCES Klient CONSTRAINT fk2 FOREIGN KEY (pobocka) REFERENCES Pobocka )
ALTER TABLE
změna definice scheacutematu atributy ndash přidaacuteniacuteodebraacuteniacute atributu změna DEFAULT hodnoty IO ndash přidaacuteniacuteodebraacuteniacute IO
pozor v tabulce už mohou byacutet data kteraacute nedovoliacute změnit IO (např zaveacutest IO primaacuterniacute kliacuteč)
ALTER TABLE table-name
ADD [COLUMN] column-name column-definition
ADD constraint-definition
ALTER [COLUMN] column-name SET
ALTER [COLUMN] column-name DROP
DROP COLUMN column-name
DROP CONSTRAINT constraint-name
Změna struktury tabulky
ALTER TABLE naacutezev_tabulky aktualizace
ALTER TABLE naacutezev_tabulkyADD COLUMN jmeacuteno_sloupce typ_sloupce [integritniacute omezeniacute]
Modifikuje tabulku a změniacute informace v katalogu
V přiacutepadě že v tabulce již nějakaacute data jsou lze použiacutet naacutesledujiacuteciacute přiacutekaz
Přidaacuteniacute sloupců do tabulky
Uacuteprava definice sloupců
ALTER TABLE naacutezev_tabulkyCHANGE COLUMN stareacute_jmeacuteno_sloupce noveacute_jmeacuteno_sloupce typ_sloupce [integritniacute mezeniacute]
ALTER TABLE naacutezev_tabulky DROP COLUMN jmeacuteno_sloupce [CASCADE]
Zaacutekladniacute přiacutekaz
Mazaacuteniacute sloupců
Maacuteme-li nějakyacute sloupec jehož hodnoty už opravdu nepotřebujeme jednoduše jej smažeme naacutesledujiacuteciacutem přiacutekazem
Přejmenovaacuteniacute sloupce
Prvniacute možnost je rychlejšiacute a využijeme v niacute již znaacutemyacute přiacutekaz
Druhaacute možnost je obecnějšiacute je potřeba proveacutest ji ve viacutece krociacutech
ALTER TABLE naacutezev_tabulkyCHANGE COLUMN stareacute_jmeacuteno_sloupce
noveacute_jmeacuteno_sloupce typ_sloupce [integritniacute omezeniacute]
ALTER TABLE naacutezev_tabulky ADD COLUMN jmeacuteno_sloupce typ_sloupce [integritniacute omezeniacute]
UPDATE naacutezev_tabulkySET stareacute_jmeacuteno_sloupce = noveacute_jmeacuteno_sloupce
ALTER TABLE naacutezev_tabulkyDROP stareacute_jmeacuteno_sloupce
DROP TABLE DROP TABLE table komplementaacuterniacute k přiacutekazu CREATE TABLE table smaže se jak obsah tabulky tak i scheacutema tabulky
pokud chceme vymazat pouze obsah tabulky použijeme přiacutekaz DELETE FROM table
Pokud provedeme přiacutekaz DROP TABLE tak přijdeme o všechna data kteraacute v mazaneacute tabulce byla uložena
Odstraněniacute tabulky
DROP TABLE naacutezev_tabulky
Modifikace dat SQL obsahuje kromě SELECT tři přiacutekazy pro manipulaci s
daty INSERT INTO ndash vloženiacute řaacutedků DELETE FROM ndash vymazaacuteniacute řaacutedků UPDATE ndash aktualizace hodnot v řaacutedciacutech
INSERT INTO vklaacutedaacuteniacute řaacutedku vyacutečtem hodnot dvě možnosti
INSERT INTO table VALUES (h1 h2 h3 h4) INSERT INTO table (s1 s2 s4) VALUES (h1 h2 h4)
vklaacutedaacuteniacute viacutece řaacutedků vyacutečtem hodnot INSERT INTO table VALUES (h11 h12 h13)(h21 h22 h23)
vklaacutedaacuteniacute viacutece řaacutedků jejichž hodnoty vzniknou jako vyacutesledek dotazu INSERT INTO tabulka | (vyacutečet atributů) | (SELECT FROM )
INSERT INTO naacutezev_tabulky [(naacutez_sloupce]] zdroj
Zdroje pro vklaacutedaniacute dat Řaacutedek implicitniacutech hodnot ndash z přiacutekazu CREATE TABLE
Řaacutedek zadanyacutech hodnot
DEFAULT_VALUES
VALUES (skalarniacute_vyacuteraz|NULL|DEFAULThellip)
Vyacutesledek poddotazu
tabulkovyacute_vyacuteraz
Přiacuteklad
INSERT INTO Klient VALUES (lsquo6010121224lsquolsquoJanlsquolsquoNovyacutelsquolsquoJaacutenskaacute 25lsquolsquoZliacutenlsquo)
INSERT INTO Klient (r_cislo jmeno prijmeni ulice mesto)VALUES (lsquo8261115267lsquolsquoPetralsquolsquoNovaacutekovaacutelsquolsquoPoštovaacute 128lsquolsquoLešnaacutelsquo)
(lsquo5805064891lsquolsquoPavellsquolsquoNovaacutečeklsquolsquoNezvalova 697lsquolsquoZliacutenlsquo)
UPDATE aktualizace zaacuteznamů splňujiacuteciacutech podmiacutenku hodnoty zvolenyacutech atributů vybranyacutech zaacuteznamů jsou
nastaveny na NULL hodnotu expression (např konstanta) vyacutesledek dotazu
Aktualizace dat
UPDATE naacutezev_tabulky SET sloupec = rsquohodnotarsquo
UPDATE naacutezev_tabulky SET sloupec1 = rsquohodnota1rsquosloupec2 = rsquohodnota2rsquohellip
UPDATE naacutezev_tabulky SET sloupec1 = rsquohodnota1rsquoWHERE sloupec2 = rsquohodnota2rsquo
Použitiacute klauzule WHERE
Pro změnu viacutece hodnot se použiacutevaacute zaacutepis
Přiacuteklad
UPDATE Klient SET jmeno = lsquoJakubrsquo WHERE r_cislo = lsquo6010121224rsquo
UPDATE Ucet AS u SET stav = stav+ (SELECT castka FROM Transakce AS t WHERE uc_uctu = tc_uctu)
DELETE FROM
vymaže zaacuteznamy ktereacute splňujiacute podmiacutenku bez nadefinovaacuteniacute podmiacutenky vymaže všechny zaacuteznamy
DELETE FROM naacutezev_tabulky WHERE sloupec = rsquohodnotarsquo
Odstraňovaacuteniacute dat
POZOR ndash po odstraněniacute zaacuteznamu už neniacute možneacute zaacuteznam obnovit Je dobreacute miacutet data pro jistotu zaacutelohovanaacute Při odstraňovaacuteniacute dat je nutneacute použiacutevat podmiacutenku WHERE jinak se může staacutet že z tabulky odstraniacutete všechna data
Chcete-li zajistit většiacute bezpečnost před nechtěnyacutem odstraněniacutem zaacuteznamů můžete použiacutet klauzuli LIMIT kteraacute omeziacute počet odstraňovanyacutech zaacuteznamů
DELETE FROM naacutezev_tabulky WHERE sloupec = rsquohodnotarsquoLIMIT 1
CREATE TABLE ndash integritniacute omezeniacute tabulky (globaacutelniacute)
zobecněniacute atributovyacutech IO pro kombinace hodnot viacutece sloupců kromě NOT NULL to maacute smysl pouze u jednotlivyacutech atributů
UNIQUE ndash n-tice hodnot je unikaacutetniacute FOREIGN KEY ndash stejně jako REFERENCES u atributu CHECK
Referenčniacute integrita při aktualizaci tabulky referujiacuteciacute (ta pro kterou je IO definovaacuteno) nebo
referovaneacute může nastat porušeniacute integrity ciziacutech kliacutečů pokus o vloženiacuteaktualizaci zaacuteznamu s hodnotou ciziacuteho kliacuteče kteraacute se nevyskytuje v sloupci referovaneacute
tabulky pokus o smazaacuteniacute zaacuteznamu z referovaneacute tabulky když pro mazanou hodnotu kliacuteče existuje reference
při porušeniacute integrity ciziacutech kliacutečů může nastat hlaacutešeniacute chyby aktualizace pokud neniacute definovaacutena referenčniacute akce (SQL 89) vykonaacuteniacute referenčniacute akce referential_action (SQL 92)
ON UPDATE ON DELETE ndash podmiacutenka spuštěniacute akce při modifikaci referovaneacute hodnoty nebo smazaacuteniacute řaacutedku v referovaneacute tabulce
CASCADE ndash zaacuteznam s referujiacuteciacute hodnotou se takeacute smaže nebo aktualizuje novou hodnotou SET NULL ndash hodnota dotčeneacuteho zaacuteznamu se nastaviacute na NULL SET DEFAULT ndash hodnota dotčeneacuteho zaacuteznamu se nastaviacute na implicitniacute hodnotu definovanou v
CREATE TABLE NO ACTION ndash implicitniacute neprovede se nic resp SŘBD ohlaacutesiacute chybu tj chovaacuteniacute v raacutemci SQL 89
Modifikaacutetory AUTO_INCREMENT ndash (automatickeacute čiacuteslo) definuje datovyacute typ pole kteryacute při
přidaacuteniacute noveacuteho zaacuteznamu do tabulky automaticky uložiacute jedinečneacute čiacuteslo o jedničku většiacute než předchoziacute Nedovoliacute uložit už jednou použitou hodnotu i když zaacuteznam s touto hodnotou byl již z databaacuteze odstraněn Modifikaacutetor AUTO_INCREMENT lze použiacutet pouze u poliacute s celočiacuteselnyacutemi hodnotami
ZEROFILL ndash použiacutevaacute se k zobrazeniacute vedouciacutech nul u čiacutesel kteraacute jsou založena na šiacuteřce zobrazeniacute tj vyžadujiacute určityacute počet čiacuteslic Chceme-li čiacuteslo 23 zobrazit jako 000023 musiacuteme pole deklarovat jako INT(6) ZEROFILL
BINARY ndash umožňuje uklaacutedaacuteniacute textovyacutech informaciacute jako binaacuterniacutech řetězců Řetězce uloženeacute v binaacuterniacutem formaacutetu rozlišujiacute velikost piacutesmen To se projeviacute takeacute na třiacuteděniacute těchto poliacute
DEFAULT ndash umožňuje určit hodnotu pole jehož hodnota nebude při uloženiacute zaacuteznamu (řaacutedku) znaacutemaacute Vyacutechoziacute hodnotou použiacutevanou v systeacutemu MySQL je NULL Hodnota NULL je dosazovaacutena do všech praacutezdnyacutech poliacute kromě poliacute typu ENUM
Vytvořeniacute baacutezoveacute tabulky
- přiacutekaz vytvořiacute novou praacutezdnou tabulku s definovanyacutem počtem sloupců a popis uložiacute do katalogu
Integritniacute omezeniacute jsou omezeniacute kladenaacute na hodnoty ve sloupciacutech tabulky aby nedošlo k porušeniacute integrity dat
CREATE TABLE naacutezev_tabulky (definice_sloupce hellip [definice_integritniacutech_omezeniacute_tabulky] )
jmeacuteno_sloupce TYP [impl_hodnota] [integritniacute omezeniacute_sloupce]
Definice sloupce
Integritniacute omezeniacute celeacute tabulky
PRIMARY KEY (jm_sloupce hellip) UNIQUE (jm_sloupce hellip) FOREIGN KEY (jm_sloupce hellip) REFERENCES tabulka [(jm_sloupce hellip)] [udaacutelost ref_akce]
CHECK (podmiacuteněnyacute_vyacuteraz)
Integritniacute omezeniacute sloupce
NULL resp NOT NULL CHECK (podmiacuteněnyacute_vyacuteraz) PRIMARY KEY UNIQUE FOREIGN KEY REFERENCES tabulka [(jm_sloupce)]
[udaacutelost ref_akce]
Referenčniacute akce - CASCADE SET DEFAULT SET NULL
Přiacuteklad Spořitelna ndash tabulky s globaacutelniacutemi IO
KLIENTr_cislo jmeno prijmeni ulice mesto6010121224 Jan Novyacute Jaacutenskaacute 25 Zliacuten8261115267 Petra Novaacutekovaacute Poštovaacute 128 Lešnaacute5805064891 Pavel Novaacuteček Nezvalova 697 Zliacuten7953022459 Ivana Novotnaacute Pod mlyacutenem 12 Lukov
UCET POBOCKAc_uctu stav r_cislo pobocka c_p nazev jmeni4568517 42000 8261115267 2 1 Naacutem Miacuteru 12 50000006585485 75000 5805064891 1 2 Zaraacutemiacute 325 80000003256151 25000 8261115267 1
TRANSAKCEc_uctu c_transakce castka datum6585485 1 -2100 110920074568517 1 -4560 110920076585485 2 10000 12092007
CREATE TABLE Klient(r_cislo VARCHAR(11) NOT NULL jmeno VARCHAR(20) NOT NULL prijmeni VARCHAR(30) NOT NULL ulice VARCHAR(30) NOT NULL mesto VARCHAR(30) NOT NULL CONSTRAINT pk PRIMARY KEY (r_cislo)) CREATE TABLE Pobocka(c_p INT NOT NULL nazev VARCHAR(10) jmeni DECIMAL(102) CONSTRAINT pk PRIMARY KEY (c_p))
CREATE TABLE Ucet (c_uctu DECIMAL(70) NOT NULL stav DECIMAL(102) r_cislo VARCHAR(11) NOT NULL pobocka VARCHAR(20) NOT NULL CONSTRAINT pk PRIMARY KEY (c_uctu) CONSTRAINT fk1 FOREIGN KEY (r_cislo) REFERENCES Klient CONSTRAINT fk2 FOREIGN KEY (pobocka) REFERENCES Pobocka )
ALTER TABLE
změna definice scheacutematu atributy ndash přidaacuteniacuteodebraacuteniacute atributu změna DEFAULT hodnoty IO ndash přidaacuteniacuteodebraacuteniacute IO
pozor v tabulce už mohou byacutet data kteraacute nedovoliacute změnit IO (např zaveacutest IO primaacuterniacute kliacuteč)
ALTER TABLE table-name
ADD [COLUMN] column-name column-definition
ADD constraint-definition
ALTER [COLUMN] column-name SET
ALTER [COLUMN] column-name DROP
DROP COLUMN column-name
DROP CONSTRAINT constraint-name
Změna struktury tabulky
ALTER TABLE naacutezev_tabulky aktualizace
ALTER TABLE naacutezev_tabulkyADD COLUMN jmeacuteno_sloupce typ_sloupce [integritniacute omezeniacute]
Modifikuje tabulku a změniacute informace v katalogu
V přiacutepadě že v tabulce již nějakaacute data jsou lze použiacutet naacutesledujiacuteciacute přiacutekaz
Přidaacuteniacute sloupců do tabulky
Uacuteprava definice sloupců
ALTER TABLE naacutezev_tabulkyCHANGE COLUMN stareacute_jmeacuteno_sloupce noveacute_jmeacuteno_sloupce typ_sloupce [integritniacute mezeniacute]
ALTER TABLE naacutezev_tabulky DROP COLUMN jmeacuteno_sloupce [CASCADE]
Zaacutekladniacute přiacutekaz
Mazaacuteniacute sloupců
Maacuteme-li nějakyacute sloupec jehož hodnoty už opravdu nepotřebujeme jednoduše jej smažeme naacutesledujiacuteciacutem přiacutekazem
Přejmenovaacuteniacute sloupce
Prvniacute možnost je rychlejšiacute a využijeme v niacute již znaacutemyacute přiacutekaz
Druhaacute možnost je obecnějšiacute je potřeba proveacutest ji ve viacutece krociacutech
ALTER TABLE naacutezev_tabulkyCHANGE COLUMN stareacute_jmeacuteno_sloupce
noveacute_jmeacuteno_sloupce typ_sloupce [integritniacute omezeniacute]
ALTER TABLE naacutezev_tabulky ADD COLUMN jmeacuteno_sloupce typ_sloupce [integritniacute omezeniacute]
UPDATE naacutezev_tabulkySET stareacute_jmeacuteno_sloupce = noveacute_jmeacuteno_sloupce
ALTER TABLE naacutezev_tabulkyDROP stareacute_jmeacuteno_sloupce
DROP TABLE DROP TABLE table komplementaacuterniacute k přiacutekazu CREATE TABLE table smaže se jak obsah tabulky tak i scheacutema tabulky
pokud chceme vymazat pouze obsah tabulky použijeme přiacutekaz DELETE FROM table
Pokud provedeme přiacutekaz DROP TABLE tak přijdeme o všechna data kteraacute v mazaneacute tabulce byla uložena
Odstraněniacute tabulky
DROP TABLE naacutezev_tabulky
Modifikace dat SQL obsahuje kromě SELECT tři přiacutekazy pro manipulaci s
daty INSERT INTO ndash vloženiacute řaacutedků DELETE FROM ndash vymazaacuteniacute řaacutedků UPDATE ndash aktualizace hodnot v řaacutedciacutech
INSERT INTO vklaacutedaacuteniacute řaacutedku vyacutečtem hodnot dvě možnosti
INSERT INTO table VALUES (h1 h2 h3 h4) INSERT INTO table (s1 s2 s4) VALUES (h1 h2 h4)
vklaacutedaacuteniacute viacutece řaacutedků vyacutečtem hodnot INSERT INTO table VALUES (h11 h12 h13)(h21 h22 h23)
vklaacutedaacuteniacute viacutece řaacutedků jejichž hodnoty vzniknou jako vyacutesledek dotazu INSERT INTO tabulka | (vyacutečet atributů) | (SELECT FROM )
INSERT INTO naacutezev_tabulky [(naacutez_sloupce]] zdroj
Zdroje pro vklaacutedaniacute dat Řaacutedek implicitniacutech hodnot ndash z přiacutekazu CREATE TABLE
Řaacutedek zadanyacutech hodnot
DEFAULT_VALUES
VALUES (skalarniacute_vyacuteraz|NULL|DEFAULThellip)
Vyacutesledek poddotazu
tabulkovyacute_vyacuteraz
Přiacuteklad
INSERT INTO Klient VALUES (lsquo6010121224lsquolsquoJanlsquolsquoNovyacutelsquolsquoJaacutenskaacute 25lsquolsquoZliacutenlsquo)
INSERT INTO Klient (r_cislo jmeno prijmeni ulice mesto)VALUES (lsquo8261115267lsquolsquoPetralsquolsquoNovaacutekovaacutelsquolsquoPoštovaacute 128lsquolsquoLešnaacutelsquo)
(lsquo5805064891lsquolsquoPavellsquolsquoNovaacutečeklsquolsquoNezvalova 697lsquolsquoZliacutenlsquo)
UPDATE aktualizace zaacuteznamů splňujiacuteciacutech podmiacutenku hodnoty zvolenyacutech atributů vybranyacutech zaacuteznamů jsou
nastaveny na NULL hodnotu expression (např konstanta) vyacutesledek dotazu
Aktualizace dat
UPDATE naacutezev_tabulky SET sloupec = rsquohodnotarsquo
UPDATE naacutezev_tabulky SET sloupec1 = rsquohodnota1rsquosloupec2 = rsquohodnota2rsquohellip
UPDATE naacutezev_tabulky SET sloupec1 = rsquohodnota1rsquoWHERE sloupec2 = rsquohodnota2rsquo
Použitiacute klauzule WHERE
Pro změnu viacutece hodnot se použiacutevaacute zaacutepis
Přiacuteklad
UPDATE Klient SET jmeno = lsquoJakubrsquo WHERE r_cislo = lsquo6010121224rsquo
UPDATE Ucet AS u SET stav = stav+ (SELECT castka FROM Transakce AS t WHERE uc_uctu = tc_uctu)
DELETE FROM
vymaže zaacuteznamy ktereacute splňujiacute podmiacutenku bez nadefinovaacuteniacute podmiacutenky vymaže všechny zaacuteznamy
DELETE FROM naacutezev_tabulky WHERE sloupec = rsquohodnotarsquo
Odstraňovaacuteniacute dat
POZOR ndash po odstraněniacute zaacuteznamu už neniacute možneacute zaacuteznam obnovit Je dobreacute miacutet data pro jistotu zaacutelohovanaacute Při odstraňovaacuteniacute dat je nutneacute použiacutevat podmiacutenku WHERE jinak se může staacutet že z tabulky odstraniacutete všechna data
Chcete-li zajistit většiacute bezpečnost před nechtěnyacutem odstraněniacutem zaacuteznamů můžete použiacutet klauzuli LIMIT kteraacute omeziacute počet odstraňovanyacutech zaacuteznamů
DELETE FROM naacutezev_tabulky WHERE sloupec = rsquohodnotarsquoLIMIT 1
Referenčniacute integrita při aktualizaci tabulky referujiacuteciacute (ta pro kterou je IO definovaacuteno) nebo
referovaneacute může nastat porušeniacute integrity ciziacutech kliacutečů pokus o vloženiacuteaktualizaci zaacuteznamu s hodnotou ciziacuteho kliacuteče kteraacute se nevyskytuje v sloupci referovaneacute
tabulky pokus o smazaacuteniacute zaacuteznamu z referovaneacute tabulky když pro mazanou hodnotu kliacuteče existuje reference
při porušeniacute integrity ciziacutech kliacutečů může nastat hlaacutešeniacute chyby aktualizace pokud neniacute definovaacutena referenčniacute akce (SQL 89) vykonaacuteniacute referenčniacute akce referential_action (SQL 92)
ON UPDATE ON DELETE ndash podmiacutenka spuštěniacute akce při modifikaci referovaneacute hodnoty nebo smazaacuteniacute řaacutedku v referovaneacute tabulce
CASCADE ndash zaacuteznam s referujiacuteciacute hodnotou se takeacute smaže nebo aktualizuje novou hodnotou SET NULL ndash hodnota dotčeneacuteho zaacuteznamu se nastaviacute na NULL SET DEFAULT ndash hodnota dotčeneacuteho zaacuteznamu se nastaviacute na implicitniacute hodnotu definovanou v
CREATE TABLE NO ACTION ndash implicitniacute neprovede se nic resp SŘBD ohlaacutesiacute chybu tj chovaacuteniacute v raacutemci SQL 89
Modifikaacutetory AUTO_INCREMENT ndash (automatickeacute čiacuteslo) definuje datovyacute typ pole kteryacute při
přidaacuteniacute noveacuteho zaacuteznamu do tabulky automaticky uložiacute jedinečneacute čiacuteslo o jedničku většiacute než předchoziacute Nedovoliacute uložit už jednou použitou hodnotu i když zaacuteznam s touto hodnotou byl již z databaacuteze odstraněn Modifikaacutetor AUTO_INCREMENT lze použiacutet pouze u poliacute s celočiacuteselnyacutemi hodnotami
ZEROFILL ndash použiacutevaacute se k zobrazeniacute vedouciacutech nul u čiacutesel kteraacute jsou založena na šiacuteřce zobrazeniacute tj vyžadujiacute určityacute počet čiacuteslic Chceme-li čiacuteslo 23 zobrazit jako 000023 musiacuteme pole deklarovat jako INT(6) ZEROFILL
BINARY ndash umožňuje uklaacutedaacuteniacute textovyacutech informaciacute jako binaacuterniacutech řetězců Řetězce uloženeacute v binaacuterniacutem formaacutetu rozlišujiacute velikost piacutesmen To se projeviacute takeacute na třiacuteděniacute těchto poliacute
DEFAULT ndash umožňuje určit hodnotu pole jehož hodnota nebude při uloženiacute zaacuteznamu (řaacutedku) znaacutemaacute Vyacutechoziacute hodnotou použiacutevanou v systeacutemu MySQL je NULL Hodnota NULL je dosazovaacutena do všech praacutezdnyacutech poliacute kromě poliacute typu ENUM
Vytvořeniacute baacutezoveacute tabulky
- přiacutekaz vytvořiacute novou praacutezdnou tabulku s definovanyacutem počtem sloupců a popis uložiacute do katalogu
Integritniacute omezeniacute jsou omezeniacute kladenaacute na hodnoty ve sloupciacutech tabulky aby nedošlo k porušeniacute integrity dat
CREATE TABLE naacutezev_tabulky (definice_sloupce hellip [definice_integritniacutech_omezeniacute_tabulky] )
jmeacuteno_sloupce TYP [impl_hodnota] [integritniacute omezeniacute_sloupce]
Definice sloupce
Integritniacute omezeniacute celeacute tabulky
PRIMARY KEY (jm_sloupce hellip) UNIQUE (jm_sloupce hellip) FOREIGN KEY (jm_sloupce hellip) REFERENCES tabulka [(jm_sloupce hellip)] [udaacutelost ref_akce]
CHECK (podmiacuteněnyacute_vyacuteraz)
Integritniacute omezeniacute sloupce
NULL resp NOT NULL CHECK (podmiacuteněnyacute_vyacuteraz) PRIMARY KEY UNIQUE FOREIGN KEY REFERENCES tabulka [(jm_sloupce)]
[udaacutelost ref_akce]
Referenčniacute akce - CASCADE SET DEFAULT SET NULL
Přiacuteklad Spořitelna ndash tabulky s globaacutelniacutemi IO
KLIENTr_cislo jmeno prijmeni ulice mesto6010121224 Jan Novyacute Jaacutenskaacute 25 Zliacuten8261115267 Petra Novaacutekovaacute Poštovaacute 128 Lešnaacute5805064891 Pavel Novaacuteček Nezvalova 697 Zliacuten7953022459 Ivana Novotnaacute Pod mlyacutenem 12 Lukov
UCET POBOCKAc_uctu stav r_cislo pobocka c_p nazev jmeni4568517 42000 8261115267 2 1 Naacutem Miacuteru 12 50000006585485 75000 5805064891 1 2 Zaraacutemiacute 325 80000003256151 25000 8261115267 1
TRANSAKCEc_uctu c_transakce castka datum6585485 1 -2100 110920074568517 1 -4560 110920076585485 2 10000 12092007
CREATE TABLE Klient(r_cislo VARCHAR(11) NOT NULL jmeno VARCHAR(20) NOT NULL prijmeni VARCHAR(30) NOT NULL ulice VARCHAR(30) NOT NULL mesto VARCHAR(30) NOT NULL CONSTRAINT pk PRIMARY KEY (r_cislo)) CREATE TABLE Pobocka(c_p INT NOT NULL nazev VARCHAR(10) jmeni DECIMAL(102) CONSTRAINT pk PRIMARY KEY (c_p))
CREATE TABLE Ucet (c_uctu DECIMAL(70) NOT NULL stav DECIMAL(102) r_cislo VARCHAR(11) NOT NULL pobocka VARCHAR(20) NOT NULL CONSTRAINT pk PRIMARY KEY (c_uctu) CONSTRAINT fk1 FOREIGN KEY (r_cislo) REFERENCES Klient CONSTRAINT fk2 FOREIGN KEY (pobocka) REFERENCES Pobocka )
ALTER TABLE
změna definice scheacutematu atributy ndash přidaacuteniacuteodebraacuteniacute atributu změna DEFAULT hodnoty IO ndash přidaacuteniacuteodebraacuteniacute IO
pozor v tabulce už mohou byacutet data kteraacute nedovoliacute změnit IO (např zaveacutest IO primaacuterniacute kliacuteč)
ALTER TABLE table-name
ADD [COLUMN] column-name column-definition
ADD constraint-definition
ALTER [COLUMN] column-name SET
ALTER [COLUMN] column-name DROP
DROP COLUMN column-name
DROP CONSTRAINT constraint-name
Změna struktury tabulky
ALTER TABLE naacutezev_tabulky aktualizace
ALTER TABLE naacutezev_tabulkyADD COLUMN jmeacuteno_sloupce typ_sloupce [integritniacute omezeniacute]
Modifikuje tabulku a změniacute informace v katalogu
V přiacutepadě že v tabulce již nějakaacute data jsou lze použiacutet naacutesledujiacuteciacute přiacutekaz
Přidaacuteniacute sloupců do tabulky
Uacuteprava definice sloupců
ALTER TABLE naacutezev_tabulkyCHANGE COLUMN stareacute_jmeacuteno_sloupce noveacute_jmeacuteno_sloupce typ_sloupce [integritniacute mezeniacute]
ALTER TABLE naacutezev_tabulky DROP COLUMN jmeacuteno_sloupce [CASCADE]
Zaacutekladniacute přiacutekaz
Mazaacuteniacute sloupců
Maacuteme-li nějakyacute sloupec jehož hodnoty už opravdu nepotřebujeme jednoduše jej smažeme naacutesledujiacuteciacutem přiacutekazem
Přejmenovaacuteniacute sloupce
Prvniacute možnost je rychlejšiacute a využijeme v niacute již znaacutemyacute přiacutekaz
Druhaacute možnost je obecnějšiacute je potřeba proveacutest ji ve viacutece krociacutech
ALTER TABLE naacutezev_tabulkyCHANGE COLUMN stareacute_jmeacuteno_sloupce
noveacute_jmeacuteno_sloupce typ_sloupce [integritniacute omezeniacute]
ALTER TABLE naacutezev_tabulky ADD COLUMN jmeacuteno_sloupce typ_sloupce [integritniacute omezeniacute]
UPDATE naacutezev_tabulkySET stareacute_jmeacuteno_sloupce = noveacute_jmeacuteno_sloupce
ALTER TABLE naacutezev_tabulkyDROP stareacute_jmeacuteno_sloupce
DROP TABLE DROP TABLE table komplementaacuterniacute k přiacutekazu CREATE TABLE table smaže se jak obsah tabulky tak i scheacutema tabulky
pokud chceme vymazat pouze obsah tabulky použijeme přiacutekaz DELETE FROM table
Pokud provedeme přiacutekaz DROP TABLE tak přijdeme o všechna data kteraacute v mazaneacute tabulce byla uložena
Odstraněniacute tabulky
DROP TABLE naacutezev_tabulky
Modifikace dat SQL obsahuje kromě SELECT tři přiacutekazy pro manipulaci s
daty INSERT INTO ndash vloženiacute řaacutedků DELETE FROM ndash vymazaacuteniacute řaacutedků UPDATE ndash aktualizace hodnot v řaacutedciacutech
INSERT INTO vklaacutedaacuteniacute řaacutedku vyacutečtem hodnot dvě možnosti
INSERT INTO table VALUES (h1 h2 h3 h4) INSERT INTO table (s1 s2 s4) VALUES (h1 h2 h4)
vklaacutedaacuteniacute viacutece řaacutedků vyacutečtem hodnot INSERT INTO table VALUES (h11 h12 h13)(h21 h22 h23)
vklaacutedaacuteniacute viacutece řaacutedků jejichž hodnoty vzniknou jako vyacutesledek dotazu INSERT INTO tabulka | (vyacutečet atributů) | (SELECT FROM )
INSERT INTO naacutezev_tabulky [(naacutez_sloupce]] zdroj
Zdroje pro vklaacutedaniacute dat Řaacutedek implicitniacutech hodnot ndash z přiacutekazu CREATE TABLE
Řaacutedek zadanyacutech hodnot
DEFAULT_VALUES
VALUES (skalarniacute_vyacuteraz|NULL|DEFAULThellip)
Vyacutesledek poddotazu
tabulkovyacute_vyacuteraz
Přiacuteklad
INSERT INTO Klient VALUES (lsquo6010121224lsquolsquoJanlsquolsquoNovyacutelsquolsquoJaacutenskaacute 25lsquolsquoZliacutenlsquo)
INSERT INTO Klient (r_cislo jmeno prijmeni ulice mesto)VALUES (lsquo8261115267lsquolsquoPetralsquolsquoNovaacutekovaacutelsquolsquoPoštovaacute 128lsquolsquoLešnaacutelsquo)
(lsquo5805064891lsquolsquoPavellsquolsquoNovaacutečeklsquolsquoNezvalova 697lsquolsquoZliacutenlsquo)
UPDATE aktualizace zaacuteznamů splňujiacuteciacutech podmiacutenku hodnoty zvolenyacutech atributů vybranyacutech zaacuteznamů jsou
nastaveny na NULL hodnotu expression (např konstanta) vyacutesledek dotazu
Aktualizace dat
UPDATE naacutezev_tabulky SET sloupec = rsquohodnotarsquo
UPDATE naacutezev_tabulky SET sloupec1 = rsquohodnota1rsquosloupec2 = rsquohodnota2rsquohellip
UPDATE naacutezev_tabulky SET sloupec1 = rsquohodnota1rsquoWHERE sloupec2 = rsquohodnota2rsquo
Použitiacute klauzule WHERE
Pro změnu viacutece hodnot se použiacutevaacute zaacutepis
Přiacuteklad
UPDATE Klient SET jmeno = lsquoJakubrsquo WHERE r_cislo = lsquo6010121224rsquo
UPDATE Ucet AS u SET stav = stav+ (SELECT castka FROM Transakce AS t WHERE uc_uctu = tc_uctu)
DELETE FROM
vymaže zaacuteznamy ktereacute splňujiacute podmiacutenku bez nadefinovaacuteniacute podmiacutenky vymaže všechny zaacuteznamy
DELETE FROM naacutezev_tabulky WHERE sloupec = rsquohodnotarsquo
Odstraňovaacuteniacute dat
POZOR ndash po odstraněniacute zaacuteznamu už neniacute možneacute zaacuteznam obnovit Je dobreacute miacutet data pro jistotu zaacutelohovanaacute Při odstraňovaacuteniacute dat je nutneacute použiacutevat podmiacutenku WHERE jinak se může staacutet že z tabulky odstraniacutete všechna data
Chcete-li zajistit většiacute bezpečnost před nechtěnyacutem odstraněniacutem zaacuteznamů můžete použiacutet klauzuli LIMIT kteraacute omeziacute počet odstraňovanyacutech zaacuteznamů
DELETE FROM naacutezev_tabulky WHERE sloupec = rsquohodnotarsquoLIMIT 1
Modifikaacutetory AUTO_INCREMENT ndash (automatickeacute čiacuteslo) definuje datovyacute typ pole kteryacute při
přidaacuteniacute noveacuteho zaacuteznamu do tabulky automaticky uložiacute jedinečneacute čiacuteslo o jedničku většiacute než předchoziacute Nedovoliacute uložit už jednou použitou hodnotu i když zaacuteznam s touto hodnotou byl již z databaacuteze odstraněn Modifikaacutetor AUTO_INCREMENT lze použiacutet pouze u poliacute s celočiacuteselnyacutemi hodnotami
ZEROFILL ndash použiacutevaacute se k zobrazeniacute vedouciacutech nul u čiacutesel kteraacute jsou založena na šiacuteřce zobrazeniacute tj vyžadujiacute určityacute počet čiacuteslic Chceme-li čiacuteslo 23 zobrazit jako 000023 musiacuteme pole deklarovat jako INT(6) ZEROFILL
BINARY ndash umožňuje uklaacutedaacuteniacute textovyacutech informaciacute jako binaacuterniacutech řetězců Řetězce uloženeacute v binaacuterniacutem formaacutetu rozlišujiacute velikost piacutesmen To se projeviacute takeacute na třiacuteděniacute těchto poliacute
DEFAULT ndash umožňuje určit hodnotu pole jehož hodnota nebude při uloženiacute zaacuteznamu (řaacutedku) znaacutemaacute Vyacutechoziacute hodnotou použiacutevanou v systeacutemu MySQL je NULL Hodnota NULL je dosazovaacutena do všech praacutezdnyacutech poliacute kromě poliacute typu ENUM
Vytvořeniacute baacutezoveacute tabulky
- přiacutekaz vytvořiacute novou praacutezdnou tabulku s definovanyacutem počtem sloupců a popis uložiacute do katalogu
Integritniacute omezeniacute jsou omezeniacute kladenaacute na hodnoty ve sloupciacutech tabulky aby nedošlo k porušeniacute integrity dat
CREATE TABLE naacutezev_tabulky (definice_sloupce hellip [definice_integritniacutech_omezeniacute_tabulky] )
jmeacuteno_sloupce TYP [impl_hodnota] [integritniacute omezeniacute_sloupce]
Definice sloupce
Integritniacute omezeniacute celeacute tabulky
PRIMARY KEY (jm_sloupce hellip) UNIQUE (jm_sloupce hellip) FOREIGN KEY (jm_sloupce hellip) REFERENCES tabulka [(jm_sloupce hellip)] [udaacutelost ref_akce]
CHECK (podmiacuteněnyacute_vyacuteraz)
Integritniacute omezeniacute sloupce
NULL resp NOT NULL CHECK (podmiacuteněnyacute_vyacuteraz) PRIMARY KEY UNIQUE FOREIGN KEY REFERENCES tabulka [(jm_sloupce)]
[udaacutelost ref_akce]
Referenčniacute akce - CASCADE SET DEFAULT SET NULL
Přiacuteklad Spořitelna ndash tabulky s globaacutelniacutemi IO
KLIENTr_cislo jmeno prijmeni ulice mesto6010121224 Jan Novyacute Jaacutenskaacute 25 Zliacuten8261115267 Petra Novaacutekovaacute Poštovaacute 128 Lešnaacute5805064891 Pavel Novaacuteček Nezvalova 697 Zliacuten7953022459 Ivana Novotnaacute Pod mlyacutenem 12 Lukov
UCET POBOCKAc_uctu stav r_cislo pobocka c_p nazev jmeni4568517 42000 8261115267 2 1 Naacutem Miacuteru 12 50000006585485 75000 5805064891 1 2 Zaraacutemiacute 325 80000003256151 25000 8261115267 1
TRANSAKCEc_uctu c_transakce castka datum6585485 1 -2100 110920074568517 1 -4560 110920076585485 2 10000 12092007
CREATE TABLE Klient(r_cislo VARCHAR(11) NOT NULL jmeno VARCHAR(20) NOT NULL prijmeni VARCHAR(30) NOT NULL ulice VARCHAR(30) NOT NULL mesto VARCHAR(30) NOT NULL CONSTRAINT pk PRIMARY KEY (r_cislo)) CREATE TABLE Pobocka(c_p INT NOT NULL nazev VARCHAR(10) jmeni DECIMAL(102) CONSTRAINT pk PRIMARY KEY (c_p))
CREATE TABLE Ucet (c_uctu DECIMAL(70) NOT NULL stav DECIMAL(102) r_cislo VARCHAR(11) NOT NULL pobocka VARCHAR(20) NOT NULL CONSTRAINT pk PRIMARY KEY (c_uctu) CONSTRAINT fk1 FOREIGN KEY (r_cislo) REFERENCES Klient CONSTRAINT fk2 FOREIGN KEY (pobocka) REFERENCES Pobocka )
ALTER TABLE
změna definice scheacutematu atributy ndash přidaacuteniacuteodebraacuteniacute atributu změna DEFAULT hodnoty IO ndash přidaacuteniacuteodebraacuteniacute IO
pozor v tabulce už mohou byacutet data kteraacute nedovoliacute změnit IO (např zaveacutest IO primaacuterniacute kliacuteč)
ALTER TABLE table-name
ADD [COLUMN] column-name column-definition
ADD constraint-definition
ALTER [COLUMN] column-name SET
ALTER [COLUMN] column-name DROP
DROP COLUMN column-name
DROP CONSTRAINT constraint-name
Změna struktury tabulky
ALTER TABLE naacutezev_tabulky aktualizace
ALTER TABLE naacutezev_tabulkyADD COLUMN jmeacuteno_sloupce typ_sloupce [integritniacute omezeniacute]
Modifikuje tabulku a změniacute informace v katalogu
V přiacutepadě že v tabulce již nějakaacute data jsou lze použiacutet naacutesledujiacuteciacute přiacutekaz
Přidaacuteniacute sloupců do tabulky
Uacuteprava definice sloupců
ALTER TABLE naacutezev_tabulkyCHANGE COLUMN stareacute_jmeacuteno_sloupce noveacute_jmeacuteno_sloupce typ_sloupce [integritniacute mezeniacute]
ALTER TABLE naacutezev_tabulky DROP COLUMN jmeacuteno_sloupce [CASCADE]
Zaacutekladniacute přiacutekaz
Mazaacuteniacute sloupců
Maacuteme-li nějakyacute sloupec jehož hodnoty už opravdu nepotřebujeme jednoduše jej smažeme naacutesledujiacuteciacutem přiacutekazem
Přejmenovaacuteniacute sloupce
Prvniacute možnost je rychlejšiacute a využijeme v niacute již znaacutemyacute přiacutekaz
Druhaacute možnost je obecnějšiacute je potřeba proveacutest ji ve viacutece krociacutech
ALTER TABLE naacutezev_tabulkyCHANGE COLUMN stareacute_jmeacuteno_sloupce
noveacute_jmeacuteno_sloupce typ_sloupce [integritniacute omezeniacute]
ALTER TABLE naacutezev_tabulky ADD COLUMN jmeacuteno_sloupce typ_sloupce [integritniacute omezeniacute]
UPDATE naacutezev_tabulkySET stareacute_jmeacuteno_sloupce = noveacute_jmeacuteno_sloupce
ALTER TABLE naacutezev_tabulkyDROP stareacute_jmeacuteno_sloupce
DROP TABLE DROP TABLE table komplementaacuterniacute k přiacutekazu CREATE TABLE table smaže se jak obsah tabulky tak i scheacutema tabulky
pokud chceme vymazat pouze obsah tabulky použijeme přiacutekaz DELETE FROM table
Pokud provedeme přiacutekaz DROP TABLE tak přijdeme o všechna data kteraacute v mazaneacute tabulce byla uložena
Odstraněniacute tabulky
DROP TABLE naacutezev_tabulky
Modifikace dat SQL obsahuje kromě SELECT tři přiacutekazy pro manipulaci s
daty INSERT INTO ndash vloženiacute řaacutedků DELETE FROM ndash vymazaacuteniacute řaacutedků UPDATE ndash aktualizace hodnot v řaacutedciacutech
INSERT INTO vklaacutedaacuteniacute řaacutedku vyacutečtem hodnot dvě možnosti
INSERT INTO table VALUES (h1 h2 h3 h4) INSERT INTO table (s1 s2 s4) VALUES (h1 h2 h4)
vklaacutedaacuteniacute viacutece řaacutedků vyacutečtem hodnot INSERT INTO table VALUES (h11 h12 h13)(h21 h22 h23)
vklaacutedaacuteniacute viacutece řaacutedků jejichž hodnoty vzniknou jako vyacutesledek dotazu INSERT INTO tabulka | (vyacutečet atributů) | (SELECT FROM )
INSERT INTO naacutezev_tabulky [(naacutez_sloupce]] zdroj
Zdroje pro vklaacutedaniacute dat Řaacutedek implicitniacutech hodnot ndash z přiacutekazu CREATE TABLE
Řaacutedek zadanyacutech hodnot
DEFAULT_VALUES
VALUES (skalarniacute_vyacuteraz|NULL|DEFAULThellip)
Vyacutesledek poddotazu
tabulkovyacute_vyacuteraz
Přiacuteklad
INSERT INTO Klient VALUES (lsquo6010121224lsquolsquoJanlsquolsquoNovyacutelsquolsquoJaacutenskaacute 25lsquolsquoZliacutenlsquo)
INSERT INTO Klient (r_cislo jmeno prijmeni ulice mesto)VALUES (lsquo8261115267lsquolsquoPetralsquolsquoNovaacutekovaacutelsquolsquoPoštovaacute 128lsquolsquoLešnaacutelsquo)
(lsquo5805064891lsquolsquoPavellsquolsquoNovaacutečeklsquolsquoNezvalova 697lsquolsquoZliacutenlsquo)
UPDATE aktualizace zaacuteznamů splňujiacuteciacutech podmiacutenku hodnoty zvolenyacutech atributů vybranyacutech zaacuteznamů jsou
nastaveny na NULL hodnotu expression (např konstanta) vyacutesledek dotazu
Aktualizace dat
UPDATE naacutezev_tabulky SET sloupec = rsquohodnotarsquo
UPDATE naacutezev_tabulky SET sloupec1 = rsquohodnota1rsquosloupec2 = rsquohodnota2rsquohellip
UPDATE naacutezev_tabulky SET sloupec1 = rsquohodnota1rsquoWHERE sloupec2 = rsquohodnota2rsquo
Použitiacute klauzule WHERE
Pro změnu viacutece hodnot se použiacutevaacute zaacutepis
Přiacuteklad
UPDATE Klient SET jmeno = lsquoJakubrsquo WHERE r_cislo = lsquo6010121224rsquo
UPDATE Ucet AS u SET stav = stav+ (SELECT castka FROM Transakce AS t WHERE uc_uctu = tc_uctu)
DELETE FROM
vymaže zaacuteznamy ktereacute splňujiacute podmiacutenku bez nadefinovaacuteniacute podmiacutenky vymaže všechny zaacuteznamy
DELETE FROM naacutezev_tabulky WHERE sloupec = rsquohodnotarsquo
Odstraňovaacuteniacute dat
POZOR ndash po odstraněniacute zaacuteznamu už neniacute možneacute zaacuteznam obnovit Je dobreacute miacutet data pro jistotu zaacutelohovanaacute Při odstraňovaacuteniacute dat je nutneacute použiacutevat podmiacutenku WHERE jinak se může staacutet že z tabulky odstraniacutete všechna data
Chcete-li zajistit většiacute bezpečnost před nechtěnyacutem odstraněniacutem zaacuteznamů můžete použiacutet klauzuli LIMIT kteraacute omeziacute počet odstraňovanyacutech zaacuteznamů
DELETE FROM naacutezev_tabulky WHERE sloupec = rsquohodnotarsquoLIMIT 1
Vytvořeniacute baacutezoveacute tabulky
- přiacutekaz vytvořiacute novou praacutezdnou tabulku s definovanyacutem počtem sloupců a popis uložiacute do katalogu
Integritniacute omezeniacute jsou omezeniacute kladenaacute na hodnoty ve sloupciacutech tabulky aby nedošlo k porušeniacute integrity dat
CREATE TABLE naacutezev_tabulky (definice_sloupce hellip [definice_integritniacutech_omezeniacute_tabulky] )
jmeacuteno_sloupce TYP [impl_hodnota] [integritniacute omezeniacute_sloupce]
Definice sloupce
Integritniacute omezeniacute celeacute tabulky
PRIMARY KEY (jm_sloupce hellip) UNIQUE (jm_sloupce hellip) FOREIGN KEY (jm_sloupce hellip) REFERENCES tabulka [(jm_sloupce hellip)] [udaacutelost ref_akce]
CHECK (podmiacuteněnyacute_vyacuteraz)
Integritniacute omezeniacute sloupce
NULL resp NOT NULL CHECK (podmiacuteněnyacute_vyacuteraz) PRIMARY KEY UNIQUE FOREIGN KEY REFERENCES tabulka [(jm_sloupce)]
[udaacutelost ref_akce]
Referenčniacute akce - CASCADE SET DEFAULT SET NULL
Přiacuteklad Spořitelna ndash tabulky s globaacutelniacutemi IO
KLIENTr_cislo jmeno prijmeni ulice mesto6010121224 Jan Novyacute Jaacutenskaacute 25 Zliacuten8261115267 Petra Novaacutekovaacute Poštovaacute 128 Lešnaacute5805064891 Pavel Novaacuteček Nezvalova 697 Zliacuten7953022459 Ivana Novotnaacute Pod mlyacutenem 12 Lukov
UCET POBOCKAc_uctu stav r_cislo pobocka c_p nazev jmeni4568517 42000 8261115267 2 1 Naacutem Miacuteru 12 50000006585485 75000 5805064891 1 2 Zaraacutemiacute 325 80000003256151 25000 8261115267 1
TRANSAKCEc_uctu c_transakce castka datum6585485 1 -2100 110920074568517 1 -4560 110920076585485 2 10000 12092007
CREATE TABLE Klient(r_cislo VARCHAR(11) NOT NULL jmeno VARCHAR(20) NOT NULL prijmeni VARCHAR(30) NOT NULL ulice VARCHAR(30) NOT NULL mesto VARCHAR(30) NOT NULL CONSTRAINT pk PRIMARY KEY (r_cislo)) CREATE TABLE Pobocka(c_p INT NOT NULL nazev VARCHAR(10) jmeni DECIMAL(102) CONSTRAINT pk PRIMARY KEY (c_p))
CREATE TABLE Ucet (c_uctu DECIMAL(70) NOT NULL stav DECIMAL(102) r_cislo VARCHAR(11) NOT NULL pobocka VARCHAR(20) NOT NULL CONSTRAINT pk PRIMARY KEY (c_uctu) CONSTRAINT fk1 FOREIGN KEY (r_cislo) REFERENCES Klient CONSTRAINT fk2 FOREIGN KEY (pobocka) REFERENCES Pobocka )
ALTER TABLE
změna definice scheacutematu atributy ndash přidaacuteniacuteodebraacuteniacute atributu změna DEFAULT hodnoty IO ndash přidaacuteniacuteodebraacuteniacute IO
pozor v tabulce už mohou byacutet data kteraacute nedovoliacute změnit IO (např zaveacutest IO primaacuterniacute kliacuteč)
ALTER TABLE table-name
ADD [COLUMN] column-name column-definition
ADD constraint-definition
ALTER [COLUMN] column-name SET
ALTER [COLUMN] column-name DROP
DROP COLUMN column-name
DROP CONSTRAINT constraint-name
Změna struktury tabulky
ALTER TABLE naacutezev_tabulky aktualizace
ALTER TABLE naacutezev_tabulkyADD COLUMN jmeacuteno_sloupce typ_sloupce [integritniacute omezeniacute]
Modifikuje tabulku a změniacute informace v katalogu
V přiacutepadě že v tabulce již nějakaacute data jsou lze použiacutet naacutesledujiacuteciacute přiacutekaz
Přidaacuteniacute sloupců do tabulky
Uacuteprava definice sloupců
ALTER TABLE naacutezev_tabulkyCHANGE COLUMN stareacute_jmeacuteno_sloupce noveacute_jmeacuteno_sloupce typ_sloupce [integritniacute mezeniacute]
ALTER TABLE naacutezev_tabulky DROP COLUMN jmeacuteno_sloupce [CASCADE]
Zaacutekladniacute přiacutekaz
Mazaacuteniacute sloupců
Maacuteme-li nějakyacute sloupec jehož hodnoty už opravdu nepotřebujeme jednoduše jej smažeme naacutesledujiacuteciacutem přiacutekazem
Přejmenovaacuteniacute sloupce
Prvniacute možnost je rychlejšiacute a využijeme v niacute již znaacutemyacute přiacutekaz
Druhaacute možnost je obecnějšiacute je potřeba proveacutest ji ve viacutece krociacutech
ALTER TABLE naacutezev_tabulkyCHANGE COLUMN stareacute_jmeacuteno_sloupce
noveacute_jmeacuteno_sloupce typ_sloupce [integritniacute omezeniacute]
ALTER TABLE naacutezev_tabulky ADD COLUMN jmeacuteno_sloupce typ_sloupce [integritniacute omezeniacute]
UPDATE naacutezev_tabulkySET stareacute_jmeacuteno_sloupce = noveacute_jmeacuteno_sloupce
ALTER TABLE naacutezev_tabulkyDROP stareacute_jmeacuteno_sloupce
DROP TABLE DROP TABLE table komplementaacuterniacute k přiacutekazu CREATE TABLE table smaže se jak obsah tabulky tak i scheacutema tabulky
pokud chceme vymazat pouze obsah tabulky použijeme přiacutekaz DELETE FROM table
Pokud provedeme přiacutekaz DROP TABLE tak přijdeme o všechna data kteraacute v mazaneacute tabulce byla uložena
Odstraněniacute tabulky
DROP TABLE naacutezev_tabulky
Modifikace dat SQL obsahuje kromě SELECT tři přiacutekazy pro manipulaci s
daty INSERT INTO ndash vloženiacute řaacutedků DELETE FROM ndash vymazaacuteniacute řaacutedků UPDATE ndash aktualizace hodnot v řaacutedciacutech
INSERT INTO vklaacutedaacuteniacute řaacutedku vyacutečtem hodnot dvě možnosti
INSERT INTO table VALUES (h1 h2 h3 h4) INSERT INTO table (s1 s2 s4) VALUES (h1 h2 h4)
vklaacutedaacuteniacute viacutece řaacutedků vyacutečtem hodnot INSERT INTO table VALUES (h11 h12 h13)(h21 h22 h23)
vklaacutedaacuteniacute viacutece řaacutedků jejichž hodnoty vzniknou jako vyacutesledek dotazu INSERT INTO tabulka | (vyacutečet atributů) | (SELECT FROM )
INSERT INTO naacutezev_tabulky [(naacutez_sloupce]] zdroj
Zdroje pro vklaacutedaniacute dat Řaacutedek implicitniacutech hodnot ndash z přiacutekazu CREATE TABLE
Řaacutedek zadanyacutech hodnot
DEFAULT_VALUES
VALUES (skalarniacute_vyacuteraz|NULL|DEFAULThellip)
Vyacutesledek poddotazu
tabulkovyacute_vyacuteraz
Přiacuteklad
INSERT INTO Klient VALUES (lsquo6010121224lsquolsquoJanlsquolsquoNovyacutelsquolsquoJaacutenskaacute 25lsquolsquoZliacutenlsquo)
INSERT INTO Klient (r_cislo jmeno prijmeni ulice mesto)VALUES (lsquo8261115267lsquolsquoPetralsquolsquoNovaacutekovaacutelsquolsquoPoštovaacute 128lsquolsquoLešnaacutelsquo)
(lsquo5805064891lsquolsquoPavellsquolsquoNovaacutečeklsquolsquoNezvalova 697lsquolsquoZliacutenlsquo)
UPDATE aktualizace zaacuteznamů splňujiacuteciacutech podmiacutenku hodnoty zvolenyacutech atributů vybranyacutech zaacuteznamů jsou
nastaveny na NULL hodnotu expression (např konstanta) vyacutesledek dotazu
Aktualizace dat
UPDATE naacutezev_tabulky SET sloupec = rsquohodnotarsquo
UPDATE naacutezev_tabulky SET sloupec1 = rsquohodnota1rsquosloupec2 = rsquohodnota2rsquohellip
UPDATE naacutezev_tabulky SET sloupec1 = rsquohodnota1rsquoWHERE sloupec2 = rsquohodnota2rsquo
Použitiacute klauzule WHERE
Pro změnu viacutece hodnot se použiacutevaacute zaacutepis
Přiacuteklad
UPDATE Klient SET jmeno = lsquoJakubrsquo WHERE r_cislo = lsquo6010121224rsquo
UPDATE Ucet AS u SET stav = stav+ (SELECT castka FROM Transakce AS t WHERE uc_uctu = tc_uctu)
DELETE FROM
vymaže zaacuteznamy ktereacute splňujiacute podmiacutenku bez nadefinovaacuteniacute podmiacutenky vymaže všechny zaacuteznamy
DELETE FROM naacutezev_tabulky WHERE sloupec = rsquohodnotarsquo
Odstraňovaacuteniacute dat
POZOR ndash po odstraněniacute zaacuteznamu už neniacute možneacute zaacuteznam obnovit Je dobreacute miacutet data pro jistotu zaacutelohovanaacute Při odstraňovaacuteniacute dat je nutneacute použiacutevat podmiacutenku WHERE jinak se může staacutet že z tabulky odstraniacutete všechna data
Chcete-li zajistit většiacute bezpečnost před nechtěnyacutem odstraněniacutem zaacuteznamů můžete použiacutet klauzuli LIMIT kteraacute omeziacute počet odstraňovanyacutech zaacuteznamů
DELETE FROM naacutezev_tabulky WHERE sloupec = rsquohodnotarsquoLIMIT 1
Integritniacute omezeniacute celeacute tabulky
PRIMARY KEY (jm_sloupce hellip) UNIQUE (jm_sloupce hellip) FOREIGN KEY (jm_sloupce hellip) REFERENCES tabulka [(jm_sloupce hellip)] [udaacutelost ref_akce]
CHECK (podmiacuteněnyacute_vyacuteraz)
Integritniacute omezeniacute sloupce
NULL resp NOT NULL CHECK (podmiacuteněnyacute_vyacuteraz) PRIMARY KEY UNIQUE FOREIGN KEY REFERENCES tabulka [(jm_sloupce)]
[udaacutelost ref_akce]
Referenčniacute akce - CASCADE SET DEFAULT SET NULL
Přiacuteklad Spořitelna ndash tabulky s globaacutelniacutemi IO
KLIENTr_cislo jmeno prijmeni ulice mesto6010121224 Jan Novyacute Jaacutenskaacute 25 Zliacuten8261115267 Petra Novaacutekovaacute Poštovaacute 128 Lešnaacute5805064891 Pavel Novaacuteček Nezvalova 697 Zliacuten7953022459 Ivana Novotnaacute Pod mlyacutenem 12 Lukov
UCET POBOCKAc_uctu stav r_cislo pobocka c_p nazev jmeni4568517 42000 8261115267 2 1 Naacutem Miacuteru 12 50000006585485 75000 5805064891 1 2 Zaraacutemiacute 325 80000003256151 25000 8261115267 1
TRANSAKCEc_uctu c_transakce castka datum6585485 1 -2100 110920074568517 1 -4560 110920076585485 2 10000 12092007
CREATE TABLE Klient(r_cislo VARCHAR(11) NOT NULL jmeno VARCHAR(20) NOT NULL prijmeni VARCHAR(30) NOT NULL ulice VARCHAR(30) NOT NULL mesto VARCHAR(30) NOT NULL CONSTRAINT pk PRIMARY KEY (r_cislo)) CREATE TABLE Pobocka(c_p INT NOT NULL nazev VARCHAR(10) jmeni DECIMAL(102) CONSTRAINT pk PRIMARY KEY (c_p))
CREATE TABLE Ucet (c_uctu DECIMAL(70) NOT NULL stav DECIMAL(102) r_cislo VARCHAR(11) NOT NULL pobocka VARCHAR(20) NOT NULL CONSTRAINT pk PRIMARY KEY (c_uctu) CONSTRAINT fk1 FOREIGN KEY (r_cislo) REFERENCES Klient CONSTRAINT fk2 FOREIGN KEY (pobocka) REFERENCES Pobocka )
ALTER TABLE
změna definice scheacutematu atributy ndash přidaacuteniacuteodebraacuteniacute atributu změna DEFAULT hodnoty IO ndash přidaacuteniacuteodebraacuteniacute IO
pozor v tabulce už mohou byacutet data kteraacute nedovoliacute změnit IO (např zaveacutest IO primaacuterniacute kliacuteč)
ALTER TABLE table-name
ADD [COLUMN] column-name column-definition
ADD constraint-definition
ALTER [COLUMN] column-name SET
ALTER [COLUMN] column-name DROP
DROP COLUMN column-name
DROP CONSTRAINT constraint-name
Změna struktury tabulky
ALTER TABLE naacutezev_tabulky aktualizace
ALTER TABLE naacutezev_tabulkyADD COLUMN jmeacuteno_sloupce typ_sloupce [integritniacute omezeniacute]
Modifikuje tabulku a změniacute informace v katalogu
V přiacutepadě že v tabulce již nějakaacute data jsou lze použiacutet naacutesledujiacuteciacute přiacutekaz
Přidaacuteniacute sloupců do tabulky
Uacuteprava definice sloupců
ALTER TABLE naacutezev_tabulkyCHANGE COLUMN stareacute_jmeacuteno_sloupce noveacute_jmeacuteno_sloupce typ_sloupce [integritniacute mezeniacute]
ALTER TABLE naacutezev_tabulky DROP COLUMN jmeacuteno_sloupce [CASCADE]
Zaacutekladniacute přiacutekaz
Mazaacuteniacute sloupců
Maacuteme-li nějakyacute sloupec jehož hodnoty už opravdu nepotřebujeme jednoduše jej smažeme naacutesledujiacuteciacutem přiacutekazem
Přejmenovaacuteniacute sloupce
Prvniacute možnost je rychlejšiacute a využijeme v niacute již znaacutemyacute přiacutekaz
Druhaacute možnost je obecnějšiacute je potřeba proveacutest ji ve viacutece krociacutech
ALTER TABLE naacutezev_tabulkyCHANGE COLUMN stareacute_jmeacuteno_sloupce
noveacute_jmeacuteno_sloupce typ_sloupce [integritniacute omezeniacute]
ALTER TABLE naacutezev_tabulky ADD COLUMN jmeacuteno_sloupce typ_sloupce [integritniacute omezeniacute]
UPDATE naacutezev_tabulkySET stareacute_jmeacuteno_sloupce = noveacute_jmeacuteno_sloupce
ALTER TABLE naacutezev_tabulkyDROP stareacute_jmeacuteno_sloupce
DROP TABLE DROP TABLE table komplementaacuterniacute k přiacutekazu CREATE TABLE table smaže se jak obsah tabulky tak i scheacutema tabulky
pokud chceme vymazat pouze obsah tabulky použijeme přiacutekaz DELETE FROM table
Pokud provedeme přiacutekaz DROP TABLE tak přijdeme o všechna data kteraacute v mazaneacute tabulce byla uložena
Odstraněniacute tabulky
DROP TABLE naacutezev_tabulky
Modifikace dat SQL obsahuje kromě SELECT tři přiacutekazy pro manipulaci s
daty INSERT INTO ndash vloženiacute řaacutedků DELETE FROM ndash vymazaacuteniacute řaacutedků UPDATE ndash aktualizace hodnot v řaacutedciacutech
INSERT INTO vklaacutedaacuteniacute řaacutedku vyacutečtem hodnot dvě možnosti
INSERT INTO table VALUES (h1 h2 h3 h4) INSERT INTO table (s1 s2 s4) VALUES (h1 h2 h4)
vklaacutedaacuteniacute viacutece řaacutedků vyacutečtem hodnot INSERT INTO table VALUES (h11 h12 h13)(h21 h22 h23)
vklaacutedaacuteniacute viacutece řaacutedků jejichž hodnoty vzniknou jako vyacutesledek dotazu INSERT INTO tabulka | (vyacutečet atributů) | (SELECT FROM )
INSERT INTO naacutezev_tabulky [(naacutez_sloupce]] zdroj
Zdroje pro vklaacutedaniacute dat Řaacutedek implicitniacutech hodnot ndash z přiacutekazu CREATE TABLE
Řaacutedek zadanyacutech hodnot
DEFAULT_VALUES
VALUES (skalarniacute_vyacuteraz|NULL|DEFAULThellip)
Vyacutesledek poddotazu
tabulkovyacute_vyacuteraz
Přiacuteklad
INSERT INTO Klient VALUES (lsquo6010121224lsquolsquoJanlsquolsquoNovyacutelsquolsquoJaacutenskaacute 25lsquolsquoZliacutenlsquo)
INSERT INTO Klient (r_cislo jmeno prijmeni ulice mesto)VALUES (lsquo8261115267lsquolsquoPetralsquolsquoNovaacutekovaacutelsquolsquoPoštovaacute 128lsquolsquoLešnaacutelsquo)
(lsquo5805064891lsquolsquoPavellsquolsquoNovaacutečeklsquolsquoNezvalova 697lsquolsquoZliacutenlsquo)
UPDATE aktualizace zaacuteznamů splňujiacuteciacutech podmiacutenku hodnoty zvolenyacutech atributů vybranyacutech zaacuteznamů jsou
nastaveny na NULL hodnotu expression (např konstanta) vyacutesledek dotazu
Aktualizace dat
UPDATE naacutezev_tabulky SET sloupec = rsquohodnotarsquo
UPDATE naacutezev_tabulky SET sloupec1 = rsquohodnota1rsquosloupec2 = rsquohodnota2rsquohellip
UPDATE naacutezev_tabulky SET sloupec1 = rsquohodnota1rsquoWHERE sloupec2 = rsquohodnota2rsquo
Použitiacute klauzule WHERE
Pro změnu viacutece hodnot se použiacutevaacute zaacutepis
Přiacuteklad
UPDATE Klient SET jmeno = lsquoJakubrsquo WHERE r_cislo = lsquo6010121224rsquo
UPDATE Ucet AS u SET stav = stav+ (SELECT castka FROM Transakce AS t WHERE uc_uctu = tc_uctu)
DELETE FROM
vymaže zaacuteznamy ktereacute splňujiacute podmiacutenku bez nadefinovaacuteniacute podmiacutenky vymaže všechny zaacuteznamy
DELETE FROM naacutezev_tabulky WHERE sloupec = rsquohodnotarsquo
Odstraňovaacuteniacute dat
POZOR ndash po odstraněniacute zaacuteznamu už neniacute možneacute zaacuteznam obnovit Je dobreacute miacutet data pro jistotu zaacutelohovanaacute Při odstraňovaacuteniacute dat je nutneacute použiacutevat podmiacutenku WHERE jinak se může staacutet že z tabulky odstraniacutete všechna data
Chcete-li zajistit většiacute bezpečnost před nechtěnyacutem odstraněniacutem zaacuteznamů můžete použiacutet klauzuli LIMIT kteraacute omeziacute počet odstraňovanyacutech zaacuteznamů
DELETE FROM naacutezev_tabulky WHERE sloupec = rsquohodnotarsquoLIMIT 1
Přiacuteklad Spořitelna ndash tabulky s globaacutelniacutemi IO
KLIENTr_cislo jmeno prijmeni ulice mesto6010121224 Jan Novyacute Jaacutenskaacute 25 Zliacuten8261115267 Petra Novaacutekovaacute Poštovaacute 128 Lešnaacute5805064891 Pavel Novaacuteček Nezvalova 697 Zliacuten7953022459 Ivana Novotnaacute Pod mlyacutenem 12 Lukov
UCET POBOCKAc_uctu stav r_cislo pobocka c_p nazev jmeni4568517 42000 8261115267 2 1 Naacutem Miacuteru 12 50000006585485 75000 5805064891 1 2 Zaraacutemiacute 325 80000003256151 25000 8261115267 1
TRANSAKCEc_uctu c_transakce castka datum6585485 1 -2100 110920074568517 1 -4560 110920076585485 2 10000 12092007
CREATE TABLE Klient(r_cislo VARCHAR(11) NOT NULL jmeno VARCHAR(20) NOT NULL prijmeni VARCHAR(30) NOT NULL ulice VARCHAR(30) NOT NULL mesto VARCHAR(30) NOT NULL CONSTRAINT pk PRIMARY KEY (r_cislo)) CREATE TABLE Pobocka(c_p INT NOT NULL nazev VARCHAR(10) jmeni DECIMAL(102) CONSTRAINT pk PRIMARY KEY (c_p))
CREATE TABLE Ucet (c_uctu DECIMAL(70) NOT NULL stav DECIMAL(102) r_cislo VARCHAR(11) NOT NULL pobocka VARCHAR(20) NOT NULL CONSTRAINT pk PRIMARY KEY (c_uctu) CONSTRAINT fk1 FOREIGN KEY (r_cislo) REFERENCES Klient CONSTRAINT fk2 FOREIGN KEY (pobocka) REFERENCES Pobocka )
ALTER TABLE
změna definice scheacutematu atributy ndash přidaacuteniacuteodebraacuteniacute atributu změna DEFAULT hodnoty IO ndash přidaacuteniacuteodebraacuteniacute IO
pozor v tabulce už mohou byacutet data kteraacute nedovoliacute změnit IO (např zaveacutest IO primaacuterniacute kliacuteč)
ALTER TABLE table-name
ADD [COLUMN] column-name column-definition
ADD constraint-definition
ALTER [COLUMN] column-name SET
ALTER [COLUMN] column-name DROP
DROP COLUMN column-name
DROP CONSTRAINT constraint-name
Změna struktury tabulky
ALTER TABLE naacutezev_tabulky aktualizace
ALTER TABLE naacutezev_tabulkyADD COLUMN jmeacuteno_sloupce typ_sloupce [integritniacute omezeniacute]
Modifikuje tabulku a změniacute informace v katalogu
V přiacutepadě že v tabulce již nějakaacute data jsou lze použiacutet naacutesledujiacuteciacute přiacutekaz
Přidaacuteniacute sloupců do tabulky
Uacuteprava definice sloupců
ALTER TABLE naacutezev_tabulkyCHANGE COLUMN stareacute_jmeacuteno_sloupce noveacute_jmeacuteno_sloupce typ_sloupce [integritniacute mezeniacute]
ALTER TABLE naacutezev_tabulky DROP COLUMN jmeacuteno_sloupce [CASCADE]
Zaacutekladniacute přiacutekaz
Mazaacuteniacute sloupců
Maacuteme-li nějakyacute sloupec jehož hodnoty už opravdu nepotřebujeme jednoduše jej smažeme naacutesledujiacuteciacutem přiacutekazem
Přejmenovaacuteniacute sloupce
Prvniacute možnost je rychlejšiacute a využijeme v niacute již znaacutemyacute přiacutekaz
Druhaacute možnost je obecnějšiacute je potřeba proveacutest ji ve viacutece krociacutech
ALTER TABLE naacutezev_tabulkyCHANGE COLUMN stareacute_jmeacuteno_sloupce
noveacute_jmeacuteno_sloupce typ_sloupce [integritniacute omezeniacute]
ALTER TABLE naacutezev_tabulky ADD COLUMN jmeacuteno_sloupce typ_sloupce [integritniacute omezeniacute]
UPDATE naacutezev_tabulkySET stareacute_jmeacuteno_sloupce = noveacute_jmeacuteno_sloupce
ALTER TABLE naacutezev_tabulkyDROP stareacute_jmeacuteno_sloupce
DROP TABLE DROP TABLE table komplementaacuterniacute k přiacutekazu CREATE TABLE table smaže se jak obsah tabulky tak i scheacutema tabulky
pokud chceme vymazat pouze obsah tabulky použijeme přiacutekaz DELETE FROM table
Pokud provedeme přiacutekaz DROP TABLE tak přijdeme o všechna data kteraacute v mazaneacute tabulce byla uložena
Odstraněniacute tabulky
DROP TABLE naacutezev_tabulky
Modifikace dat SQL obsahuje kromě SELECT tři přiacutekazy pro manipulaci s
daty INSERT INTO ndash vloženiacute řaacutedků DELETE FROM ndash vymazaacuteniacute řaacutedků UPDATE ndash aktualizace hodnot v řaacutedciacutech
INSERT INTO vklaacutedaacuteniacute řaacutedku vyacutečtem hodnot dvě možnosti
INSERT INTO table VALUES (h1 h2 h3 h4) INSERT INTO table (s1 s2 s4) VALUES (h1 h2 h4)
vklaacutedaacuteniacute viacutece řaacutedků vyacutečtem hodnot INSERT INTO table VALUES (h11 h12 h13)(h21 h22 h23)
vklaacutedaacuteniacute viacutece řaacutedků jejichž hodnoty vzniknou jako vyacutesledek dotazu INSERT INTO tabulka | (vyacutečet atributů) | (SELECT FROM )
INSERT INTO naacutezev_tabulky [(naacutez_sloupce]] zdroj
Zdroje pro vklaacutedaniacute dat Řaacutedek implicitniacutech hodnot ndash z přiacutekazu CREATE TABLE
Řaacutedek zadanyacutech hodnot
DEFAULT_VALUES
VALUES (skalarniacute_vyacuteraz|NULL|DEFAULThellip)
Vyacutesledek poddotazu
tabulkovyacute_vyacuteraz
Přiacuteklad
INSERT INTO Klient VALUES (lsquo6010121224lsquolsquoJanlsquolsquoNovyacutelsquolsquoJaacutenskaacute 25lsquolsquoZliacutenlsquo)
INSERT INTO Klient (r_cislo jmeno prijmeni ulice mesto)VALUES (lsquo8261115267lsquolsquoPetralsquolsquoNovaacutekovaacutelsquolsquoPoštovaacute 128lsquolsquoLešnaacutelsquo)
(lsquo5805064891lsquolsquoPavellsquolsquoNovaacutečeklsquolsquoNezvalova 697lsquolsquoZliacutenlsquo)
UPDATE aktualizace zaacuteznamů splňujiacuteciacutech podmiacutenku hodnoty zvolenyacutech atributů vybranyacutech zaacuteznamů jsou
nastaveny na NULL hodnotu expression (např konstanta) vyacutesledek dotazu
Aktualizace dat
UPDATE naacutezev_tabulky SET sloupec = rsquohodnotarsquo
UPDATE naacutezev_tabulky SET sloupec1 = rsquohodnota1rsquosloupec2 = rsquohodnota2rsquohellip
UPDATE naacutezev_tabulky SET sloupec1 = rsquohodnota1rsquoWHERE sloupec2 = rsquohodnota2rsquo
Použitiacute klauzule WHERE
Pro změnu viacutece hodnot se použiacutevaacute zaacutepis
Přiacuteklad
UPDATE Klient SET jmeno = lsquoJakubrsquo WHERE r_cislo = lsquo6010121224rsquo
UPDATE Ucet AS u SET stav = stav+ (SELECT castka FROM Transakce AS t WHERE uc_uctu = tc_uctu)
DELETE FROM
vymaže zaacuteznamy ktereacute splňujiacute podmiacutenku bez nadefinovaacuteniacute podmiacutenky vymaže všechny zaacuteznamy
DELETE FROM naacutezev_tabulky WHERE sloupec = rsquohodnotarsquo
Odstraňovaacuteniacute dat
POZOR ndash po odstraněniacute zaacuteznamu už neniacute možneacute zaacuteznam obnovit Je dobreacute miacutet data pro jistotu zaacutelohovanaacute Při odstraňovaacuteniacute dat je nutneacute použiacutevat podmiacutenku WHERE jinak se může staacutet že z tabulky odstraniacutete všechna data
Chcete-li zajistit většiacute bezpečnost před nechtěnyacutem odstraněniacutem zaacuteznamů můžete použiacutet klauzuli LIMIT kteraacute omeziacute počet odstraňovanyacutech zaacuteznamů
DELETE FROM naacutezev_tabulky WHERE sloupec = rsquohodnotarsquoLIMIT 1
CREATE TABLE Klient(r_cislo VARCHAR(11) NOT NULL jmeno VARCHAR(20) NOT NULL prijmeni VARCHAR(30) NOT NULL ulice VARCHAR(30) NOT NULL mesto VARCHAR(30) NOT NULL CONSTRAINT pk PRIMARY KEY (r_cislo)) CREATE TABLE Pobocka(c_p INT NOT NULL nazev VARCHAR(10) jmeni DECIMAL(102) CONSTRAINT pk PRIMARY KEY (c_p))
CREATE TABLE Ucet (c_uctu DECIMAL(70) NOT NULL stav DECIMAL(102) r_cislo VARCHAR(11) NOT NULL pobocka VARCHAR(20) NOT NULL CONSTRAINT pk PRIMARY KEY (c_uctu) CONSTRAINT fk1 FOREIGN KEY (r_cislo) REFERENCES Klient CONSTRAINT fk2 FOREIGN KEY (pobocka) REFERENCES Pobocka )
ALTER TABLE
změna definice scheacutematu atributy ndash přidaacuteniacuteodebraacuteniacute atributu změna DEFAULT hodnoty IO ndash přidaacuteniacuteodebraacuteniacute IO
pozor v tabulce už mohou byacutet data kteraacute nedovoliacute změnit IO (např zaveacutest IO primaacuterniacute kliacuteč)
ALTER TABLE table-name
ADD [COLUMN] column-name column-definition
ADD constraint-definition
ALTER [COLUMN] column-name SET
ALTER [COLUMN] column-name DROP
DROP COLUMN column-name
DROP CONSTRAINT constraint-name
Změna struktury tabulky
ALTER TABLE naacutezev_tabulky aktualizace
ALTER TABLE naacutezev_tabulkyADD COLUMN jmeacuteno_sloupce typ_sloupce [integritniacute omezeniacute]
Modifikuje tabulku a změniacute informace v katalogu
V přiacutepadě že v tabulce již nějakaacute data jsou lze použiacutet naacutesledujiacuteciacute přiacutekaz
Přidaacuteniacute sloupců do tabulky
Uacuteprava definice sloupců
ALTER TABLE naacutezev_tabulkyCHANGE COLUMN stareacute_jmeacuteno_sloupce noveacute_jmeacuteno_sloupce typ_sloupce [integritniacute mezeniacute]
ALTER TABLE naacutezev_tabulky DROP COLUMN jmeacuteno_sloupce [CASCADE]
Zaacutekladniacute přiacutekaz
Mazaacuteniacute sloupců
Maacuteme-li nějakyacute sloupec jehož hodnoty už opravdu nepotřebujeme jednoduše jej smažeme naacutesledujiacuteciacutem přiacutekazem
Přejmenovaacuteniacute sloupce
Prvniacute možnost je rychlejšiacute a využijeme v niacute již znaacutemyacute přiacutekaz
Druhaacute možnost je obecnějšiacute je potřeba proveacutest ji ve viacutece krociacutech
ALTER TABLE naacutezev_tabulkyCHANGE COLUMN stareacute_jmeacuteno_sloupce
noveacute_jmeacuteno_sloupce typ_sloupce [integritniacute omezeniacute]
ALTER TABLE naacutezev_tabulky ADD COLUMN jmeacuteno_sloupce typ_sloupce [integritniacute omezeniacute]
UPDATE naacutezev_tabulkySET stareacute_jmeacuteno_sloupce = noveacute_jmeacuteno_sloupce
ALTER TABLE naacutezev_tabulkyDROP stareacute_jmeacuteno_sloupce
DROP TABLE DROP TABLE table komplementaacuterniacute k přiacutekazu CREATE TABLE table smaže se jak obsah tabulky tak i scheacutema tabulky
pokud chceme vymazat pouze obsah tabulky použijeme přiacutekaz DELETE FROM table
Pokud provedeme přiacutekaz DROP TABLE tak přijdeme o všechna data kteraacute v mazaneacute tabulce byla uložena
Odstraněniacute tabulky
DROP TABLE naacutezev_tabulky
Modifikace dat SQL obsahuje kromě SELECT tři přiacutekazy pro manipulaci s
daty INSERT INTO ndash vloženiacute řaacutedků DELETE FROM ndash vymazaacuteniacute řaacutedků UPDATE ndash aktualizace hodnot v řaacutedciacutech
INSERT INTO vklaacutedaacuteniacute řaacutedku vyacutečtem hodnot dvě možnosti
INSERT INTO table VALUES (h1 h2 h3 h4) INSERT INTO table (s1 s2 s4) VALUES (h1 h2 h4)
vklaacutedaacuteniacute viacutece řaacutedků vyacutečtem hodnot INSERT INTO table VALUES (h11 h12 h13)(h21 h22 h23)
vklaacutedaacuteniacute viacutece řaacutedků jejichž hodnoty vzniknou jako vyacutesledek dotazu INSERT INTO tabulka | (vyacutečet atributů) | (SELECT FROM )
INSERT INTO naacutezev_tabulky [(naacutez_sloupce]] zdroj
Zdroje pro vklaacutedaniacute dat Řaacutedek implicitniacutech hodnot ndash z přiacutekazu CREATE TABLE
Řaacutedek zadanyacutech hodnot
DEFAULT_VALUES
VALUES (skalarniacute_vyacuteraz|NULL|DEFAULThellip)
Vyacutesledek poddotazu
tabulkovyacute_vyacuteraz
Přiacuteklad
INSERT INTO Klient VALUES (lsquo6010121224lsquolsquoJanlsquolsquoNovyacutelsquolsquoJaacutenskaacute 25lsquolsquoZliacutenlsquo)
INSERT INTO Klient (r_cislo jmeno prijmeni ulice mesto)VALUES (lsquo8261115267lsquolsquoPetralsquolsquoNovaacutekovaacutelsquolsquoPoštovaacute 128lsquolsquoLešnaacutelsquo)
(lsquo5805064891lsquolsquoPavellsquolsquoNovaacutečeklsquolsquoNezvalova 697lsquolsquoZliacutenlsquo)
UPDATE aktualizace zaacuteznamů splňujiacuteciacutech podmiacutenku hodnoty zvolenyacutech atributů vybranyacutech zaacuteznamů jsou
nastaveny na NULL hodnotu expression (např konstanta) vyacutesledek dotazu
Aktualizace dat
UPDATE naacutezev_tabulky SET sloupec = rsquohodnotarsquo
UPDATE naacutezev_tabulky SET sloupec1 = rsquohodnota1rsquosloupec2 = rsquohodnota2rsquohellip
UPDATE naacutezev_tabulky SET sloupec1 = rsquohodnota1rsquoWHERE sloupec2 = rsquohodnota2rsquo
Použitiacute klauzule WHERE
Pro změnu viacutece hodnot se použiacutevaacute zaacutepis
Přiacuteklad
UPDATE Klient SET jmeno = lsquoJakubrsquo WHERE r_cislo = lsquo6010121224rsquo
UPDATE Ucet AS u SET stav = stav+ (SELECT castka FROM Transakce AS t WHERE uc_uctu = tc_uctu)
DELETE FROM
vymaže zaacuteznamy ktereacute splňujiacute podmiacutenku bez nadefinovaacuteniacute podmiacutenky vymaže všechny zaacuteznamy
DELETE FROM naacutezev_tabulky WHERE sloupec = rsquohodnotarsquo
Odstraňovaacuteniacute dat
POZOR ndash po odstraněniacute zaacuteznamu už neniacute možneacute zaacuteznam obnovit Je dobreacute miacutet data pro jistotu zaacutelohovanaacute Při odstraňovaacuteniacute dat je nutneacute použiacutevat podmiacutenku WHERE jinak se může staacutet že z tabulky odstraniacutete všechna data
Chcete-li zajistit většiacute bezpečnost před nechtěnyacutem odstraněniacutem zaacuteznamů můžete použiacutet klauzuli LIMIT kteraacute omeziacute počet odstraňovanyacutech zaacuteznamů
DELETE FROM naacutezev_tabulky WHERE sloupec = rsquohodnotarsquoLIMIT 1
ALTER TABLE
změna definice scheacutematu atributy ndash přidaacuteniacuteodebraacuteniacute atributu změna DEFAULT hodnoty IO ndash přidaacuteniacuteodebraacuteniacute IO
pozor v tabulce už mohou byacutet data kteraacute nedovoliacute změnit IO (např zaveacutest IO primaacuterniacute kliacuteč)
ALTER TABLE table-name
ADD [COLUMN] column-name column-definition
ADD constraint-definition
ALTER [COLUMN] column-name SET
ALTER [COLUMN] column-name DROP
DROP COLUMN column-name
DROP CONSTRAINT constraint-name
Změna struktury tabulky
ALTER TABLE naacutezev_tabulky aktualizace
ALTER TABLE naacutezev_tabulkyADD COLUMN jmeacuteno_sloupce typ_sloupce [integritniacute omezeniacute]
Modifikuje tabulku a změniacute informace v katalogu
V přiacutepadě že v tabulce již nějakaacute data jsou lze použiacutet naacutesledujiacuteciacute přiacutekaz
Přidaacuteniacute sloupců do tabulky
Uacuteprava definice sloupců
ALTER TABLE naacutezev_tabulkyCHANGE COLUMN stareacute_jmeacuteno_sloupce noveacute_jmeacuteno_sloupce typ_sloupce [integritniacute mezeniacute]
ALTER TABLE naacutezev_tabulky DROP COLUMN jmeacuteno_sloupce [CASCADE]
Zaacutekladniacute přiacutekaz
Mazaacuteniacute sloupců
Maacuteme-li nějakyacute sloupec jehož hodnoty už opravdu nepotřebujeme jednoduše jej smažeme naacutesledujiacuteciacutem přiacutekazem
Přejmenovaacuteniacute sloupce
Prvniacute možnost je rychlejšiacute a využijeme v niacute již znaacutemyacute přiacutekaz
Druhaacute možnost je obecnějšiacute je potřeba proveacutest ji ve viacutece krociacutech
ALTER TABLE naacutezev_tabulkyCHANGE COLUMN stareacute_jmeacuteno_sloupce
noveacute_jmeacuteno_sloupce typ_sloupce [integritniacute omezeniacute]
ALTER TABLE naacutezev_tabulky ADD COLUMN jmeacuteno_sloupce typ_sloupce [integritniacute omezeniacute]
UPDATE naacutezev_tabulkySET stareacute_jmeacuteno_sloupce = noveacute_jmeacuteno_sloupce
ALTER TABLE naacutezev_tabulkyDROP stareacute_jmeacuteno_sloupce
DROP TABLE DROP TABLE table komplementaacuterniacute k přiacutekazu CREATE TABLE table smaže se jak obsah tabulky tak i scheacutema tabulky
pokud chceme vymazat pouze obsah tabulky použijeme přiacutekaz DELETE FROM table
Pokud provedeme přiacutekaz DROP TABLE tak přijdeme o všechna data kteraacute v mazaneacute tabulce byla uložena
Odstraněniacute tabulky
DROP TABLE naacutezev_tabulky
Modifikace dat SQL obsahuje kromě SELECT tři přiacutekazy pro manipulaci s
daty INSERT INTO ndash vloženiacute řaacutedků DELETE FROM ndash vymazaacuteniacute řaacutedků UPDATE ndash aktualizace hodnot v řaacutedciacutech
INSERT INTO vklaacutedaacuteniacute řaacutedku vyacutečtem hodnot dvě možnosti
INSERT INTO table VALUES (h1 h2 h3 h4) INSERT INTO table (s1 s2 s4) VALUES (h1 h2 h4)
vklaacutedaacuteniacute viacutece řaacutedků vyacutečtem hodnot INSERT INTO table VALUES (h11 h12 h13)(h21 h22 h23)
vklaacutedaacuteniacute viacutece řaacutedků jejichž hodnoty vzniknou jako vyacutesledek dotazu INSERT INTO tabulka | (vyacutečet atributů) | (SELECT FROM )
INSERT INTO naacutezev_tabulky [(naacutez_sloupce]] zdroj
Zdroje pro vklaacutedaniacute dat Řaacutedek implicitniacutech hodnot ndash z přiacutekazu CREATE TABLE
Řaacutedek zadanyacutech hodnot
DEFAULT_VALUES
VALUES (skalarniacute_vyacuteraz|NULL|DEFAULThellip)
Vyacutesledek poddotazu
tabulkovyacute_vyacuteraz
Přiacuteklad
INSERT INTO Klient VALUES (lsquo6010121224lsquolsquoJanlsquolsquoNovyacutelsquolsquoJaacutenskaacute 25lsquolsquoZliacutenlsquo)
INSERT INTO Klient (r_cislo jmeno prijmeni ulice mesto)VALUES (lsquo8261115267lsquolsquoPetralsquolsquoNovaacutekovaacutelsquolsquoPoštovaacute 128lsquolsquoLešnaacutelsquo)
(lsquo5805064891lsquolsquoPavellsquolsquoNovaacutečeklsquolsquoNezvalova 697lsquolsquoZliacutenlsquo)
UPDATE aktualizace zaacuteznamů splňujiacuteciacutech podmiacutenku hodnoty zvolenyacutech atributů vybranyacutech zaacuteznamů jsou
nastaveny na NULL hodnotu expression (např konstanta) vyacutesledek dotazu
Aktualizace dat
UPDATE naacutezev_tabulky SET sloupec = rsquohodnotarsquo
UPDATE naacutezev_tabulky SET sloupec1 = rsquohodnota1rsquosloupec2 = rsquohodnota2rsquohellip
UPDATE naacutezev_tabulky SET sloupec1 = rsquohodnota1rsquoWHERE sloupec2 = rsquohodnota2rsquo
Použitiacute klauzule WHERE
Pro změnu viacutece hodnot se použiacutevaacute zaacutepis
Přiacuteklad
UPDATE Klient SET jmeno = lsquoJakubrsquo WHERE r_cislo = lsquo6010121224rsquo
UPDATE Ucet AS u SET stav = stav+ (SELECT castka FROM Transakce AS t WHERE uc_uctu = tc_uctu)
DELETE FROM
vymaže zaacuteznamy ktereacute splňujiacute podmiacutenku bez nadefinovaacuteniacute podmiacutenky vymaže všechny zaacuteznamy
DELETE FROM naacutezev_tabulky WHERE sloupec = rsquohodnotarsquo
Odstraňovaacuteniacute dat
POZOR ndash po odstraněniacute zaacuteznamu už neniacute možneacute zaacuteznam obnovit Je dobreacute miacutet data pro jistotu zaacutelohovanaacute Při odstraňovaacuteniacute dat je nutneacute použiacutevat podmiacutenku WHERE jinak se může staacutet že z tabulky odstraniacutete všechna data
Chcete-li zajistit většiacute bezpečnost před nechtěnyacutem odstraněniacutem zaacuteznamů můžete použiacutet klauzuli LIMIT kteraacute omeziacute počet odstraňovanyacutech zaacuteznamů
DELETE FROM naacutezev_tabulky WHERE sloupec = rsquohodnotarsquoLIMIT 1
Změna struktury tabulky
ALTER TABLE naacutezev_tabulky aktualizace
ALTER TABLE naacutezev_tabulkyADD COLUMN jmeacuteno_sloupce typ_sloupce [integritniacute omezeniacute]
Modifikuje tabulku a změniacute informace v katalogu
V přiacutepadě že v tabulce již nějakaacute data jsou lze použiacutet naacutesledujiacuteciacute přiacutekaz
Přidaacuteniacute sloupců do tabulky
Uacuteprava definice sloupců
ALTER TABLE naacutezev_tabulkyCHANGE COLUMN stareacute_jmeacuteno_sloupce noveacute_jmeacuteno_sloupce typ_sloupce [integritniacute mezeniacute]
ALTER TABLE naacutezev_tabulky DROP COLUMN jmeacuteno_sloupce [CASCADE]
Zaacutekladniacute přiacutekaz
Mazaacuteniacute sloupců
Maacuteme-li nějakyacute sloupec jehož hodnoty už opravdu nepotřebujeme jednoduše jej smažeme naacutesledujiacuteciacutem přiacutekazem
Přejmenovaacuteniacute sloupce
Prvniacute možnost je rychlejšiacute a využijeme v niacute již znaacutemyacute přiacutekaz
Druhaacute možnost je obecnějšiacute je potřeba proveacutest ji ve viacutece krociacutech
ALTER TABLE naacutezev_tabulkyCHANGE COLUMN stareacute_jmeacuteno_sloupce
noveacute_jmeacuteno_sloupce typ_sloupce [integritniacute omezeniacute]
ALTER TABLE naacutezev_tabulky ADD COLUMN jmeacuteno_sloupce typ_sloupce [integritniacute omezeniacute]
UPDATE naacutezev_tabulkySET stareacute_jmeacuteno_sloupce = noveacute_jmeacuteno_sloupce
ALTER TABLE naacutezev_tabulkyDROP stareacute_jmeacuteno_sloupce
DROP TABLE DROP TABLE table komplementaacuterniacute k přiacutekazu CREATE TABLE table smaže se jak obsah tabulky tak i scheacutema tabulky
pokud chceme vymazat pouze obsah tabulky použijeme přiacutekaz DELETE FROM table
Pokud provedeme přiacutekaz DROP TABLE tak přijdeme o všechna data kteraacute v mazaneacute tabulce byla uložena
Odstraněniacute tabulky
DROP TABLE naacutezev_tabulky
Modifikace dat SQL obsahuje kromě SELECT tři přiacutekazy pro manipulaci s
daty INSERT INTO ndash vloženiacute řaacutedků DELETE FROM ndash vymazaacuteniacute řaacutedků UPDATE ndash aktualizace hodnot v řaacutedciacutech
INSERT INTO vklaacutedaacuteniacute řaacutedku vyacutečtem hodnot dvě možnosti
INSERT INTO table VALUES (h1 h2 h3 h4) INSERT INTO table (s1 s2 s4) VALUES (h1 h2 h4)
vklaacutedaacuteniacute viacutece řaacutedků vyacutečtem hodnot INSERT INTO table VALUES (h11 h12 h13)(h21 h22 h23)
vklaacutedaacuteniacute viacutece řaacutedků jejichž hodnoty vzniknou jako vyacutesledek dotazu INSERT INTO tabulka | (vyacutečet atributů) | (SELECT FROM )
INSERT INTO naacutezev_tabulky [(naacutez_sloupce]] zdroj
Zdroje pro vklaacutedaniacute dat Řaacutedek implicitniacutech hodnot ndash z přiacutekazu CREATE TABLE
Řaacutedek zadanyacutech hodnot
DEFAULT_VALUES
VALUES (skalarniacute_vyacuteraz|NULL|DEFAULThellip)
Vyacutesledek poddotazu
tabulkovyacute_vyacuteraz
Přiacuteklad
INSERT INTO Klient VALUES (lsquo6010121224lsquolsquoJanlsquolsquoNovyacutelsquolsquoJaacutenskaacute 25lsquolsquoZliacutenlsquo)
INSERT INTO Klient (r_cislo jmeno prijmeni ulice mesto)VALUES (lsquo8261115267lsquolsquoPetralsquolsquoNovaacutekovaacutelsquolsquoPoštovaacute 128lsquolsquoLešnaacutelsquo)
(lsquo5805064891lsquolsquoPavellsquolsquoNovaacutečeklsquolsquoNezvalova 697lsquolsquoZliacutenlsquo)
UPDATE aktualizace zaacuteznamů splňujiacuteciacutech podmiacutenku hodnoty zvolenyacutech atributů vybranyacutech zaacuteznamů jsou
nastaveny na NULL hodnotu expression (např konstanta) vyacutesledek dotazu
Aktualizace dat
UPDATE naacutezev_tabulky SET sloupec = rsquohodnotarsquo
UPDATE naacutezev_tabulky SET sloupec1 = rsquohodnota1rsquosloupec2 = rsquohodnota2rsquohellip
UPDATE naacutezev_tabulky SET sloupec1 = rsquohodnota1rsquoWHERE sloupec2 = rsquohodnota2rsquo
Použitiacute klauzule WHERE
Pro změnu viacutece hodnot se použiacutevaacute zaacutepis
Přiacuteklad
UPDATE Klient SET jmeno = lsquoJakubrsquo WHERE r_cislo = lsquo6010121224rsquo
UPDATE Ucet AS u SET stav = stav+ (SELECT castka FROM Transakce AS t WHERE uc_uctu = tc_uctu)
DELETE FROM
vymaže zaacuteznamy ktereacute splňujiacute podmiacutenku bez nadefinovaacuteniacute podmiacutenky vymaže všechny zaacuteznamy
DELETE FROM naacutezev_tabulky WHERE sloupec = rsquohodnotarsquo
Odstraňovaacuteniacute dat
POZOR ndash po odstraněniacute zaacuteznamu už neniacute možneacute zaacuteznam obnovit Je dobreacute miacutet data pro jistotu zaacutelohovanaacute Při odstraňovaacuteniacute dat je nutneacute použiacutevat podmiacutenku WHERE jinak se může staacutet že z tabulky odstraniacutete všechna data
Chcete-li zajistit většiacute bezpečnost před nechtěnyacutem odstraněniacutem zaacuteznamů můžete použiacutet klauzuli LIMIT kteraacute omeziacute počet odstraňovanyacutech zaacuteznamů
DELETE FROM naacutezev_tabulky WHERE sloupec = rsquohodnotarsquoLIMIT 1
Uacuteprava definice sloupců
ALTER TABLE naacutezev_tabulkyCHANGE COLUMN stareacute_jmeacuteno_sloupce noveacute_jmeacuteno_sloupce typ_sloupce [integritniacute mezeniacute]
ALTER TABLE naacutezev_tabulky DROP COLUMN jmeacuteno_sloupce [CASCADE]
Zaacutekladniacute přiacutekaz
Mazaacuteniacute sloupců
Maacuteme-li nějakyacute sloupec jehož hodnoty už opravdu nepotřebujeme jednoduše jej smažeme naacutesledujiacuteciacutem přiacutekazem
Přejmenovaacuteniacute sloupce
Prvniacute možnost je rychlejšiacute a využijeme v niacute již znaacutemyacute přiacutekaz
Druhaacute možnost je obecnějšiacute je potřeba proveacutest ji ve viacutece krociacutech
ALTER TABLE naacutezev_tabulkyCHANGE COLUMN stareacute_jmeacuteno_sloupce
noveacute_jmeacuteno_sloupce typ_sloupce [integritniacute omezeniacute]
ALTER TABLE naacutezev_tabulky ADD COLUMN jmeacuteno_sloupce typ_sloupce [integritniacute omezeniacute]
UPDATE naacutezev_tabulkySET stareacute_jmeacuteno_sloupce = noveacute_jmeacuteno_sloupce
ALTER TABLE naacutezev_tabulkyDROP stareacute_jmeacuteno_sloupce
DROP TABLE DROP TABLE table komplementaacuterniacute k přiacutekazu CREATE TABLE table smaže se jak obsah tabulky tak i scheacutema tabulky
pokud chceme vymazat pouze obsah tabulky použijeme přiacutekaz DELETE FROM table
Pokud provedeme přiacutekaz DROP TABLE tak přijdeme o všechna data kteraacute v mazaneacute tabulce byla uložena
Odstraněniacute tabulky
DROP TABLE naacutezev_tabulky
Modifikace dat SQL obsahuje kromě SELECT tři přiacutekazy pro manipulaci s
daty INSERT INTO ndash vloženiacute řaacutedků DELETE FROM ndash vymazaacuteniacute řaacutedků UPDATE ndash aktualizace hodnot v řaacutedciacutech
INSERT INTO vklaacutedaacuteniacute řaacutedku vyacutečtem hodnot dvě možnosti
INSERT INTO table VALUES (h1 h2 h3 h4) INSERT INTO table (s1 s2 s4) VALUES (h1 h2 h4)
vklaacutedaacuteniacute viacutece řaacutedků vyacutečtem hodnot INSERT INTO table VALUES (h11 h12 h13)(h21 h22 h23)
vklaacutedaacuteniacute viacutece řaacutedků jejichž hodnoty vzniknou jako vyacutesledek dotazu INSERT INTO tabulka | (vyacutečet atributů) | (SELECT FROM )
INSERT INTO naacutezev_tabulky [(naacutez_sloupce]] zdroj
Zdroje pro vklaacutedaniacute dat Řaacutedek implicitniacutech hodnot ndash z přiacutekazu CREATE TABLE
Řaacutedek zadanyacutech hodnot
DEFAULT_VALUES
VALUES (skalarniacute_vyacuteraz|NULL|DEFAULThellip)
Vyacutesledek poddotazu
tabulkovyacute_vyacuteraz
Přiacuteklad
INSERT INTO Klient VALUES (lsquo6010121224lsquolsquoJanlsquolsquoNovyacutelsquolsquoJaacutenskaacute 25lsquolsquoZliacutenlsquo)
INSERT INTO Klient (r_cislo jmeno prijmeni ulice mesto)VALUES (lsquo8261115267lsquolsquoPetralsquolsquoNovaacutekovaacutelsquolsquoPoštovaacute 128lsquolsquoLešnaacutelsquo)
(lsquo5805064891lsquolsquoPavellsquolsquoNovaacutečeklsquolsquoNezvalova 697lsquolsquoZliacutenlsquo)
UPDATE aktualizace zaacuteznamů splňujiacuteciacutech podmiacutenku hodnoty zvolenyacutech atributů vybranyacutech zaacuteznamů jsou
nastaveny na NULL hodnotu expression (např konstanta) vyacutesledek dotazu
Aktualizace dat
UPDATE naacutezev_tabulky SET sloupec = rsquohodnotarsquo
UPDATE naacutezev_tabulky SET sloupec1 = rsquohodnota1rsquosloupec2 = rsquohodnota2rsquohellip
UPDATE naacutezev_tabulky SET sloupec1 = rsquohodnota1rsquoWHERE sloupec2 = rsquohodnota2rsquo
Použitiacute klauzule WHERE
Pro změnu viacutece hodnot se použiacutevaacute zaacutepis
Přiacuteklad
UPDATE Klient SET jmeno = lsquoJakubrsquo WHERE r_cislo = lsquo6010121224rsquo
UPDATE Ucet AS u SET stav = stav+ (SELECT castka FROM Transakce AS t WHERE uc_uctu = tc_uctu)
DELETE FROM
vymaže zaacuteznamy ktereacute splňujiacute podmiacutenku bez nadefinovaacuteniacute podmiacutenky vymaže všechny zaacuteznamy
DELETE FROM naacutezev_tabulky WHERE sloupec = rsquohodnotarsquo
Odstraňovaacuteniacute dat
POZOR ndash po odstraněniacute zaacuteznamu už neniacute možneacute zaacuteznam obnovit Je dobreacute miacutet data pro jistotu zaacutelohovanaacute Při odstraňovaacuteniacute dat je nutneacute použiacutevat podmiacutenku WHERE jinak se může staacutet že z tabulky odstraniacutete všechna data
Chcete-li zajistit většiacute bezpečnost před nechtěnyacutem odstraněniacutem zaacuteznamů můžete použiacutet klauzuli LIMIT kteraacute omeziacute počet odstraňovanyacutech zaacuteznamů
DELETE FROM naacutezev_tabulky WHERE sloupec = rsquohodnotarsquoLIMIT 1
Přejmenovaacuteniacute sloupce
Prvniacute možnost je rychlejšiacute a využijeme v niacute již znaacutemyacute přiacutekaz
Druhaacute možnost je obecnějšiacute je potřeba proveacutest ji ve viacutece krociacutech
ALTER TABLE naacutezev_tabulkyCHANGE COLUMN stareacute_jmeacuteno_sloupce
noveacute_jmeacuteno_sloupce typ_sloupce [integritniacute omezeniacute]
ALTER TABLE naacutezev_tabulky ADD COLUMN jmeacuteno_sloupce typ_sloupce [integritniacute omezeniacute]
UPDATE naacutezev_tabulkySET stareacute_jmeacuteno_sloupce = noveacute_jmeacuteno_sloupce
ALTER TABLE naacutezev_tabulkyDROP stareacute_jmeacuteno_sloupce
DROP TABLE DROP TABLE table komplementaacuterniacute k přiacutekazu CREATE TABLE table smaže se jak obsah tabulky tak i scheacutema tabulky
pokud chceme vymazat pouze obsah tabulky použijeme přiacutekaz DELETE FROM table
Pokud provedeme přiacutekaz DROP TABLE tak přijdeme o všechna data kteraacute v mazaneacute tabulce byla uložena
Odstraněniacute tabulky
DROP TABLE naacutezev_tabulky
Modifikace dat SQL obsahuje kromě SELECT tři přiacutekazy pro manipulaci s
daty INSERT INTO ndash vloženiacute řaacutedků DELETE FROM ndash vymazaacuteniacute řaacutedků UPDATE ndash aktualizace hodnot v řaacutedciacutech
INSERT INTO vklaacutedaacuteniacute řaacutedku vyacutečtem hodnot dvě možnosti
INSERT INTO table VALUES (h1 h2 h3 h4) INSERT INTO table (s1 s2 s4) VALUES (h1 h2 h4)
vklaacutedaacuteniacute viacutece řaacutedků vyacutečtem hodnot INSERT INTO table VALUES (h11 h12 h13)(h21 h22 h23)
vklaacutedaacuteniacute viacutece řaacutedků jejichž hodnoty vzniknou jako vyacutesledek dotazu INSERT INTO tabulka | (vyacutečet atributů) | (SELECT FROM )
INSERT INTO naacutezev_tabulky [(naacutez_sloupce]] zdroj
Zdroje pro vklaacutedaniacute dat Řaacutedek implicitniacutech hodnot ndash z přiacutekazu CREATE TABLE
Řaacutedek zadanyacutech hodnot
DEFAULT_VALUES
VALUES (skalarniacute_vyacuteraz|NULL|DEFAULThellip)
Vyacutesledek poddotazu
tabulkovyacute_vyacuteraz
Přiacuteklad
INSERT INTO Klient VALUES (lsquo6010121224lsquolsquoJanlsquolsquoNovyacutelsquolsquoJaacutenskaacute 25lsquolsquoZliacutenlsquo)
INSERT INTO Klient (r_cislo jmeno prijmeni ulice mesto)VALUES (lsquo8261115267lsquolsquoPetralsquolsquoNovaacutekovaacutelsquolsquoPoštovaacute 128lsquolsquoLešnaacutelsquo)
(lsquo5805064891lsquolsquoPavellsquolsquoNovaacutečeklsquolsquoNezvalova 697lsquolsquoZliacutenlsquo)
UPDATE aktualizace zaacuteznamů splňujiacuteciacutech podmiacutenku hodnoty zvolenyacutech atributů vybranyacutech zaacuteznamů jsou
nastaveny na NULL hodnotu expression (např konstanta) vyacutesledek dotazu
Aktualizace dat
UPDATE naacutezev_tabulky SET sloupec = rsquohodnotarsquo
UPDATE naacutezev_tabulky SET sloupec1 = rsquohodnota1rsquosloupec2 = rsquohodnota2rsquohellip
UPDATE naacutezev_tabulky SET sloupec1 = rsquohodnota1rsquoWHERE sloupec2 = rsquohodnota2rsquo
Použitiacute klauzule WHERE
Pro změnu viacutece hodnot se použiacutevaacute zaacutepis
Přiacuteklad
UPDATE Klient SET jmeno = lsquoJakubrsquo WHERE r_cislo = lsquo6010121224rsquo
UPDATE Ucet AS u SET stav = stav+ (SELECT castka FROM Transakce AS t WHERE uc_uctu = tc_uctu)
DELETE FROM
vymaže zaacuteznamy ktereacute splňujiacute podmiacutenku bez nadefinovaacuteniacute podmiacutenky vymaže všechny zaacuteznamy
DELETE FROM naacutezev_tabulky WHERE sloupec = rsquohodnotarsquo
Odstraňovaacuteniacute dat
POZOR ndash po odstraněniacute zaacuteznamu už neniacute možneacute zaacuteznam obnovit Je dobreacute miacutet data pro jistotu zaacutelohovanaacute Při odstraňovaacuteniacute dat je nutneacute použiacutevat podmiacutenku WHERE jinak se může staacutet že z tabulky odstraniacutete všechna data
Chcete-li zajistit většiacute bezpečnost před nechtěnyacutem odstraněniacutem zaacuteznamů můžete použiacutet klauzuli LIMIT kteraacute omeziacute počet odstraňovanyacutech zaacuteznamů
DELETE FROM naacutezev_tabulky WHERE sloupec = rsquohodnotarsquoLIMIT 1
DROP TABLE DROP TABLE table komplementaacuterniacute k přiacutekazu CREATE TABLE table smaže se jak obsah tabulky tak i scheacutema tabulky
pokud chceme vymazat pouze obsah tabulky použijeme přiacutekaz DELETE FROM table
Pokud provedeme přiacutekaz DROP TABLE tak přijdeme o všechna data kteraacute v mazaneacute tabulce byla uložena
Odstraněniacute tabulky
DROP TABLE naacutezev_tabulky
Modifikace dat SQL obsahuje kromě SELECT tři přiacutekazy pro manipulaci s
daty INSERT INTO ndash vloženiacute řaacutedků DELETE FROM ndash vymazaacuteniacute řaacutedků UPDATE ndash aktualizace hodnot v řaacutedciacutech
INSERT INTO vklaacutedaacuteniacute řaacutedku vyacutečtem hodnot dvě možnosti
INSERT INTO table VALUES (h1 h2 h3 h4) INSERT INTO table (s1 s2 s4) VALUES (h1 h2 h4)
vklaacutedaacuteniacute viacutece řaacutedků vyacutečtem hodnot INSERT INTO table VALUES (h11 h12 h13)(h21 h22 h23)
vklaacutedaacuteniacute viacutece řaacutedků jejichž hodnoty vzniknou jako vyacutesledek dotazu INSERT INTO tabulka | (vyacutečet atributů) | (SELECT FROM )
INSERT INTO naacutezev_tabulky [(naacutez_sloupce]] zdroj
Zdroje pro vklaacutedaniacute dat Řaacutedek implicitniacutech hodnot ndash z přiacutekazu CREATE TABLE
Řaacutedek zadanyacutech hodnot
DEFAULT_VALUES
VALUES (skalarniacute_vyacuteraz|NULL|DEFAULThellip)
Vyacutesledek poddotazu
tabulkovyacute_vyacuteraz
Přiacuteklad
INSERT INTO Klient VALUES (lsquo6010121224lsquolsquoJanlsquolsquoNovyacutelsquolsquoJaacutenskaacute 25lsquolsquoZliacutenlsquo)
INSERT INTO Klient (r_cislo jmeno prijmeni ulice mesto)VALUES (lsquo8261115267lsquolsquoPetralsquolsquoNovaacutekovaacutelsquolsquoPoštovaacute 128lsquolsquoLešnaacutelsquo)
(lsquo5805064891lsquolsquoPavellsquolsquoNovaacutečeklsquolsquoNezvalova 697lsquolsquoZliacutenlsquo)
UPDATE aktualizace zaacuteznamů splňujiacuteciacutech podmiacutenku hodnoty zvolenyacutech atributů vybranyacutech zaacuteznamů jsou
nastaveny na NULL hodnotu expression (např konstanta) vyacutesledek dotazu
Aktualizace dat
UPDATE naacutezev_tabulky SET sloupec = rsquohodnotarsquo
UPDATE naacutezev_tabulky SET sloupec1 = rsquohodnota1rsquosloupec2 = rsquohodnota2rsquohellip
UPDATE naacutezev_tabulky SET sloupec1 = rsquohodnota1rsquoWHERE sloupec2 = rsquohodnota2rsquo
Použitiacute klauzule WHERE
Pro změnu viacutece hodnot se použiacutevaacute zaacutepis
Přiacuteklad
UPDATE Klient SET jmeno = lsquoJakubrsquo WHERE r_cislo = lsquo6010121224rsquo
UPDATE Ucet AS u SET stav = stav+ (SELECT castka FROM Transakce AS t WHERE uc_uctu = tc_uctu)
DELETE FROM
vymaže zaacuteznamy ktereacute splňujiacute podmiacutenku bez nadefinovaacuteniacute podmiacutenky vymaže všechny zaacuteznamy
DELETE FROM naacutezev_tabulky WHERE sloupec = rsquohodnotarsquo
Odstraňovaacuteniacute dat
POZOR ndash po odstraněniacute zaacuteznamu už neniacute možneacute zaacuteznam obnovit Je dobreacute miacutet data pro jistotu zaacutelohovanaacute Při odstraňovaacuteniacute dat je nutneacute použiacutevat podmiacutenku WHERE jinak se může staacutet že z tabulky odstraniacutete všechna data
Chcete-li zajistit většiacute bezpečnost před nechtěnyacutem odstraněniacutem zaacuteznamů můžete použiacutet klauzuli LIMIT kteraacute omeziacute počet odstraňovanyacutech zaacuteznamů
DELETE FROM naacutezev_tabulky WHERE sloupec = rsquohodnotarsquoLIMIT 1
Modifikace dat SQL obsahuje kromě SELECT tři přiacutekazy pro manipulaci s
daty INSERT INTO ndash vloženiacute řaacutedků DELETE FROM ndash vymazaacuteniacute řaacutedků UPDATE ndash aktualizace hodnot v řaacutedciacutech
INSERT INTO vklaacutedaacuteniacute řaacutedku vyacutečtem hodnot dvě možnosti
INSERT INTO table VALUES (h1 h2 h3 h4) INSERT INTO table (s1 s2 s4) VALUES (h1 h2 h4)
vklaacutedaacuteniacute viacutece řaacutedků vyacutečtem hodnot INSERT INTO table VALUES (h11 h12 h13)(h21 h22 h23)
vklaacutedaacuteniacute viacutece řaacutedků jejichž hodnoty vzniknou jako vyacutesledek dotazu INSERT INTO tabulka | (vyacutečet atributů) | (SELECT FROM )
INSERT INTO naacutezev_tabulky [(naacutez_sloupce]] zdroj
Zdroje pro vklaacutedaniacute dat Řaacutedek implicitniacutech hodnot ndash z přiacutekazu CREATE TABLE
Řaacutedek zadanyacutech hodnot
DEFAULT_VALUES
VALUES (skalarniacute_vyacuteraz|NULL|DEFAULThellip)
Vyacutesledek poddotazu
tabulkovyacute_vyacuteraz
Přiacuteklad
INSERT INTO Klient VALUES (lsquo6010121224lsquolsquoJanlsquolsquoNovyacutelsquolsquoJaacutenskaacute 25lsquolsquoZliacutenlsquo)
INSERT INTO Klient (r_cislo jmeno prijmeni ulice mesto)VALUES (lsquo8261115267lsquolsquoPetralsquolsquoNovaacutekovaacutelsquolsquoPoštovaacute 128lsquolsquoLešnaacutelsquo)
(lsquo5805064891lsquolsquoPavellsquolsquoNovaacutečeklsquolsquoNezvalova 697lsquolsquoZliacutenlsquo)
UPDATE aktualizace zaacuteznamů splňujiacuteciacutech podmiacutenku hodnoty zvolenyacutech atributů vybranyacutech zaacuteznamů jsou
nastaveny na NULL hodnotu expression (např konstanta) vyacutesledek dotazu
Aktualizace dat
UPDATE naacutezev_tabulky SET sloupec = rsquohodnotarsquo
UPDATE naacutezev_tabulky SET sloupec1 = rsquohodnota1rsquosloupec2 = rsquohodnota2rsquohellip
UPDATE naacutezev_tabulky SET sloupec1 = rsquohodnota1rsquoWHERE sloupec2 = rsquohodnota2rsquo
Použitiacute klauzule WHERE
Pro změnu viacutece hodnot se použiacutevaacute zaacutepis
Přiacuteklad
UPDATE Klient SET jmeno = lsquoJakubrsquo WHERE r_cislo = lsquo6010121224rsquo
UPDATE Ucet AS u SET stav = stav+ (SELECT castka FROM Transakce AS t WHERE uc_uctu = tc_uctu)
DELETE FROM
vymaže zaacuteznamy ktereacute splňujiacute podmiacutenku bez nadefinovaacuteniacute podmiacutenky vymaže všechny zaacuteznamy
DELETE FROM naacutezev_tabulky WHERE sloupec = rsquohodnotarsquo
Odstraňovaacuteniacute dat
POZOR ndash po odstraněniacute zaacuteznamu už neniacute možneacute zaacuteznam obnovit Je dobreacute miacutet data pro jistotu zaacutelohovanaacute Při odstraňovaacuteniacute dat je nutneacute použiacutevat podmiacutenku WHERE jinak se může staacutet že z tabulky odstraniacutete všechna data
Chcete-li zajistit většiacute bezpečnost před nechtěnyacutem odstraněniacutem zaacuteznamů můžete použiacutet klauzuli LIMIT kteraacute omeziacute počet odstraňovanyacutech zaacuteznamů
DELETE FROM naacutezev_tabulky WHERE sloupec = rsquohodnotarsquoLIMIT 1
INSERT INTO vklaacutedaacuteniacute řaacutedku vyacutečtem hodnot dvě možnosti
INSERT INTO table VALUES (h1 h2 h3 h4) INSERT INTO table (s1 s2 s4) VALUES (h1 h2 h4)
vklaacutedaacuteniacute viacutece řaacutedků vyacutečtem hodnot INSERT INTO table VALUES (h11 h12 h13)(h21 h22 h23)
vklaacutedaacuteniacute viacutece řaacutedků jejichž hodnoty vzniknou jako vyacutesledek dotazu INSERT INTO tabulka | (vyacutečet atributů) | (SELECT FROM )
INSERT INTO naacutezev_tabulky [(naacutez_sloupce]] zdroj
Zdroje pro vklaacutedaniacute dat Řaacutedek implicitniacutech hodnot ndash z přiacutekazu CREATE TABLE
Řaacutedek zadanyacutech hodnot
DEFAULT_VALUES
VALUES (skalarniacute_vyacuteraz|NULL|DEFAULThellip)
Vyacutesledek poddotazu
tabulkovyacute_vyacuteraz
Přiacuteklad
INSERT INTO Klient VALUES (lsquo6010121224lsquolsquoJanlsquolsquoNovyacutelsquolsquoJaacutenskaacute 25lsquolsquoZliacutenlsquo)
INSERT INTO Klient (r_cislo jmeno prijmeni ulice mesto)VALUES (lsquo8261115267lsquolsquoPetralsquolsquoNovaacutekovaacutelsquolsquoPoštovaacute 128lsquolsquoLešnaacutelsquo)
(lsquo5805064891lsquolsquoPavellsquolsquoNovaacutečeklsquolsquoNezvalova 697lsquolsquoZliacutenlsquo)
UPDATE aktualizace zaacuteznamů splňujiacuteciacutech podmiacutenku hodnoty zvolenyacutech atributů vybranyacutech zaacuteznamů jsou
nastaveny na NULL hodnotu expression (např konstanta) vyacutesledek dotazu
Aktualizace dat
UPDATE naacutezev_tabulky SET sloupec = rsquohodnotarsquo
UPDATE naacutezev_tabulky SET sloupec1 = rsquohodnota1rsquosloupec2 = rsquohodnota2rsquohellip
UPDATE naacutezev_tabulky SET sloupec1 = rsquohodnota1rsquoWHERE sloupec2 = rsquohodnota2rsquo
Použitiacute klauzule WHERE
Pro změnu viacutece hodnot se použiacutevaacute zaacutepis
Přiacuteklad
UPDATE Klient SET jmeno = lsquoJakubrsquo WHERE r_cislo = lsquo6010121224rsquo
UPDATE Ucet AS u SET stav = stav+ (SELECT castka FROM Transakce AS t WHERE uc_uctu = tc_uctu)
DELETE FROM
vymaže zaacuteznamy ktereacute splňujiacute podmiacutenku bez nadefinovaacuteniacute podmiacutenky vymaže všechny zaacuteznamy
DELETE FROM naacutezev_tabulky WHERE sloupec = rsquohodnotarsquo
Odstraňovaacuteniacute dat
POZOR ndash po odstraněniacute zaacuteznamu už neniacute možneacute zaacuteznam obnovit Je dobreacute miacutet data pro jistotu zaacutelohovanaacute Při odstraňovaacuteniacute dat je nutneacute použiacutevat podmiacutenku WHERE jinak se může staacutet že z tabulky odstraniacutete všechna data
Chcete-li zajistit většiacute bezpečnost před nechtěnyacutem odstraněniacutem zaacuteznamů můžete použiacutet klauzuli LIMIT kteraacute omeziacute počet odstraňovanyacutech zaacuteznamů
DELETE FROM naacutezev_tabulky WHERE sloupec = rsquohodnotarsquoLIMIT 1
INSERT INTO naacutezev_tabulky [(naacutez_sloupce]] zdroj
Zdroje pro vklaacutedaniacute dat Řaacutedek implicitniacutech hodnot ndash z přiacutekazu CREATE TABLE
Řaacutedek zadanyacutech hodnot
DEFAULT_VALUES
VALUES (skalarniacute_vyacuteraz|NULL|DEFAULThellip)
Vyacutesledek poddotazu
tabulkovyacute_vyacuteraz
Přiacuteklad
INSERT INTO Klient VALUES (lsquo6010121224lsquolsquoJanlsquolsquoNovyacutelsquolsquoJaacutenskaacute 25lsquolsquoZliacutenlsquo)
INSERT INTO Klient (r_cislo jmeno prijmeni ulice mesto)VALUES (lsquo8261115267lsquolsquoPetralsquolsquoNovaacutekovaacutelsquolsquoPoštovaacute 128lsquolsquoLešnaacutelsquo)
(lsquo5805064891lsquolsquoPavellsquolsquoNovaacutečeklsquolsquoNezvalova 697lsquolsquoZliacutenlsquo)
UPDATE aktualizace zaacuteznamů splňujiacuteciacutech podmiacutenku hodnoty zvolenyacutech atributů vybranyacutech zaacuteznamů jsou
nastaveny na NULL hodnotu expression (např konstanta) vyacutesledek dotazu
Aktualizace dat
UPDATE naacutezev_tabulky SET sloupec = rsquohodnotarsquo
UPDATE naacutezev_tabulky SET sloupec1 = rsquohodnota1rsquosloupec2 = rsquohodnota2rsquohellip
UPDATE naacutezev_tabulky SET sloupec1 = rsquohodnota1rsquoWHERE sloupec2 = rsquohodnota2rsquo
Použitiacute klauzule WHERE
Pro změnu viacutece hodnot se použiacutevaacute zaacutepis
Přiacuteklad
UPDATE Klient SET jmeno = lsquoJakubrsquo WHERE r_cislo = lsquo6010121224rsquo
UPDATE Ucet AS u SET stav = stav+ (SELECT castka FROM Transakce AS t WHERE uc_uctu = tc_uctu)
DELETE FROM
vymaže zaacuteznamy ktereacute splňujiacute podmiacutenku bez nadefinovaacuteniacute podmiacutenky vymaže všechny zaacuteznamy
DELETE FROM naacutezev_tabulky WHERE sloupec = rsquohodnotarsquo
Odstraňovaacuteniacute dat
POZOR ndash po odstraněniacute zaacuteznamu už neniacute možneacute zaacuteznam obnovit Je dobreacute miacutet data pro jistotu zaacutelohovanaacute Při odstraňovaacuteniacute dat je nutneacute použiacutevat podmiacutenku WHERE jinak se může staacutet že z tabulky odstraniacutete všechna data
Chcete-li zajistit většiacute bezpečnost před nechtěnyacutem odstraněniacutem zaacuteznamů můžete použiacutet klauzuli LIMIT kteraacute omeziacute počet odstraňovanyacutech zaacuteznamů
DELETE FROM naacutezev_tabulky WHERE sloupec = rsquohodnotarsquoLIMIT 1
Přiacuteklad
INSERT INTO Klient VALUES (lsquo6010121224lsquolsquoJanlsquolsquoNovyacutelsquolsquoJaacutenskaacute 25lsquolsquoZliacutenlsquo)
INSERT INTO Klient (r_cislo jmeno prijmeni ulice mesto)VALUES (lsquo8261115267lsquolsquoPetralsquolsquoNovaacutekovaacutelsquolsquoPoštovaacute 128lsquolsquoLešnaacutelsquo)
(lsquo5805064891lsquolsquoPavellsquolsquoNovaacutečeklsquolsquoNezvalova 697lsquolsquoZliacutenlsquo)
UPDATE aktualizace zaacuteznamů splňujiacuteciacutech podmiacutenku hodnoty zvolenyacutech atributů vybranyacutech zaacuteznamů jsou
nastaveny na NULL hodnotu expression (např konstanta) vyacutesledek dotazu
Aktualizace dat
UPDATE naacutezev_tabulky SET sloupec = rsquohodnotarsquo
UPDATE naacutezev_tabulky SET sloupec1 = rsquohodnota1rsquosloupec2 = rsquohodnota2rsquohellip
UPDATE naacutezev_tabulky SET sloupec1 = rsquohodnota1rsquoWHERE sloupec2 = rsquohodnota2rsquo
Použitiacute klauzule WHERE
Pro změnu viacutece hodnot se použiacutevaacute zaacutepis
Přiacuteklad
UPDATE Klient SET jmeno = lsquoJakubrsquo WHERE r_cislo = lsquo6010121224rsquo
UPDATE Ucet AS u SET stav = stav+ (SELECT castka FROM Transakce AS t WHERE uc_uctu = tc_uctu)
DELETE FROM
vymaže zaacuteznamy ktereacute splňujiacute podmiacutenku bez nadefinovaacuteniacute podmiacutenky vymaže všechny zaacuteznamy
DELETE FROM naacutezev_tabulky WHERE sloupec = rsquohodnotarsquo
Odstraňovaacuteniacute dat
POZOR ndash po odstraněniacute zaacuteznamu už neniacute možneacute zaacuteznam obnovit Je dobreacute miacutet data pro jistotu zaacutelohovanaacute Při odstraňovaacuteniacute dat je nutneacute použiacutevat podmiacutenku WHERE jinak se může staacutet že z tabulky odstraniacutete všechna data
Chcete-li zajistit většiacute bezpečnost před nechtěnyacutem odstraněniacutem zaacuteznamů můžete použiacutet klauzuli LIMIT kteraacute omeziacute počet odstraňovanyacutech zaacuteznamů
DELETE FROM naacutezev_tabulky WHERE sloupec = rsquohodnotarsquoLIMIT 1
UPDATE aktualizace zaacuteznamů splňujiacuteciacutech podmiacutenku hodnoty zvolenyacutech atributů vybranyacutech zaacuteznamů jsou
nastaveny na NULL hodnotu expression (např konstanta) vyacutesledek dotazu
Aktualizace dat
UPDATE naacutezev_tabulky SET sloupec = rsquohodnotarsquo
UPDATE naacutezev_tabulky SET sloupec1 = rsquohodnota1rsquosloupec2 = rsquohodnota2rsquohellip
UPDATE naacutezev_tabulky SET sloupec1 = rsquohodnota1rsquoWHERE sloupec2 = rsquohodnota2rsquo
Použitiacute klauzule WHERE
Pro změnu viacutece hodnot se použiacutevaacute zaacutepis
Přiacuteklad
UPDATE Klient SET jmeno = lsquoJakubrsquo WHERE r_cislo = lsquo6010121224rsquo
UPDATE Ucet AS u SET stav = stav+ (SELECT castka FROM Transakce AS t WHERE uc_uctu = tc_uctu)
DELETE FROM
vymaže zaacuteznamy ktereacute splňujiacute podmiacutenku bez nadefinovaacuteniacute podmiacutenky vymaže všechny zaacuteznamy
DELETE FROM naacutezev_tabulky WHERE sloupec = rsquohodnotarsquo
Odstraňovaacuteniacute dat
POZOR ndash po odstraněniacute zaacuteznamu už neniacute možneacute zaacuteznam obnovit Je dobreacute miacutet data pro jistotu zaacutelohovanaacute Při odstraňovaacuteniacute dat je nutneacute použiacutevat podmiacutenku WHERE jinak se může staacutet že z tabulky odstraniacutete všechna data
Chcete-li zajistit většiacute bezpečnost před nechtěnyacutem odstraněniacutem zaacuteznamů můžete použiacutet klauzuli LIMIT kteraacute omeziacute počet odstraňovanyacutech zaacuteznamů
DELETE FROM naacutezev_tabulky WHERE sloupec = rsquohodnotarsquoLIMIT 1
Aktualizace dat
UPDATE naacutezev_tabulky SET sloupec = rsquohodnotarsquo
UPDATE naacutezev_tabulky SET sloupec1 = rsquohodnota1rsquosloupec2 = rsquohodnota2rsquohellip
UPDATE naacutezev_tabulky SET sloupec1 = rsquohodnota1rsquoWHERE sloupec2 = rsquohodnota2rsquo
Použitiacute klauzule WHERE
Pro změnu viacutece hodnot se použiacutevaacute zaacutepis
Přiacuteklad
UPDATE Klient SET jmeno = lsquoJakubrsquo WHERE r_cislo = lsquo6010121224rsquo
UPDATE Ucet AS u SET stav = stav+ (SELECT castka FROM Transakce AS t WHERE uc_uctu = tc_uctu)
DELETE FROM
vymaže zaacuteznamy ktereacute splňujiacute podmiacutenku bez nadefinovaacuteniacute podmiacutenky vymaže všechny zaacuteznamy
DELETE FROM naacutezev_tabulky WHERE sloupec = rsquohodnotarsquo
Odstraňovaacuteniacute dat
POZOR ndash po odstraněniacute zaacuteznamu už neniacute možneacute zaacuteznam obnovit Je dobreacute miacutet data pro jistotu zaacutelohovanaacute Při odstraňovaacuteniacute dat je nutneacute použiacutevat podmiacutenku WHERE jinak se může staacutet že z tabulky odstraniacutete všechna data
Chcete-li zajistit většiacute bezpečnost před nechtěnyacutem odstraněniacutem zaacuteznamů můžete použiacutet klauzuli LIMIT kteraacute omeziacute počet odstraňovanyacutech zaacuteznamů
DELETE FROM naacutezev_tabulky WHERE sloupec = rsquohodnotarsquoLIMIT 1
Přiacuteklad
UPDATE Klient SET jmeno = lsquoJakubrsquo WHERE r_cislo = lsquo6010121224rsquo
UPDATE Ucet AS u SET stav = stav+ (SELECT castka FROM Transakce AS t WHERE uc_uctu = tc_uctu)
DELETE FROM
vymaže zaacuteznamy ktereacute splňujiacute podmiacutenku bez nadefinovaacuteniacute podmiacutenky vymaže všechny zaacuteznamy
DELETE FROM naacutezev_tabulky WHERE sloupec = rsquohodnotarsquo
Odstraňovaacuteniacute dat
POZOR ndash po odstraněniacute zaacuteznamu už neniacute možneacute zaacuteznam obnovit Je dobreacute miacutet data pro jistotu zaacutelohovanaacute Při odstraňovaacuteniacute dat je nutneacute použiacutevat podmiacutenku WHERE jinak se může staacutet že z tabulky odstraniacutete všechna data
Chcete-li zajistit většiacute bezpečnost před nechtěnyacutem odstraněniacutem zaacuteznamů můžete použiacutet klauzuli LIMIT kteraacute omeziacute počet odstraňovanyacutech zaacuteznamů
DELETE FROM naacutezev_tabulky WHERE sloupec = rsquohodnotarsquoLIMIT 1
DELETE FROM
vymaže zaacuteznamy ktereacute splňujiacute podmiacutenku bez nadefinovaacuteniacute podmiacutenky vymaže všechny zaacuteznamy
DELETE FROM naacutezev_tabulky WHERE sloupec = rsquohodnotarsquo
Odstraňovaacuteniacute dat
POZOR ndash po odstraněniacute zaacuteznamu už neniacute možneacute zaacuteznam obnovit Je dobreacute miacutet data pro jistotu zaacutelohovanaacute Při odstraňovaacuteniacute dat je nutneacute použiacutevat podmiacutenku WHERE jinak se může staacutet že z tabulky odstraniacutete všechna data
Chcete-li zajistit většiacute bezpečnost před nechtěnyacutem odstraněniacutem zaacuteznamů můžete použiacutet klauzuli LIMIT kteraacute omeziacute počet odstraňovanyacutech zaacuteznamů
DELETE FROM naacutezev_tabulky WHERE sloupec = rsquohodnotarsquoLIMIT 1
Odstraňovaacuteniacute dat
POZOR ndash po odstraněniacute zaacuteznamu už neniacute možneacute zaacuteznam obnovit Je dobreacute miacutet data pro jistotu zaacutelohovanaacute Při odstraňovaacuteniacute dat je nutneacute použiacutevat podmiacutenku WHERE jinak se může staacutet že z tabulky odstraniacutete všechna data
Chcete-li zajistit většiacute bezpečnost před nechtěnyacutem odstraněniacutem zaacuteznamů můžete použiacutet klauzuli LIMIT kteraacute omeziacute počet odstraňovanyacutech zaacuteznamů
DELETE FROM naacutezev_tabulky WHERE sloupec = rsquohodnotarsquoLIMIT 1
Recommended