1 of 23

Databáze v geoinformatice IX.

Mgr. Michal Jakl

ZS 2024

2 of 23

Obsah lekce

  1. SQL - doplnění
  2. PgAdmin – export a import
  3. Linie z bodů
  4. Výsledek jako desetinné číslo
  5. Procvičování SQL - interpretace

Praktické cvičení:

Viz výše

3 of 23

Vyhodnocení úkolu z minula

4 of 23

1. SQL – podmínky

CASE - WHEN – THEN – ELSE - END

  1. Začínáme příkazem CASE
  2. Následuje alespoň jedna dvojice WHEN/THEN příkazů (WHEN podmínka THEN hodnota);
  3. Příkaz ELSE je volitelný a poskytuje způsob, jak podchytit hodnoty, které nejsou uvedeny v části WHEN/THEN
  4. Příkaz END musí být na konci a ukončujeme tím výraz;
    1. Pokud není ELSE definováno je pro varianty, které nejsou uvedeny ve WHEN/THEN predikátech, je vrácena hodnota NULL

Zdroj: https://biportal.cz/sql-case-when-then-else/

Kde se dá použít? 

  • SELECT – podmíněnou logikou vrátíte nadefinované hodnoty
  • WHERE – lze použít i k definování podmínky
  • Agregace – výsledek můžete zabalit do agregačních funkcí
  • GROUP BY – pokud definujete nějakou agregaci přes pole definované přes CASE, můžete umístit samotný case do GROUP BY
  • ORDER – pomocí case lze seřadit výsledky

5 of 23

1. SQL – aktuální datum a čas

SELECT

current_timestamp::date AS my_date,

current_timestamp::time AS my_time;

Current year: SELECT date_part('year', (SELECT current_timestamp));

Current month: SELECT date_part('month', (SELECT current_timestamp));

Current day: SELECT date_part('day', (SELECT current_timestamp));

Current hour: SELECT date_part('hour', (SELECT current_timestamp));

Current minute: SELECT date_part('minute', (SELECT current_timestamp));

Current second: SELECT date_part('second', (SELECT current_timestamp));

Výsledek je stejný jako při použití EXTRACT. Rozdíl je spíše ve stylu zápisu – EXTRACT je součást SQL standardu, zatímco DATE_PART je PostgreSQL-specifická.

6 of 23

1. SQL – REFERENCES

Klauzule REFERENCES se používá v rámci definice cizího klíče, aby se vytvořil odkaz mezi dvěma tabulkami. To zajišťuje, že hodnota sloupce (nebo kombinace sloupců) v jedné tabulce odpovídá existující hodnotě ve sloupci primárního klíče v jiné (nebo stejné) tabulce.

  • Tabulka tabulka2 má cizí klíč sloupec3, který odkazuje na primární klíč sloupec1 v tabulce tabulka1.
  • Tento odkaz zajistí, že jakákoli hodnota vložená do sloupec3 v tabulka2 musí existovat v sloupec1 tabulky tabulka1.

Zajištění integrity dat: Nelze vložit do cizího klíče hodnotu, která neexistuje v primárním klíči cílové tabulky.

ON DELETE / ON UPDATE: Reference může být nastavena tak, aby reagovala na změny v cílové tabulce:

ON DELETE CASCADE: Pokud se řádek v cílové tabulce smaže, smažou se i odpovídající řádky v tabulce s cizím klíčem.

ON DELETE SET NULL: Pokud se řádek v cílové tabulce smaže, nastaví se hodnota cizího klíče na NULL.

ON UPDATE CASCADE: Pokud se hodnota primárního klíče změní, změní se i v tabulce s cizím klíčem.

7 of 23

1. SQL – časté chyby

  1. SQL Skript pouštíme nad špatnou databází – Invalid object name

  • Překlepy v SQL klauzulích nebo názvech objektů – Invalid object name/syntax

  • Čárka navíc – Incorrect syntax near the keyword
    1. Možná jste si všimli, že jednotlivé sloupce vždy odděluji čárkami na dalším řádku. Má to svůj důvod a jedná se o správný návyk při psaní kódu. SQL skripty se často musí ladit nebo v budoucnu revidovat/opravovat – často některé sloupce chceme zakomentovat. Pokud budeme jednotlivé sloupce oddělovat čárkou tímto způsobem a následně budem chtít sloupec zakomentovat, tak budeme muset vložit komentovací znak 2x (před čárku a před sloupec na dalším řádku). To je u velkých skriptů otravné a způsobuje to riziko chyb.

  • Chyby v logických operátorech AND a OR – (ne)používání závorek

  • Nepoužívání aliasů při joinech vede k chybě Ambiguous column name

