Izdelava baze podatkov

V naslednjem primeru bom s pomočjo stavka CREATE DATABASE ustvarili novo bazo podatkov.

    CREATE DATABASE bazapodatkov
Izdelava baze podatkov 1
Izdelava baze podatkov 2

Izbris baze podatkov

Naslednji stavek nam pokaže, kako izbrisati bazo podatkov.

    DROP DATABASE bazapodatkov
Izbris baze podatkov 1
Izbris baze podatkov 2

Izdelava tabele

Stavek CREATE TABLE se uporablja za izdelavo nove tabele v bazi podatkov.

    CREATE TABLE test (
        id int(4),
        ime varchar(255),
        priimek varchar(255),
        age int(4),
        email text(255)
    )
Izdelava tabele 1
Izdelava tabele 2
Izdelava tabele 3

Izbris tabele

Stavek DROP TABLE se uporablja za izbris tabele. V primeru bomo izbrisali tabelo "test", ki smo jo naredili.

    DROP TABLE test
Izbris tabele 1
Izbris tabele 2
Izbris tabele 3

Sprememba tabele

Stavek ALTER TABLE se uporablja za dodajanje, brisanje ali spreminjanje stolpcev v obstoječi tabeli. V naslednjem primeru bomo stolpec dodali.

    ALTER TABLE stranke
    ADD email varchar(255)
Sprememba tabele 1
Sprememba tabele 2
Sprememba tabele 3

Naslednji primer prikazuje, kako izbrisati stolpec.

    ALTER TABLE stranke
    DROP COLUMN email
Sprememba tabele 4
Sprememba tabele 5
Sprememba tabele 6
Sprememba tabele 7

Če želimo spremeniti vrsto podatkov stolpca v tabeli, uporabimo MODIFY COLUMN. Prvo bomo ponovno dodali stolpec email s podatki varchar, in nato te podatke spremenili v text.

    ALTER TABLE stranke
    MODIFY COLUMN email text(250)
Sprememba tabele 8
Sprememba tabele 9

Omejitve

Omejitve (ang. Constraints) se uporablja za določanje pravil za podatke v tabeli. Mogoče ga je uporabiti, ko je tabela ustvarjena s stavkom CREATE TABLE ali potem, ko je tabela ustvarjena s stavkom ALTER TABLE. Omejitve se uporabljajo za omejevanje vrste podatkov, ki jih laho vpišemo v posamezno vrstico. Omejitve, ki se običajno uporabljajo so:

OMEJITEV OPIS
NOT NULL polje ne sme biti prazno
UNIQUE zagotavlja, da so vse vrednosti v stolpcu različne
PRIMARY KEY identificira vsako vrstico v tabeli
FOREIGN KEY preprećuje dejanja, ki bi uničila povezave med tabelami
CHECK zagotavlja da vrednost v vrstici izpolnjuje določen pogoj
DEFAULT nastavi privzeto vrednost za stolpec, če ni podana nobena vrednost
CREATE INDEX uporablja se za hitro ustvarjanje in pridobivanje podatkov iz baze

Ustvarimo tabelo z omejitvami.

    CREATE TABLE test (
        id int(4) PRIMARY KEY, -- identificira vsako vrstico v tabeli
        ime varchar(200) NOT NULL, -- polje ne sme biti prazno
        priimek varchar(200) UNIQUE, -- vrednosti v stolpcu so različne
        naslov text(300) DEFAULT 'neznano' -- če pustimo vrednost prazno se nam vpiše ta vrednost
    )
Omejitve 1
Omejitve 2

CREATE INDEX

Stavek CREATE INDEX se uporablja za ustvarjanje indeksov v tabelah. Indeksi se uporabljajo za hitrejše pridobivanje podatkov iz baze kot sicer. Indeksa ne vidimo, uporablja se le za pospešitev iskanja. Posodabljanje tabele z indeksi traja več časa kot posodabljanje tabele brez.

    CREATE INDEX idx_ime ON stranke (ime)
CREATE INDEX 1
CREATE INDEX 2

    ALTER TABLE stranke
    DROP INDEX idx_ime
CREATE INDEX 3
CREATE INDEX 4
CREATE INDEX 5

AUTO-INCREMENT

AUTO-INCREMENT omogoča samodejno ustvarjanje edinstvene številke, ko se v tabelo vstavi nov zapis. Pogosto je to polje primarnega ključa, ki bi ga želeli samodejno ustvariti vsakič, ko je vstavljen nov zapis. Naslednji stavek definira stolpec id kot polje primarnega ključa s samodejnim povečanjem.

    CREATE TABLE demo (
        id int(4) PRIMARY KEY,
        ime varchar(255) NOT NULL,
        priimek varchar(255) NOT NULL,
        email text(500)
    )
AUTO-INCREMENT 1
AUTO-INCREMENT 2
AUTO-INCREMENT 3

MySQL uporablja besedo AUTO-INCREMENT za izvedbo funkcije samodejnega povečanja, privzeta vrednost je 1. Če pa želimo, da se AUTO-INCREMENT začne z drugo številko, pa si oglejmo v primeru.

    ALTER TABLE demo AUTO_INCREMENT=5
AUTO-INCREMENT 4
AUTO-INCREMENT 5

Preverimo, če je res.

    INSERT INTO demo (ime, priimek, email) VALUES ('Prva', 'Oseba', 'prva@oseba.si')
AUTO-INCREMENT 6
AUTO-INCREMENT 7
AUTO-INCREMENT 8

Datumi

Najtežji del pri delu z datumi je zagotoviti, da se oblika datume, ki ga poskušamo vstaviti, ujema z obliko datumskega stolpca v bazi podatkov. Dokler naši podatki vsebujejo samo del datuma, bodo naše poizvedbe delovale po pričakovanjih, če pa je vključen časovni pas, postane bolj zapleteno. MySQL ima naslednje vrste podatkov za shranjevanje datuma ali časa v bazi podatkov.

VREDNOST FORMAT
DATE YYYY-MM-DD
DATETIME YYYY_MM_DD HH:MI:SS
TIMESTAMP YYYY-MM-DD HH:MI:SS
YEAR YYYY ali YY
    SELECT * FROM stranke WHERE reg_date='2022-03-05'
Datumi 1
Datumi 2

Rezultata nismo dobili, ker poizvedba išče samo datumske zapise, brez časovnega sela, mi imamo v tabeli vključen tudi čas.

1 2 3 4 5