Informatik Klasse 11/12 Einfache Abfragen mit SQL Allgemeine Syntax der SQL-Klauseln: SELECT [ALL|DISTINCT]{spalten|*} FROM tabelle [alias] [tabelle[alias]]... [WHERE {bedingung|unterabfrage}] [GROUP BY spalten[HAVING {bedingung|unterabfrage}]] [ORDER BY spalten[ASC|DESC]...]; Klausel Betrachtungsschritt SELECT FROM WHERE GROUP BY HAVING 6 1 2 3 4 ORDER BY 5 Erläuterung streicht alle nicht genannten Spalten bildet das Kreuzprodukt der genannten Tabellen streicht alle Zeilen, welche die Bedingung nicht erfüllen bildet Gruppen streicht alle Zeilen, welche die Bedingung nicht erfüllen (nur mit Gruppierung verwendbar) sortiert auf- oder absteigend Projektion – Spaltenauswahl mit der Select-Anweisung SELECT * FROM MITARBEITER; Gibt alle Spalten und alle Zeilen der Tabelle MITARBEITER aus. Spalten umbenennen SELECT name AS Familienname, vname AS Vorname, alt AS ‘Alter’ FROM MITARBEITER; Die Spalte name wird bei Ausgabe der Daten nun Familienname usw. genannt. Entspricht der Ersatzname (Alias) einem SQL-Schlüsselwort (z.B.: ALTER oder UPDATE), so muss er in Anführungszeichen (“ “) oder Apostrophe (’’) gestellt werden. Familienname Vorname Alter Heinrichs Harry 45 Kunkel Silke 25 Kroner Bart 88 Konstante Werte ausgeben SELECT 'Mitarbeiter’ AS angestellt_als, name, vname FROM MITARBEITER; Es wird eine Spalte angestellt_als eingefügt, die stets den konstanten Wert Mitarbeiter enthält. Anzahl der Datensätze beschränken SELECT name, vname FROM MITARBEITER LIMIT 10; Gibt die ersten 10 Datensätze zurück. 579863365 Informatik * Dresden * Meißen 1[3] Informatik Klasse 11/12 Einfache Abfragen mit SQL Doppelte Datensätze vermeiden SELECT DISTINCT plz, ort FROM MITARBEITER; Die ausgegebenen Datensätze unterscheiden sich mindestens in einem Feld. Berechnungen ausführen SELECT id, preis, stueck, preis*stueck AS Lagerwert FROM LAGER; preis wird mit stueck multipliziert und als Spalte Lagerwert ausgegeben. Man kann mit + - * / ( ) nach den bekannten Vorrangregeln rechnen. Dabei werden nur numerische Datenfelder (Integer oder Float) akzeptiert. Formatierung der Kommastellen des berechneten Ergebnisses: auf 2 Nachkommastellen runden mit ROUND(wert,2) SELECT id, round(`stueck` *`preis`,2) as 'wert‘ from lager; die Zahl auf 2 Nachkommastellen abschneiden mit TRUNCATE(wert,2) SELECT id,truncate(`stueck` *`preis`,2) as 'wert‘ from lager; Kombination aus Selektion und Projektion- Bedingungen definieren mit der Where-Anweisung Mit Hilfe der WHERE-Klausel werden die Daten gefiltert. Bedingung Beispiel Vergleichsoperatoren preis < 100 <, >, <>, =, <=, name = “Meier“ >= Bereichsprüfung preis BETWEEN 10 AND 100 BETWEEN Elementprüfung IN Mustervergleich LIKE abteilung IN(“Einkauf“, “Verkauf“) Nullwertprüfung IS NULL preis IS NULL name LIKE “M%“ * % name LIKE “M_ller” Logische Operatoren preis < 100 AND preis > 10 NOT, AND, OR Erklärung Vergleicht den Wert eines Datenfelds mit einem vorgegebenen Wert Prüft, ob der Wert eines Feldes innerhalb eines bestimmten Bereichs liegt Prüft, ob der Wert eines Feldes in der angegebenen Liste vorkommt Überprüft einen Feldinhalt auf Übereinstimmung mit einem Muster Prüft einen Feldinhalt auf den Wert NULL (Datenfeld enthält keinen Wert) Verknüpfung mehrerer Bedingungen (auch mit Klammerung) SELECT NAME, VNAME, PLZ, ORT FROM MITARBEITER WHERE PLZ LIKE ‘6%’ AND ALT < 40 Gibt die Spalten name, vname, plz, ort aus der Tabelle MITARBEITER aus. Die Datensätze sind beschränkt auf plz, die mit 6 beginnen und alt muss kleiner als 40 sein. 579863365 Informatik * Dresden * Meißen 2[3] Informatik Klasse 11/12 Einfache Abfragen mit SQL Sortierung Sortierung der Abfrageergebnisse nach einem oder mehreren Datenfeldern mittels ORDER BY-Klausel Standardmäßig wird aufsteigend sortiert (ASCending) SELECT * FROM LAGER ORDER BY preis DESC; Sortierung nach preis in absteigender Reihenfolge (DESCending) SELECT vname, name, plz, ort FROM MITARBEITER ORDER BY name, vname; Zuerst wird nach name dann nach vname sortiert Übungsaufgaben mit schule09 (eine Tabelle) 1. Es sollen alle Schüler mit Namen, Vornamen und Klasse ausgegeben werden! 2. Alle Lehrer sollen alphabetisch geordnet (nach Name) mit den Attributen Name, Vorname, Abkürzung ausgegeben werden! 3. Welche Lehrer wohnen in Meißen? (Abkz, Name, Vorname) 4. Welche Lehrer wohnen Nicht in Meißen? (Abkz, Name, Vorname, Wohnort) 5. Welche Unterrichtsfächer unterrichtet Herr Conrad? 6. Es sollen alle Geschichtskurse ausgegeben werden (Kursnr, Beginn)! 7. Ermitteln Sie alle auftretenden Familiennamen alphabetisch geordnet aus der Tabelle Schüler! 8. Ermitteln Sie alle Lehrer (vname, name), deren Familienname auf mann endet! 9. Ermitteln Sie alle Wohnorte der Schüler, die mit K beginnen! 10. Ermitteln Sie alle Wohnorte der Lehrer, deren Postleitzahl die Ziffernfolge 65 am Ende enthält! 11. Welche Schüler sind bereits 18 Jahre alt? 12. Welche Kurse begannen im Jahr 2008 (bzw. welche Kurse sind 12er Kurse)? Übungsaufgaben mit firma (eine Tabelle) 1. Finden Sie alle Mitarbeiter mit dem Namen Müller! 2. Finden Sie alle Mitarbeiter, deren Namen mit A, B oder C beginnen! 3. Finden Sie alle Produkte, deren Stückzahl kleiner als 50 ist! 4. Finden Sie alle Mitarbeiter, deren Namen mit D, E oder F beginnen! 5. Finden Sie alle Produkte, die zwischen 50 und 14 Euro kosten! 6. Gesucht sind die Mitarbeiter, welche in Gera oder Leipzig wohnen! 7. Gesucht sind alle Produkte, mit Stückzahlen von 1 oder 5. 8. Welche Ableitungen enden mit „tion“? 9. Welche Meier, Meyer arbeiten im Betrieb! 10. Welche Mitarbeiter arbeiten in keiner Ableitung? 11. Welche Produkte sind nicht mehr vorhanden? 12. Welche Produkte kosten zwischen 0,00 und 5,01 Euro? 579863365 Informatik * Dresden * Meißen 3[3]