PHPMyAdminInformatik-Buch, DatenbankSQL-Abfragen

SQL-Befehle

Structured Query Language

Abfragen an eine Datenbank allgemein und umfangreich: SQL-Abfragen

Konstruktion der Tabellen

Eine Tabelle erstellen

CREATE TABLE Buch
    (buchID INT NOT NULL AUTO_INCREMENT,
     titel VARCHAR(100),
     autor VARCHAR(100),
     inhaltsangabe TEXT,
     PRIMARY KEY (buchID));

Beachte:

  • Die Bemerkung NOT NULL gewährleistet, dass dieses Attribut nie leer ausgeht. AUTO_INCREMENT nimmt dem Benutzer die Sorge und Arbeit um doppelte oder verpasste Nummern und ist eine Spezialität von MySQL.
  • Der Datentyp VARCHAR hat den Vorteil, dass eine maximale Länge vorgegeben werden kann.
  • Der Typ TEXT ist ebenfalls eine Spezialität von MySQL und bezeichnet einen Text variabler Länge.
  • Der Datentyp INT bezeichnet ganze Zahlen.

Zusätzlich können mit Hilfe des Parameters DEFAULT jedem Attribut Standardwerte zugewiesen werden. Beim Eintragen der Entitäten können sie natürlich überschrieben werden.

Eine Tabelle mit Fremdschlüsseln erstellen

Um Fremdschlüssel zu erzeugen, muss immer angegeben werden, wie der Fremdschlüssel in der aktuellen Tabelle heißen soll, in welcher Tabelle er Primärschlüssel ist und wie er dort heißt.

CREATE TABLE ausleihe 
    (ausleihID INT NOT NULL AUTO_INCREMENT,
     PRIMARY KEY (ausleihID),
     ausgeliehenesBuchID INT NOT NULL,
     ausleihenderLeserID INT NOT NULL,
     FOREIGN KEY (ausgeliehenesBuchID) REFERENCES buch(buchID),
     FOREIGN KEY (ausleihenderLeserID) REFERENCES leser(leserID));

Eine Tabelle löschen

DROP TABLE buch

Eine Tabelle ändern

Wurden nicht sämtliche Attribute eines Entitätstyps beim Erstellen vollständig oder korrekt eingegeben, so können sie nachträglich hinzugefügt oder gelöscht werden.

ALTER TABLE buch ADD isbn CHAR(13) DEFAULT "keine Angabe";
ALTER TABLE buch ADD PRIMARY KEY (buchID);
ALTER TABLE buch DROP inhaltsangabe;

Beachte:

  • ADD PRIMARY KEY erfordert, dass das Attribut BuchID schon vorhanden ist und noch kein Primärschlüssel in Buch existiert.

vorhandene Tabellen anzeigen

SHOW TABLES [FROM datenbankname] [LIKE "schema"];

schema beschreibt Gemeinsamkeiten im Namen der Tabellen. Eut% würde beispielsweise sämtliche Tabellennamen auflisten, deren Name mit Eut beginnt.

Inhalte der Tabellen

Entitäten eintragen

INSERT INTO buch (titel, autor, inhaltsangabe)
  VALUES ("Mein Leben", "Onkel Jupp", "Tolle Geschichte auf 2 Seiten mit 2 ganzseitigen Abbildungen");

Beachte:

  • Der Wert für die buchID muss nicht angegeben werden, da er per AUTO_INCREMENT automatisch angelegt wird.
  • Es müssen nicht alle Attribute mit Werten belegt werden.
  • Alle aufgezählten Attribute müssen mit Werten belegt werden.

Entitäten löschen

DELETE FROM buch WHERE autor = "Bösewicht";
DELETE FROM buch WHERE buchID = 17;
DELETE FROM buch;

Beachte:

  • In der letzten Zeile werden sämtlich Bücher gelöscht, da keine Bedingung angegeben ist.

Tabelleninhalte anzeigen

Zeigt die gesamte Tabelle an:

SELECT * FROM buch;

Zeigt die ersten 10 Titel der Bücher von Herrn Lieblingsautor an.

SELECT titel FROM buch WHERE autor = "Max Lieblingsautor" LIMIT 10;

Bedingungen

< > <= >= = <>
buchID BETWEEN 100 AND 200
buchID >= 100 AND BuchID <= 200
titel BETWEEN ´Dah´ AND ´Fo´
autor IN ("Kopka", "Theis")
titel LIKE "%Linux%"
isbn IS NULL

Beachte:

  • MySQL unterscheidet bei Bedingungen nicht zwischen Groß- und Kleinschreibung. D.h. ´Brachbach´=´bRaChBaCh´!
  • % steht für beliebig viele Zeichen (n>=0). Ein - steht für genau ein Zeichen.
  • Die Grenzen bei BETWEEN definieren ein geschlossenes Intervall. (Die Grenzen gehören zum Intervall dazu.)

Beispiele

SELECT titel, isbn FROM buch WHERE autor = "Max Lieblingsautor" LIMIT 100 GROUP verlag ORDER BY titel;
Cookies helfen bei der Bereitstellung von Inhalten. Durch die Nutzung dieser Seiten erklären Sie sich damit einverstanden, dass Cookies auf Ihrem Rechner gespeichert werden. Weitere Information
Falls nicht anders bezeichnet, ist der Inhalt dieses Wikis unter der folgenden Lizenz veröffentlicht: CC Attribution-Noncommercial-Share Alike 4.0 International