PostgreSQL SQL
Allikas: Kuutõrvaja
Sisukord
Sissejuhatus
TODO
Andmebaasi klientprogramm
Reeglina sisaldab andmebaasitarkvara lisaks andmebaasi serverile ka mingit terminalil kasutatavat nö käsurea klientprogrammi, nt PostgreSQL puhul on selleks programm psql.
- andmebaasi kliendi kasutamine kalkulaatorina
select (5 * 5);
?column?
----------
25
(1 row)
- andmebaasi klient töötab sõnedega
select 'Hello' || ' World!'; ?column? -------------- Hello World! (1 row)
- Andmebaasi kliendi juures saab määrata esituse formaati, nt (vaikimisi on see aligned)
\pset format html
Select
select lausega saab lihtsamal juhul kasutada andmebaasis kirjeldatud funktsioone, nt
select sqrt(25);
Andmetüübid
TODO
Sekventsid
TODO
Join
TODO
Mõisted
- result set - vastus andmebaasile esitatud päringule, või sisaldada mitte midagi, ühte või enamat rida
Misc laused
- tabel ühte tehtud päringu tulemuste lisamine tabel kahte
insert into tabel2 (nimi, aadress) select nimi, aadress from tabel1
- Andmete kopeerimine failisüsteemi
copy customers to '/tmp/customers.txt';
- Andmete kopeerimine failisüsteemist
copy customers from '/tmp/customers.txt';
Indeksid
TODO
Vaated
TODO
Transaktsioon
TODO
Jõudlus
explain verbose select * from teenused where nimi='teenuse nimi_O_13437';
QUERY PLAN
----------------------------------------------------------------------------
Bitmap Heap Scan on teenused2 (cost=6.60..196.17 rows=48 width=48)
Output: id, nimi, aadress
Recheck Cond: ((nimi)::text = 'teenuse nimi_O_13437'::text)
-> Bitmap Index Scan on teenused_idx (cost=0.00..6.59 rows=48 width=0)
Index Cond: ((nimi)::text = 'teenuse nimi_O_13437'::text)
Trigger
TODO
Protseduurilised keeled
Nt PL/pgSQL on üks PostgreSQL andmebaasi protseduuriline keel.
$ createlang -h 127.0.0.1 -U postgres plpgsql movies
Ja tulemuse kontrollimiseks
movies=# select * from pg_language ; lanname | lanowner | lanispl | lanpltrusted | lanplcallfoid | lanvalidator | lanacl ----------+----------+---------+--------------+---------------+--------------+-------- internal | 10 | f | f | 0 | 2246 | c | 10 | f | f | 0 | 2247 | sql | 10 | f | t | 0 | 2248 | plpgsql | 10 | t | t | 16446 | 16447 | (4 rows)
Faktoriaali arvutamise kirjeldab nt selline PL/pgSQL funktsioon, kusjuures tegu on rekursiivse funktsiooniga
CREATE OR REPLACE FUNCTION my_factorial( value INTEGER) RETURNS INTEGER AS $$
DECLARE
arg INTEGER;
BEGIN
arg := value;
IF arg IS NULL OR arg < 0 THEN
RAISE NOTICE 'Invalid Number' ;
RETURN NULL;
ELSE
IF arg = 1 THEN
RETURN 1;
ELSE
DECLARE
next_value INTEGER;
BEGIN
next_value := my_factorial(arg - 1) * arg;
RETURN next_value;
END;
END IF;
END IF;
END;
$$ LANGUAGE 'plpgsql';
Funktsiooni kasutamiseks sobib öelda
select my_factorial();
Kursorite kasutamine
TODO
Kasulikud lisamaterjalid
- http://www.conjectrix.com/ - PostgreSQL, 2nd edition