======PgSQL (Postgre SQL)======
====Obsah====
Externi odkazy\\
Start/stop/status\\
Uzivatele/skupiny\\
Prava\\
Tabulky\\
Data v tabulkach\\
Vnitrni funkce psql\\
zaloha / obnoveni zalohy databaze\\
===Externi odkazy===
[[http://www.linuxsoft.cz/article.php?id_article=1398|Clanek na linuxsoft]]\\
====Start/stop/status====
====Uzivatele/skupiny====
SYSID skupina USER uzivatel1, uzivatel 2 ... bytvori skupinu skupina s uzivateli uzivatel1, uzivatel2\\
ALTER GROUP skupina ADD USER uzivatel3 , uzivatel4 ... prida uzivatele uzivatel3, uzivatel4\\
ALTER GROUP skupina DROP USER uzivatel3, uzivatel4 ... odebere uzivatele uzivatel3, uzivatel4\\
ALTER GROUP skupina RENAME TO skupinaa ... prejmenuje skupinu skupina na skupnaa\\
createuser --help ... konzolovy prikaz\\
SYSID uzivatel1 CREATEUSER ... vytvori uzivatele uzivatel1 pomoci SQL prikazu\\
===Prava===
\z mytable ... vylistuje prava mytable\\
GRANT INSERT ON uzivatele TO PUBLIC; ... prida funkce INSERT na tabulku insert vsem uzivatelum\\
GRANT ALL PRIVILEGES ON uzivatele TO tomas; ... prida vsechny prava na tabuklu uzivatele uzivateli tomas\\
GRANT SELECT, UPDATE, INSERT ON uzivatele TO GROUP admins; ... prida SELECT, UPDATE, INSERT do tabulky uzivatele skupine admins\\
CREATE ROLE role1 NOLOGIN ENCRYPTED PASSWORD '123mzdy';
GRANT SELECT, INSERT, UPDATE, DELETE ON uzivatele TO role1;
GRANT role1 TO petr; ... prida uzivatele petr ke clenum role role1\\
===Tabulky===
\d ... seznam vsech tabulek\\
\d uzivatele ... popis tabukly uzivatele\\
CREATE TABLE uzivatele (id bigserial NOT NULL, name char(50), pwd char(32));... butvori tabulku uzivatele s hodnotami id, name, password\\
ALTER TABLE uzivatele ADD COLUMN preznivka character varying(50) DEFAULT 'bez prezdivky'; ... prida sloupec do tabulky\\
ALTER TABLE uzivatele ALTER COLUMN prezdivka SET NOT NULL; ... zmodifikyje sloupec\\
ALTER TABLE uzivatele ALTER COLUMN prezdivka DROP DEFAULT; ... odebere sloupec z tabulky\\
alter table changes ALTER COLUMN owner set data type varchar(40); ... zmeni datovy typ sloupce\\
===Data v tabulkach===
INSERT INTO uzivatele VALUES(0,'marek', '') ... vlozi radek 0,marek,'' do tabulky uzivatele\\
UPDATE uzivatele SET id=1, pwd='123' WHERE login='marek'; ... zmeni radek 0,marek,'' na 1,marek,123\\
UPDATE table SET email = title; ... zkopiruje hodnoty sloupre title do sloupce email\\
DELETE FROM uzivatele WHERE id=1 ... zmaze radek v tabulce, u ktereho je id=1\\
SELECT * FROM uzivatele; ... vylistuje radky z tabulky uzivatele\\
SELECT DISTINCT name FROM uzivatele; ... vylistuje jen sloupec name ze vsech radku v tabulce uzivatele, ukaze jen unikatni hodnoty (pokud 2 hodnoty jsou stejne, ukaze jen jedu)\\
SELECT ud, name FROM uzivatele where id>3; ... vylistuje jen hodnoty id a name ze vsech radku v tabulce uzivatele, u kterych je id>3\\
SELECT ud, name FROM uzivatele where id>3 ORDER BY id DESC; ... jako v predchozim, seradi hodnoty sestupne (ASC - vzestupne)\\
UPDATE tickets set owner=sub.email from ( select email, user_id from users ) as sub where tickets.admin_id=sub.user_id; ; ... slozeny update ze sekeltu\\
===Vnitrni funkce psql===
timeofday(); ... dnesni den\\
===zaloha / obnoveni zalohy databaze===
pg_dump dbname > outfile\\
pg_dump -h db_server -U db_user -W db_name > db.20070725.dump\\
psql dbname > infile\\
pg_dumpall > vse.sql ... zazalohuje vse do txt souboru vse.sql\\
psql -f vse.sql postgres ... obnovi vse z txt soubotu vse.txt\\
====SQL====
select t1.a, t2.b FROM t1 inner join t2 ON t1.c=t2.c WHERE t2.c=0;\\