Structured Query Language

Fra Wikipedia, den frie encyklopædi

Structured Query Language eller SQL er det mest udbredte programmeringssprog til relationelle databaser. Det er blevet standardiseret i flere omgange som SQL-92 og SQL-1999, men de fleste databasesystemer har deres egne udvidelser. Sproget dækker både definition af databaser og manipulation af data. SQL er et deklarativt programmeringssprog, hvilket vil sige, at man kun beskriver, hvad der skal ske, men ikke hvordan det sker.

I SQL skelnes der ikke mellem store og små bogstaver, bortset fra i dataværdier. Kommentarer indledes med '--' og varer linjen ud. SQL-kommandoer kan afsluttes med ";", hvis der kommer flere efter hinanden.

Indholdsfortegnelse

[redigér] Definition af databaser

I denne del af SQL bruges generelt to typer kommandoer: CREATE opretter noget og DROP fjerner det igen. Eksempel:

-- Opret en database med et par tabeller
--
-- Databasen
CREATE DATABASE demo;
-- Adresseoplysninger
CREATE TABLE adresser (
  adresse_id INTEGER PRIMARY KEY,
  gade       VARCHAR(40) NOT NULL,
  husnr      INTEGER NOT NULL,
  sted       VARCHAR(20),          -- Etage, landsby mv.
  postnr     INTEGER NOT NULL REFERENCES postnumre (postnr)
);

I eksemplet er adresse_id nøglen, der skal være unik i tabellen. Gade er et tekstfelt, der er op til 40 tegn langt. Feltet skal udfyldes. Husnr er et heltal, der skal udfyldes. Det er valgfrit om feltet sted udfyldes. Feltet postnr skal være udfyldt, og der skal være et postnr i tabellen postnumre med samme værdi. Hvis disse krav ikke er opfyldt, kan data ikke indsættes i tabellen.

Med SQL er det muligt, at definere indekser for en tabel. Et index kan sikre, at enkelte felters data er unikke i en tabel. I eksemplet er adresse_id unik. Et andet argument for at oprette et indeks er, at det i nogle tilfælde kan give hurtigere læseadgang. Prisen er, at oprettelse og opdatering af data bliver en anelse langsommere fordi både tabel og indeks skal opdateres.

[redigér] Datamanipulation

I en tabel i en database kan data oprettes, ændres, læses og slettes.

[redigér] Læsning af data

Læsning foregår med kommandoen SELECT. I kommandoen beskrives, hvilke kolonner, der skal læses, hvilke tabeller, der skal læses fra, og hvilke betingelser der skal være opfyldt for at en række bliver læst. Eksempel:

SELECT gade, husnr, sted
FROM adresser
WHERE postnr = 7100;

Gade, husnummer og sted vises for adresser med 7100 som postnummer. Rækkefølgen er ikke defineret og dubletter kan forekomme.

[redigér] Indsættelse af data

Data indsættes i en tabel med kommandoen INSERT. Eksempel:

INSERT INTO adresser VALUES (14, 'Prinsessegade',57,NULL,7000);

Værdierne anføres i samme rækkefølge, som de er defineret i tabellen. Alternativt kan man også anføre feltnavnene.

[redigér] Opdatering af data

Ved opdatering anføres en tabel, en liste af de værdier, som skal ændres, og et udvælgelseskriterie. Eksempel:

UPDATE adresser
SET sted = 'St. tv.'
WHERE adresse_id = 14;

[redigér] Sletning af data

Sletning af data udføres med kommandoen DELETE, der som input har et tabelnavn og et kriterium for, hvilke rækker der skal slettes. Eksempel:

DELETE FROM adresser
WHERE adresse_id = 14;

Da adresse_id er unik i tabellen slettes kun en række. "DELETE FROM adresser;" sletter alle rækker uden advarsel.

[redigér] Brugerrettigheder

Med SQL er det muligt at tildele forskellige rettigheder til de forskellige brugere af databasen. Der kan gives rettigheder til læsning, indsættelse, ændring og sletning af data. Eksempel:

-- Hugo må gøre alt ved databasen demo
GRANT ALL ON demo TO Hugo;
-- Karl må læse i adressetabellen
GRANT SELECT ON adresser TO Karl;

Rettigheder kan trækkes tilbage med kommandoen REVOKE. Brugere kan eventuelt få rettigheder til at give andre rettigheder, der svarer til dem, de selv har.

[redigér] Eksterne henvisninger/Kilder

[redigér] Se også