Tvorba tabulky v databázi (pro zjednodušení bude mít tabulka pouze 3 sloupce)
CREATE TABLE název tabulky (popis polí); CREATE TABLE knihy (signatura INT NOT NULL PRIMARY KEY AUTO_INCREMENT, Nazev VARCHAR(50) NOT NULL, Autor VARCHAR(30) NOT NULL);
vytváření dočasných tabulek (zanikají v okamžiku odpojení klienta)
CREATE TEMPORARY TABLE název tabulky (popis polí);
ověření, zda tabulka náhodou v databázi již neexistuje
CREATE TABLE IF NOT EXIST název tabulky (popis polí);
schopnost tvorby tabulek založených na výsledcích dotazů např. kopie existující tabulky Knihy do nové tabulky
CREATE TABLE název nové tabulky SELECT * FROM Knihy;
zobrazení struktury (seznamu tabulek) databáze knihovna_db
SHOW TABLES FROM název databáze; SHOW TABLES FROM Knihovna_prijmenistudenta;
výpis sloupců tabulky (2 způsoby):
SHOW COLUMNS FROM název tabulky; SHOW COLUMNS FROM Knihy; DESCRIBE název tabulky; DESCRIBE Knihy;
Přidání nového sloupce do existující tabulky
ALTER TABLE Název tabulky ADD NázevPole datový typ; ALTER TABLE Knihy ADD Pocetstran INT;
Změna názvu a typu sloupce tabulky
ALTER TABLE název tabulky CHANGE původní název pole nový název pole nový typ a jeho modifikátory; ALTER TABLE knihy CHANGE signatura sign int(11) Auto_increment; výpis struktury tabulky Knihy pro kontrolu, že se název pole změnil DESCRIBE Knihy; ALTER TABLE knihy CHANGE Autor AutorVARCHAR(40); DESCRIBE Knihy;
Přejmenování tabulky
ALTER TABLE původní název tabulky RENAME nový název tabulky; ALTER TABLE Knihy RENAME Tabulka_knihy; SHOW TABLES FROM Knihovna_db;
Vložení dat do existující tabulky
INSERT INTO název tabulky (seznam polí) VALUES (seznam hodnot); INSERT INTO Knihy(signatura,Nazev,Autor) VALUES (NULL,“Ferda Mravenec“,“Ondřej Sekora“);
Výpis dat tabulky (bude probráno podrobněji později)
SELECT seznam polí FROM tabulka; SELECT * FROM knihy;
Změna hodnoty v tabulce
UPDATE název tabulky SET název sloupce=hodnota WHERE omezující podmínky UPDATE knihy SET Autor=‘ Eduard Bass‘ WHERE Signatura =‘1‘
Odstranění záznamů z tabulky
DELETE FROM název tabulky WHERE podmínky; DELETE FROM Knihy WHERE Autor=‘Karel Čapek‘;
Odstranění sloupce z tabulky
ALTER TABLE Název tabulky DROP Název pole; ALTER TABLE Knihy DROP Autor;DROP Název tabulky; DROP Knihy;
Slouží k výběru dat z databáze podle zadaných kritérií.
SELECT <seznam sloupců> FROM <název tabulky> <Dodatečná kritéria>;
SELECT (vyber)
SELECT seznam vybraných polí (sloupců) * znamená VYBER VŠECHNY
DISTINCT opakující se věty, které se liší pouze identifikátorem, se nevypíší
FROM seznam tabulek, ve kterých jsou vybraná pole uložena
WHERE logické výrazy omezující množinu vybraných WHERE TYP=KF%
nebo LIKE ‘KF%’ (vypíše každou větu obsahující KF0)
ORDER BY podle čeho bude tříděno (můžeme třídit podle více klíčů – u tel. seznamu dle příjmení, jména, obvodu Prahy, ulice)
DESC pokud chci třídit sestupně, jinak bude tříděno vzestupně ASC
LIMIT kolik záznamů bude maximálně na stránce (zadáváme dvě hodnoty, nejprve kolik záznamů se má přeskočit a potom kolik záznamů se má vypsat)
GROUP BY sloupec skupina - kvůli sumarizačním údajům za skupinu
Order by <sloupce1> ASC , <sloupce2> DSC...;
Slouží ke stránkování výpisu obsahu tabulky
limit <počet řádků k přeskočení>, <počet řádků k vypsání>;
Where id=2; -- vyber jen to, kde se id=2
Občas potřebuje mít na výstupu jiné označení sloupce v tabulce. Výhodou k tomu použijeme modifikátro AS
select Jmeno AS jm from osoby;
V případě vícejazykové verze položek v tabulkce potřebuje vybrat sloupce, které splňují nějakou podmínku. Například. Mějme tabulky, kde jsou názvy v čěštině a francouzštině (nazev, nazev_fr). A vybíráme přednostně francouzský název, ale pokud je prázdný chceme český. Příslušný sql dotaz bude vypadat takto:
select IF(nazev_fr='',nazev,nazev_fr) as nazev from <název tabulky>;
Zápis podmínky známe z tabulkových procesorů. Pokud je pole nazev_fr prázdné, vyber nazev, pokud ne, tak vyber nazev_fr.
Předpokládejme následují tabulku osoby.
Jmeno | Prijmeni | Adresa | RODNECISLO |
---|---|---|---|
Miroslav | Novák | Praha 2, Ječná 30 | 8506200550 |
Stanislav | Kadoch | Praha 12. Pod mostem 1 | 8912244330 |
Petr | Bůček | Praha 8, Liliová 1 | 8612142110 |
Evžen | Buriánek | Praha 10, U spalovny 13 | 9101210990 |
Kateřina | Novotná | Brno, Spálená 25 | 8656140504 |
Marie | Vlasáková | Liberec, Korunní 21 | 8759070331 |
Jaroslav | Holohlavý | Beroun, Tmavá 16 | 8811150491 |
Fero | Lakatoš | Kačov 21 | 7604190022 |
select * from osoby; --vypíše obsah tabulky select * from osoby order by Jmeno; --vypíše obsah tabulky a seřadí podle sloupce <Jmeno>; select Jmeno from osoby; --vypíše jen sloupec <Jmeno> tabulky a seřadí podle sloupce <Jmeno>; select * from osoby where Jmeno ; --vypíše jen sloupec <Jmeno> tabulky a seřadí podle sloupce <Jmeno>;
K filtraci vypisovaných dat můžeme použít i operátor "like". Jak už název napovídá vyjadřuje podobnost.
select * from <tabulka> where nazev like " <něco>";-- nezáleží na tom, zda je <něco> psáno velikými či malími písmeny select * from <tabulka> where nazev like "% <něco>%";--znak % zastupuje libovoný znak. V tomto případě může být <něco> například uprostřčed věty