Introduktion til SQL

 

Hvad er SQL?

SQL står for Structured Query Language. Programmeringssproget benyttes til at skabe, opbevare og manipulere data i relationelle databaser og er verdens mest benyttede programmeringssprog til dette formål. SQL giver dig mulighed for at oprette og udforske din data for at holde styr på din data. Når du lærer SQL vil du også blive introduceret til generelle koncepter som dækker næsten alle slags databasesystemer.

SQL blev udviklet i 1974 i IBM af Donald D. Chamberlin og Raymond F. Boyce til internt arbejde, men er sidenhen blevet opdateret og udgivet kommercielt til alle i henholdvist 1979, 1981 og 1983, da man opdagede hvor brugbart sproget var til at kommunikere med relationelle databaser.  I 1986 blev sproget officielt anerkendt og standardiseret af ANSI (American National Standards Institute) og ISO (International Organization for Standards). Til den dag i dag bliver SQL løbende opdateret men det grundlæggende fundament for sproget er stort set forblevet uændret.

 

Hvad er en database?

Utallige virksomheder benytter SQL til at samle alt deres data i en database. En database defineres som en samling af logisk relateret data som er organiseret på en måde, så det let kan blive opbevaret, opdateret og hentet frem igen. Der er hovedsageligt to grunde til at opbevare data i en database:

  • For at holde regnskab
  • For at tage præcise beslutninger baseret på den tilgængelige data

Organiseringen af data i en database organiseres i et databasesystem (DBMS). Disse databasesystemer er baseret på datamodeller. Den mest benyttede og udbredte form for databasemodel er den relationelle database og det er den model som SQL er opbygget omkring. Derfor er det meget vigtigt at vide helt præcist hvad en relationel database er.

 

Hvad er en relationel database?

En relationel database er organiseret i én eller flere tabeller med rækker og kolonner. En række er enhver horisontal enhed som fremstår i tabellen. En kolonne er enhver vertikal enhed i tabellen som indeholder alt information associeret med dets specifikt felt i tabellen. En tabel bliver ofte refereret til som en relation. Disse tabeller er forbundet med hinanden og deres forbindelse udgør strukturen for en relationel database. Et system for en relationel database kaldes en Relational Data Stream Management System (RDSMS). SQL-sproget tager udelukkende udgangspunkt i den relationelle databasemodel, som også er den mest benyttede model. Dog er ikke-relationelle databaser gradvist blevet mere populære og har vist øget benyttelse inden for de seneste par år, men den slags databasemodeller er knap så strukturerede.

Strukturen for en relationel database kan vises som et database-skema. Nedenstående er et eksempel på, hvordan sådan et skema kan se ud:

Kaffemærker (ID, Navn, Producent)
Caféer (ID, Navn, Adresse)
Kunder (ID, Navn, Adresse, Telefonnummer)
Salg (ID, Café, Kaffe, Pris)

Dette skema er opdelt i fire tabeller: kaffemærker, caféer, kunder og salg.

 

Strukturen for SQL

For at få illustreret, hvordan strukturen for SQL ser ud kan du tage et kig på nedenstående tabel, som hedder Kaffemærker og som viser oplysninger om navn og producent på fire forskellige kaffemærker:

id Navn Producent
1 Intenso Kimbo
2 Gold Kimbo
3 Aroma Espresso Vendia Kaffe
4 Gran Gusto Café Noir

 

Kolonnerne i ovenstående tabel er ID, Navn og Producent. De fire rækker i tabellen viser oplysninger om navn og producent på fire forskellige kaffemærker. Kolonnen ID fungerer som tabellens primære nøgle (primary key), da værdien er helt unik for hver række, så den derved altid kan angive den bestemte række i tabellen.

For at give dig et indtryk af, hvordan SQL-sproget ser ud kan du tage et kig på nedenstående kode som indlæser en tabel udelukkende med navne på alle kaffemærkerne fra ovenstående tabel:

SELECT Navn FROM Kaffemærker;

Tabellen vil se sådan her ud:

 

I SQL har linjeafstand og mellemrum ikke nogen betydning for kodens funktionalitet. Det benyttes blot til at skabe struktur og gøre det nemmere at læse for os mennesker. Derudover er det også ligegyldigt for kodens funktionalitet om man benytter små eller store bogstaver til at skrive sine erklæringer. Det er heller ikke absolut nødvendigt at slutte af med semikolon når kodestykket er færdigt, men det kan stadig skabe rod i programmet, hvis ikke man indsætter et semikolon. Derfor anbefales det at man benytter semikolon hver gang at et kodestykke er færdigt, ligesom i det ovenstående kode-eksempel.

 

Opbygningen af SQL

SQL er et deklarativt sprog – Det vil sige at man kun beskriver hvad der skal ske, ikke hvordan det sker.

Erklæringer i SQL kan klassificeres på flere forskellige måder, men hovedsageligt er sproget bygget op omkring disse tre undersprog:

  • DDL – Data Definition Language: Benyttes til at skabe databaser og opbygge strukturen.
  • DML – Data Manipulation Language: Benyttes til at få adgang til og udtrække specifik data fra databasen.
  • DCL – Data Control Language: Benyttes til at kontrollere hvem der har adgang til databasen.

Derudover er der tre yderligere undersprog, som er knap så vigtige:

  • DRL/DQL – Data Retrievel Language/Data Query Language: Benyttes til at udtrække information fra databasen.
  • TCL – Transaction Control Language: Benyttes til at genoprette data.
  • SCL – Session Control Language: Benyttes til at håndtere den individuelle brugersession.

 

Indholdet på denne side

Denne side om SQL indeholder alle sprogets vigtigste erklæringer, som man kan få en oversigt over på den højre side-menu i toppen. Siderne er strukturerede som et opslagsværk, så de er meget korte og præcise, så du derved let kan kopiere dem over til dine egne noter, hvis du skulle få behov for det. Erklæringerne i SQL er delt op i fire kategorier:

  1. Datadefinition: Opret, opdater, slet og tilføj indhold i tabeller
  2. Data manipulation: Manipuler tabellen til at vise bestemt data ved hjælp af betingelser, sorteringer, mønstre mm.
  3. Funktioner i SQL: Foretag kalkulationer på data for at finde frem til bl.a. sum, gennemsnit og antal ved hjælp af funktioner
  4. Forbindelse af tabeller: benyt forskellige metoder til at forbinde tabeller sammen

 

Gå videre til Datadefinition i SQL her →