1 Data Definition Language (DDL) ............................................2 1.1 1.1.1 1.1.2 1.2 1.3 1.4 1.5 Tabellen erstellen ................................................................................. 2 Datentyp... .................................................................. 2 Zusätze. .................................................................. 2 Tabellen löschen .................................................................................. 2 Tabellen ändern (Spalten hinzufügen) ................................................. 2 Tabellen ändern (Spalten löschen) ...................................................... 3 Tabellen ändern (Spalten ändern)........................................................ 3 2 2.1 2.2 2.2.1 2.3 Data Modification Language (DML) .....................................3 3 3.1 3.2 3.3 Query Language (QL) ..................................................................5 4 4.1 4.2 4.3 4.4 Weitere nützliche Befehle ..........................................................7 Datensätze einfügen ............................................................................ 3 Datensätze ändern ............................................................................... 4 Vergleichsoperator. .................................................................. 4 Datensätze ändern ............................................................................... 4 Einfachste Abfrage ............................................................................... 5 Ordnen ................................................................................................. 6 Gruppieren ........................................................................................... 7 Lukas Kehrer IIIaIT Struktur einer Tabelle ausgeben .......................................................... 7 Alle Tabellen einer Datenbank Ausgeben ............................................ 7 Datenbank erstellen ............................................................................. 7 Datenbank wechseln ............................................................................ 7 SQL 1 Data Definition Language (DDL) 1.1 Tabellen erstellen CREATE TABLE <Tabellenname>( <Spaltenname> Datentyp [Zusätze] [ ,<Spaltenname> Datentyp [Zusätze]] ) 1.1.1 Datentyp: INTEGER TEXT CHAR DOUBLE DATE TIME TIMESTAMP BOOL (ganze Zahlen) (Text, String, Hochkommas nicht vergessen!) (einzelne Zeichen) (Dezimalzahlen, Dezimalzeichen ist ein Punkt) (Datum, yyyy-mm-dd, Hochkommas nicht vergessen!) (Uhrzeit, hh:mm, Hochkommas nicht vergessen!) (Zeitstempel, wird bei einem Update auf die aktuelle Zeit gesetzt) (0 (falsch, nein) 1 (wahr, ja)) 1.1.2 Zusätze: NOT NULL PRIMARY KEY AUTO_INCREMENT DEFAULT <Standardwert> (Feld muss einen Wert haben) (Feld muss den Datensatz eindeutig identifizieren) (in Verbindung mit PRIMARY KEY, Wert wird Automatisch gesetzt) (Wenn Kein Wert angegeben wird, dann wird der Standardwert gespeichert) 1.2 Tabellen löschen DROP TABLE <Tabellenname> 1.3 Tabellen ändern (Spalten hinzufügen) ALTER TABLE <Tabellenname> ADD COLUMN <Spaltenname> Datentyp [Zusätze] [FIRST | AFTER <Spaltenname>] Lukas Kehrer Seite 2 von 7 SQL 1.4 Tabellen ändern (Spalten löschen) ALTER TABLE <Tabellenname> DROP COLUMN <Spaltenname> 1.5 Tabellen ändern (Spalten ändern) ALTER TABLE <Tabellenname> CHANGE <alter Spaltenname> <neue Spaltenname> Datentyp [Zusätze] [FIRST | AFTER <Spaltenname>] 2 Data Modification Language (DML) 2.1 Datensätze einfügen INSERT INTO <Tabellenname> (<Spaltenname1> [, <Spaltenname_n>]) VALUES (<Wert1>[, <Wert_n>]) [, (<Wert1>[, <Wert_n>])] Vorsicht bei Spalten, die als PRIMARY KEY definiert wurden: Es darf niemals ein wert 2x eingefügt werden. Wurde eine Spalte als TEXT oder CHAR definiert, müssen die Werte zwischen Hochkomma geschrieben werden. Lukas Kehrer Seite 3 von 7 SQL 2.2 Datensätze ändern DELETE FROM <Tabellenname> [WHERE Bedingung] Beispiel für Bedingung: <Spaltenname> Vergleichsoperator <Wert> 2.2.1 Vergleichsoperator • • • • • • = < <= > >= <> Das Ergebnis einer Bedingung ist entweder WAHR oder FALSCH Ohne diese WHERE-Bedingung werden ALLE Datensätze der Tabelle gelöscht. Werte vom Datentyp TEXT, CHAR, DATE, TIME müssen zwischen“ geschrieben werden. 2.3 Datensätze ändern UPDATE <Tabellenname> SET <Spaltenname1> = <Wert1> [, <Spaltenname_n> = <Wert_n>] [WHERE Bedingung] Vorsicht bei Spalten, die als PRIMARY KEY definiert wurden!. Es darf niemals ein Wert 2x eingefügt werden. Der Wert kann auch eine Berechnung enthalten (z.B.: UPDATE Fussballspiel SET ToreHeim = ToreGast + 2) Ohne WHERE-Bedingung werden alle Datensätze der Tabelle geändert. Lukas Kehrer Seite 4 von 7 SQL 3 Query Language (QL) 3.1 Abfragen SELECT * FROM <Tabellenname> - Gibt die ganze Tabelle aus SELECT <Spaltenname1> [AS <Ausgabename>] [, <Spaltenname_n>] FROM <Tabellenname1> [, <Tabellenname_n>] [WHERE Bedingung] [GROUB BY <Spaltenname>] [ORDER BY <Spaltenname> [, <Spaltenname_n>,…] [DESC | ASC] ] Wenn alle Spalten ausgegeben warden sollen wird ein * an Stelle der Spaltennamen geschreiben. Mit AS kann der Spalten Name für die Ausgabe geändert werden. Beispiel: SELECT Heimmannschaft AS Mannschaft, PunkteHeim AS Punkte FROM Fussballspiel Bei Auswahl mehrerer Tabellen wird das kartesische Produkt gebildet. Jeder Datensatz der einen Tabelle wird mit jedem Datensatz der anderen Tabelle verknüpft. Um dies zu vermeiden muss eine WHERE-Bedingung eingeführt werden, in der der Primärschlüssel der einen Tabelle mit dem Fremdschlüssel der anderen Tabelle auf Gleichheit überprüft werden muss. Befinden sich gleiche Spaltennamen in verschiedenen Tabellen, so muss vor dem Spaltenname der Tabellenname mit Punkt getrennt stehen. Beispiel: SELECT Heimmannschaft, Gastmannschaft, Vorname, Nachname FROM Fussballspiel, Schiedsrichter WHERE Fussballspiel.SRId = Schiedsrichter.SRId Lukas Kehrer Seite 5 von 7 SQL Mit der WHERE-Bedingung können bestimmte Datensätze zur Ausgabe ausgewählt werden. Die WHERE-Bedingung kann aus mehreren Teilen bestehen, die durch AND oder OR verknüpft werden Beispiel: SELECT Name FROM Person WHERE Age < 30 OR (Augenfarbe = "blau" AND ledig = 0) Die verwendeten Spalten in der WHERE-Bedingung beziehen sich nur auf den aktuellen zu bearbeitenden Datensatz. 3.2 Ordnen ORDER BY sortiert die Ausgabetebelle. DESC für absteigende Sortierung, ASC für eine ansteigende Sortierung SELECT * FROM Person ORDER BY ledig DESC, Age ASC; Als Spaltenname kann auch folgendes verwendet werden: COUNT (*) - zählt die Datensätze MIN(<Spaltenname>) MAX(<Spaltenname>) AVG(<Spaltenname>) SUM(<Spaltenname>) - gibt das Minimum zurück gibt das Maximum zurück gibt den Durchschnitt der Spalte zurück gibt die Summe zurück Diese Bedingungen sind in einer WHERE-Bedingung unzulässig, sie müssen im HAVING verwendet werden. Beispiel: (Die jüngste Person) SELECT Name FROM Person HAVING MIN(Age); Lukas Kehrer Seite 6 von 7 SQL 3.3 Gruppieren GROUP BY - bildet Gruppen innerhalb der Ausgabe Bei Abfragen mit GROUP BY sollte nur die Spalte nach der gruppiert wurde, bzw. Funktionen wie COUNT, MIN, MAX, AVG oder SUM ausgegeben werden. Beispiel: SELECT ledig, AVG(Age), AVG(Groesse) FROM Person GROUP BY ledig; 4 Weitere nützliche Befehle 4.1 Struktur einer Tabelle ausgeben SHOW COLUMNS FROM <Tabellenname> 4.2 Alle Tabellen einer Datenbank Ausgeben SCHOW TABLES 4.3 Datenbank erstellen CREATE <Datenbankname> 4.4 Datenbank wechseln USES <Datenbankname> Lukas Kehrer Seite 7 von 7