[[PHPMyAdmin]] <- [[..:..:Informatik-Buch:]], [[..:Datenbank:]] -> [[SQL-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;