Übungsblatt 5 Aufgabe 10: Datensicht - Vom DV-Konzept zur Implementierung SQL (Structured/Standard Query Language) - DDL (Data Description Language) Sprache zur Beschreibung einer Datenbank (z.B. Anlegen von Tabellen) DML (Data Minipiulaton Language) Sprache, die das Arbeiten mit einer DB unterstützt (z.B. Veränderungen von Daten, Hinzufügen, Löschen) QL (Query Language) Sprache, um Daten aufzufinden und selektiv darzustellen (z.B. Selektionen wie z.B. Kunden mit Umsatz > 10.000 Euro auflisten) Beispiel für DB-Systeme: Oracle, My SQL, MS Access Datentypen: - VARCHAR (Größe) = Zeichenkette CHAR ) Größe) = feste Zeichenkette INT integer = ganzzahliger Wert FLOAT = Gleitkommazahl DOUBLE = Fließkommazahl COUNTER = Inkrementwert, Zähler (Wert wird hochgezählt) DATETIME = Datum BLOB = Binary Large Object (für Binärdaten) TIMESTAMP = 11-stellige Ziffer, die Sekundengenau einen Zeitpunkt definiert Beispiele: VATCHAR (50) = Kette von Zeichen, die maximal 50 Zeichen enthält Regeln: - Eine SQL Anweisung kann in einer Zeile, oder in mehreren Zeilen eingeben werden Die Anweisung wird mit einem Semikolon abgeschlossen!! SQL ignoriert Groß- und Kleinschreibung bei SQL-Schlüsselwörtern, Tabellennamen und Spaltennamen Bei Zellinhalten in Tabellen wird aber zwischen Groß- und Kleinschreibung unterschieden Erstellen einer Tabelle und Definition der Spalten CREATE TABLE Tabellenname (Feld1 Datentyp [(Größe)] [NOT NULL] [,Feld2 Datentyp [(Größe)] [NOT NULL] [,…] PRIMARY KEY (Schlüsselattribute)]) Null ist nicht die Zahl 0, sondern ein leeres Feld zwischen den Feldern Komma setzen Beispiel: CREATE TABLE Kunde (Kundennr COUNTER NOT NULL, Name VARCHAR (50) NOT NULL, PLZ CHAR (5) PRIMARY KEY (Kundennr)); Lösungen Aufgabe 10: b) CREATE TABLE Kunde ( KNR COUNTER NOT NULL, KNAME VARCHAR (50) NOT NULL, ADRESSE VARCHAR (100) PRIMARY KEY (KNR) ); CREATE TABLE Artikel ( ANr COUNTER NOT NULL, ABez VARCHAR (100) NOT NULL, Format VARCHAR (100) NOT NULL, Preis FLOAD NOT NULL, Sknr INT NOT NULL PRIMARY KEY (Anr) ); Spalten hinzufügen/löschen/umbenennen ALTER TABLE Tabellenname ADD COLUMN Spaltenname Datentyp = Spalte hinzufügen ALTER TABLE Tabellenname DROP COLUMN Spaltenname Datentyp =Spalte löschen Beispiel: ALTER TABLE Kunde ADD COLUMN Rabattstufe INT; Auswahl von Daten: SELECT [Tabelle] Feld1 [AS Alias1][, [Tabelle]Feld2[AS Alias2] [,…] FROM Tabellenname WHERE Suchbedingung; Anmerkung: Vergleichoperatoren innerhalb der Suchbedingung sind <, >, =, <> Beispiel: SELECT Name FROM Kunde WHERE Plz=’66123’; SELECT Kunde.Name -> bei mehreren Feldern Name in verschiedenen Tabellen. Diese Anweisung identifiziert eindeutig die Spalte Name in der Tabelle Kunde. SELECT * FROM Kunde -> da würden sämtliche Felder der Tabelle Kunde wiedergegeben werden Mathematische Funktionen SELECT SUM (Tabelle.]Feld …..= Summe SELECT MIN = Minimum SELECT MAX = Maximum SELECT AVG = Durchschnitt SELECT COUNT= Anzahl Hinzufügen von Daten: INSERT INTO Tabellenname (Spaltenname1, Spaltename2,..) VALUES (Wert1, Wert2,..)); Beispiel: INSERT INTO Kunde (Name, Plz) VALUES (’Müller’, ’66121’); Da Kundenr COUNTER ist, muss es nicht mit aufgenommen werden, da Wert von DB selbstständig eingetragen wird. Werte müssen mit Hochkomma eingetragen werden, wenn Typ CHAR, Wenn Zahlen eingetragen werden ohne Hochkomma und mit Punkt statt Komma, bei Kommazahlen) Sortieren/Gruppieren SELECT FROM WHERE ORDER BY Spaltenname [ASC/DESC] ; (ASC aufsteigend, DESC = absteigend) SELECT FROM GROUP BY Spaltenname [HAVING Gruppenkriterien] [ORDER BY Spaltenname [ASC/DESC]]; Löschen von Datensätzen DELETE FROM Tabellenname WHERE Suchbedingung; Beispiel: DELETE FROM Kunde WHERE Plz<’10000’; Tabellen löschen DROP TABLE Tabellenname; Beispiel: DROP TABLE Kunde Mit einer Anfrage kann man nur eine Tabelle löschen und nicht mehrere!!! Lösung c) INSERT INTO Artikel (Abez, Format, Preis, SKnr.) VALUES (’Scheer, A.-W.: Consulting’, ‘Hardcover’, ’39,95 €’,1); (‘Scheer…’, ‘Hardcover’, 39,95,1,’€’); INSERT INTO Kunde (Kname, Adresse) VALUES (’Meier’, ’Waldausweg 15’); d) UPDATE Kunde SET Adresse =’Bismarckbrücke 5’ WHERE Kname = ’Meier’ AND Adresse =’Waldhausweg 15’; e) SELECT Datum, (Preis*Menge) AS Brutto, (Preis*Menge)/(1+STEUERSATZ) AS Netto FROM Postition, Artikel, Steuerklasse, WHERE Position.ANR = Artikel.ANR AND Artikel.SKNR = Steuerklasse.SKNR; f) SELECT Artikel.ANR, ABEZ FROM Artikel, Position WHERE Artikel.ANR = Position.ANR AND NNR = 1; g) SELECT KNAME.Adresse, BNR, NNAME, ABEZ, PREIS, FORMAT, STEUERSATZ, MENGE FROM NIEDERLASSUNG, POSITION, ARTIKEL, STEUERKLASSE, KUNDE WHERE NIEDERLASSUNG.NNR=POSITION.NNR AND KUNDE.KNR = POSITION.KNR AND ARTIKEL.ANR = POSITION.ANR AND ARTIKEL.SKNR = STEUERKLASSE.SKNR AND (KNAME=’Müller’ OR KNAME=’Raab’); h) UPDATE Steuerklasse SET Steuersatz = 0.05 WHERE SKNR =3; Anmerkung: Kommazahlen müssen mit Punkt statt Komma dargestellt werden!!!! i) DELETE FROM Kunde WHERE KNR=3; DELETE FROM Rechnungskopf WHERE KNR=3; DELETE FROM Position WHERE KNR=3; j) DROP TABLE Niederlassung; DROP TABLE Kunde; DROP TABLE ........... Regeln: - Bei DELETE UND DROP müssen Tabellen getrennt aufgeführt werden!!! - Kommazahlen müssen mit Punkt statt Komma dargestellt werden!!!!