Konfigurační soubor postgresql.conf

Umístění
Umístění tohoto konfiguračního souboru na vašem systému zjistíte dotazem do pohledu (view) pg_settings.

SELECT setting FROM pg_settings WHERE name = 'config_file';

Popis
Soubor postgresql.conf je čten při startu serveru. Některé změny v nastavení v tomto souboru vyžadují reload, nekteré restart serveru. To zda je potřeba reload nebo restart poznáte podle sloupce context. Hodnota user znamená, že stačí reload. Pokud je hodnota postmaster, je třeba pro změny provést restart.
Sloupec unit určuje měrnou jednotku pro sloupce setting (současná hodnoty), boot_val (výchozí hodnoty) a reset_val (nová hodnota). Pokud se hodnoty ve sloupcích setting, boot_val a reset_val liší, je potřeba reload nebo reset.

SELECT name, short_desc, context, unit, setting, boot_val, reset_val 
FROM pg_settings 
WHERE name IN ('max_connections', 'shared_buffers', 'effective_cache_size', 'work_mem', 'maintenance_work_mem');

         name         |                           short_desc                            |  context   | unit | setting | boot_val | reset_val
----------------------+-----------------------------------------------------------------+------------+------+---------+----------+-----------
 effective_cache_size | Sets the planner's assumption about the size of the disk cache. | user       | 8kB  | 524288  | 524288   | 524288
 maintenance_work_mem | Sets the maximum memory to be used for maintenance operations.  | user       | kB   | 65536   | 65536    | 65536
 max_connections      | Sets the maximum number of concurrent connections.              | postmaster |      | 100     | 100      | 100
 shared_buffers       | Sets the number of shared memory buffers used by the server.    | postmaster | 8kB  | 16384   | 1024     | 16384
 work_mem             | Sets the maximum memory to be used for query workspaces.        | user       | kB   | 4096    | 4096     | 4096

Číst dálKonfigurační soubor postgresql.conf

Instalace PostgreSQL a pgAdmin3 na Lubuntu

Instalace PostgreSQL i administrativního grafického rozhraní pro tuto databázi pgAdmin3 je zcela jednoduchá. Nejdříve nainstalujeme databázi PostgreSQL příkazem (v tomto případě instaluji PosgreSQL ve verzi 9.5):

sudo apt-get install postgresql-9.5

Následně nainstalujeme pgAdmin3 příkazem:

sudo apt-get install pgadmin3

Nyní můžeme pgAdmin3 spustit.

pgadmin_spusteni pgadmin_prvni_spusteni

Pro připojení ale budeme potřebovat heslo pro uživatele „postgres“ (tento uživatel je vytvořen při instalaci PostgreSQL). Pokud heslo nevíte, přihlásíme se do psql (konzolová aplikace pro práci s PostgreSQL) uživatelem „postgres“ .

Číst dálInstalace PostgreSQL a pgAdmin3 na Lubuntu

Přejmenování sloupce v PostgreSQL

Přejmenování sloupce je velmi podobné vytvoření nového sloupce, které bylo popsáno v tomto příspěvku. Opět se používá příkaz ALTER TABLE jen místo ADD je RENAME. Syntaxe příkazu je následující.

ALTER TABLE nazev_tabulky RENAME COLUMN puvodni_nazev_sloupce TO novy_nazev_sloupce

Nejdříve si vytvoříme tabulku s daty a následně pak přejmenujeme její sloupce.

drop table if exists pokus;
create table pokus (
	id serial not null,
	name varchar(100) not null,

	primary key (id)
);

insert into pokus (name) values ('jnovak'), ('vlasak'), ('kvetinka');

Takto se provede přejmenování sloupců.

alter table pokus rename column id to id_pokus;
alter table pokus rename column name to username;

Přidání sloupce v PostgreSQL

Pokud máte existující tabulku a potřebujete do ní přidat sloupec a nechcete celou tabulku dropnout a vytvořit znovu, protože byste přišli o data, existuje v postgre příkaz ALTER TABLE ADD COLUMN.

Vytvoříme pokusnou tabulku.

create table pok (
	id	serial		not null,
	jmeno	varchar(100)	not null,

	primary key (id)
);

Přidáme do ní sloupec z názvem prijmeni a omezením (contraint) not null.

alter table pok
add column prijmeni varchar(100) not null;

Vložíme do tabulky dva záznamy.

insert into pok (jmeno, prijmeni) values
	('František', 'Koudelka'),
	('Jana', 'Nová');

Přidáme do tabulky sloupec narozen, který může být null.

alter table pok
add column narozen date;

Přidáme do tabulky sloupec prezdivka a jako výchozí hodnotu (pro ty které jsou null) použijeme řetězec lama.

