Práce s databází PostgreSQL

Podrobnější dokumentaci naleznete v příručce k PHP a v dokumentaci k databázi PostgreSQL.

Základní příkazy SQL

CREATE TABLE jmeno_tab ( atribut1 typ_dat, atribut2 typ_dat, ...);
Vytvoření tabulky se sloupci s příslušným typem dat
DROP TABLE jmeno_tab;
Zrušení tabulky
INSERT INTO jmeno_tab (atribbut1, atribut2) VALUES (hodnota1, 'reterec1', hodnota2);
Vložení záznamu do tabulky. Není potřeba vkládat všechny atributy, stačí jen vyjmenované a jejich hodnoty. Pokud seznam atributů neuvedeme, je potřeba uvést hodnoty pro všechny atributy v tabulce.
DELETE FROM jmeno_tab WHERE výraz;
Smaže řádky z tabulky, které vyhovují výrazu.
UPDATE jmeno_tab SET atribut1=hodnota1, atribut2='retezec1' WHERE výraz;
Změna záznamů v tabulce, výraz specifikuje záznamy k modifikaci - např. jmeno='Huzva'
SELECT * FROM jmeno_tab WHERE výraz;
Vybere záznamy v tabulce, které vyhovují výrazu. Místo hvězdičky, která zastupuje všechny atributy z tabulky, lze jednotlivé požadované atributy vyjmenovat (oddělené čárkou).

Řádkový klient pro PostgreSQL

Řádkový klient se jmenuje psql. Bez parametrů se připojuje k databázi se stejným jménem, jako je jméno uživatele k SQL serveru na lokálním počítači. Změnit jméno databáze můžeme pomocí parametru. Pokud máme SQL server na jiném počítači, použijeme přepínač -h a za něj jméno počítače uvedeme. V našem případě se připojujeme k počítači se jménem sql a databáze je shodná se jménem uživatele. V příkladu zakládáme tabulku test:
pluto:~$ psql -h sql
Welcome to the POSTGRESQL interactive sql monitor:
  Please read the file COPYRIGHT for copyright terms of POSTGRESQL
[PostgreSQL 7.0.2 on i686-pc-linux-gnu, compiled by gcc egcs-2.91.66]

   type \? for help on slash commands
   type \q to quit
   type \g or terminate with semicolon to execute query
 You are currently connected to the database: kerslage

kerslage=> CREATE TABLE test (jmeno text, vek int);
CREATE
kerslage=> \d
Database    = kerslage
 +------------------+----------------------------------+----------+
 |  Owner           |             Relation             |   Type   |
 +------------------+----------------------------------+----------+
 | kerslage         | test                             | table    |
 +------------------+----------------------------------+----------+

kerslage=> DROP TABLE test;
DROP
kerslage=> \q
pluto:~$

Založení tabulek

V příkladech, které jsou uvedeny dále, jsou použity dvě tabulky: knihy a vypujcky. Tabulky byly vytvořeny následující posloupností příkazů:
CREATE TABLE knihy (nazev text, autor text, cena real, index int);
CREATE TABLE vypujcky (jmeno text, index int);
GRANT select ON knihy TO apache;
GRANT ALL ON knihy TO huzva;
GRANT select ON vypujcky TO apache;
GRANT ALL ON vypujcky TO huzva;
INSERT INTO knihy VALUES ('F. L. Vek', 'Jirasek', 130.5, 1);
INSERT INTO knihy VALUES ('Babicka', 'Nemcova', 60.3, 2);
INSERT INTO knihy VALUES ('Egyptan Sinuhet', 'Valtari', 90, 3);
INSERT INTO vypujcky VALUES ('Huzva', 1);
INSERT INTO vypujcky VALUES ('Huzva', 2);
INSERT INTO vypujcky VALUES ('Jane', 3);
Právo provádět přikazy SELECT nad našimi tabulkami dostal uživatel apache, protože z PHP skriptu přistupujeme k databázi pod tímto jménem (server Apache je spuštěn pod uživatelem apache). V okamžiku přidělení práv však musíme dát všechna práva i sami sobě (uživatel hužva).

Select vše

Následující příklad vybere a vypíše z tabulek všechny záznamy:

Select výběr

Následující příklad vybere z tabulky všechny záznamy o tom, které knihy má vypůjčeny Hužva:

Select výběr s propojením

Následující příklad vybere z tabulky všechny záznamy o tom, které knihy má vypůjčeny Hužva jako v minulém případě, avšak zároveň místo indexu vybere z tabulky knihy i příslušný název knihy a autora a vytiskne je: