200 likes | 817 Views
SQL-Datentypen. Datenbeschreibungssprache Anweisungen zur Bearbeitung der Datenbankstruktur CREATE z.B. Tabelle erstellen : create table Kunden(K_Nr counter,Name text(30) NOT NULL,Vorname text(30),Geburtsdatum date,Primary Key(K_Nr));
E N D
DatenbeschreibungsspracheAnweisungen zur Bearbeitung der Datenbankstruktur CREATE z.B. Tabelle erstellen:create table Kunden(K_Nr counter,Name text(30) NOT NULL,Vorname text(30),Geburtsdatum date,Primary Key(K_Nr)); ALTERDatenstruktur ändern, z.B.: Spalte einfügen:alter table Kunden add column PLZ integer;Datentyp ändern:alter table Kunden alter PLZ text(5);Spalte als Primärschlüssel deklarieren:alter table Artikel add Primary Key (Art_Nr); DROPz.B. Tabelle löschen:drop table Artikel; DatenmanipulationsspracheAnweisungen zum Einfügen und Bearbeiten der Daten INSERT Daten einfügen-vollständigen Datensatz einfügen:insert into Kunden values(5,“Fleißig“,“Lieschen“,,#13/03/1980#);-einzelne Felder einfügeninsert into Kunden (Name,Geburtsdatum) values(“Ratlos“, #12/12/1982#); UPDATE Daten bearbeiten/aktualisierenLieschen heiratet und ändert ihren Nachnamen:update kunden set Name=„Müller“ where K_Nr=5;Preiserhöhung für alle Artikel um 1%update artikel set Preis=Preis*1.01;DELETE Daten löschenEinen Datensatz aus der Tabelle löschen:delete * from Kunden where K_Nr=5;Alle Daten in einer Tabelle löschen:delete * from Kunden; SQL
Erstellen von Auswahlabfragen Auswahl von Datenfeldern aus 1 oder mehreren Tabellen; Auswahl von Datensätzen SELECT Feld(er) FROM Tabelle(n) WHERE Kriterien______ =optional Einfache Beispiele:SELECT * FROM Kunden;SELECT Name, Vorname FROM Kunden;SELECT Name, Vorname FROM Kunden WHERE KNr=5; Operatoren:BETWEENSELECT Name, Vorname FROM Kunden WHERE KNr BETWEEN 5 and 10;(SELECT Name, Vorname FROM Kunden WHERE KNr>=5 and KNr<=10);INSELECT Name, Vorname FROM Kunden WHERE KNr IN(12,21,15);(SELECT Name, Vorname FROM Kunden WHERE KNr=12 or KNr=21 or KNr=15;)LIKESELECT Name, Vorname FROM Kunden WHERE Name LIKE „B*“;SELECT Name, Vorname,Geburtsdatum FROM Kunden WHERE Geburtsdatum LIKE „*.12.*“;(Alle im Juni geborenen Kunden) SQL
Abfragen mit mehreren Tabellen SELECT Name, Vorname,Abteilung FROM Kunden,Abteilung WHERE Kunden.AbtNr=Abteilung.AbtNr;(Kunden.AbtNr=Abteilung.AbtNr Verknüpfung zwischen Primär- und Fremdschlüsselfeld herstellen)SELECT Name, Vorname,Abteilung.AbtNr,Abteilung FROM Kunden,Abteilung WHERE Kunden.AbtNr=Abteilung.AbtNr;(Bei Feldern, die in mehreren Tabellen vorkommen, Tabelle angeben, aus der das Feld angezeigt werden soll) Daten sortieren:ORDER BY Kriterium ASC aufsteigend sortieren (Standard)ORDER BY Kriterium DESC absteigend sortierenBeispiele:SELECT * FROM Kunden ORDER BY Name;SELECT Name, Vorname FROM Kunden WHERE KNr IN(12,21,15) ORDER BY Name DESC;SELECT Name, Vorname,Abteilung FROM Kunden,Abteilung WHERE Kunden.AbtNr=Abteilung.AbtNr ORDER BY Abteilung.AbtNr; SQL
SQL - Gruppenfunktionen • Lassen Sie die Anzahl der in der gleichnamigen Tabelle gespeicherten Teilnehmer ermitteln. Feldname für die Ausgabe: TeilnehmerzahlSELECT Count(*) AS Teilnehmerzahl FROM Teilnehmer; • Ermitteln Sie die Anzahl der Teilnehmer aus dem PLZ-Bezirk 84. Feldname PLZ84SELECT Count(*) AS PLZ84 FROM Teilnehmer WHERE PLZ like "84*"; • Ermitteln Sie den durchschnittlichenUESatz in der Tabelle Dozent. Feldname: UESatzMittelSELECT Avg(UESatz) AS UESatzMittel FROM Dozent; • Ermitteln Sie die Gesamtdauer aller Lehrgänge in der Tabelle Inhalt. Feldname: LehrgangsdauerSELECT Sum(DauerUE) AS Lehrgangsdauer FROM Inhalt; • Ermitteln Sie die höchste und die kürzeste Lehrgangsdauer. Feldnamen: MaxDauer, MinDauerSELECT Max(DauerUE) AS MaxDauer, Min(DauerUE) AS MinDauer FROM Inhalt; Übungsdatenbank Lehrgänge
SQL - Gruppenfunktionen GROUP BY fasst alle Datensätze, die in einem Feld gleiche Werte enthalten (z.B. ORT), zu einem Datensatz zusammen. Mit COUNT, SUM, usw.…kann dann ein zusammenfassender Wert für diesen Datensatz berechnet werden. • Mit Hilfe der Tabellen Teilnehmer und Ort soll ermittelt werden, wie viele Teilnehmer aus den jeweiligen Orten stammen. Angabe der Felder Ort und AnzahlSELECT Ort.Ort, Count(*) AS Anzahl FROM Teilnehmer, Ort WHERE Ort.PLZ=Teilnehmer.PLZ GROUP BY Ort; • Für den Dozenten Heider soll ermittelt werden, welchen Rechnungsbetrag er aus den von ihm durchgeführten Lehrgängen erzielt. (Lehrgangsdauer gespeichert in Tabelle Inhalt; Satz für eine Unterrichtseinheit gespeichert in Tabelle Dozent)SELECT Name, sum(DauerUE*UESatz) AS RechnungsbetragFROM Lehrgang, Inhalt, Dozent WHERE Name="Heidert" AND Lehrgang.INR=Inhalt.INR AND Dozent.DNR=Lehrgang.DNR GROUP BY Name;
SQL - Gruppenfunktionen Die Anzahl der Datensätze kann mit HAVING und einer Bedingung weiter eingeschränkt werden. Die HAVING-Klausel folgt dabei immer dem GROUP BY-Konstrukt Es sollen angezeigt werden: • Orte und Summe der Mietkosten, gruppiert und sortiert nach Orten:SELECT Ort, Sum(Mietkosten) AS Gesamtmietkosten FROM Mieter_Vermieter GROUP BY Ort ORDER BY Ort; • Orte, Anzahl der Mieter, Gesamtmietkosten, gruppiert nach OrtenSELECT Ort, count(*) AS Anzahl, sum(Mietkosten) AS Gesamtmietkosten FROM Mieter_Vermieter GROUP BY ort; • Orte, Summe der Mietkosten, gruppiert nach Orten, jedoch ohne BerlinSELECT Ort, sum(Mietkosten) AS Gesamtmietkosten FROM Mieter_Vermieter WHERE ort<>"Berlin“ GROUP BY ort ORDER BY ort;oderSELECT Ort, sum(Mietkosten) AS Gesamtmietkosten FROM Mieter_Vermieter GROUP BY ort HAVING ort<>"Berlin“ ORDER BY ort; Übungsdatenbank Mieter
SQL - Gruppenfunktionen • Orte, Gesamtmietkosten, jedoch ohne Hamburg; eine Gruppe soll nur dann erscheinen, wenn die Gesamtmietkosten nicht negativ sind.SELECT Ort, sum(Mietkosten) AS Gesamtmietkosten FROM Mieter_Vermieter WHERE ort<>"Hamburg“ GROUP BY ort HAVING sum(Mietkosten)>=0;oderSELECT Ort, sum(Mietkosten) AS Gesamtmietkosten FROM Mieter_Vermieter GROUP BY ort HAVING sum(Mietkosten)>=0 and ort<>"Hamburg“ • Orte, Anzahl der Mieter und Gesamtmietkosten, gruppiert nach Orten. Es sollen nur die Orte enthalten sein, in denen mehr als zwei Mieter wohnen.SELECT Ort, count(*) AS Anzahl, sum(Mietkosten) AS Gesamtmietkosten FROM Mieter_Vermieter GROUP BY ort HAVING count(*)>2; • Summe der Gesamtmietkosten bis maximal -200,00 € jener Orte, in denen mindestens zwei Mieter wohnenSELECT ort, sum(Mietkosten) AS Gesamtmietkosten FROM Mieter_Vermieter GROUP BY ort HAVING count(*)>=2 and sum(Mietkosten)<=-200;