Sql: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
Zeile 39: | Zeile 39: | ||
insert into sale values(5, 4, 500, '2016-11-22'); | insert into sale values(5, 4, 500, '2016-11-22'); | ||
insert into sale values(6, 4, 600, '2016-12-02'); | insert into sale values(6, 4, 600, '2016-12-02'); | ||
select sid, name, region, price from region r, person p, sale s | |||
where r.rid = p.rid and s.pid = p.pid; | |||
select name, count(*), sum(price) | |||
from region r, person p, sale s | |||
where r.rid = p.rid and s.pid = p.pid | |||
group by name; | |||
Huber 2 700 | |||
Seggele 2 11000 | |||
Mayer 2 300 | |||
select name, count(*), sum(price) | |||
from region r, person p, sale s | |||
where r.rid = p.rid and s.pid = p.pid | |||
group by name having price > 500; | |||
Seggele 2 11000 | |||
</pre> | </pre> | ||
Version vom 2. Februar 2017, 22:16 Uhr
Tipps und Tricks
Tabelle kopieren:
create table person_backup as select * from person;
Zurückkopieren:
truncate person; insert into person select * from person_backup;
Test-DB
create table region ( rid integer primary key, region varchar(64) ); create table person ( pid integer primary key, name varchar(64), rid integer references region(rid) ); create table sale ( sid integer primary key, pid integer references person(pid), price numeric(13,2), time date ); insert into region values(1, 'Baden-Würtemberg'); insert into region values(2, 'Bayern'); insert into region values(3, 'Hessen'); insert into person values(1, 'Mayer', 2); insert into person values(2, 'Huber', 2); insert into person values(3, 'Schmidt', 3); insert into person values(4, 'Seggele', 1); insert into sale values(1, 1, 100, '2016-07-22'); insert into sale values(2, 1, 200, '2016-08-22); insert into sale values(3, 2, 300, '2016-09-03'); insert into sale values(4, 2, 400, '2016-10-09'); insert into sale values(5, 4, 500, '2016-11-22'); insert into sale values(6, 4, 600, '2016-12-02'); select sid, name, region, price from region r, person p, sale s where r.rid = p.rid and s.pid = p.pid; select name, count(*), sum(price) from region r, person p, sale s where r.rid = p.rid and s.pid = p.pid group by name; Huber 2 700 Seggele 2 11000 Mayer 2 300 select name, count(*), sum(price) from region r, person p, sale s where r.rid = p.rid and s.pid = p.pid group by name having price > 500; Seggele 2 11000
Sql-Developer
- Statistik aktualisieren:
- Kontextmenü auf Tabelle: "Statistiken erstellen"
- Query-Plan:
- Notepad: "select * from person where ix > 3 and ...;" markieren
- Icon "Explain plan" (F10)