Search
Aby bylo na čem SQL dotazy zkoušet, je vhodné databázi naplnit daty. Pokud nemáte data skutečná, je potřeba si nějaká vygenerovat. Mnoho SQL klientů umí importovat CSV soubory do databáze. Je mnohem hezčí, když výsledky vašich SQL dotazů produkují alespoň trochu smysluplná data, a proto vám zde nabízíme něco dat na hraní.
Vygenerování 50 náhodných čísel od 10 do 20:
SELECT x.*, ROUND(10 + 20 * RANDOM()) AS y FROM generate_series(1, 50) AS x
Vygenerování 50 náhodných jmen z tabulky svátků (jména se mohou opakovat):
SELECT r.*, svatek.* FROM ( SELECT x, FLOOR(1 + 365 * RANDOM()) AS y FROM generate_series(1, 50) AS x ) AS r LEFT JOIN svatky.svatek ON svatek.doy = r.y
CREATE SEQUENCE seq_tabulka;
CREATE TABLE tabulka ( id_tabulka int NOT NULL UNIQUE DEFAULT nextval('seq_tabulka'), ..., PRIMARY KEY (id_tabulka));
* v SQL kódu vygenerovaném DB Designerem (v módu MySQL) je nutné výče uvedené dopsat pro každou tabulku.
* dále, DB Designer ignoruje v módu MySQL referenční integrity, opět je nutné je dopsat přímo do vygenerované SQL kódu pomocí REFERENCES
CREATE TABLE tabulka ( id_tabulka int NOT NULL UNIQUE DEFAULT nextval('seq_tabulka'), ..., id_referencovana tabulka int REFERENCES referencovanatabulka ..., PRIMARY KEY (id_tabulka));
* pro primární klíče nepoužívejte volbu autoincrement, ale sekvence
* Pro úplnost - databázi lze vytvořit ručně, např. pomocí následujících dotazů
CREATE SEQUENCE seq_mistnost; CREATE TABLE mistnost ( id_mistnost int NOT NULL DEFAULT nextval('seq_mistnost'), nazev varchar(32) NOT NULL UNIQUE, PRIMARY KEY (id_mistnost)); CREATE SEQUENCE seq_senzor; CREATE TABLE senzor ( id_senzor int NOT NULL UNIQUE DEFAULT nextval('seq_senzor'), nazev varchar(64) NOT NULL UNIQUE, popis text, id_mistnost int REFERENCES mistnost ON UPDATE CASCADE ON DELETE SET NULL, PRIMARY KEY (id_senzor)); CREATE SEQUENCE seq_velicina; CREATE TABLE velicina ( id_velicina int NOT NULL UNIQUE DEFAULT nextval('seq_velicina'), nazev varchar(64) NOT NULL UNIQUE, znacka varchar(10) NOT NULL, jednotka varchar(10), PRIMARY KEY (id_velicina)); CREATE TABLE velicinasenzor ( id_velicina int NOT NULL REFERENCES velicina ON UPDATE CASCADE ON DELETE CASCADE, id_senzor int NOT NULL REFERENCES senzor ON UPDATE CASCADE ON DELETE CASCADE, PRIMARY KEY (id_velicina,id_senzor)); CREATE TABLE mereni ( id_velicina int NOT NULL REFERENCES velicina ON UPDATE CASCADE ON DELETE CASCADE, id_senzor int NOT NULL REFERENCES senzor ON UPDATE CASCADE ON DELETE CASCADE, cas timestamp NOT NULL DEFAULT now(), hodnota float NOT NULL, PRIMARY KEY (id_velicina,id_senzor,cas)); CREATE SEQUENCE seq_podminka; CREATE TABLE podminka ( id_podminka int NOT NULL UNIQUE DEFAULT nextval('seq_podminka'), id_velicina int NOT NULL REFERENCES velicina ON UPDATE CASCADE ON DELETE CASCADE, id_senzor int NOT NULL REFERENCES senzor ON UPDATE CASCADE ON DELETE CASCADE, nazev varchar(64) NOT NULL UNIQUE, poznamka text, prahovahodnota float NOT NULL, typ char CHECK (typ IN ('>','<')), PRIMARY KEY (id_podminka)); CREATE SEQUENCE seq_akce; CREATE TABLE akce ( id_akce int NOT NULL UNIQUE DEFAULT nextval('seq_akce'), nazev varchar(64) NOT NULL UNIQUE, PRIMARY KEY (id_akce)); CREATE SEQUENCE seq_pravidlo; CREATE TABLE pravidlo ( id_pravidlo int NOT NULL UNIQUE DEFAULT nextval('seq_pravidlo'), nazev varchar(64) NOT NULL UNIQUE, poznamka text, id_akce int NOT NULL REFERENCES akce ON DELETE CASCADE ON UPDATE CASCADE, PRIMARY KEY (id_pravidlo)); CREATE TABLE pravidlopodminka ( id_pravidlo int NOT NULL REFERENCES pravidlo ON DELETE CASCADE ON UPDATE CASCADE, id_podminka int NOT NULL REFERENCES podminka ON DELETE CASCADE ON UPDATE CASCADE, PRIMARY KEY (id_pravidlo, id_podminka));
INSERT INTO senzor (nazev,popis) VALUES ('S1','Meterologický senzor na střeše'); INSERT INTO senzor (nazev,popis) VALUES ('M1T','Teploměr v místnosti M1'); INSERT INTO velicina (nazev,znacka,jednotka) VALUES ('teplota','t','C'); INSERT INTO velicina (nazev,znacka,jednotka) VALUES ('vítr','v','m/s'); INSERT INTO mistnost(nazev) VALUES ('M1');