Geodatabáze.jecool.net

Lecture 3

Z3104 GEODATABÁZE

Obsah

  • Opakování
  • Trocha nové teorie
  • DIY - Do It Yourself

Opakování

DROP TABLE


DROP TABLE nazev_tabulky;
            

DELETE FROM


DELETE FROM nazev_tabulky
    WHERE podminka;
            

UPDATE


UPDATE nazev_tabulky
    SET nazev_sloupce = hodnota
    WHERE podminka;
            

Přidání primárního klíče


CREATE TABLE student (
    uco INT PRIMARY KEY,
    jmeno VARCHAR(10)
);
            

Integritní omezení - realizace


CREATE TABLE student (
    uco INT PRIMARY KEY,
    rodne_cislo VARCHAR(11) NOT NULL UNIQUE,
    jmeno VARCHAR(10),
    vek INT CHECK (vek > 0)
);
            

Trocha nové teorie

Série


CREATE TABLE student (
    id SERIAL PRIMARY KEY,
    jmeno VARCHAR(32),
    prijmeni VARCHAR(64)
);
            
https://www.postgresql.org/docs/current/static/datatype-numeric.html

SERIAL - autoincrementing integer (1 to 2147483647)

Série - použití


INSERT INTO student
    (jmeno, prijmeni) VALUES
    ('Jan', 'Novák');
            

Nepřidáváme ID, doplní se samo! Zkuste si SELECT.

Odkaz na cizí klíč

Pokud chceme kontrolovat cizí klíč (Primární klíč jiné tabulky - např. Autor - Kniha viz minulý ukol)


CREATE TABLE autor (
    id SERIAL PRIMARY KEY,
    jmeno VARCHAR(32),
    prijmeni VARCHAR(64)
);
            

CREATE TABLE kniha (
    isbn INT PRIMARY KEY,
    nazev VARCHAR(64),
    autor_id INT REFERENCES autor(id)
);
            
https://www.postgresql.org/docs/current/static/tutorial-fk.html

Odkaz na cizí klíč - vložení záznamu


INSERT INTO autor (jmeno, prijmeni) VALUES ('Jan','Novák');
            

Zjistit ID vloženého autora:


SELECT * FROM autor;
            

Vložit záznam knihy


INSERT INTO kniha VALUES (123456, 'Super kniha 1', 100);
            

Přejmenování tabulky


ALTER TABLE jmeno_tabulky
    RENAME TO nove_jmeno_tabulky;
            

Pojmenování Primárního klíče


CREATE TABLE lide (
    jmeno TEXT CONSTRAINT jedinecne_jmeno PRIMARY KEY,
    vek INT
);
            

Pojmenování integritního omezení CHECK


CREATE TABLE lide (
    jmeno TEXT,
    vek INT CONSTRAINT uz_asi_po_smrti
      CHECK( VEK < 150)
);
            

Pojmenování integritního omezení UNIQUE


CREATE TABLE lide (
    jmeno TEXT CONSTRAINT jedinecne_jmeno UNIQUE,
    vek INT
);
            

Přidání pojmenovaného PK


ALTER TABLE jmeno_tabulky
    ADD CONSTRAINT jmeno_PK PRIMARY KEY (jmeno_sloupce);
            

Přidání pojmenovaného omezení UNIQUE


ALTER TABLE jmeno_tabulky
    ADD CONSTRAINT jmeno_omezeni UNIQUE (jmeno_sloupce);
            

Přidání pojmenovaného omezení CHECK


ALTER TABLE jmeno_tabulky
    ADD CONSTRAINT jmeno_omezeni CHECK (podmínka);
            

Odstranění pojmenovaného omezení


ALTER TABLE jmeno_tabulky
    DROP CONSTRAINT jmeno_omezeni;
            

Přidání omezení NOT NULL


ALTER TABLE jmeno_tabulky
    ALTER COLUMN jmeno_sloupce SET NOT NULL;
            

Odstranění omezení NOT NULL


ALTER TABLE jmeno_tabulky
    ALTER COLUMN jmeno_sloupce DROP NOT NULL;
            

Změna datového typu sloupce


ALTER TABLE nazev_tabulky
    ALTER COLUMN nazev_sloupce TYPE novy_datovy_typ;
            

Přejmenování sloupce


ALTER TABLE nazev_tabulky
    RENAME COLUMN nazev_sloupce TO novy_nazev_sloupce;
            

Odstranění sloupce


ALTER TABLE nazev_tabulky
    DROP COLUMN nazev_sloupce;
            

DIY - Do It Yourself

Pro vypracování následujících úkolů používejte výhraně příkazů SQL

ÚKOL 1

Vytvořte tabulku pro údaje o městech s následujícími atributy

  • název
  • NUTS5 (LAU2) kód
  • počet obyvatel
  • rozloha
  • zda se jedná o hlavní město
  • nejnižší nadm. výška
  • nejvyšší nadm. výška

Do tabulky vložte alepoň 3 města

ÚKOL 2

Upravte tabulku z úkolu 1.

  • Přidejte omezení UNIQUE na název města
  • Přidejte omezení NOT NULL na NUTS5 kód
  • Přidejte omezení CHECK na počet obyvatel a rozlohu tak, aby bylo nutné zadat kladné číslo
  • Z tabulky smažte právě jedno město podle NUTS5 kódu
  • Do tabulky vložte další 3 města
  • Upravte název jednoho města pomocí příkazu UPDATE

ÚKOL 3

Upravte tabulku z úkolu 2.

  • Přidejte nový sloupec ICOB (kód obce dle ČSÚ)
  • Přidejte Primární klíč jako novou podmínku
  • Vložte nové město
  • Přejmenujte tabulku na 'sidla_body'
  • Smažte tabulku včetně jejího obsahu

Děkuji za pozornost