PostgreSQL 12 až 14; základní příkazy pgsql a správa databáze

PostgreSQL (pgsql) je pokročilá open source relační databáze podnikové třídy, která podporuje dotazování v jazyce SQL (relační) i JSON (nerelační). Jedná se o vysoce stabilní systém pro správu databází, za kterým stojí více než 20 let komunitního vývoje, který přispěl k jeho vysoké úrovni odolnosti, integrity a správnosti. Postgresql se používá jako primární datové úložiště nebo datový sklad pro mnoho webových, mobilních, geoprostorových a analytických aplikací. Nejnovější hlavní verzí (podzim 2022) PostgreSQL je verze 12, lze ale upgradovat až na verzi 14.

PostgreSQL příkazy SQL

Vytvoření uživatele (role) s heslem

CREATE ROLE muj_ucet WITH LOGIN CREATEDB PASSWORD 'moje_heslo';

nebo se zašifrovaným heslem

CREATE ROLE muj_ucet with LOGIN ENCRYPTED PASSWORD 'moje_heslo';

Vytvoření databáze a přiřazení vlastníka databáze

CREATE DATABASE moje_databaze WITH OWNER muj_ucet;

Chcete-li vypsat všechny databáze na aktuálním databázovém serveru PostgreSQL, použijte příkaz \l nebo \l+

\l+

Chcete-li vypsat všechny uživatele použijte příkaz \du nebo \du+

\du+

Vypsat velikost databáze lze pomocí příkazu

SELECT pg_size_pretty( pg_database_size('moje_databaze') );

Změna oprávnění pro uživatele muj_ucet na superuser

ALTER USER muj_ucet WITH SUPERUSER;

Změna oprávnění uživatele muj_ucet na standardní oprávnění

ALTER DEFAULT PRIVILEGES FOR USER muj_ucet;

Ukončení relace (připojení k databáze)

\q

Zobrazit historii příkazů, použijte příkaz

\s

Jakmile jste připojeni k databázi, můžete přepnout připojení na novou databázi pod uživatelem zadaným uživatelem. Předchozí připojení bude uzavřeno. Pokud parametr user vynecháte, předpokládá se aktuální uživatel.

\c muj_ucet

Připojit k databáze a vypsat všechny tabulky

\c moje_databaze \dt

Vyprázdnit obsah tabulek v databáze moje_databáze včetně navazujících tabulek

TRUNCATE TABLE moje_databaze_entries CASCADE;

Reset poslední aktualizace v budoucnosti = neaktualizuje se aplikace Tiny Tiny RSS

\c ttrss
TRUNCATE TABLE ttrss_feed_categories CASCADE;

Vytvořit tabulku (extension) v databáze

CREATE EXTENSION pg_trgm;

PostgreSQL příkazy pgsql

