SQLize
Online
/
PHPize Online
/
SQLtest Online
A
A
A
Share
Donate
Blog
Popular
Donate
A
A
A
Share
Blog
Popular
SQLize.online is a free online SQL environment for quickly running, experimenting with and sharing code.
You can run your SQL code on top of the most popular RDBMS including MySQL, MariaDB, SQLite, PostgreSQL, Oracle and Microsoft SQL Server.
SQL code:
Upload
Copy
Format
Clear
-- IDS projekt 2024 -- Cast 3 - SQL skript -- Autor: xsamoi00 & xmiron05 -- -------------------------------------------- -- ------------------ Drop -------------------- -- -------------------------------------------- -- Drop check constraints ALTER TABLE Zlodej DROP CONSTRAINT check_stav; ALTER TABLE Zlocin DROP CONSTRAINT check_mira_obtiznosti; ALTER TABLE Typ_Zlocinu DROP CONSTRAINT check_mira_obtiznosti_provedeni; ALTER TABLE Typ_Zlocinu DROP CONSTRAINT check_mira_obtiznosti_proskoleni; ALTER TABLE Rajon DROP CONSTRAINT check_pocet_lidi; ALTER TABLE Rajon DROP CONSTRAINT check_kapacita_zlodeju; ALTER TABLE Okres DROP CONSTRAINT check_pocet_rajonu; -- Drop klíčů ALTER TABLE Zlodej_Zlocin DROP CONSTRAINT FK_Zlodej_Zlocin_Zlodej; ALTER TABLE Zlodej_Zlocin DROP CONSTRAINT FK_Zlodej_Zlocin_Zlocin; ALTER TABLE Zlocin_Okres DROP CONSTRAINT FK_Zlocin_Okres_Zlocin; ALTER TABLE Zlocin_Okres DROP CONSTRAINT FK_Zlocin_Okres_Okres; ALTER TABLE Zlodej_Vybaveni DROP CONSTRAINT FK_Zlodej_Vybaveni_Zlodej; ALTER TABLE Zlodej_Vybaveni DROP CONSTRAINT FK_Zlodej_Vybaveni_Vybaveni; -- Drop vztahu ALTER TABLE Zlodej DROP CONSTRAINT FK_Zlodej_Povoleni; ALTER TABLE Zlodej DROP CONSTRAINT FK_Zlodej_TypVybaveni; ALTER TABLE Zlodej DROP CONSTRAINT FK_Zlodej_TypZlocinu; ALTER TABLE Zlodej DROP CONSTRAINT FK_Zlodej_Okres; ALTER TABLE Zlodej DROP CONSTRAINT FK_Zlodej_Rajon; ALTER TABLE Zlocin DROP CONSTRAINT FK_Zlocin_TypZlocinu; ALTER TABLE Vybaveni DROP CONSTRAINT FK_Vybaveni_TypVybaveni; ALTER TABLE Zlocin DROP CONSTRAINT FK_Zlocin_Povoleni; ALTER TABLE Povoleni DROP CONSTRAINT FK_Povoleni_TypZlocinu; ALTER TABLE Typ_Zlocinu DROP CONSTRAINT FK_TypZlocinu_TypVybaveni; ALTER TABLE Rajon DROP CONSTRAINT FK_Rajon_Okres; -- Drop tabulek DROP TABLE Zlodej; DROP TABLE Zlocin; DROP TABLE Typ_Zlocinu; DROP TABLE Vybaveni; DROP TABLE Typ_Vybaveni; DROP TABLE Okres; DROP TABLE Rajon; DROP TABLE Povoleni; DROP TABLE Zlodej_Zlocin; DROP TABLE Zlocin_Okres; DROP TABLE Zlodej_Vybaveni; -- -------------------------------------------- -- -----------Vytvoření tabulek---------------- -- -------------------------------------------- CREATE TABLE Zlodej ( id NUMBER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY, RealneJmeno VARCHAR(50) NOT NULL, Prezdivka VARCHAR(50) NOT NULL, Vek INT NOT NULL, Stav VARCHAR(50) NOT NULL, Vypsana_odmena INT NOT NULL, -- Provedení vztahu s tabulkami Kod_povoleni INT, Kod_typu_vybaveni INT, Kod_typu_zlocinu INT, Kod_rajonu INT, Kod_okresu INT ); CREATE TABLE Zlocin ( Kod_zlocinu NUMBER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY, Datum DATE NOT NULL, Mira_obtiznosti INT NOT NULL, Zasazene_koristi VARCHAR(100) NOT NULL, -- Provedení vztahu s tabulkami Kod_typu_zlocinu INT, Kod_povoleni INT ); CREATE TABLE Typ_Zlocinu ( Kod_typu_zlocinu NUMBER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY, Nazev_typu VARCHAR(100) NOT NULL, Popis VARCHAR(100) NOT NULL, Mira_obtiznosti_provedeni INT NOT NULL, Mira_obtiznosti_proskoleni INT NOT NULL, -- Provedení vztahu s tabulkami Kod_typu_vybaveni INT ); CREATE TABLE Vybaveni ( Kod_vybaveni NUMBER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY, Nazev_vybaveni VARCHAR(100) NOT NULL, -- Provedení vztahu s tabulkami Kod_typu_vybaveni INT ); CREATE TABLE Typ_Vybaveni ( Kod_typu_vybaveni NUMBER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY, Nazev_typu_vybaveni VARCHAR(100) NOT NULL ); CREATE TABLE Okres ( Kod_okresu NUMBER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY, Nazev_Okresu VARCHAR(100) NOT NULL, Pocet_rajonu INT NOT NULL ); CREATE TABLE Rajon ( Kod_rajonu NUMBER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY, Nazev_rajonu VARCHAR(100) NOT NULL, Pozice VARCHAR(100) NOT NULL, Pocet_lidi INT NOT NULL, Celkove_dostupne_bohatstvi VARCHAR(100) NOT NULL, Kapacita_zlodeju INT NOT NULL, -- Provedení vztahu s tabulkami Kod_okresu INT -- Patrí do okresu, dolu je vytvořen vztah ); CREATE TABLE Povoleni ( Kod_povoleni NUMBER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY, -- Provedení vztahu s tabulkami Kod_typu_zlocinu INT ); -- -------------------------------------------- -- ------------Vytvoření vztahů---------------- -- -------------------------------------------- -- Vztah mezi tabulkami Zlodej a Povoleni (1...N Zlodej(ů) může mít 0...N Povolení) ALTER TABLE Zlodej ADD CONSTRAINT FK_Zlodej_Povoleni FOREIGN KEY (Kod_povoleni) REFERENCES Povoleni(Kod_povoleni) ON DELETE SET NULL; -- Vztah mezi tabulkami Zlodej a Typ_Vybaveni (0...N Zlodej(ů) může byt proškolen pro 0...N Vybevení) ALTER TABLE Zlodej ADD CONSTRAINT FK_Zlodej_TypVybaveni FOREIGN KEY (Kod_typu_vybaveni) REFERENCES Typ_Vybaveni(Kod_typu_vybaveni) ON DELETE SET NULL; -- Vztah mezi tabulkami Zlodej a Typ_Zlocinu (0...N Zlodej(ů) může být proškolen pro 0...N Zlocin(ů)) ALTER TABLE Zlodej ADD CONSTRAINT FK_Zlodej_TypZlocinu FOREIGN KEY (Kod_typu_zlocinu) REFERENCES Typ_Zlocinu(Kod_typu_zlocinu) ON DELETE SET NULL; -- Vztah mezi tabulkami Zlodej a Okres (0...N Zlodej(ů) může pohybovat v 0...N Okres(ů)) ALTER TABLE Zlodej ADD CONSTRAINT FK_Zlodej_Okres FOREIGN KEY (Kod_okresu) REFERENCES Okres(Kod_okresu) ON DELETE SET NULL; -- Vztah mezi tabulkami Zlodej a Rajon (0...N Zlodej(ů) eviduje 0...N Rajon(ů)) ALTER TABLE Zlodej ADD CONSTRAINT FK_Zlodej_Rajon FOREIGN KEY (Kod_rajonu) REFERENCES Rajon(Kod_rajonu) ON DELETE SET NULL; -- Vztah mezi tabulkami Okres a Rajon - Rajon je v okresu, maji vztah Specializace/Generalizace ALTER TABLE Rajon ADD CONSTRAINT FK_Rajon_Okres FOREIGN KEY (Kod_okresu) REFERENCES Okres(Kod_okresu) ON DELETE SET NULL; -- Vztah mezi tabulkami Zlocin a Typ_Zlocinu (0...N Zlocin(ů) může mít 1 Typ_Zlocinu) ALTER TABLE Zlocin ADD CONSTRAINT FK_Zlocin_TypZlocinu FOREIGN KEY (Kod_typu_zlocinu) REFERENCES Typ_Zlocinu(Kod_typu_zlocinu) ON DELETE SET NULL; -- Vztah mezi tabulkami Vybaveni a Typ_Vybaveni (0...N Vybaveni může mít 1 Typ_Vybaveni) ALTER TABLE Vybaveni ADD CONSTRAINT FK_Vybaveni_TypVybaveni FOREIGN KEY (Kod_typu_vybaveni) REFERENCES Typ_Vybaveni(Kod_typu_vybaveni) ON DELETE SET NULL; -- Vztah mezi tabulkami Zlocin a Povoleni (0...1 Zlocin může byt proveden na zakladě 1 Povoleni) ALTER TABLE Zlocin ADD CONSTRAINT FK_Zlocin_Povoleni FOREIGN KEY (Kod_povoleni) REFERENCES Povoleni(Kod_povoleni) ON DELETE SET NULL; -- Vztah mezi tabulkami Povoleni a Typ_Zlocinu (0...N Zlocin(ů) může být vydano na 1 Typ_Zlocinu) ALTER TABLE Povoleni ADD CONSTRAINT FK_Povoleni_TypZlocinu FOREIGN KEY (Kod_typu_zlocinu) REFERENCES Typ_Zlocinu(Kod_typu_zlocinu) ON DELETE SET NULL; -- Vztah mezi tabulkami Typ_Zlocinu a Typ_Vybaveni (0...N Typ_Zlocinu vyžaduje 0...N Typ_Vybaveni) ALTER TABLE Typ_Zlocinu ADD CONSTRAINT FK_TypZlocinu_TypVybaveni FOREIGN KEY (Kod_typu_vybaveni) REFERENCES Typ_Vybaveni(Kod_typu_vybaveni) ON DELETE SET NULL; -- Vztah mezi tabulkami Zlodej a Zlocin (1...N Zlodej(ů) může provest 0...N Zlocin(ů)) CREATE TABLE Zlodej_Zlocin ( Kod_zlodeje INT NOT NULL, Kod_zlocinu INT NOT NULL, CONSTRAINT PK_Zlodej_Zlocin PRIMARY KEY (Kod_zlodeje, Kod_zlocinu), CONSTRAINT FK_Zlodej_Zlocin_Zlodej FOREIGN KEY (Kod_zlodeje) REFERENCES Zlodej(id) ON DELETE SET NULL, CONSTRAINT FK_Zlodej_Zlocin_Zlocin FOREIGN KEY (Kod_zlocinu) REFERENCES Zlocin(Kod_zlocinu) ON DELETE SET NULL ); -- Vztah mezi tabulkami Zlocin a Okres (0...N Zlocin(ů) může byt provedeno v 1...N Okres(ů)) CREATE TABLE Zlocin_Okres ( Kod_zlocinu INT NOT NULL, Kod_okresu INT NOT NULL, constraint PK_Zlocin_Okres PRIMARY KEY (Kod_zlocinu, Kod_okresu), constraint FK_Zlocin_Okres_Zlocin FOREIGN KEY (Kod_zlocinu) REFERENCES Zlocin(Kod_zlocinu) ON DELETE SET NULL, constraint FK_Zlocin_Okres_Okres FOREIGN KEY (Kod_okresu) REFERENCES Okres(Kod_okresu) ON DELETE SET NULL ); -- vztah mezi tabulkami Zlodej a Vybaveni (0...1 Zlodej(ů) může vlastnit 0...N Vybavení a musí mít obdobi vlastnosti (datum_od, datum_do)) CREATE TABLE Zlodej_Vybaveni ( Kod_zlodeje INT NOT NULL, Kod_vybaveni INT NOT NULL, Datum_od DATE NOT NULL, Datum_do DATE NOT NULL, CONSTRAINT PK_Zlodej_Vybaveni PRIMARY KEY (Kod_zlodeje, Kod_vybaveni, Datum_od, Datum_do), CONSTRAINT FK_Zlodej_Vybaveni_Zlodej FOREIGN KEY (Kod_zlodeje) REFERENCES Zlodej(id) ON DELETE SET NULL, CONSTRAINT FK_Zlodej_Vybaveni_Vybaveni FOREIGN KEY (Kod_vybaveni) REFERENCES Vybaveni(Kod_vybaveni) ON DELETE SET NULL ); -- --------------------------------------------------------- -- ----------------Check constraints------------------------ -- --------------------------------------------------------- -- Check constraint pro tabulku Zlodej ALTER TABLE Zlodej ADD CONSTRAINT check_stav CHECK (Stav IN ('zivy', 'mrtvy')); -- Check constraint pro tabulku Zlocin ALTER TABLE Zlocin ADD CONSTRAINT check_mira_obtiznosti CHECK (Mira_obtiznosti BETWEEN 1 AND 10); -- Check constraint pro tabulku Typ_Zlocinu ALTER TABLE Typ_Zlocinu ADD CONSTRAINT check_mira_obtiznosti_provedeni CHECK (Mira_obtiznosti_provedeni BETWEEN 1 AND 10); -- Check constraint pro tabulku Typ_Zlocinu ALTER TABLE Typ_Zlocinu ADD CONSTRAINT check_mira_obtiznosti_proskoleni CHECK (Mira_obtiznosti_proskoleni BETWEEN 1 AND 10); -- Check constraint pro tabulku Rajon ALTER TABLE Rajon ADD CONSTRAINT check_pocet_lidi CHECK (Pocet_lidi > 0); -- Check constraint pro tabulku Rajon ALTER TABLE Rajon ADD CONSTRAINT check_kapacita_zlodeju CHECK (Kapacita_zlodeju > 0); -- Check constraint pro tabulku Okres ALTER TABLE Okres ADD CONSTRAINT check_pocet_rajonu CHECK (Pocet_rajonu > 0); -- --------------------------------------------------------- -- -----------------------Insert---------------------------- -- --------------------------------------------------------- -- insert do tabulky Zlodej INSERT INTO Zlodej (id, RealneJmeno, Prezdivka, Vek, Stav, Vypsana_odmena, Kod_povoleni, Kod_typu_vybaveni, Kod_typu_zlocinu, Kod_rajonu, Kod_okresu) VALUES (2, 'Anastasiia Samoilova', 'Rychlá', 28, 'zivy', 1000000, NULL, NULL, NULL, NULL, NULL); INSERT INTO Zlodej (id, RealneJmeno, Prezdivka, Vek, Stav, Vypsana_odmena, Kod_povoleni, Kod_typu_vybaveni, Kod_typu_zlocinu, Kod_rajonu, Kod_okresu) VALUES (1, 'Anastasiia Mironova', 'Oxxxymiron', 35, 'zivy', 35000, NULL, NULL, NULL, NULL, NULL); INSERT INTO Zlodej (id, RealneJmeno, Prezdivka, Vek, Stav, Vypsana_odmena, Kod_povoleni, Kod_typu_vybaveni, Kod_typu_zlocinu, Kod_rajonu, Kod_okresu) VALUES (4, 'Maksim Dubrovkin', 'Dub', 35, 'mrtvy', 20000, NULL, NULL, NULL, NULL, NULL); -- insert do tabulky Zlocin INSERT INTO Zlocin (Kod_zlocinu, Datum, Mira_obtiznosti, Zasazene_koristi, Kod_typu_zlocinu, Kod_povoleni) VALUES (2, TO_DATE('2024-02-18', 'YYYY-MM-DD'), 8, 'Drahé šperky', NULL, NULL); INSERT INTO Zlocin (Kod_zlocinu, Datum, Mira_obtiznosti, Zasazene_koristi, Kod_typu_zlocinu, Kod_povoleni) VALUES (3, TO_DATE('2024-01-25', 'YYYY-MM-DD'), 6, 'Hotovost', NULL, NULL); -- insert do tabulky Zlodej_zlocin INSERT INTO Zlodej_zlocin (Kod_zlocinu, Kod_zlodeje) VALUES (2, 1); INSERT INTO Zlodej_zlocin (Kod_zlocinu, Kod_zlodeje) VALUES (3, 1); INSERT INTO Zlodej_zlocin (Kod_zlocinu, Kod_zlodeje) VALUES (3, 2); INSERT INTO Zlodej_zlocin (Kod_zlocinu, Kod_zlodeje) VALUES (3, 4); -- insert do tabulky Typ_Zlocinu INSERT INTO Typ_Zlocinu (Nazev_typu, Popis, Mira_obtiznosti_provedeni, Mira_obtiznosti_proskoleni) VALUES ('Loupež', 'Okradení bohatých osob', 8, 6); INSERT INTO Typ_Zlocinu (Nazev_typu, Popis, Mira_obtiznosti_provedeni, Mira_obtiznosti_proskoleni) VALUES ('Krádež', 'Neoprávněné obohacení', 5, 4); -- insert do tabulky Typ_Vybaveni INSERT INTO Typ_Vybaveni (Nazev_typu_vybaveni) VALUES ('Chirurgické nástroje'); INSERT INTO Typ_Vybaveni (Nazev_typu_vybaveni) VALUES ('Technické vybavení'); -- insert do tabulky Vybaveni INSERT INTO Vybaveni (Nazev_vybaveni, Kod_typu_vybaveni) VALUES ('Skalpel', 1); INSERT INTO Vybaveni (Nazev_vybaveni, Kod_typu_vybaveni) VALUES ('Laserový řezák', 2); -- insert do tabulky Okres INSERT INTO Okres (Kod_okresu, Nazev_Okresu, Pocet_rajonu) VALUES (1, 'Praha', 2); Insert into Okres (Kod_okresu, Nazev_Okresu, Pocet_rajonu) VALUES (2, 'Brno', 1); -- insert do tabulky Rajon INSERT INTO Rajon (Kod_rajonu, Nazev_rajonu, Pozice, Pocet_lidi, Celkove_dostupne_bohatstvi, Kapacita_zlodeju, Kod_okresu) VALUES (228, 'Staré Město', 'Centrum', 10000, 'Vysoké', 50, 1); INSERT INTO Rajon (Kod_rajonu, Nazev_rajonu, Pozice, Pocet_lidi, Celkove_dostupne_bohatstvi, Kapacita_zlodeju, Kod_okresu) VALUES (999, 'Nové Město', 'Okraj', 15000, 'Střední', 80, 1); -- insert do tabulky Povoleni INSERT INTO Povoleni (Kod_typu_zlocinu) VALUES (1); INSERT INTO Povoleni (Kod_typu_zlocinu) VALUES (2); -- Typ_Zlocinu INSERT INTO Typ_Zlocinu (Nazev_typu, Popis, Mira_obtiznosti_provedeni, Mira_obtiznosti_proskoleni, Kod_typu_vybaveni) VALUES ('Bank Robbery', 'Stealing money from a bank', 8, 7, 2); -- Vybaveni INSERT INTO Vybaveni (Nazev_vybaveni, Kod_typu_vybaveni) VALUES ('Lock Pick', 2); -- Zlodej_Vybaveni INSERT INTO Zlodej_Vybaveni (Kod_zlodeje, Kod_vybaveni, Datum_od, Datum_do) VALUES (1, 1, TO_DATE('2024-01-01', 'YYYY-MM-DD'), TO_DATE('2024-12-31', 'YYYY-MM-DD')); INSERT INTO Zlodej_Vybaveni (Kod_zlodeje, Kod_vybaveni, Datum_od, Datum_do) VALUES (4, 2, TO_DATE('2024-01-01', 'YYYY-MM-DD'), TO_DATE('2024-12-31', 'YYYY-MM-DD')); -- Rajon INSERT INTO Rajon (Nazev_rajonu, Pozice, Pocet_lidi, Celkove_dostupne_bohatstvi, Kapacita_zlodeju, Kod_okresu) VALUES ('Downtown', 'City Center', 100000, 'High', 50, 2); INSERT INTO Zlodej (id, RealneJmeno, Prezdivka, Vek, Stav, Vypsana_odmena, Kod_povoleni, Kod_typu_vybaveni, Kod_typu_zlocinu, Kod_rajonu, Kod_okresu) VALUES (7, 'Ludmila Lubov', 'Hloupa', 47, 'zivy', 8000, NULL, 2, 1, 228, 1); INSERT INTO Zlodej_Vybaveni (Kod_zlodeje, Kod_vybaveni, Datum_od, Datum_do) VALUES ( (SELECT id FROM Zlodej WHERE Prezdivka = 'Rychlá'), -- Získání ID zloděje pomocí jeho přezdívky (SELECT Kod_vybaveni FROM Vybaveni WHERE Nazev_vybaveni = 'Skalpel'), -- Získání ID vybavení pomocí názvu TO_DATE('2024-01-01', 'YYYY-MM-DD'), -- Datum začátku vlastnictví vybavení TO_DATE('2024-12-31', 'YYYY-MM-DD') -- Datum konce vlastnictví vybavení ); -- -------------------------------------------- -- -------------- SELECT ----------------- -- -------------------------------------------- -- Hledáme Střední odměnu za zlodeju grouped by věk SELECT vek, AVG(Vypsana_odmena) FROM Zlodej GROUP BY vek; -- Hledáme Jmeno Zlodeje, které udělali zločin 2024-01-25 SELECT Zlodej.RealneJmeno, Zlocin.DATUM FROM Zlodej_zlocin JOIN Zlodej ON Zlodej.id = Zlodej_zlocin.Kod_zlodeje JOIN Zlocin ON Zlocin.kod_zlocinu = Zlodej_zlocin.Kod_zlocinu WHERE Zlocin.Datum = TO_DATE('2024-01-25', 'YYYY-MM-DD'); -- Dotaz 1: SELECT с JOIN -- Hledáme Jmeno Zlodeje a jeho Rajon SELECT Zlodej.RealneJmeno, Rajon.Nazev_rajonu FROM Zlodej JOIN Rajon ON Zlodej.Kod_rajonu = Rajon.Kod_rajonu; -- Dotaz 2: SELECT с JOIN -- Hledáme Jmeno Zlodeje, Typ Zlocinu a Rajon SELECT Zlodej.RealneJmeno, Typ_Zlocinu.Nazev_typu, Rajon.Nazev_rajonu FROM Zlodej JOIN Typ_Zlocinu ON Zlodej.Kod_typu_zlocinu = Typ_Zlocinu.Kod_typu_zlocinu JOIN Rajon ON Zlodej.Kod_rajonu = Rajon.Kod_rajonu; -- Dotaz 3: SELECT с GROUP BY -- Hledáme Jmeno Zlodeje a počet zločinů, které spáchal SELECT Zlodej.RealneJmeno, COUNT(Zlodej_Zlocin.Kod_zlocinu) AS Pocet_zlocinu FROM Zlodej LEFT JOIN Zlodej_Zlocin ON Zlodej.id = Zlodej_Zlocin.Kod_zlodeje GROUP BY Zlodej.RealneJmeno; -- Dotaz 5: SELECT s EXISTS -- Hledáme Jmeno Zlodeje, který má vybavení SELECT RealneJmeno FROM Zlodej WHERE EXISTS ( SELECT 1 FROM Zlodej_Vybaveni WHERE Zlodej.id = Zlodej_Vybaveni.Kod_zlodeje ); -- Dotaz 6: Hledáme Jmeno Zlodeje, který má vybavení a jeho vybavení SELECT Nazev_typu FROM Typ_Zlocinu WHERE Kod_typu_zlocinu IN ( SELECT DISTINCT Kod_typu_zlocinu FROM Povoleni ); -- 7. Dotaz na vypsání zlodějů, kteří mají vybavení typu 'Chirurgické nástroje' SELECT Zlodej.RealneJmeno, Zlodej.Prezdivka FROM Zlodej JOIN Zlodej_Vybaveni ON Zlodej.id = Zlodej_Vybaveni.Kod_zlodeje JOIN Vybaveni ON Zlodej_Vybaveni.Kod_vybaveni = Vybaveni.Kod_vybaveni JOIN Typ_Vybaveni ON Vybaveni.Kod_typu_vybaveni = Typ_Vybaveni.Kod_typu_vybaveni WHERE Typ_Vybaveni.Nazev_typu_vybaveni = 'Chirurgické nástroje'; -- Dotaz 8: SELECT s klauzulí GROUP BY a agregační funkcí -- Hledáme průměrný věk zlodějů podle stavu (živý/mrtvý) SELECT Stav, AVG(Vek) AS Prumerny_vek FROM Zlodej GROUP BY Stav; -- Dotaz 10: SELECT s predikátem EXISTS -- Hledáme Jmeno Zlodeje, který provedl alespoň jeden zločin SELECT RealneJmeno FROM Zlodej WHERE EXISTS ( SELECT 1 FROM Zlodej_Zlocin WHERE Zlodej.id = Zlodej_Zlocin.Kod_zlodeje ); -- --------------------------------------------------------- -- --------------------Triggers----------------------------- -- --------------------------------------------------------- -- Trigger pro vypočítání poocet zlodějů v rajonu CREATE OR REPLACE TRIGGER "pocet_zlodeju" AFTER INSERT OR DELETE OR UPDATE ON Zlodej FOR EACH ROW begin UPDATE Rajon SET Kapacita_zlodeju = ( SELECT COUNT(*) FROM Zlodej WHERE Zlodej.Kod_rajonu = Rajon.Kod_rajonu ) WHERE Rajon.Kod_rajonu = :new.Kod_rajonu; exception when no_data_found then null; end; -- Trigger pro vypočítání vypsané odměny: pokud ma 1 zlocin, tak vypsaná odměna je 10000, pokud ma 2 zlociny, tak 20000 atd. Pokud ma 0 zlocinu, tak vypsaná odměna je 3000 CREATE OR REPLACE TRIGGER "vypsana_odmena" AFTER INSERT OR DELETE OR UPDATE ON Zlodej_Zlocin FOR EACH ROW begin UPDATE Zlodej SET Vypsana_odmena = ( SELECT COUNT(*) FROM Zlodej_Zlocin WHERE Zlodej.id = Zlodej_Zlocin.Kod_zlodeje ) * 10000 + 3000 WHERE Zlodej.id = :new.Kod_zlodeje; exception when no_data_found then null; end;
SQL
Server:
MySQL 5.7
MySQL 5.7 Sakila (ReadOnly)
MySQL 8.0
MySQL 8.0 Sakila (ReadOnly)
MariaDB 11.5
SQLite 3
SQLite 3 Preloaded
PostgreSQL 10 Bookings (ReadOnly)
PostgreSQL 11
PostgreSQL 12
PostgreSQL 13
PostgreSQL 14
PostgreSQL 15
MS SQL Server 2017
MS SQL Server 2019
MS SQL Server 2022
MS SQL Server 2022 AdventureWorks (ReadOnly)
Firebird 4.0
Firebird 4.0 (Employee)
Oracle Database 19c (HR)
Oracle Database 21c
Oracle Database 23c Free
SOQOL
Version
ER Diagram
Preserve result
Stuck with a problem?
Got Error?
Ask ChatGPT!
Result:
Copy
Clear