dbiny10q1

datenbanken-queries.pdf

Grundaufbau

SELECT <fields>
FROM <table name>
WHERE <condition>;

Dabei ist <fields> eine kommagetrennte Liste von Attributen, z.B. id, username, email. Alternativ kann man auch * für alle Attribute einsetzen:

SELECT id, username FROM users;
SELECT * FROM users;

<table name> ist der bzw. die Name(n) der abzufragenden Tabellen, z.B. users oder kommagetrennte Namen z.B. users, likes für Abfragen über mehrere Tabellen.

SELECT * FROM users, likes;

Wichtig dabei ist das Konzept der Resultattabelle, also bekommt man immer eine neue Tabelle von seiner Query. Diese kann man mit WHERE filtern:

SELECT * FROM users
WHERE <condition>;

In dem Fall werden nur alle Nutzer zurückgegeben, wo <condition> erfüllt ist. Dazu später mehr.
Man kann übrigens auch die Resultattabelle direkt modifizieren. Also kann man z.B. Felder der Resultattabelle mit AS umbenennen:

SELECT name AS full_name 
FROM users;

Die Resultattabelle hätte dann ein Attribut, nämlich full_name.

Konditionen

Vergleiche

  • = Gleichheit - column = value
  • != bzw. <> Ungleichheit - column != value
  • > Größer als - `column > value
  • < Kleiner als - `column < value
  • >= Größer oder gleich - `column >= value
  • <= Kleiner oder gleich - `column value
  • BETWEEN Gleichheit - `column BETWEEN value1 AND value2
  • LIKE Vergleich von Text
    • Spalte enthält Wert: column LIKE '%value%'
    • Spalte beginnt mit Wert: column LIKE 'value%'
    • Spalte endet mit Wert: column LIKE '%value'
    • Wert ist gleich (wie =): column LIKE 'value' (aber hierbei kann man nicht nach einem Prozentzeichen überprüfen, da dies eine Wildcard repräsentiert)

Logikoperatoren

  • AND - TRUE, falls beide booleschen Ausdrücke TRUE ergeben.
SELECT * 
FROM users 
WHERE username = "Bea" AND id = 3;
  • OR - TRUE, falls mindestens einer der beiden booleschen Ausdrücke TRUE ergibt.
SELECT * 
FROM users 
WHERE username = "Bea" OR username = "Naomi";