Databaser



En database er et rimelig kendt ord, for et sted man gemmer en masse oplysninger. Dog er der en langt mere præcis forklaring hvad det er.

En database er i alt sin enkelhed et program, der danner en abstraktion over det normale filsystem. Denne abstraktion, tager sig så af at håndtere og gemme data på en fornuftig facon. Så dataene er lyn hurtige at tilgå og ændre i, uden lange ventetider.

Der er sågår nogle databaser, der har sit helt eget filsystem som så derved helt kan bestemme hvordan den vil lagre alle dens data, på de rå harddiske.

Mere i detaljer


I daglig tale siger man ja vi har en database, der gemmer alle vores oplysninger, men det er faktisk en forkert talemåde. Man burde siger ja vi har en host(en PC stor som lille), hvorpå vi har en server kørende (server = et program der lytter efter forespørgsler fra en anden maskine). Et server program findes i mange typer fx en webserver, ftpserver (file transfer server) eller ja en database server.

En database server


Er et program som der lytter efter forespørgsler fra andre maskiner. Disse kan være forespørgsler om at hente eller gemme informationer.
Typisk er data i langt de fleste kendte databaser som Access,Oracle, Microsoft SQL Server og MySQL organiseret i tabbeller med relationer imellem. Disse er kendt som relationelle databaser.
Tabeller er typisk organiseret i en form for gruppe - en gruppe kaldes med et populært ord for en
database! Husk dette! En database er altså en samling af tabeller. Så en database omtales altså både som et program der lytter efter forespørgsler på at gemme eller hente data ud, eller som en samling af tabeller inde i selve server programmet.

Til alle relationelle databaser kan man benytte sig af SQL Sproget = Structured Quary Language
Dette er et slags sprog så man kan snakke med databasen. Ved hjælp af SQL, får man mulighed for at forespørge på selv meget komplekse udtræk. Fx et eksemple hevet ud af ærmet. Giv mig alle mænd i alderen mellem 24 og 66, som har brunt eller sort hård... som køre i en bil fra mellem 1998 og 2003 og som har fået skiftet lydpotte indenfor de sidste tre år... hvis vi siger at den slags oplysninger lå i en database. Ville en database relativt hurtigt finde resultatet på denne mærkelige nok for os mennesker ret kompliserede forespørgsel. Det kan være for os mennesker ret fantastisk hvilket datamængder en database kan æde sig igennem.

SQL Sproget



For at skabe en tabel, skal man skrive følgende SQL
create table [Tabelnavn](kollonnenavn1 datatype, kollonnenavn2...) fx:
create table Bil(mærke varchar(20), pris int)

For at insætte i en tabel skrives følgende:
insert into [tabelnavn]([kollonne navne man ønsker at indsætte i - adskildt af kommaer]) values ([aktuelle værdier man vil indsætte - adskildt af kommaer])
fx: insert into CPRTabel(cprnummer, navn) values ('24121434-1234', 'itpedersen')
insætter en række i tabellen/skemaet CPRTabel.

For at udvælge rækker fra en tabel:
select [kollonner] from [tabel] where [betingelse]
fx select navn from CPRTabel where cprnummer = '24121434-1234'
Denne sætning returnere navnet på personen med det gældende cpr nummer

For at opdatere en række:
UPDATE [tabel] SET kollonne = nyVærdi WHERE [Kollonne] = 2 fx

For at slette en række:
delete from [Tabel] where [Kollonne] = 2 fx

For at slette en tabel:
drop [table]

SQL UNION


UNION bruges i sql sammenhæng, når man har flere sql forespørgsler, som man gerne vil have smeltet sammen, men hvor alle resultater er unikke.
Fx hvis nu man har to tabeller der hedder Mænd og Kvinder i en klub. HVis man så gerne vil have alle deres cpr numre fx.
Så vil man skrive:
SELECT CPRNUMMER FROM MÆND UNION SELECT CPRNUMMER FROM KVINDER
Så får man alle cpr numre i de to tabeller, default er alle cprnumrene unikke. Hvis man ikke ønsker det skriver man
SELECT CPRNUMMER FROM MÆND UNION ALL SELECT CPRNUMMER FROM KVINDER

SQL JOIN


Forestil dig to tabeller Biler(id,mærke,navn) og Nation(fk_id, nationalitet). Disse tabeller er fyldt med biler og hvor hver bil hat tillknytet en nation. Enkelte biler er ikke tilknyttet. Og enkelte nationer står i listen, men disse har ingen tilknytning.

Husk join er det samme som inner join
Brug outer join hvis der skal være ikke matchene rækker.

Vil man nu have en liste over alle biler med bilernes nation skriver man:
select id,mærke,navn,nationalitet from Bil join Nation on Bil.id = Nation.fk_id

Hvis man ønsker at se de Biler der ikke har en nationalitet med i tabellen med hele resultatet, så skriv left join.

Hvis du ønsker at se de nationaliteter der ikke har nogen biler tilknyttet, skriv da right join.

Ønsker man at smelte nogle af rækkerne sammen, fordi de høre sammen, fx hvad er den samlede pris på alle bilerne af mærket toyota. Her kan man fx bruge SUM(PRIS) men gør man dette på et felt(kolonne), skal man huske til sidst at lave en group by på: mærke. Så man kan se hvilken værdi man vil sammensmelte.
fx

select mærke, navn, SUM(pris) from Bil group by mærke

Vil man sortere rækkerne ud fra en kolonne kan man lave en order by. Fx
select mærke,navn from Bil order by mærke asc (eller desc)

Se næste menupunkt for en nærmere info omkring hver database.

Hvordan kontakter jeg en database.



Først skal databasen installeres og der skal data i den.

Database Connector

Derpå skal der være en connector til den pågældende database, disse connectorer kan skaffes på database producentens hjemmeside. Under connectorer, disse fåes til stort set alle databaser og programmerings sprog.

Tilgå databsaen

Databaser tilgåes ved en URL, fx http://103.54.34.10 også en port fx port 7000.

Når man har en connector og en database at tilgå, skal man snakke med sin database server. Dette gøres ved hjælp af et specielt sprog ved navn SQL.

Det foregår ved at man sender små tekst strenge til sin database connector, denne returnere så resultatet, typisk i et eller andet form for Resultat sæt, på engelst Resultset.

En database har set fra oven af og ned, en helt masse database instanser - en instans kalder man typisk den aktuelle database. Den aktuelle database består af en helt række skemaer, hvor hvert skema selvfølgelig har kolonner og rækker. Det ses hurtigt at en database kan holder styr på mange data. Det er ikke udsædvanligt at der i en aktuel database er mellem 100-800 tabeller.

Schema - Skema'er


Hvem må tilgå tabeller...