Introduksjon til databaser

Introduksjon til databaser

Mon 03 April 2023

Introduksjon til databaser.

Databaser intro

Dette er en kort punktliste over databaser introduksjon. Dette har vært skrevet ned som en huskelapp for bruk ved grunnleggende opplæring innenfor temaet.

De aller fleste applikasjoner håndterer informasjon på en eller annen måte, i tillegg er det ofte behov for å lagre data til senere bruk. Det er mange måter å lagre data på, og det å bruke databaser er en slik måte å lagre data på.

For å kunne bruke databaser må vi ha et Database Management System (DBMS/Database engine) som er serverprogramvare som gjør at vi kan aksessere data, manipulere data, lage rapporter basert på data, med mer. Eksempler på populære DBMS er: Postgres, MySQL og MS SQL Server.

Når vi skal jobbe med dataene våre i et DBMS bruker vi et standard spørrespråk, Structured Query Language (SQL). Vi ser også at for mange populære språk så er SQL abstrahert vekk sånn at man har måter å spørre på som er mer naturlig i det programmeringsspråket man jobber i.

CRUD operasjoner

Vi har fire grunnleggende operasjoner som bør støttes av modellene / databasene våre:

Create:

INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...);

Read:

SELECT column1, column2, ...
FROM table_name;

Update:

UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;

Delete:

DELETE FROM table_name WHERE condition;

RDBMS bits & pieces

Table

Er en samling av data som er relaterte til hverandre. En tabell består av kolonner og rader.

Trigger

Er kode som blir kjørt når spesifikke hendelser blir utført på en table eller view.

View

Er resultatet av en lagret spørring.

Schema

Er strukturen til databasen, beskrevet i et formelt språk som er støttet av DBMSet.

Function

Er en funksjon som returnerer en verdi. Funksjonen lagres i databasen og kan brukes på vanlig måte ved hjelp av SELECT syntaks.

Eksempel databasen sakila

Vi kan forsøke å vise litt hva som er i en database ved å bruke en populær testdatabase. Vi finner det vi trenger for å sette opp eksempeldatabasen vår her: https://github.com/jOOQ/sakila/tree/main/postgres-sakila-db.

postgres=# CREATE DATABASE sakila;
postgres=# \connect sakila
You are now connected to database "sakila" as user "adrock2nd".
sakila=#\i /Users/adrock2nd/Utvikling/git/pgexamples/sakila/postgres-sakila-db/postgres-sakila-schema.sql
sakila=#\i /Users/adrock2nd/Utvikling/git/pgexamples/sakila/postgres-sakila-db/postgres-sakila-insert-data.sql
sakila=# \dt
          List of relations
 Schema |       Name       | Type  |  Owner
--------+------------------+-------+----------
 public | actor            | table | postgres
 public | address          | table | postgres
 public | category         | table | postgres
 public | city             | table | postgres
 public | country          | table | postgres
 public | customer         | table | postgres
 public | film             | table | postgres
 public | film_actor       | table | postgres
 public | film_category    | table | postgres
 public | inventory        | table | postgres
 public | language         | table | postgres
 public | payment          | table | postgres
 public | payment_p2007_01 | table | postgres
 public | payment_p2007_02 | table | postgres
 public | payment_p2007_03 | table | postgres
 public | payment_p2007_04 | table | postgres
 public | payment_p2007_05 | table | postgres
 public | payment_p2007_06 | table | postgres
 public | rental           | table | postgres
 public | staff            | table | postgres
 public | store            | table | postgres
sakila=#

Koble til eksempeldatabasen i Python

Her kommer et eksempel på hvordan vi kan koble til å lese innhold fra databasen vår i Python v.h.a psycopg2.

Før vi begynner må vi installere en databaseconnector:

$ pip install psycopg2

Så kan vi skrive Python koden:

# https://www.psycopg.org/docs/usage.html
import psycopg2

# Connect to an existing database
conn = psycopg2.connect("dbname=sakila user=postgres")

# Open a cursor to perform database operations
cur = conn.cursor()

# Execute a command
cur.execute("SELECT * from actor LIMIT 5")
result = cur.fetchall()

# Make the changes (if any) to the database persistent
conn.commit()

# Close communication with the database
cur.close()
conn.close()

print(result)

Det var kort noen notater om databaser for de som ikke har vært bort det tidligere.

Tagged as : databaser intro