Slet (SQL) - Delete (SQL)

I det databasestrukturerede forespørgselssprog ( SQL ) fjerner DELETE -sætningen en eller flere poster fra en tabel . Et undersæt kan defineres til sletning ved hjælp af en betingelse, ellers fjernes alle poster. Nogle databasesystemer (DBMS'er), f.eks. MySQL , tillader sletning af rækker fra flere tabeller med en DELETE-sætning (dette kaldes undertiden DELETE med flere tabeller).

Eksempler

Slet rækker fra tabellen tærter hvor kolonne smag lig citron Marengs :

DELETE FROM pies
 WHERE flavor='Lemon Meringue';

Slet rækker i træer , hvis højdeværdien er mindre end 80.

DELETE FROM trees
 WHERE height < 80;

Slet alle rækker fra mytable :

DELETE FROM mytable;

Slet rækker fra mytable ved hjælp af en underforespørgsel i tilstanden hvor:

DELETE FROM mytable
 WHERE id IN (
       SELECT id
         FROM mytable2
      );

Slet rækker fra mytable ved hjælp af en liste med værdier:

DELETE FROM mytable
 WHERE id IN (
       value1,
       value2,
       value3,
       value4,
       value5
      );

Eksempel med relaterede tabeller

Antag, at der er en simpel database, der viser personer og adresser. Mere end én person kan bo på en bestemt adresse, og en person kan bo på mere end én adresse (dette er et eksempel på et forhold mellem mange og mange ). Databasen har kun tre tabeller, person , adresse og pa , med følgende data:

person
pid navn
1 Joe
2 Bob
3 Ann
adresse
hjælpe beskrivelse
100 2001 Main St.
200 35 Pico Blvd.
pa
pid hjælpe
1 100
2 100
3 100
1 200

Den pa tabel relaterer den person og adresse tabeller, der viser, at Joe, Bob og Ann alle live på 2001 Main Street, men Joe også tager ophold på Pico Boulevard.

For at fjerne joe fra databasen skal to sletninger udføres:

 DELETE FROM person WHERE pid=1;
 DELETE FROM pa WHERE pid=1;

For at opretholde referentiel integritet skal Joes optegnelser fjernes fra både person og pa . De midler, hvormed integritet opretholdes, kan ske anderledes i forskellige relationsdatabasestyringssystemer. Det kan være, at udover bare at have tre tabeller, er databasen også blevet konfigureret med en trigger, så når en række slettes fra person, vil alle sammenkædede rækker blive slettet fra pa . Så den første erklæring:

 DELETE FROM person WHERE pid=1;

ville automatisk udløse den anden:

 DELETE FROM pa WHERE pid=1;

Relaterede kommandoer

Sletning af alle rækker fra en tabel kan være meget tidskrævende. Nogle DBMS tilbyder en TRUNCATE TABLE -kommando, der fungerer meget hurtigere, da den kun ændrer metadata og typisk ikke bruger tid på at håndhæve begrænsninger eller udløse udløsere.

DELETE sletter kun rækkerne. For helt at slette en tabel kan DROP -kommandoen bruges.

Referencer