Hlavní
\copyrightzobrazí podmínky použití a distribuce PostgreSQL
\crosstabview [SLOUPCE]spustí dotaz a zobrazí výsledek přes crosstab
\errverbosezobrazí polední chybovou hlášku s maximem podrobností
\g [(VOLBA)] [SOUBOR]provést dotaz (a odeslat výsledky do souboru nebo |pipe);
\g [BEZ VOLBY]bez argumentů je ekvivalentní středníku
\gdescpopíše výsledek dotazu, bez spuštění
\gexecspustí dotaz, poté spustí každou hodnotu z jeho výsledku
\gset [PREFIX]spustí dotaz a uloží výsledky v psql proměnných
\gx [(VOLBY)] [SOUBOR]jako \g, ale vynucuje rozšířený mód výstupu
\qukončí psql
\watch [SEKUND]každých SEKUND spusť dotaz
Nápověda
\? [příkaz]zobrazí nápovědu k interním příkazům
\? volbazobrazí nápovědu k psql parametrům psql pro příkazovou řádku
\? proměnnázobrazí nápovědu ke speciálním proměnným
\h [JMÉNO]nápověda syntaxe SQL příkazů, * pro všechny příkazy
Paměť dotazu
\e [SOUBOR] [ŘÁDEK]editace aktuálního dotazu (nebo souboru) v externím editoru
\ef [JMENO FUNKCE [ŘÁDEK]]editace definice funkce v externím editoru
\ev [ZOBRAZITJMÉNO [ŘÁDEK]]editace definice pohledu v externím editoru
\pukázat současný obsah paměti s dotazem
\rvyprázdnění paměti s dotazy
\s [SOUBOR]vytiskne historii nebo ji uloží do souboruvytiskne historii nebo ji uloží do souboru
\w SOUBORzapsání paměti s dotazem do souboru
Vstup/Výstup
\copy …provede SQL COPY s tokem dat na klienta
\echo [-n] [ŘETĚZEC]vypsání textu na standardní výstup (-n pro potlačení nového řádku)
\i SOUBORprovedení příkazů ze souboru
\ir SOUBORjako \i, ale relativně k pozici v aktuálním skriptu
\o [SOUBOR]přesměrování výsledků dotazu do souboru nebo |roury
\qecho [ŘETĚZEC]vypsání textu na \o výstup dotazů (-n pro potlačení nového řádku)
\warn [-n] [TEXT]vypsání textu na standardní výstup (-n pro potlačení nového řádku)
Podmínka
\if VÝRAZzačne podmíněný blok
\elif VÝRAZalternativa v současném podmíněném bloku
\elseposlední alternativa v současném podmíněném bloku
\endifukončí podmíněný blok
Informační(volby: S = zobraz systémové objekty, + = další detaily)
\d[S+]seznam tabulek, pohledů a sekvencí
\d[S+] JMÉNOpopis tabulky, pohledů, sekvence nebo indexu
\da[S] [VZOR]seznam agregačních funkcí
\dA[+] [VZOR]seznam přístupových metod
\dAc[+] [AMPTRN [TYPEPTRN]]vypíše třídy operátorů
\dAf[+] [AMPTRN [TYPEPTRN]]vypíše rodiny operátorů
\dAo[+] [AMPTRN [OPFPTRN]]vypíše operátory pro rodiny operátorů
\dAp[+] [AMPTRN [OPFPTRN]]seznam podpůrných funkcí rodin operátorů
\db[+] [VZOR]seznam prostory tabulek
\dc[S+] [VZOR]seznam konverzí
\dC[+] [VZOR]seznam přetypování
\dd[S] [VZOR]zobrazí popis objektů nezobrazených jinde
\dD[S+] [VZOR]seznam domén
\ddp [VZOR]seznam implicitních privilegií
\dE[S+] [VZOR]seznam foreign tabulek
\des[+] [VZOR]seznam foreign serverů
\det[+] [VZOR]seznam foreign tabulek
\deu[+] [VZOR]seznam mapování uživatelů
\dew[+] [VZOR]seznam foreign-data wrapperů
\df[anptw][S+] [FUNCPTRN [TYPEPTRN …]]seznam [pouze funkce agg/normal/procedura/spuštěč/okno]
\dF[+] [VZOR]seznam konfigurací fulltextového vyhledávání
\dFd[+] [VZOR]seznam slovníků fulltextového vyhledávání
\dFp[+] [VZOR]seznam parserů fulltextového vyhledávání
\dFt[+] [VZOR]seznam šablon fulltextového vyhledávání
\dg[S+] [VZOR]seznam rolí
\di[S+] [VZOR]seznam indexů
\dlseznam „large object“ stejné jako \lo_list
\dL[S+] [VZOR]seznam procedurálních jazyků
\dm[S+] [VZOR]seznam materializovaných pohledů
\dn[S+] [VZOR]seznam schémat
\do[S+] [OPPTRN [TYPEPTRN [TYPEPTRN]]]seznam operátorů
\dO[S+] [VZOR]seznam collations
\dp [VZOR]seznam přístupových práv tabulek, pohledů a sekvencí
\dP[itn+] [VZOR]seznam [pouze index/table] partitioned relations [n=nested]
\drds [ROLEPTRN [DBPTRN]]seznam nastavení rolí pro jednotlivé databáze
\dRp[+] [VZOR]seznam replikačních publikací
\dRs[+] [PATTERN]seznam replikačních subskripcí
\ds[S+] [VZOR]seznam sekvencí
\dt[S+] [VZOR]seznam tabulek
\dT[S+] [VZOR]seznam datových typů
\du[S+] [VZOR]seznam rolí
\dv[S+] [VZOR]seznam pohledů
\dx[+] [VZOR]seznam rozšíření
\dX [VZOR]seznam rozšířených statistik
\dy[+] [VZOR]seznam spouštěčů událostí
\l[+] [VZOR]seznam databází
\sf[+] FUNCNAMEzobrazí definici funkce
\sv[+] VIEWNAMEzobrazí definici pohledu
\z [VZOR]stejné jako \dp
Formátování
\apřepíná mezi ‚nezarovnaným‘ a ‚zarovnaným‘ modem výstupu
\C [ŘETĚZEC]nastaví titulek tabulky nebo odnastaví pokud není definován řetězec
\f [ŘETĚZEC]nastaví nebo zobrazí oddělovače polí pro nezarovnaný výstup dotazů
\Hzapne HTML mód výstupu (nyní vypnuto)
\pset [JMÉNO [HODNOTA]]nastavit možnost výstupu tabulky
(border|columns|csv_fieldsep|expanded|fieldsep|
fieldsep_zero|footer|format|linestyle|null|
numericlocale|pager|pager_min_lines|recordsep|
recordsep_zero|tableattr|title|tuples_only|
unicode_border_linestyle|unicode_column_linestyle|
unicode_header_linestyle)
\t [on|off]ukazovat pouze řádky (nyní vypnuto)
\T [ŘETĚZEC]nastavení atributů HTML tagu <table>
\x [on|off|auto]zapne rozšířený mód výstupu (nyní vypnuto)
Spojení
\c[onnect] [DATABÁZE|- UŽIVATEL|- HOST|- PORT|-] | conninfo]připojí se do nové databáze (současná „postgres“)
\conninfozobrazí informace o aktuálním spojení
\encoding [KÓDOVÁNÍ]zobrazení nebo nastavení kódování klienta
\password [UŽIVATEL]bezpečná změna hesla uživatele
Operační systém
\cd [ADRESÁŘ]změna aktuálního pracovního adresář
\setenv NAME [HODNOTA]nastaví nebo zruší proměnnou prostředí
\timing [on|off]použít sledování času u příkazů (nyní vypnuto)
\! [PŘÍKAZ]provedení příkazu v shellu nebo nastartuje interaktivní shell
Proměnné
\prompt [TEXT] PROMĚNÁvyzve uživatele, aby zadal hodnotu proměnné nastavení interní
\set [PROMĚNÁ [HODNOTA]]proměnné nebo bez parametrů zobrazí seznam všech proměnných
\unset JMÉNOzrušení interní proměnné
Velké objekty (LO)
\lo_export LOBOID SOUBOR
\lo_import SOUBOR [KOMENTÁŘ]
\lo_list
\lo_unlink LOBOIDoperace s „large“ objekty
psql příkazy