alter table pok
add column prezdivka varchar(20) not null default 'lama';

Vložíme do tabulky další záznam.

insert into pok (jmeno, prijmeni, prezdivka) values
	('Tomáš', 'Nový', 'jouda');

Výsledek.

postres_pridani_sloupce

Omezení počtu vrácených záznamů pomocí LIMIT

Klíčové slovo LIMIT umožňuje omezit počet vrácených záznamů SQL dotazu. Dotaz s LIMIT vrátí určený počet záznamů nebo méně (pokud samotný dotaz vrací méně záznamů než je limit)

SELECT * FROM table_name LIMIT 10

Vrátí prvních deset záznamů.

SELECT * FROM table_name ORDER BY column_name ASC LIMIT 5

Vrátí prvních pět záznamů. Dotaz nejdříve nalezne všechny záznamy. Ty seřadí sestupně (ASC) a vrátí prvních pět.

S limitem se pojí další klíčové slovo a to OFFSET. To určuje, kolik nalezených záznamů se má přeskočit.

SELECT * FROM table_name LIMIT 5 OFFSET 10

Vrátí jedenáctý až patnáctý záznam četně. Prvních deset záznamů se přeskočí.

OFFSET je možné ale použít i samostatně bez LIMIT.

SELECT * FROM table_name OFFSET 10

Vrátí všechny záznamy od jedenáctého níže.

Pole v PostgreSQL

PostgreSQL umožňuje nastavit sloupec jako několika rozměrné pole. V tomto příspěvku ukážu vytvoření sloupců, které budou obsahovat jednorozměrné pole.

Vytvoření tabulky favorite a naplnění daty.

create table favorite (
	id serial not null,
	person_id int not null,
	favorite_names varchar(15)[],
	favorite_numbers int[],

	primary key(id)
);

insert into favorite (person_id, favorite_names, favorite_numbers) values
	(4, '{"Petr", "Anna"}', '{7, 11, 23, 999}'),
	(5, array['Alena'], '{1}'),
	(7, '{"Marie", "Aneta", "Petr"}', array[17, 24]),
	(9, array['Pankrác', 'Servác', 'Bonifác'], array[111, 13, 9, 2]);

Třetí sloupec obsahuje pole řetězců a čtvrtý sloupec pole celých čísel. Pole je možné vytvořit pomocí složených závorek a nebo pomocí konstruktoru ARRAY.


Zobrazení tabulky favorite.

select * from favorite;

postgresql_arrays_01


Vypsání záznamů, které mají první záznam v poli favorite_numbers větší, než druhý záznam.

select * from favorite where favorite_numbers[1] > favorite_numbers[2];

Vypíše třetí oblíbené jméno a druhé oblíbené číslo pro každý záznam.

select favorite_names[3] as "Třetí oblíbené jméno", favorite_numbers[2] as "Druhé oblíbené číslo" from favorite;

postgresql_arrays_02


Zobrazí pro každý záznam počet položek v poli favorite_names (počet oblíbených jmen).

select array_length(favorite_names, 1) as pocet_oblibenych_jmen from favorite;

Zdroje:

View tables v PostgreSQL

Databáze v PostgreSQL obsahuje informační schéma (information_schema) ve kterém jsou různé pohledy (view), ze kterých lze získat informace o objektech v databázi. View information_schema.tables obsahuje informace o všech tabulkách (tables) a pohledech (views) v aktuální databázi.

select * from information_schema.tables;

Výpis celého pohledu information_schema.tables.

select * from information_schema.tables where table_schema = 'public';

Výpis všech informací o tabulkách a pohledech ve schématu public.

select * from information_schema.tables where table_schema = 'nazev_schematu';

Výpis všech informací o tabulkách a pohledech ve schématu s názvem nazev_schematu.

select table_name from information_schema.tables where table_type = 'VIEW';

Výpis všech pohledů (názvů pohledů) v aktuální databázi.

select table_name from information_schema.tables where table_type = 'BASE TABLE';

Výpis všech tabulek (názvů tabulek) v aktuální databázi.

Jak najít tabulky obsahující určité sloupce v PostgreSQL

Může se stát, že víte název sloupce, ale nevíte, v jaké tabulce se tento sloupec nachází. Informace o objektech databáze lze v PostgreSQL nalézt ve schématu information_schema.

Informační schéma (information schema) je množina pohledů (views), které obsahují informace o objektech v databázi. Informace o sloupcích lze nalézt v information_schema.columns view. Zdroj: postgresql.org/…/information-schema.html

Následující select vrátí názvy tabulek, které obsahují sloupce s názvem nazev_sloupce.

select table_name from information_schema.columns where column_name like 'nazev_sloupce'

Daný pohled (information_schema.columns) obsahuje řadu dalších informací např. datový typ sloupce.