Kein Folientitel

Werbung
Bauinformatik II
Softwareanwendungen 1
Relationale Datenbanken
für Bauingenieurprobleme
5. Semester
1. Vorlesung: SQL
Prof. Dr.-Ing.
R. J. Scherer
Nürnberger Str. 31a
2. OG, Raum 204
TU Dresden - Institut für Baumechanik und Bauinformatik - Computeranwendung im Bauwesen
Fakultät Bauingenieurwesen
Institut für Bauinformatik
Prof. Dr.-Ing. Raimar J. Scherer
Gebäude: Nürnberger Str. 31 A, 2. Stock
PFLICHTLEHRVERANSTALTUNG
Studiengang:
http:// cib.bau.tu-dresden.de
Studienabschnitt:
Bauingenieurwesen
Grundfachstudium
(alte Studienordnung)
5. Semester
Lehrveranstaltung: Bauinformatik II - Datenbanken
Prof. Dr.-Ing. R. J. Scherer
Dipl.-Ing. (FH) G. Faschingbauer
Kurzfassung:
Die Vorlesung vermittelt die theoretischen Grundlagen der Konzipierung,
Sicherung und Verwaltung großer Datenbestände in Datenbanken sowie
anwendungsbereites Informatik-Wissen für die Erstellung und Nutzung
relationaler Datenbanken am Beispiel von MySQL und MS ACCESS.
Schwerpunkte:
• Hierarchische und relationale Datenbanken
• Relationen, Assoziationen, Kardinalität
• Generalisierung / Spezialisierung
• Normalisierungsprozesse
• Datenbankentwurf
• Zugriffssprache SQL
• Statistikfunktionen, Mengenoperationen
Beleg:
Semesterbegleitend ist ein Beleg zur Konzipierung und zum Anlegen
einer relationalen Datenbank in der Datenbanksprache SQL zu
erarbeiten.
Prüfung:
Die Vorlesungsinhalte werden als Teil der schriftlichen Prüfung im
Fach Bauinformatik II nach dem 6. Semester geprüft.
Ankündigung der Lehrveranstaltung, WS 2007/2008
Bauinformatik II, Softwareanwendungen 1
Datenbanken
Vorlesungen: 14-täglich: Montag, 5. DS, gerade Woche, BEY 81/H
Mobiler Client
Baustellensicht
Webserver
Projekt-Sicht
Dateneingabe
Internet
Servlets
Büro-PC
Firmen-Sicht(en)
Reports
Internet
Informationszugriff
HTML/JSP
HTML/JSP
Stammdatenpflege
Datenbank
Server
1. Vorlesung: 15.10.2007
Übungen (14-täglich), BEY 73 PC-Pool:
Übg.-gr.
05/5/BIW/ 01
05/5/BIW/ 02
05/5/BIW/ 03
05/5/BIW/ 04
05/5/BIW/ 05
05/5/BIW/ 06
Tag
Dienstag
Freitag
Freitag
Dienstag
Donnerstag
Dienstag
DS
1. DS
1. DS
1. DS
1. DS
4. DS
1. DS
Woche
ungerade
ungerade
gerade
gerade
ungerade
gerade
Ansprechpartner:
Prof. Dr.-Ing. R. J. Scherer
[email protected]
Dipl.-Ing. (FH) G. Faschingbauer [email protected]
TU Dresden - Institut für Baumechanik und Bauinformatik - Computeranwendung im Bauwesen
Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung Folie-Nr.: 2
Ziel:
Speichern, Verwalten und Selektieren
von Daten in strukturierter Form
TU Dresden - Institut für Baumechanik und Bauinformatik - Computeranwendung im Bauwesen
Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung Folie-Nr.: 3
Beispiel: Datenbank-Konzept
(Datenmodell)
nr
INTEGER
pressure
REAL
REAL
nr
name
INTEGER
ZEICHENFOLGE
STRING
viscosity
velocity
REAL
REAL
density
time
REAL
time
Node_Sensor
INTEGER
Pipe_Sensor
REAL
nr
Fluid
location
name
fluid_parameters
location
ZEICHENFOLGE
STRING
x_coord
REAL
y_coord
start_node
(ABS)Node
nr
Pipe
INTEGER
end_node
REAL
pipe_parameter
Q
z_coord
REAL
pipe_type_select
REAL
pressure
REAL
Input_Node
1
Output_Node
Inner_Node
(OPT) parameter
Pipe_Type
name
consumption
required_pressure
water_input
REAL
STRING
ZEICHENFOLGE
REAL
REAL
Pipe_Parameter
diameter
PN
k
REAL
REAL
REAL
nr
STRING
ZEICHENFOLGE
TU Dresden - Institut für Baumechanik und Bauinformatik - Computeranwendung im Bauwesen
Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung Folie-Nr.: 4
Beispiel: Datenbank-Konzept
(Identifikation von Tabellen)
INTEGER
nr
table Node_Sensor
pressure
REAL
REAL
nr
table
Pipe_Sensor
INTEGER
table
Fluid
ZEICHENFOLGE
STRING
name
viscosity
velocity
REAL
REAL
density
time
REAL
time
Node_Sensor
INTEGER
Pipe_Sensor
REAL
nr
Fluid
location
name
fluid_parameters
location
ZEICHENFOLGE
STRING
tablestart_node
Node
x_coord
REAL
y_coord
(ABS)Node
table
Pipe
INTEGER
nr
Pipe
end_node
REAL
pipe_parameter
Q
z_coord
REAL
pipe_type_select
REAL
pressure
REAL
1
table Pipe_Parameter
Input_Node
Output_Node
(OPT) parameter
Inner_Node
Pipe_Type
name
consumption
required_pressure
water_input
REAL
STRING
ZEICHENFOLGE
REAL
REAL
Pipe_Parameter
diameter
PN
k
REAL
REAL
REAL
nr
STRING
ZEICHENFOLGE
TU Dresden - Institut für Baumechanik und Bauinformatik - Computeranwendung im Bauwesen
Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung Folie-Nr.: 5
Beispiel: Implementierung der Datenbank
TU Dresden - Institut für Baumechanik und Bauinformatik - Computeranwendung im Bauwesen
Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung Folie-Nr.: 6
Beispiel: Instanziierung von Objekten
(Speichern von Daten)
TU Dresden - Institut für Baumechanik und Bauinformatik - Computeranwendung im Bauwesen
Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung Folie-Nr.: 7
Anlegen,
Speichern und
Abrufen ...
... von Daten erfordert eine
SPRACHE
TU Dresden - Institut für Baumechanik und Bauinformatik - Computeranwendung im Bauwesen
Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung Folie-Nr.: 8
Die Sprache SQL
Die Sprache SQL (Structured Query Language ) hat sich als
wichtigste Zugriffssprache und internationale, standardisierte Schnittstelle für
Datenbanken entwickelt.
Entstehung der Sprache:
• 1970 von E. F. Codd bei IBM unter dem Namen SEQEL entwickelt
• 1979 von ORACLE unter dem Namen SQL vorgestellt
• 1986 erste Nominierung (SQL-1 NORM)
• 1989 ergänzt (SQL-1 + NORM)
• 1992 erheblich erweitert (SQL-2 Norm).
- 600 Seiten –
• 1999 zahlreichen Erweiterungen (SQL-3), vor allem in Richtung
Objektorientierung - 1300 Seiten Sie wird gegenwärtig von den meisten Datenbanksystemen wie
MySQL, ORACLE, dBase, MS-ACCESS, Sybase, Informix, Ingres, UDS,
DB2, Adabas, Foxpro und Parado unterstützt.
TU Dresden - Institut für Baumechanik und Bauinformatik - Computeranwendung im Bauwesen
Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung Folie-Nr.: 9
Die Sprache SQL
• SQL ist eine Sprache der 4. Generation
• Sie ist eine nicht-prozedurale Sprache, d. h. es gibt
- keine Schleifen
- keine Verzweigungen
• SQL ist nicht objektorientiert
• Es ist eine unvollständige Sprache, es gibt
- keine Strukturen wie Unterprogramme
- keine Hauptprogramme
• SQL benötigt eine Wirtssprache
z. B. C++: Aufruf von SQL durch „EXEC SQL“, um
ein vollständiges Programm und
Transaktion, Prüfalgorithmus etc. zu erstellen
- oder mit Batch-File zu arbeiten
- oder interaktiv (von Hand)
• SQL benötigt eine vollständige relationale Zugriffssprache, d. h. alle
8 Operationen der relationalen Algebra sind vorhanden bzw. darstellbar.
• Anm.: nur 5 sind unabhängig. Die letzten 3 können aus diesen gebildet
werden.
.
.
.
.
.
TU Dresden - Institut für Baumechanik und Bauinformatik - Computeranwendung im Bauwesen
Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung Folie-Nr.: 10
Die Sprache SQL
SQL wird bei den meisten DBMS unterschiedlich umgesetzt,
d.h.: die Syntax kann bei jedem DBMS von Standard-SQL
abweichen
TU Dresden - Institut für Baumechanik und Bauinformatik - Computeranwendung im Bauwesen
Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung Folie-Nr.: 11
SQL – Schlüsselwörter
Die wesentlichen Schlüsselwörter (Befehle, reservierte Wörter,
Kommandos) sind:
• CREATE
• SELECT
• INSERT
• UPDATE
• DELETE
Erstellen, Anlegen,
z. B. Erstellen der Struktur einer Tabelle
mit CREATE TABLE
Auflisten des Inhalts
(Informationen, Daten) einer Tabelle
Einfügen von Daten in eine Tabelle
Ändern von Daten einer Tabelle
Löschen von Daten einer Tabelle
TU Dresden - Institut für Baumechanik und Bauinformatik - Computeranwendung im Bauwesen
Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung Folie-Nr.: 12
SQL - Befehle
Die Kommandos beginnen stets mit einem Schlüsselwort (CREATE,
SELECT, INSERT, UPDATE oder DELETE), dem Angaben des
Anwenders über die Datenbanktabelle folgen.
Außerdem können weitere Schlüsselwörter mit entsprechenden
Angaben folgen.
Jeder Befehl wird mit einem Semikolon abgeschlossen.
Zwischen den einzelnen Wörtern sind beliebig viele Leerzeichen und
Zeilenwechsel
möglich. Groß- und Kleinschreibung wird nicht unterschieden,
d. h. sie ist ebenfalls beliebig.
Für Bezeichnungen wie Attribute, Tabellennamen usw. können nur (Großund Klein-) Buchstaben, Ziffern und Unterstrich ( _ ) verwendet werden.
Jede Bezeichnung muss mit einem Buchstaben oder Unterstrich beginnen.
TU Dresden - Institut für Baumechanik und Bauinformatik - Computeranwendung im Bauwesen
Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung Folie-Nr.: 13
SQL – Syntax
• Ausdrücke in eckigen Klammern [ ] können auch
weggelassen werden.
• Sind mehrere Angaben durch einen senkrechten Strich |
getrennt, darf nur genau eine dieser Angaben verwendet
werden.
• Die hier großgeschriebenen Wörter sind reservierte Wörter
und müssen bis auf Groß- und Kleinschreibung genau im
Befehl angegeben werden.
• Die kursiv geschriebenen Bezeichnungen sind wahlfrei.
TU Dresden - Institut für Baumechanik und Bauinformatik - Computeranwendung im Bauwesen
Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung Folie-Nr.: 14
SQL – Der Befehl CREATE
Syntax:
CREATE TABLE Tabellenname
(
{ Spalte { Datentyp | Gebietsname }
[ Spaltenbedingung [ . . . ] ] | Tabellenbedingung
}
[ , ...]
)
TU Dresden - Institut für Baumechanik und Bauinformatik - Computeranwendung im Bauwesen
Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung Folie-Nr.: 15
SQL - Erstellen der Struktur einer Tabelle mit CREATE
einfache Grundform:
CREATE TABLE Tabellenname ( Sp1 , Sp2 , . . . , Spi . . . , Spn ) ;
Semikolon schließt den Befehl ab
schließende Klammer für die Liste der Attribute
Komma trennt die Attribute
Attribute (Bezeichnungen der anzulegenden Spalten)
öffnende Klammer für Liste der Attribute
Name der anzulegenden Tabelle
Schlüsselwort zum Anlegen einer Tabelle
Schlüsselwort für Erstellen
TU Dresden - Institut für Baumechanik und Bauinformatik - Computeranwendung im Bauwesen
Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung Folie-Nr.: 16
SQL - Erstellen der Struktur einer Tabelle mit CREATE
Angaben zu den Attributen
CREATE TABLE Tabellenname ( Sp1 , Sp2 , . . . , Spi . . . , Spn ) ;
ATTRIBUT
Datentyp ( Stellenzahl )
weitere Angaben
Festlegungen für die zu erstellende Spalte wie:
PRIMARY KEY (Primärschlüssel)
REFERENCES Tabellenname
(Fremdschlüssel zu einer bereits
existierenden Tabelle)
NOT NULL (Wert der Spalte darf nie Null sein)
Schließende Klammer für Stellenzahl
Angaben der Stellenzahl
Öffnende Klammer für Stellenzahl
Typ der Information dieser Spalte, wie
CHARACTER, NUMERIC, INTEGER usw.
Attribut = Name der zu erstellenden Spalte
TU Dresden - Institut für Baumechanik und Bauinformatik - Computeranwendung im Bauwesen
Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung Folie-Nr.: 17
SQL – Der Befehl CREATE - Beispiel
Anlegen von 2 Tabellen einer relationalen Datenbank,
die über Fremdschlüssel korrespondieren:
CREATE TABLE Bauinfo3
( BINr
INTEGER PRIMARY KEY ,
Beleg
NUMERIC (5, 1) ,
Klausur NUMERIC (5, 1) ,
NoteGrdl NUMERIC (5, 1)
);
CREATE TABLE Studenten
( MatrNr INTEGER PRIMARY KEY ,
Name
CHARACTER (20) NOT NULL ,
Vorname CHARACTER (20) NOT NULL,
Adresse CHARACTER (60)
BINr
INTEGER REFERENCES Bauinfo3
ON DELETE SET NULL ON UPDATE CASCADE
);
Beachte:
Bevor eine
Tabelle
mit einem
(oder mehreren)
Fremdschlüssel(n)
angelegt werden
kann, muss die
Tabelle, auf
die sich der (die)
Fremd-Schlüssel
bezieht(n), vorher
angelegt worden
sein !
TU Dresden - Institut für Baumechanik und Bauinformatik - Computeranwendung im Bauwesen
Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung Folie-Nr.: 18
SQL: Datentypen
Folgende Datentypen sind möglich:
Datentyp
INTEGER
INT
SMALLINT
NUMERIC (x, y)
DECIMAL (x, y)
.
Bedeutung
Ganzzahl
Kurzform von INTEGER
Ganzzahl
x-stellige Dezimalzahl mit y Nachkommastellen
mindestens x-stellige Dezimalzahl mit y
Nachkommastellen
Gleitpunktzahl mit Nachkommastellen
FLOAT (x)
Zeichenkette der festen Länge n
CHARACTER (n)
Kurzform von CHARACTER (n)
CHAR (n)
CHARACTER VARYING (n) Variable Zeichenkette mit bis zu n Zeichen
VARCHAR (n)
Kurzform von CHARACTER VARYING (n)
BIT (n)
Bitleiste der festen Länge n
DATE
Datum (Jahr, Monat, Tag)
TIME
Uhrzeit (Stunde, Minute, Sekunde)
x Gesamtstellenzahl
y Nachkommastellen
n Anzahl der Zeichen
.
.
TU Dresden - Institut für Baumechanik und Bauinformatik - Computeranwendung im Bauwesen
Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung Folie-Nr.: 19
SQL: Datentypen - Wahrheitswert
Einen Wahrheitswert BOOLEAN (wie z. B. in MS-ACCESS)
gibt es z.B. in ORACLE nicht.
Er muss durch CHARACTER (1) oder BIT (1) umschrieben
werden.
TU Dresden - Institut für Baumechanik und Bauinformatik - Computeranwendung im Bauwesen
Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung Folie-Nr.: 20
SQL: Datentypen - Besonderheiten
Die Größe der Datentypen INTEGER und SMALLINT ist implementierungsabhängig, wobei garantiert wird, dass INTEGER-Zahlen mindestens so groß
wie SMALLINT-Zahlen sind, z. B.:
Datentyp
ORACLE
MS-ACCESS
INTEGER SMALLINT
38stellig
38stellig
4 Byte
2 Byte
• Wenn die x–Werte bei den Datentypen weggelassen werden, werden implementierungsbedingte Werte angenommen. Beim Weglassen der y-Werte wird die Zahl
als Null angenommen.
• Die Angabe CHARACTER ohne Parameter entspricht dem Vorgabewert
CHARACTER (1).
• Der Datentyp BIT ohne Parameter hat die Bedeutung BIT (1).
• Bei SQL-2 können auch die Datentypen REAL und DOUBLE PRECISION
verwendet werden. Sie entsprechen dem Typ FLOAT mit einer implementierungsabhängigen Anzahl von Nachkommastellen.
TU Dresden - Institut für Baumechanik und Bauinformatik - Computeranwendung im Bauwesen
Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung Folie-Nr.: 21
SQL: Der Datentyp DATE
• Daten vom Typ DATE (Datum) können miteinander verglichen werden.
• Sie können auch voneinander subtrahiert werden.
Das Ergebnis ist dann eine INTEGER-Zahl, die die Anzahl der Tage zwischen
diesen beiden Daten enthält.
• Die Addition oder Subtraktion einer Variablen vom Typ DATE mit einer
INTEGER-Zahl ist ebenfalls möglich. Das Datum wird entsprechend um die
Anzahl der Tage erhöht bzw. erniedrigt.
• Beachte: Wegen der unterschiedlichen nationalen Schreibweisen und Zeitzonenangaben treten bei den Datentypen DATE und TIME (Uhrzeit)
bestimmte Probleme auf.
TU Dresden - Institut für Baumechanik und Bauinformatik - Computeranwendung im Bauwesen
Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung Folie-Nr.: 22
SQL – Der Befehl SELECT
SELECT ist der einzige Befehl zur Suche und Abfrage von Daten
einer Datenbank.
Syntax für den Hauptteil des SELCT-Befehls:
SELECT [ ALL | DISTINCT ] Spaltenauswahlliste
FROM Tabellenliste
[ WHERE Bedingung ]
[ GROUP BY Spaltenliste
[ HAVING Bedingung ]
]
TU Dresden - Institut für Baumechanik und Bauinformatik - Computeranwendung im Bauwesen
Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung Folie-Nr.: 23
SQL – SELECT
Ein kompletter SELECT-Befehl kann aus beliebig vielen Hauptteilen,
die über UNION, EXCEPT oder INTERSECT miteinander verknüpft sind,
bestehen.
SELECT-Hauptteil:
[ { UNION | EXCEPT| INTERSECT } [ ALL ]
SELECT-Hauptteil:
[ { UNION | EXCEPT | INTERESECT } [ ALL ] . . . ] ]
[ ORDER BY Ordnungsliste ]
Die Punkte deuten an, dass die Aufzählung beliebig fortgesetzt werden
kann. Bei mehr als zwei Verknüpfungen sollten jedoch Klammern gesetzt
werden, um die Eindeutigkeit der Reihenfolge zu garantieren.
TU Dresden - Institut für Baumechanik und Bauinformatik - Computeranwendung im Bauwesen
Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung Folie-Nr.: 24
SQL – SELECT
In ORACLE muss der Bezeichner EXPECT durch MINUS ersetzt
werden.
Nach der Verknüpfung kann das Resultat mittels ORDER-BY-Klausel
noch geordnet werden.
TU Dresden - Institut für Baumechanik und Bauinformatik - Computeranwendung im Bauwesen
Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung Folie-Nr.: 25
SQL – SELECT
Beispiel:
SELECT Bauleiter.PersNr, Name, COUNT (*)
FROM Bauleiter, Baustelle
WHERE Bauleiter.PersNr = Baustelle.PersNr
GROUP BY Bauleiter.PersNr, Name
UNION
SELECT PersNr, Name
FROM Bauleiter
WHERE PersNr NOT IN (SELECT PersNr FROM Baustelle);
TU Dresden - Institut für Baumechanik und Bauinformatik - Computeranwendung im Bauwesen
Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung Folie-Nr.: 26
SQL: Logische Arbeitsfolge des SELECT-Befehls:
Alle in der Tabellenliste angegebenen Relationen werden (über das
Kreuzprodukt oder einen Join) miteinander verknüpft.
1.
2.
3.
4.
5.
6.
Aus dieser verknüpften Relation werden die Tupel (Datensätze, Zeilen)
ausgewählt, die die angegebene WHERE-Bedingung erfüllen. Es liegt eine
Restriktion vor.
Mittels Auswahlliste am Anfang des SELECT-Befehls findet auf das
bisherige Resultat eine Projektion auf die angegebenen Spalten statt.
Dann wird eine Gruppierung gemäß der GROUP-BY-Klausel durchgeführt.
Eine Gruppierung fasst dabei mehrere Tupel zu einem Tupel zusammen, so
dass die Ergebnisrelation weniger Tupel enthält.
Eine folgende HAVING-Klausel führt jetzt auf das Ergebnis der
Gruppierung nochmals eine Restriktion auf bestimmte Tupel durch.
Alle so erstellten Hauptteile des SELECT-Befehls werden jetzt mittels
UNION, INTERSECT oder ECXEPT miteinander verknüpft.
Die Ergebnisrelation wird nach den Vorgaben in der Ordnungsliste der
ORDER-BY-Klausel sortiert.
TU Dresden - Institut für Baumechanik und Bauinformatik - Computeranwendung im Bauwesen
Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung Folie-Nr.: 27
SQL: SELECT
einfache Grundform:
SELECT . . . FROM . . .
;
Semikolon schließt den Befehl ab
Name der Tabelle mit den Daten
Schlüsselwort für Tabellenangabe
anzuzeigende Spalten
Schlüsselwort für Abfrage
Beispiele:
• Auflisten aller Spalten einer Tabelle:
mit allen Spalten einer Tabelle in der gespeicherten Reihenfolge:
SELECT
*
FROM Mitarbeiter ;
Auflisten aller Datensätze
mit allen Spalten der Tabelle
in der abgespeicherten Reihenfolge
TU Dresden - Institut für Baumechanik und Bauinformatik - Computeranwendung im Bauwesen
Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung Folie-Nr.: 28
SQL: SELECT - Beispiel
SELECT name , vorname FROM Sem_gr_01 ;
Name der Tabelle der Datenbank,
auf die sich die Operationen beziehen
weiteres Schlüsselwort
Angaben zur Tabelle
(Haupt-)Schlüsselwort
Dieser Befehl bedeutet:
Auflisten der Spalten „name“ und „vorname“ der Tabelle „Sem_gr_01“
Ebenfalls richtig ist die Schreibweise:
Select NAME,
Vorname
FroM
SEM_Gr_01 ;
TU Dresden - Institut für Baumechanik und Bauinformatik - Computeranwendung im Bauwesen
Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung Folie-Nr.: 29
SQL: SELECT - Beispiel
• Auflisten aller Spalten einer Tabelle:
SELECT * FROM Mitarbeiter ;
keine Einschränkung
bezüglich der Spalten
Es werden alle Datensätze mit allen Spalten in der gespeicherten
Reihenfolge aufgelistet.
TU Dresden - Institut für Baumechanik und Bauinformatik - Computeranwendung im Bauwesen
Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung Folie-Nr.: 30
Projektion
SQL: SELECT - Beispiele
•
Auflisten (nur) bestimmter Spalten einer Tabelle:
SELECT Name , Vorname FROM Mitarbeiter ;
Es werden nur die Spalten Name und Vorname von der Tabelle Mitarbeiter
in der Reihenfolge: Name, Vorname aufgelistet.
• Auflisten (nur) bestimmter Spalten in abweichender Reihenfolge:
SELECT Vorname , Name, PersNr FROM Mitarbeiter ;
Es werden nur die Spalten Vorname, Name und PersNr
in dieser von den gespeicherten Daten abweichenden Reihenfolge aufgelistet.
TU Dresden - Institut für Baumechanik und Bauinformatik - Computeranwendung im Bauwesen
Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung Folie-Nr.: 31
SQL: SELECT - Beispiele
Es können nicht nur Spalten, sondern auch beliebige
• Spaltenausdrücke angegeben werden:
SELECT Name , Vorname, 12 * Gehalt AS Jahresgehalt
FROM Mitarbeiter ;
oder:
SELECT Name , Vorname, 12 * Gehalt
FROM Mitarbeiter ;
Es werden die 3 Spalten: Name, Vorname und Jahresgehalt ausgegeben.
TU Dresden - Institut für Baumechanik und Bauinformatik - Computeranwendung im Bauwesen
Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung Folie-Nr.: 32
SQL: SELECT - Beispiele
Attribute (Spalten) können im Rahmen syntaktisch korrekter
Ausdrücke beliebig miteinander in Verbindung gebracht werden.
PersNr
Name
0120
0130
0135
...
Ahrend
Berger
Müller
...
Vorname
Jens
Peter
Paul
...
Gehalt
6000
6800
5800
...
Zuwdg Sonderz.
5000
5500
4800
...
2001
1980
2200
...
SELECT Name , Vorname, (12 * Gehalt + Zuwdg * (6 - Sonderz.)
FROM Mitarbeiter ;
Es werden die 3 Spalten: Name, Vorname und Jahresgehalt ausgegeben.
Attribute (Spalten) können im Rahmen syntaktisch korrekter
Ausdrücke beliebig miteinander in Verbindung gebracht werden.
TU Dresden - Institut für Baumechanik und Bauinformatik - Computeranwendung im Bauwesen
Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung Folie-Nr.: 33
SQL: SELECT - Beispiele
• Auflisten von Spalten mehrerer Tabellen:
SELECT * FROM Bauleiter, Baustellen ;
oder:
SELECT Bauleiter.* , Baustellen.* FROM Bauleiter, Baustellen ;
Es wird das Kreuzprodukt aller Spalten der beiden Tabellen ausgegeben,
d. h. alle möglichen Kombinationen aller Spalten der 1. Tabelle mit allen
Spalten der 2. Tabelle – vgl. Kartesisches Produkt.
TU Dresden - Institut für Baumechanik und Bauinformatik - Computeranwendung im Bauwesen
Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung Folie-Nr.: 34
Restriktion
SQL: SELECT - WHERE-Klausel
- Beispiele
• Auflisten (nur) bestimmter Datensätze in Abhängigkeit
von einer Bedingung:
SELECT * FROM Mitarbeiter WHERE LOHN <= 2500 ;
Es werden alle Datensätze aufgelistet, bei denen die Spalte Lohn <= 2500 ist.
SELECT Name, Vorname, PrsNr FROM Mitarbeiter WHERE LOHN <= 2500 ;
Es werden alle Datensätze mit den Spalten Vorname , Name und PrsNr
in dieser von den gespeicherten Daten abweichenden Reihenfolge aufgelistet,
bei denen die Spalte Lohn <= 2500 ist.
TU Dresden - Institut für Baumechanik und Bauinformatik - Computeranwendung im Bauwesen
Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung Folie-Nr.: 35
SQL: SELECT - WHERE-Klausel - Beispiele
• Auflisten (nur) bestimmter Datensätze in Abhängigkeit
von einer Bedingung:
SELECT * FROM Mitarbeiter WHERE LOHN <>2500 ;
Es werden alle Datensätze aufgelistet, bei denen die Spalte Lohn ungleich 2500 ist.
SELECT * FROM Mitarbeiter WHERE Name = ‘Berger‘ ;
Es werden alle Datensätze aufgelistet, bei denen der Name = „Berger“ ist
TU Dresden - Institut für Baumechanik und Bauinformatik - Computeranwendung im Bauwesen
Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung Folie-Nr.: 36
SQL: SELECT - Relationen für WHERE-Klausel
Als Relation können verwendet werden:
Vergleichsoperatoren:
.. .
kleiner
kleiner gleich
gleich
größer gleich
größer .ungleich
. .. .
. .. .
.. .
.. .
<
<=
>
>=
<>
TU Dresden - Institut für Baumechanik und Bauinformatik - Computeranwendung im Bauwesen
Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung Folie-Nr.: 37
SQL: SELECT - Relationen für WHERE-Klausel
Weitere Operatoren:
Intervalloperator
Entrhaltenoperator
Auswahloperatoren
Ähnlichkeitsoperator
Existenzoperator
Eindeutigkeitsoperator
Nulloperator
[ NOT ] BETWEEN . . . AND
[ NOT ] IN
ALL, ANY, SOME
[ NOT ] LIKE
EXISTS
UNIQUE
IS [ NOT ] NULL
TU Dresden - Institut für Baumechanik und Bauinformatik - Computeranwendung im Bauwesen
Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung Folie-Nr.: 38
SQL: SELECT - ORDER BY
Sortieren der aufzulistenden Daten
Die Sortierung erfolgt (automatisch) je nach Datentyp:
alphabetisch bzw. chronologisch
z. B. bei Spalten vom Typ CHAR, CHARACTER usw.: alphabetisch
bei Spalten vom Typ INTEGER, NUMERIC usw.: chronologisch
TU Dresden - Institut für Baumechanik und Bauinformatik - Computeranwendung im Bauwesen
Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung Folie-Nr.: 39
SQL: SELECT - ORDER BY – Beispiele
• Auflisten von Datensätzen, sortiert (in aufsteigender Folge):
SELECT * FROM Mitarbeiter ORDER BY PersNr ;
Es werden alle Datensätze, geordnet nach Personalnummern,
(automatisch) in aufsteigender chronologischer Folge, aufgelistet,
falls die Spalte PersNr mit einem numerischen Typ vereinbart wurde.
SELECT * FROM Mitarbeiter ORDER BY Name, Vorname ;
Es werden alle Datensätze, geordnet nach Namen, (automatisch) in aufsteigender
alphabetischer Folge aufgelistet, wenn die Spalte Name z. B. mit dem Typ
CHARACTER vereinbart wurde.
Bei gleichen Namen wird zusätzlich nach Vornamen sortiert.
TU Dresden - Institut für Baumechanik und Bauinformatik - Computeranwendung im Bauwesen
Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung Folie-Nr.: 40
SQL: SELECT - ORDER BY - ASC, DESC
Mit ASC (ascending) bzw. DESC (descending), kann
festgelegt werden, ob aufwärts oder abwärts sortiert werden soll.
Wenn nichts angegeben wird, wird automatisch in
aufsteigernder Folge sortiert.
TU Dresden - Institut für Baumechanik und Bauinformatik - Computeranwendung im Bauwesen
Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung Folie-Nr.: 41
SQL: SELECT - ORDER BY
- ASC, DESC - Beispiel
• Auflisten von Datensätzen, sortiert in absteigender Folge:
SELECT * FROM Mitarbeiter ORDER BY Name DESC, Vorname DESC ;
Es werden alle Datensätze, geordnet nach Namen in absteigender alphabetischer
Folge, bei gleichen Namen nach Vornamen, hier ebenfalls in absteigender alphabetischer Folge aufgelistet.
Würde hier nach Vorname nicht nochmals DESC stehen, würden die Vornamen
(automatisch) in aufsteigender Folge sortiert.
TU Dresden - Institut für Baumechanik und Bauinformatik - Computeranwendung im Bauwesen
Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung Folie-Nr.: 42
SQL: SELECT – zusammenfassendes Beispiel
• Auflisten von Datensätzen, sortiert in auf- bzw.
absteigender Folge:
SELECT Vorname, Name, PersNr FROM Mitarbeiter
WHERE Name = ‘Berger‘
ORDER BY Name DESC, Vorname ;
Es werden die Spalten Vorname, Name, PersNr (in der hier angegebenen,
nicht in der abgespeicherten) Reihenfolge für alle Datensätze aufgelistet,
bei denen die Spalte Name = ‘Berger‘ ist,
geordnet nach Namen in absteigender alphabetischer Folge und Vornamen
in aufsteigender alphabetischer Folge.
TU Dresden - Institut für Baumechanik und Bauinformatik - Computeranwendung im Bauwesen
Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung Folie-Nr.: 43
SQL: SELECT – WHERE und ORDER BY
Die gespeicherten Daten bleiben bei der Auswahl durch
WHERE oder Umordnung durch ORDER BY unverändert
gespeichert.
Die Auswahl- und Ordnungskriterien beziehen sich lediglich
auf das Auflisten der Daten.
TU Dresden - Institut für Baumechanik und Bauinformatik - Computeranwendung im Bauwesen
Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung Folie-Nr.: 44
SQL: SELECT - Statistikfunktionen
AVG
COUNT
MAX
MIN
SUM
Average
Count
Maximum
Minimum
Sum
Durchschnittswert, ermittelt über alle Zeilen
Anzahl aller Zeilen
Maximalwert aller Zeilen
Minimalwert aller Zeilen
Summenwert, summiert über alle Zeilen
• Durchschnittswert aller Zeilen einer Spalte:
SELECT AVG (Gehalt) FROM Bauleiter ;
• Anzahl aller Zeilen innerhalb einer Tabelle:
SELECT COUNT ( * ) AS Bauleiteranzahl FROM Bauleiter ;
Es wird die Anzahl der in der Tabelle gespeicherten Bauleiter als
Bauleiteranzahl ausgegeben.
TU Dresden - Institut für Baumechanik und Bauinformatik - Computeranwendung im Bauwesen
Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung Folie-Nr.: 45
SQL: SELECT - COUNT
SELECT COUNT ( Bemerkung ) FROM Bauleiter ;
Es werden nur die Eintragungen in der Spalte „Bemerkung“ gezählt,
die nicht NULL sind.
• Anzahl aller Zeilen innerhalb einer Tabelle:
SELECT COUNT ( DISTINCT Name ) FROM Bauleiter ;
Es werden nur die unterschiedlichen Einträge in der Spalte „Name“ gezählt.
TU Dresden - Institut für Baumechanik und Bauinformatik - Computeranwendung im Bauwesen
Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung Folie-Nr.: 46
SQL: SELECT - Statistikfunktionen
• Minimum aller Zeilen einer Spalte:
SELECT MIN (Gehalt) FROM Bauleiter WHERE Gehalt > 5000 ;
• Aufsummieren von Spalten innerhalb einer Tabelle:
SELECT SUM (12 * Gehalt + Zuwdg * (6 - Sonderz.)) AS Einkommen
FROM Mitarbeiter ;
TU Dresden - Institut für Baumechanik und Bauinformatik - Computeranwendung im Bauwesen
Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung Folie-Nr.: 47
SQL: Der Befehl INSERT
Syntax:
INSERT INTO
{ Tabellenname | Sichtname } [ ( Spaltenliste )]
Tabellenausdruck
TU Dresden - Institut für Baumechanik und Bauinformatik - Computeranwendung im Bauwesen
Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung Folie-Nr.: 48
SQL: INSERT
Mit INSERT können einzelne Datensätze in eine Tabelle eingespeichert werden.
einfache Grundform:
INSERT INTO . . . ( . . . , . . . , . . . ) VALUES ( . . . , . . . , . . . , ) ;
Semikolon schließt den Befehl ab
schließende Klammer für einzufügende Daten
aktuelle Informationen der einzufügenden Spalte
öffnende Klammer für einzufügende Daten
Schlüsselwort für einzufügende Daten
schließende Klammer für Liste der Attribute
trennt die einzelnen Attribute (Spaltennamen)
Attribute (formal) der einzufügenden Spalten
öffnende Klammer für Liste der Attribute
Name der Tabelle, in die Datensatz eingefügt wird
Schlüsselwort für Angabe des Tabellennamens
Schlüsselwort zum Einfügen eines Datensatzes
TU Dresden - Institut für Baumechanik und Bauinformatik - Computeranwendung im Bauwesen
Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung Folie-Nr.: 49
SQL: INSERT - Beispiele
Einfügen eines Datensatzes:
•
INSERT INTO Mitarbeiter ( PersNR , Name , Vorname , Gehalt )
( 123456 , ‘Berger‘ , ‘Felix‘ , 4900) ;
In die Tabelle „Mitarbeiter“ werden für diesen Datensatz die
Spalten: PersNR = 123456, Name = ‘Berger‘,
Vorname = ‘Felix‘ und Gehalt = 4900
in der angegebenen Reihenfolge eingegeben.
Der Datensatz wird am Ende der Tabelle angefügt.
.
TU Dresden - Institut für Baumechanik und Bauinformatik - Computeranwendung im Bauwesen
Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung Folie-Nr.: 50
SQL: INSERT - Beispiele
•
Einfügen eines Datensatzes in abweichender Reihenfolge
der Spalten
INSERT INTO Mitarbeiter ( Vorname, Name, PersNr )
( ‘Felix‘ , ‘Berger‘ , 123456 ) ;
Die Spalten werden in der angegebenen Reihenfolge eingegeben,
wobei die Reihenfolge in den beiden Klammern genau übereinstimmen muss.
Ob die einzugebenen Daten in Hochkommas ( ‘ . . . ‘)
eingeschlossen werden, hängt davon ab, unter welchem Typ die
betreffende Spalte vereinbart wurde.
TU Dresden - Institut für Baumechanik und Bauinformatik - Computeranwendung im Bauwesen
Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung Folie-Nr.: 51
SQL: INSERT - Beispiel
•
Einfügen eines unvollständigen Datensatzes:
INSERT INTO Mitarbeiter ( PersNR , Name )
( 123456 , ‘Berger‘ ) ;
In die Tabelle „Mitarbeiter“ wird ein Datensatz nur mit den
Spalten PersNr und Name ein- bzw. angefügt.
Es müssen hier nicht alle Spalten, mit denen die Tabelle
vereinbart wurde, angegeben werden.
TU Dresden - Institut für Baumechanik und Bauinformatik - Computeranwendung im Bauwesen
Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung Folie-Nr.: 52
SQL: Der Befehl UPDATE
Syntax:
UPDATE
{ Tabellenname | Sichtname }
SET { Spalte = { Spaltenausdruck | NULL }} [ , . . . ]
[ WHERE { Bedingung | CURRENT OF Cursorname } ]
TU Dresden - Institut für Baumechanik und Bauinformatik - Computeranwendung im Bauwesen
Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung Folie-Nr.: 53
SQL: UPDATE - Beispiele
•
.
Ändern bestimmter Werte einer Spalte in Abhängigkeit
von einer Bedingung:
UPDATE Mitarbeiter
SET Gehalt = 1.20 * Gehalt
WHERE Gehalt < 5000 ;
In der Tabelle „Mitarbeiter“ wird bei alle Datensätzen, bei denen
die Spalte „Gehalt“ < 5000 ist, diese Spalte mit 1,2 multiplziert.
.
TU Dresden - Institut für Baumechanik und Bauinformatik - Computeranwendung im Bauwesen
Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung Folie-Nr.: 54
SQL: UPDATE
Die Bedeutung dieses Befehls liegt in den vielfältigen Möglichkeiten,
Tupel mittels WHERE-Klausel auszuwählen.
Außerdem kann im UPDATE-Befehl einem Attribut nicht nur ein neuer
Wert zugewiesen werden, es können auch existierende Werte auf Null
gesetzt werden. Hierzu wird der reservierte gleichlautende Bezeichner
NULL auf der rechten Seite einer Zuweisung verwendet.
TU Dresden - Institut für Baumechanik und Bauinformatik - Computeranwendung im Bauwesen
Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung Folie-Nr.: 55
SQL: Der Befehl DELETE
Syntax:
DELETE FROM
{ Tabellenname | Sichtname }
[ WHERE { Bedingung | CURRENT OF Cursorname } ]
TU Dresden - Institut für Baumechanik und Bauinformatik - Computeranwendung im Bauwesen
Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung Folie-Nr.: 56
SQL: DELETE - Beispiele
•
Löschen eines Datensatzes:
DELETE FROM Mitarbeiter
WHERE PersNr = 234123 ;
Aus der Tabelle „Mitareiter“ wird der Datensatz, bei dem die
Spalte „PersNr“ = 233123 ist, gelöscht.
TU Dresden - Institut für Baumechanik und Bauinformatik - Computeranwendung im Bauwesen
Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung Folie-Nr.: 57
Herunterladen