Zdroj: https://biportal.cz/sql-dotazy-nejcastejsi-chyby-zacatecniku-v-sql-prikazech-pri-dotazovani/

8 of 23

2. PgAdmin – export a import

9 of 23

3. Linie z bodů

10 of 23

4. Výsledek jako desetinné číslo

= 0 !!!

18.75 =

CAST integer_value AS float;

11 of 23

5. Procvičování SQL - interpretace

Přeložte „do lidské řeči“ následující SQL skript = vysvětlete svými slovy, jaký úkon/úkony SŘBD při jeho interpretování provede:

12 of 23

5. Procvičování SQL - interpretace

Přeložte „do lidské řeči“ následující SQL skript = vysvětlete svými slovy, jaký úkon/úkony SŘBD při jeho interpretování provede:

Vypíše jako text geometrii zadaného polygonu v souřadném systému WGS-84

13 of 23

5. Procvičování SQL - interpretace

Přeložte „do lidské řeči“ následující SQL skript = vysvětlete svými slovy, jaký úkon/úkony SŘBD při jeho interpretování provede:

14 of 23

5. Procvičování SQL - interpretace

Přeložte „do lidské řeči“ následující SQL skript = vysvětlete svými slovy, jaký úkon/úkony SŘBD při jeho interpretování provede:

Vrátí „true“, pokud se daný bod a linie prostorově překrývají.

15 of 23

5. Procvičování SQL - interpretace

Přeložte „do lidské řeči“ následující SQL skript = vysvětlete svými slovy, jaký úkon/úkony SŘBD při jeho interpretování provede:

16 of 23

5. Procvičování SQL - interpretace

Přeložte „do lidské řeči“ následující SQL skript = vysvětlete svými slovy, jaký úkon/úkony SŘBD při jeho interpretování provede:

Vytvoří prostorový index nad sloupcem geom v tabulce tbl_buildings.

17 of 23

5. Procvičování SQL - interpretace

Přeložte „do lidské řeči“ následující SQL skript = vysvětlete svými slovy, jaký úkon/úkony SŘBD při jeho interpretování provede:

18 of 23

5. Procvičování SQL - interpretace

Přeložte „do lidské řeči“ následující SQL skript = vysvětlete svými slovy, jaký úkon/úkony SŘBD při jeho interpretování provede:

Vrátí konstantou vynásobenou vzdálenost v jednotkách souř. systému s EPSG 3857 pro dané geometrie zadané souřadnicemi WGS-84.

19 of 23

5. Procvičování SQL - interpretace

Přeložte „do lidské řeči“ následující SQL skript = vysvětlete svými slovy, jaký úkon/úkony SŘBD při jeho interpretování provede:

20 of 23

5. Procvičování SQL - interpretace

Přeložte „do lidské řeči“ následující SQL skript = vysvětlete svými slovy, jaký úkon/úkony SŘBD při jeho interpretování provede:

Vrátí obalovou zónu o šířce 10 jednotek se zaoblenými konci i lomovými body pro zadanou linii.

21 of 23

5. Procvičování SQL - interpretace

Přeložte „do lidské řeči“ následující SQL skript = vysvětlete svými slovy, jaký úkon/úkony SŘBD při jeho interpretování provede:

22 of 23

5. Procvičování SQL - interpretace

Přeložte „do lidské řeči“ následující SQL skript = vysvětlete svými slovy, jaký úkon/úkony SŘBD při jeho interpretování provede:

Vybere všechny okresy, které protíná spojnice měst Brno a Děčín.

23 of 23

Děkuji za pozornost a těším se příště!��Prostor pro zpětnou vazbu

mail@mjakl.cz

Tel. 608 544 839

Web: mjakl.cz

Telegram: t.me/mjakl_cz