Cvičná databáze OSDL

Z GeoWikiCZ

Tabulky

Cvičná databáze OSDL obsahuje tři tabulky

Pracoviste
kod
popis
Zamestnanci
id
jmeno
prijmeni
pracoviste_kod
vek
Mzdy
id
vlozeno
zamestnanec_id
castka

Příklady

Vypište seznam všech zaměstnanců.

id jmeno prijmeni pracoviste_kod vek
1 Pavel Stehule it 33
2 Radek Hirjak kc 32
3 Jan Pytel it 31
4 Zdenek Stehule vy 28
5 Lucie Kubikova sk 25
6 Tomas Zezula sk 45

Vypište jméno, příjmení a pracoviště všech zaměstnanců.

jmeno prijmeni popis
Pavel Stehule Informatika
Radek Hirjak Konstrukce
Jan Pytel Informatika
Zdenek Stehule Vyroba
Lucie Kubikova Sekretariat
Tomas Zezula Sekretariat

Vypište jméno, příjmení, částku, datum a popis všech zaměstnanců.

jmeno prijmeni castka vlozeno popis
Pavel Stehule 30000.00 2007-01-01 Informatika
Radek Hirjak 25000.00 2007-01-01 Konstrukce
Jan Pytel 28000.00 2007-01-01 Informatika
Zdenek Stehule 20000.00 2007-01-01 Vyroba
Lucie Kubikova 18000.00 2007-01-01 Sekretariat
Tomas Zezula 50000.00 2007-01-01 Sekretariat
Pavel Stehule 30000.00 2007-02-01 Informatika
Radek Hirjak 25000.00 2007-02-01 Konstrukce
Jan Pytel 30000.00 2007-02-01 Informatika
Zdenek Stehule 20000.00 2007-02-01 Vyroba
Lucie Kubikova 18000.00 2007-02-01 Sekretariat
Tomas Zezula 50000.00 2007-02-01 Sekretariat
Pavel Stehule 31000.00 2007-03-01 Informatika
Radek Hirjak 26000.00 2007-03-01 Konstrukce
Jan Pytel 31000.00 2007-03-01 Informatika
Zdenek Stehule 20000.00 2007-03-01 Vyroba
Lucie Kubikova 19000.00 2007-03-01 Sekretariat
Tomas Zezula 60000.00 2007-03-01 Sekretariat
Pavel Stehule 30500.00 2007-04-01 Informatika
Radek Hirjak 25000.00 2007-04-01 Konstrukce
Jan Pytel 28000.00 2007-04-01 Informatika
Zdenek Stehule 20000.00 2007-04-01 Vyroba
Lucie Kubikova 18000.00 2007-04-01 Sekretariat
Tomas Zezula 51000.00 2007-04-01 Sekretariat

Vypište jméno, příjmení, id všech zaměstnanců, jejichž pracoviště je it.

jmeno prijmeni id
Pavel Stehule 1
Jan Pytel 3

Vypište jméno, příjmení, částku všech zaměstnanců, jejichž měsíční příjem je vyšší než 30000.

jmeno prijmeni castka
Tomas Zezula 50000.00
Tomas Zezula 50000.00
Pavel Stehule 31000.00
Jan Pytel 31000.00
Tomas Zezula 60000.00
Pavel Stehule 30500.00
Tomas Zezula 51000.00

Vypište jméno, příjmení, částku všech zaměstnanců, jejichž měsíční příjem je vyšší než 20000, jejich příjmení je Stehule. Seřaďte je dle výše mzdy.

jmeno prijmeni castka
Pavel Stehule 30000.00
Pavel Stehule 30000.00
Pavel Stehule 30500.00
Pavel Stehule 31000.00

Vypište jméno, příjmení, částku všech zaměstnanců, kteří mají vyšší mzdu, než je průměrná.

jmeno prijmeni castka
Pavel Stehule 30000.00
Tomas Zezula 50000.00
Pavel Stehule 30000.00
Jan Pytel 30000.00
Tomas Zezula 50000.00
Pavel Stehule 31000.00
Jan Pytel 31000.00
Tomas Zezula 60000.00
Pavel Stehule 30500.00
Tomas Zezula 51000.00

Vypište, kolik zaměstnanců je na každém pracovišti.

count popis
2 Sekretariat
1 Konstrukce
0 Provoz
1 Vyroba
2 Informatika

Vypište zaměstnance, kteří v dubnu nedostali výplatu.

jmeno prijmeni
Lucie Kubikova

Skript

Skript pro založení cvičné databáze OSDL a naplnění tabulek je

DROP TABLE Pracoviste CASCADE;
DROP TABLE Zamestnanci CASCADE;
DROP TABLE Mzdy CASCADE;