PostgreSQL seznam SQL příkazů

ABORTALTER TEXT SEARCH TEMPLATECREATE PUBLICATIONDROP FUNCTIONIMPORT FOREIGN SCHEMA
ALTER AGGREGATEALTER TRIGGERCREATE ROLEDROP GROUPINSERT
ALTER COLLATIONALTER TYPECREATE RULEDROP INDEXLISTEN
ALTER CONVERSIONALTER USERCREATE SCHEMADROP LANGUAGELOAD
ALTER DATABASEALTER USER MAPPINGCREATE SEQUENCEDROP MATERIALIZED VIEWLOCK
ALTER DEFAULT PRIVILEGESALTER VIEWCREATE SERVERDROP OPERATORMOVE
ALTER DOMAINANALYZECREATE STATISTICSDROP OPERATOR CLASSNOTIFY
ALTER EVENT TRIGGERBEGINCREATE SUBSCRIPTIONDROP OPERATOR FAMILYPREPARE
ALTER EXTENSIONCALLCREATE TABLEDROP OWNEDPREPARE TRANSACTION
ALTER FOREIGN DATA WRAPPERCHECKPOINTCREATE TABLE ASDROP POLICYREASSIGN OWNED
ALTER FOREIGN TABLECLOSECREATE TABLESPACEDROP PROCEDUREREFRESH MATERIALIZED VIEW
ALTER FUNCTIONCLUSTERCREATE TEXT SEARCH CONFIGURATIONDROP PUBLICATIONREINDEX
ALTER GROUPCOMMENTCREATE TEXT SEARCH DICTIONARYDROP ROLERELEASE SAVEPOINT
ALTER INDEXCOMMITCREATE TEXT SEARCH PARSERDROP ROUTINERESET
ALTER LANGUAGECOMMIT PREPAREDCREATE TEXT SEARCH TEMPLATEDROP RULEREVOKE
ALTER LARGE OBJECTCOPYCREATE TRANSFORMDROP SCHEMAROLLBACK
ALTER MATERIALIZED VIEWCREATE ACCESS METHODCREATE TRIGGERDROP SEQUENCEROLLBACK PREPARED
ALTER OPERATORCREATE AGGREGATECREATE TYPEDROP SERVERROLLBACK TO SAVEPOINT
ALTER OPERATOR CLASSCREATE CASTCREATE USERDROP STATISTICSSAVEPOINT
ALTER OPERATOR FAMILYCREATE COLLATIONCREATE USER MAPPINGDROP SUBSCRIPTIONSECURITY LABEL
ALTER POLICYCREATE CONVERSIONCREATE VIEWDROP TABLESELECT
ALTER PROCEDURECREATE DATABASEDEALLOCATEDROP TABLESPACESELECT INTO
ALTER PUBLICATIONCREATE DOMAINDECLAREDROP TEXT SEARCH CONFIGURATIONSET
ALTER ROLECREATE EVENT TRIGGERDELETEDROP TEXT SEARCH DICTIONARYSET CONSTTRAINS
ALTER ROUTINECREATE EXTENSIONDISCARDDROP TEXT SEARCH PARSERSET ROLE
ALTER RULECREATE FOREIGN DATA WRAPPERDODROP TEXT SEARCH TEMPLATESET SESSION AUTHORIZATION
ALTER SCHEMACREATE FOREIGN TABLEDROP ACCESS METHODDROP TRANSFORMSET TRANSACTION
ALTER SEQUENCECREATE FUNCTIONDROP AGGREGATEDROP TRIGGERSHOW
ALTER SERVERCREATE GROUPDROP CASTDROP TYPESTART TRANSACTION
ALTER STATISTICSCREATE INDEXDROP COLLATIONDROP USERTABLE
ALTER SUBSCRIPTIONCREATE LANGUAGEDROP CONVERSIONDROP USER MAPPINGTRUNCATE
ALTER SYSTEMCREATE MATERIALIZED VIEWDROP DATABASEDROP VIEWUNLISTEN
ALTER TABLECREATE OPERATORDROP DOMAINUPDATEUPDATE
ALTER TABLESPACECREATE OPERATOR CLASSDROP EVENT TRIGGEREXECUTEVACUUM
ALTER TEXT SEARCH CONFIGURATIONCREATE OPERATOR FAMILYDROP EXTENSIONEXPLAINVALUES
ALTER TEXT SEARCH DICTIONARYCREATE POLICYDROP FOREIGN DATA WRAPPERFETCHWITH
ALTER TEXT SEARCH PARSERCREATE PROCEDUREDROP FOREIGN TABLEGRANT
SQL příkazy

Užitečné

Návod PostgreSQL + Nginx + Debian 11.04
Domovská stránka projektu pgsql

ICTIS.CZ