V učni enoti o podatkovnih bazah smo že spoznali poglede. Oglejmo si, kako ustvarimo pogled.
CREATE VIEW IF NOT EXISTS pogled (stolpec1, stolpec2, stolpec3, ...) AS poizvedba_select;
Kot primer si oglejmo, kako bi ustvarili pogled, ki bi uporabniku omogočal pregled, kako dobičkonosni so bili posamezni filmi. Polged bomo poimenovali film_dobicek
, da ne bo prišlo do zmede s poimenovanjem.
CREATE VIEW IF NOT EXISTS film_dobicek AS SELECT naslov, (prihodek_zda + prihodek_svet) - proracun AS dobicek FROM film JOIN blagajna ON film.id = blagajna.film_id;
Sedaj lahko pogled uporabimo in prikažemo vse tiste filme, katerih dobiček je presegel milijardo dolarjev. To naredimo preprosto takole:
SELECT * FROM film_dobicek WHERE dobicek >= 1000000000;
Dodajanje novega stolpca je podobno, kot pri ustvarjanju tabele s stavkom CREATE TABLE
. Določiti moramo vrsto podatkov stolpca skupaj z morebitnimi omejitvami in privzetimi vrednostmi, ki bodo uporabljene tako za obstoječe kot za nove vrstice.
ALTER TABLE tabela ADD stolpec vrsta_podatkov omejitev DEFAULT privzeta_vrednost;
Brisanje stolpcev je preprosto, vendar nekatere podatkovne baze (tudi SQLite) ne podpirajo te funkcije. Namesto tega moramo ustvariti novo tabelo in preseliti podatke.
ALTER TABLE tabela DROP COLUMN stolpec_za_brisanje;
Tabelo pa lahko seveda tudi preimenujemo.
ALTER TABLE tabela RENAME TO novo_ime_tabele;
V redkih primerih bomo morda želeli odstraniti celotno tabelo, vključno z vsemi njenimi podatki in metapodatki. Za to uporabimo stavek DROP TABLE
, ki se od stavka DELETE
razlikuje po tem, da poleg podatkov iz podatkovne baze popolnoma odstrani tudi tabelo.
DROP TABLE IF EXISTS tabela_za_brisanje;
Podobno kot pri ustvarjanju tabele lahko tudi pri brisanju tabele podatkovna baza vrne napako, če tabela ne obstaja. Tej napaki se lahko izognemo tako, da v stavku DROP TABLE
uporabimo pogoj IF EXISTS
.
Če imamo poleg tega še drugo tabelo, ki je odvisna od vrednosti stolpcev v tabeli, ki jo želimo izbrisati (na primer preko tujega ključa), potem bomo morali ali najprej posodobiti vse vrednosti v odvisni tabeli, ali pa odvisno tabelo v celoti odstraniti.