CREATE TABLE Pracoviste(
  kod char(2) PRIMARY KEY,
  popis varchar(20) UNIQUE NOT NULL CHECK (popis <> '')
);

CREATE TABLE Zamestnanci(
  id SERIAL PRIMARY KEY,
  jmeno varchar(20) NOT NULL CHECK (jmeno <> ''),
  prijmeni varchar(20) NOT NULL CHECK (prijmeni <> ''),
  pracoviste_kod char(2) NOT NULL REFERENCES pracoviste(kod),
  vek integer NOT NULL CHECK(vek > 0)
);

CREATE TABLE Mzdy(
  id SERIAL PRIMARY KEY,
  vlozeno date NOT NULL DEFAULT(CURRENT_DATE),
  zamestnanec_id integer NOT NULL REFERENCES Zamestnanci(id),
  castka NUMERIC(8,2) NOT NULL CHECK (castka > 0.0)
);

INSERT INTO Pracoviste VALUES('kc','Konstrukce');
INSERT INTO Pracoviste VALUES('pr','Provoz');
INSERT INTO Pracoviste VALUES('sk','Sekretariat');
INSERT INTO Pracoviste VALUES('vy','Vyroba');
INSERT INTO Pracoviste VALUES('it','Informatika');

SELECT * FROM Pracoviste;

INSERT INTO Zamestnanci(jmeno, prijmeni, pracoviste_kod, vek) VALUES('Pavel', 'Stehule', 'it',33);
INSERT INTO Zamestnanci(jmeno, prijmeni, pracoviste_kod, vek) VALUES('Radek', 'Hirjak', 'kc', 32);
INSERT INTO Zamestnanci(jmeno, prijmeni, pracoviste_kod, vek) VALUES('Jan', 'Pytel', 'it', 31);
INSERT INTO Zamestnanci(jmeno, prijmeni, pracoviste_kod, vek) VALUES('Zdenek', 'Stehule', 'vy', 28);
INSERT INTO Zamestnanci(jmeno, prijmeni, pracoviste_kod, vek) VALUES('Lucie', 'Kubikova', 'sk', 25);
INSERT INTO Zamestnanci(jmeno, prijmeni, pracoviste_kod, vek) VALUES('Tomas', 'Zezula', 'sk', 45);

SELECT * FROM Zamestnanci;

INSERT INTO Mzdy VALUES(DEFAULT, '2007-01-01', 1, 30000);
INSERT INTO Mzdy VALUES(DEFAULT, '2007-01-01', 2, 25000);
INSERT INTO Mzdy VALUES(DEFAULT, '2007-01-01', 3, 28000);
INSERT INTO Mzdy VALUES(DEFAULT, '2007-01-01', 4, 20000);
INSERT INTO Mzdy VALUES(DEFAULT, '2007-01-01', 5, 18000);
INSERT INTO Mzdy VALUES(DEFAULT, '2007-01-01', 6, 50000);

INSERT INTO Mzdy VALUES(DEFAULT, '2007-02-01', 1, 30000);
INSERT INTO Mzdy VALUES(DEFAULT, '2007-02-01', 2, 25000);
INSERT INTO Mzdy VALUES(DEFAULT, '2007-02-01', 3, 30000);
INSERT INTO Mzdy VALUES(DEFAULT, '2007-02-01', 4, 20000);
INSERT INTO Mzdy VALUES(DEFAULT, '2007-02-01', 5, 18000);
INSERT INTO Mzdy VALUES(DEFAULT, '2007-02-01', 6, 50000);

INSERT INTO Mzdy VALUES(DEFAULT, '2007-03-01', 1, 31000);
INSERT INTO Mzdy VALUES(DEFAULT, '2007-03-01', 2, 26000);
INSERT INTO Mzdy VALUES(DEFAULT, '2007-03-01', 3, 31000);
INSERT INTO Mzdy VALUES(DEFAULT, '2007-03-01', 4, 20000);
INSERT INTO Mzdy VALUES(DEFAULT, '2007-03-01', 5, 19000);
INSERT INTO Mzdy VALUES(DEFAULT, '2007-03-01', 6, 60000);

INSERT INTO Mzdy VALUES(DEFAULT, '2007-04-01', 1, 30500);
INSERT INTO Mzdy VALUES(DEFAULT, '2007-04-01', 2, 25000);
INSERT INTO Mzdy VALUES(DEFAULT, '2007-04-01', 3, 28000);
INSERT INTO Mzdy VALUES(DEFAULT, '2007-04-01', 4, 20000);
INSERT INTO Mzdy VALUES(DEFAULT, '2007-04-01', 6, 51000);

SELECT * FROM Mzdy;