Require('lib.php'); ?>
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).
Následující příklad vybere a vypíše z tabulek všechny záznamy:
insert_file("datab-select1.php") ?>
Následující příklad vybere z tabulky všechny záznamy o tom,
které knihy má vypůjčeny Hužva:
insert_file("datab-select2.php") ?>
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:
insert_file("datab-select3.php") ?>