Kihagyás

DML - Data Manipulation Language

  • Nem adnak vissza eredményt
    • Csak az adatbázis tartalmát változtatják meg
  • Módosító utasítások
    • INSERT
    • DELETE
    • UPDATE

Beszúrás - INSERT

  • Mantra: INSERT INTO <reláció> VALUES (<attribútum lista>);
  • Alap esetben a tábla def sorrendje szerinte kell megadni az értékeket
  • Opcionálisan a reláció után megadhatóak az attribútumokat
  • Lekérdezés eredményét is beszúrhatjuk
    • INSERT INTO <reláció> (<alkérdés>); szintaxissal

Beszúrás nyers adatokkal - Példa

INSERT INTO Szeret
VALUES('Susy', 'Bud');

Beszúrás alkérdéssel - Példa

A Látogat(alkesz, kocsma) tábla használatávaé adjuk hozzá a Szesztestvérek(név) táblához Susy szesztestvéreit

Előadás alapján:

  • Szesztestvérek azok az alkeszek, akik legalább egy közös kocsmát látogatnak
INSERT INTO Szesztestvérek
(SELECT l2.alkesz
FROM Látogat l1, Látogat l2
WHERE l1.alkesz = 'Susy'
  AND l2.alkesz <> 'Susy'
  AND l1.kocsma = l2.kocsma
);

Törlés - DELETE

  • Mantra: DELETE FROM <reláció> WHERE <feltétel>;

Törlés szemantikája:

Először kiválasztja a WHERE feltételnek eleget tevő sorokat, és utána minden előfordulást töröl

Tehát ha egy törlés kihatással is lenne egy másik sor feltételére (mondjuk párosítással), mivel a kiértékelés történik meg előbb, mindkettőre teljesülni fog a feltétel, és így mindkettő törlésre kerül.

Törlés - Példa

Töröljük azokat a söröket a Sörök(név, gyártó) táblából, amikhez létezik olyan sör, mit ugyanaz a cég gyártott

DELETE FROM Sörök s
WHERE EXISTS (
  SELECT név
  FROM Sörök
  WHERE gyártó = s.gyártó
    AND név <> s.név
);

Módosítás - UPDATE

  • Mantra: UPDATE <reláció> SET <attribútumok értékadással> WHERE <feltétel>
  • Az adott feltételnek eleget tevő sorokon a megadott értékadások hajtódnak végre

Módosítás - Példa

UPDATE Alkeszek
SET telefon = '555-1212'
WHERE név = 'Frank';

UPDATE Felszolgál
SET ár = 4.00
WHERE ár > 4.00;