fh-hof standard query language richard göbel. fh-hof geschichte der sprache sql system/r-projekts...
TRANSCRIPT
![Page 1: FH-Hof Standard Query Language Richard Göbel. FH-Hof Geschichte der Sprache SQL System/R-Projekts von IBM zu Beginn der 70er Jahre: Entwicklung der Sprache](https://reader036.vdocuments.mx/reader036/viewer/2022062404/55204d7349795902118c7bfa/html5/thumbnails/1.jpg)
FH-Hof
Standard Query Language
Richard Göbel
![Page 2: FH-Hof Standard Query Language Richard Göbel. FH-Hof Geschichte der Sprache SQL System/R-Projekts von IBM zu Beginn der 70er Jahre: Entwicklung der Sprache](https://reader036.vdocuments.mx/reader036/viewer/2022062404/55204d7349795902118c7bfa/html5/thumbnails/2.jpg)
FH-Hof
Geschichte der Sprache SQL
System/R-Projekts von IBM zu Beginn der 70er
Jahre: Entwicklung der Sprache SEQUEL
Anfang der 80er Jahre erste Standardisierung
durch das American National Standards
Institute (ANSI)
Internationale Standards der ISO:
1986: SQL 1 (SQL-86)
1989: SQL-89
1992: SQL 2 (SQL-92)
1999: SQL 3
![Page 3: FH-Hof Standard Query Language Richard Göbel. FH-Hof Geschichte der Sprache SQL System/R-Projekts von IBM zu Beginn der 70er Jahre: Entwicklung der Sprache](https://reader036.vdocuments.mx/reader036/viewer/2022062404/55204d7349795902118c7bfa/html5/thumbnails/3.jpg)
FH-Hof
Sprachumfang in dieser Veranstaltung
Aufbau einer Datenbankverbindung zu einer
von mehreren Datenbanken
Vergabe von Zugriffsrechten für Anwender
Definition von Tabellen
Einfügen, Ändern und Löschen von Einträgen
Definition von 'Views' als 'virtuelle Tabellen'
Kopieren von Daten zwischen unterschiedlichen
Tabellen
Definition von Indexstrukturen (nicht SQL-2!)
![Page 4: FH-Hof Standard Query Language Richard Göbel. FH-Hof Geschichte der Sprache SQL System/R-Projekts von IBM zu Beginn der 70er Jahre: Entwicklung der Sprache](https://reader036.vdocuments.mx/reader036/viewer/2022062404/55204d7349795902118c7bfa/html5/thumbnails/4.jpg)
FH-Hof
Datenbankverbindungen
Syntax der Anweisungen
CONNECT TO ( DEFAULT | ( <server-id>
[ AS <con-id> ] [ USER <auth-id> ] ))
DISCONNECT ( DEFAULT | CURRENT | ALL |
<con-id> )
SET CONNECTION ( DEFAULT | <con-id> )
Bedeutung der Nichtterminalsymbole
server-id: Bezeichnung des
Datenbankservers
con-id: Bezeichnung der Verbindung
auth-id: Account des Anwenders
![Page 5: FH-Hof Standard Query Language Richard Göbel. FH-Hof Geschichte der Sprache SQL System/R-Projekts von IBM zu Beginn der 70er Jahre: Entwicklung der Sprache](https://reader036.vdocuments.mx/reader036/viewer/2022062404/55204d7349795902118c7bfa/html5/thumbnails/5.jpg)
FH-Hof
Zugriffsrechte: Syntax
GRANT
<privilege> (, <privilege> )* | ALL PRIVILEGES
ON <object>
TO <user-id> (, <user-id>)*
[ WITH GRANT OPTION ]
REVOKE
[ GRANT OPTION FOR ]
<privilege> (, <privilege> )* | ALL PRIVILEGES
ON <object>
FROM <user-id> (, <user-id>)*
[ CASCADE ]
![Page 6: FH-Hof Standard Query Language Richard Göbel. FH-Hof Geschichte der Sprache SQL System/R-Projekts von IBM zu Beginn der 70er Jahre: Entwicklung der Sprache](https://reader036.vdocuments.mx/reader036/viewer/2022062404/55204d7349795902118c7bfa/html5/thumbnails/6.jpg)
FH-Hof
Zugriffsrechte: Objekte und Privilegien
Objekte Tabellen
Views
weitere Objekte (z.B. Prozeduren)
Privilegien SELECT
INSERT
UPDATE
‚DELETE
Vergabe von Rechten für einzelne Spalten
(INSERT | UPDATE) [´(´ <column-name> ( , <column-name> )* ´)´]
![Page 7: FH-Hof Standard Query Language Richard Göbel. FH-Hof Geschichte der Sprache SQL System/R-Projekts von IBM zu Beginn der 70er Jahre: Entwicklung der Sprache](https://reader036.vdocuments.mx/reader036/viewer/2022062404/55204d7349795902118c7bfa/html5/thumbnails/7.jpg)
FH-Hof
Zugriffsrechte: Beispiele
GRANT UPDATE, SELECT ON Person TO Meier;
GRANT UPDATE (PLZ, Ort, Strasse, HausNr),
SELECT ON Person TO Meier;
GRANT UPDATE (PLZ, Ort, Strasse, HausNr),
SELECT ON Person TO Meier WITH GRANT OPTION;
REVOKE UPDATE (PLZ, Ort) ON Person FROM Meier;
REVOKE GRANT OPTION FOR UPDATE (PLZ, Ort,
Strasse, HausNr), SELECT ON Person FROM
Meier;
REVOKE UPDATE (PLZ, Ort, Strasse, HausNr),
SELECT ON Person FROM Meier CASCADE;
![Page 8: FH-Hof Standard Query Language Richard Göbel. FH-Hof Geschichte der Sprache SQL System/R-Projekts von IBM zu Beginn der 70er Jahre: Entwicklung der Sprache](https://reader036.vdocuments.mx/reader036/viewer/2022062404/55204d7349795902118c7bfa/html5/thumbnails/8.jpg)
FH-Hof
Tabellen: Syntax für Spaltendefinitionen
CREATE TABLE <tabName>
'(' <elemDef> ( , <elemDef> )* ')‘
<elemDef> ::= <colDef> | <tabConst>
<colDef> ::= <colName> <datatype>
[<defaultDef>]
[<colConst> (,
<colConst> )*]
<defaultDef> ::= DEFAULT <value>
DROP TABLE <tabName>
![Page 9: FH-Hof Standard Query Language Richard Göbel. FH-Hof Geschichte der Sprache SQL System/R-Projekts von IBM zu Beginn der 70er Jahre: Entwicklung der Sprache](https://reader036.vdocuments.mx/reader036/viewer/2022062404/55204d7349795902118c7bfa/html5/thumbnails/9.jpg)
FH-Hof
Tabellen: Datentypen
CHAR(n), CHARACTER(n)
CHARACTER VARYING(n), VARCHAR(n)
INT, INTEGER, SMALLINT
DEC(n,m), DECIMAL(n,m) (minimal n Ziffern)
NUMERIC(n,m) (genau n
Ziffern)
FLOAT, REAL, DOUBLE PRECISION
DATE
![Page 10: FH-Hof Standard Query Language Richard Göbel. FH-Hof Geschichte der Sprache SQL System/R-Projekts von IBM zu Beginn der 70er Jahre: Entwicklung der Sprache](https://reader036.vdocuments.mx/reader036/viewer/2022062404/55204d7349795902118c7bfa/html5/thumbnails/10.jpg)
FH-Hof
Tabellen: Beispiel I
CREATE TABLE Vorlesung
(
Nummer DEC(6),
Name CHAR(40),
Dozent DEC(6),
Stunden DEC(2) DEFAULT 4
)
![Page 11: FH-Hof Standard Query Language Richard Göbel. FH-Hof Geschichte der Sprache SQL System/R-Projekts von IBM zu Beginn der 70er Jahre: Entwicklung der Sprache](https://reader036.vdocuments.mx/reader036/viewer/2022062404/55204d7349795902118c7bfa/html5/thumbnails/11.jpg)
FH-Hof
Tabellen: Syntax für Constraints I
<colConst> ::= ( NOT NULL
| UNIQUE
| PRIMARY KEY
| <foreign-key-spec>
| CHECK <condition> )
[ CONSTRAINT <constName> ]
<tabConst> ::=
( ( PRIMARY KEY | UNIQUE )
'(' <colName> (, <colName>)* ')‘
| FOREIGN KEY
'(' <colName> (, <colName>)* ')'
<fkSpec>
| CHECK <condition> )
[ CONSTRAINT <constName> ]
![Page 12: FH-Hof Standard Query Language Richard Göbel. FH-Hof Geschichte der Sprache SQL System/R-Projekts von IBM zu Beginn der 70er Jahre: Entwicklung der Sprache](https://reader036.vdocuments.mx/reader036/viewer/2022062404/55204d7349795902118c7bfa/html5/thumbnails/12.jpg)
FH-Hof
Tabellen: Syntax für Constraints II
<fkSpec> := REFERENCES <tabName>
'(' <colName> (, <colName>)* ')'
![Page 13: FH-Hof Standard Query Language Richard Göbel. FH-Hof Geschichte der Sprache SQL System/R-Projekts von IBM zu Beginn der 70er Jahre: Entwicklung der Sprache](https://reader036.vdocuments.mx/reader036/viewer/2022062404/55204d7349795902118c7bfa/html5/thumbnails/13.jpg)
FH-Hof
Tabellen: Beispiel 2
CREATE TABLE Person
(
Id DEC(6) NOT NULL PRIMARY KEY,
Name VARCHAR(40),
Geschlecht CHAR(1),
CHECK Geschlecht = ´m´ OR Geschlecht = ´f´
)
![Page 14: FH-Hof Standard Query Language Richard Göbel. FH-Hof Geschichte der Sprache SQL System/R-Projekts von IBM zu Beginn der 70er Jahre: Entwicklung der Sprache](https://reader036.vdocuments.mx/reader036/viewer/2022062404/55204d7349795902118c7bfa/html5/thumbnails/14.jpg)
FH-Hof
Tabellen: Beispiel 3
CREATE TABLE Vorlesung
(
Nummer DEC(6) NOT NULL PRIMARY KEY,
Name CHAR(40),
Dozent DEC(6) REFERENCES Person(Id),
Stunden DEC(2) DEFAULT 4
)
![Page 15: FH-Hof Standard Query Language Richard Göbel. FH-Hof Geschichte der Sprache SQL System/R-Projekts von IBM zu Beginn der 70er Jahre: Entwicklung der Sprache](https://reader036.vdocuments.mx/reader036/viewer/2022062404/55204d7349795902118c7bfa/html5/thumbnails/15.jpg)
FH-Hof
Tabellen: Beispiel 4
CREATE TABLE Vorlesung
(
Studiengang VARCHAR(20) NOT NULL,
Bezeichnung VARCHAR(20) NOT NULL,
Dozent DEC(6) REFERENCES Person(Id),
Stunden DEC(2) DEFAULT 4
PRIMARY KEY (Studiengang, Bezeichnung)
)
![Page 16: FH-Hof Standard Query Language Richard Göbel. FH-Hof Geschichte der Sprache SQL System/R-Projekts von IBM zu Beginn der 70er Jahre: Entwicklung der Sprache](https://reader036.vdocuments.mx/reader036/viewer/2022062404/55204d7349795902118c7bfa/html5/thumbnails/16.jpg)
FH-Hof
Tabellen: Änderung
ALTER TABLE <table-name>
( ADD [COLUMN] ( <colDef> | <tabConst> )
| MODIFY [ COLUMN ] <colDef>
| DROP [ COLUMN ] <colName>
| DROP CONSTRAINT <constName> )
Beispiel:
ALTER TABLE Vorlesung
ADD COLUMN AnzahlStunden DEC(2)
![Page 17: FH-Hof Standard Query Language Richard Göbel. FH-Hof Geschichte der Sprache SQL System/R-Projekts von IBM zu Beginn der 70er Jahre: Entwicklung der Sprache](https://reader036.vdocuments.mx/reader036/viewer/2022062404/55204d7349795902118c7bfa/html5/thumbnails/17.jpg)
FH-Hof
Einträge: Erzeugen, Ändern und Löschen
INSERT INTO <tabName>
['(' <colName> (, <colName>)* ')' ]
VALUES '(' <dataItem> (, <dataItem>)* ')'
DELETE FROM <tabName>
[ WHERE <condition> ]
UPDATE <tabName>
SET <colName> = <expression>
(, <colName> = <expression> )*
WHERE <condition>
![Page 18: FH-Hof Standard Query Language Richard Göbel. FH-Hof Geschichte der Sprache SQL System/R-Projekts von IBM zu Beginn der 70er Jahre: Entwicklung der Sprache](https://reader036.vdocuments.mx/reader036/viewer/2022062404/55204d7349795902118c7bfa/html5/thumbnails/18.jpg)
FH-Hof
Einträge: Beispiele
INSERT INTO Vorlesung
VALUES (1, 'Englisch', 4, 4)
INSERT INTO Vorlesung (Dozent, Nummer, Name)
VALUES (4, 4, 'Englisch')
DELETE FROM Vorlesung WHERE Lfd_Nummer = 7
UPDATE Vorlesung
SET Name = ´Datenbanksysteme I´
WHERE Name = ´Datenbanksysteme´
![Page 19: FH-Hof Standard Query Language Richard Göbel. FH-Hof Geschichte der Sprache SQL System/R-Projekts von IBM zu Beginn der 70er Jahre: Entwicklung der Sprache](https://reader036.vdocuments.mx/reader036/viewer/2022062404/55204d7349795902118c7bfa/html5/thumbnails/19.jpg)
FH-Hof
Anfragen: Konzept
Operationen auf Tupeln wie Projektionen und
Kreuzprodukte
Unterstützung aller Mengenoperationen wie
Vereinigung, Durchschnitt und Restmenge.
Selektionsoperationen auf Spaltenwerte mit
Prädikaten '<', ‘<=', '=', ‘>=', '>' und '<>'
Logische Verknüpfungen von Suchbedingungen
mit 'AND', 'OR' und 'NOT'.
![Page 20: FH-Hof Standard Query Language Richard Göbel. FH-Hof Geschichte der Sprache SQL System/R-Projekts von IBM zu Beginn der 70er Jahre: Entwicklung der Sprache](https://reader036.vdocuments.mx/reader036/viewer/2022062404/55204d7349795902118c7bfa/html5/thumbnails/20.jpg)
FH-Hof
Anfragen: Einfache Anfrage
Komponenten einer einfachen Anfrage
SELECT * | ( <colName> (, <colName>)* )
FROM <tabName> (, <tabName>)*
[ WHERE <condition> ]
Ausdrücke statt Spaltennamen möglich
Eine Suchanfrage kann weitere Komponenten
enthalten
![Page 21: FH-Hof Standard Query Language Richard Göbel. FH-Hof Geschichte der Sprache SQL System/R-Projekts von IBM zu Beginn der 70er Jahre: Entwicklung der Sprache](https://reader036.vdocuments.mx/reader036/viewer/2022062404/55204d7349795902118c7bfa/html5/thumbnails/21.jpg)
FH-Hof
Anfragen: Beispiele 1
SELECT Name
FROM Vorlesung
WHERE Lfd_Nummer >= 4 AND Dozent = 2
SELECT Vorlesung.name, Dozent.name
FROM Vorlesung, Dozent
WHERE Dozent = Personalnummer
SELECT v.name, d.name
FROM Vorlesung v, Dozent d
WHERE Dozent = Personalnummer
SELECT a.Vorlesung, b.Vorlesung
FROM Termine a, Termine b
WHERE a.Wochentag = b.Wochentag
AND a.Anfang = b.Anfang
AND a.Vorlesung < b.Vorlesung
![Page 22: FH-Hof Standard Query Language Richard Göbel. FH-Hof Geschichte der Sprache SQL System/R-Projekts von IBM zu Beginn der 70er Jahre: Entwicklung der Sprache](https://reader036.vdocuments.mx/reader036/viewer/2022062404/55204d7349795902118c7bfa/html5/thumbnails/22.jpg)
FH-Hof
Anfragen: Join-Syntax für FROM-Klausel
. . . A JOIN B [ ON x = y, . . . ] . . .
. . . A NATURAL JOIN B [ USING (x, . . .) ] . . .
. . . A FULL OUTER JOIN B [ ON x =
y, . . . ] . . .
. . . A LEFT OUTER JOIN B [ ON x =
y, . . . ] . . .
. . . A RIGHT OUTER JOIN B [ ON x = y, . . . ] .
. .
![Page 23: FH-Hof Standard Query Language Richard Göbel. FH-Hof Geschichte der Sprache SQL System/R-Projekts von IBM zu Beginn der 70er Jahre: Entwicklung der Sprache](https://reader036.vdocuments.mx/reader036/viewer/2022062404/55204d7349795902118c7bfa/html5/thumbnails/23.jpg)
FH-Hof
Anfragen: Beispiele 2
SELECT v.name, d.name
FROM Vorlesung v JOIN Dozent d
ON Dozent = Personalnummer
SELECT Name, Wochentag, Anfang, Ende, Raum
FROM Vorlesung NATURAL JOIN Termine
SELECT v.name, d.name
FROM Vorlesung v LEFT OUTER JOIN Dozent d
ON Dozent = Personalnummer
![Page 24: FH-Hof Standard Query Language Richard Göbel. FH-Hof Geschichte der Sprache SQL System/R-Projekts von IBM zu Beginn der 70er Jahre: Entwicklung der Sprache](https://reader036.vdocuments.mx/reader036/viewer/2022062404/55204d7349795902118c7bfa/html5/thumbnails/24.jpg)
FH-Hof
Anfragen mit Unteranfragen
SELECT . . .
FROM . . .
WHERE . . . X IN (SELECT . . .) . . .
SELECT . . .
FROM . . .
WHERE . . . EXISTS (SELECT . . .) . . .
SELECT . . .
FROM . . .
WHERE . . . UNIQUE (SELECT . . .) . . .
![Page 25: FH-Hof Standard Query Language Richard Göbel. FH-Hof Geschichte der Sprache SQL System/R-Projekts von IBM zu Beginn der 70er Jahre: Entwicklung der Sprache](https://reader036.vdocuments.mx/reader036/viewer/2022062404/55204d7349795902118c7bfa/html5/thumbnails/25.jpg)
FH-Hof
Anfragen: Beispiel 3
SELECT name
FROM Vorlesung
WHERE Nummer IN
(SELECT Vorlesung
FROM Termine
WHERE Wochentag = 'Mittwoch');
![Page 26: FH-Hof Standard Query Language Richard Göbel. FH-Hof Geschichte der Sprache SQL System/R-Projekts von IBM zu Beginn der 70er Jahre: Entwicklung der Sprache](https://reader036.vdocuments.mx/reader036/viewer/2022062404/55204d7349795902118c7bfa/html5/thumbnails/26.jpg)
FH-Hof
Anfragen: Mengenoperationen
SELECT . . .
FROM . . .
WHERE . . .
UNION | INTERSECT | EXCEPT
SELECT . . .
FROM . . .
WHERE . . .
![Page 27: FH-Hof Standard Query Language Richard Göbel. FH-Hof Geschichte der Sprache SQL System/R-Projekts von IBM zu Beginn der 70er Jahre: Entwicklung der Sprache](https://reader036.vdocuments.mx/reader036/viewer/2022062404/55204d7349795902118c7bfa/html5/thumbnails/27.jpg)
FH-Hof
Anfragen: Ausdrücke in Suchbedingungen
SELECT a.Vorlesung, a.Wochentag,
a.Ende, b.Vorlesung
FROM Termine a, Termine b
WHERE TO_NUMBER(a.Ende) + 15 =
TO_NUMBER(b.Anfang)
AND a.Wochentag = b.Wochentag
![Page 28: FH-Hof Standard Query Language Richard Göbel. FH-Hof Geschichte der Sprache SQL System/R-Projekts von IBM zu Beginn der 70er Jahre: Entwicklung der Sprache](https://reader036.vdocuments.mx/reader036/viewer/2022062404/55204d7349795902118c7bfa/html5/thumbnails/28.jpg)
FH-Hof
Anfragen: Aggregatfunktionen
COUNT
AVG
MAX
MIN
SUM
![Page 29: FH-Hof Standard Query Language Richard Göbel. FH-Hof Geschichte der Sprache SQL System/R-Projekts von IBM zu Beginn der 70er Jahre: Entwicklung der Sprache](https://reader036.vdocuments.mx/reader036/viewer/2022062404/55204d7349795902118c7bfa/html5/thumbnails/29.jpg)
FH-Hof
Anfragen: Beispiele 4
SELECT COUNT(*)
FROM Vorlesung
SELECT MIN(Personalnummer)
FROM Dozent
![Page 30: FH-Hof Standard Query Language Richard Göbel. FH-Hof Geschichte der Sprache SQL System/R-Projekts von IBM zu Beginn der 70er Jahre: Entwicklung der Sprache](https://reader036.vdocuments.mx/reader036/viewer/2022062404/55204d7349795902118c7bfa/html5/thumbnails/30.jpg)
FH-Hof
Anfragen: Gruppieren von Einträgen
SELECT Wochentag, count(*)
FROM Termine
GROUP BY Wochentag
SELECT Wochentag, count(*)
FROM Termine
GROUP BY Wochentag
HAVING count(*) > 1
![Page 31: FH-Hof Standard Query Language Richard Göbel. FH-Hof Geschichte der Sprache SQL System/R-Projekts von IBM zu Beginn der 70er Jahre: Entwicklung der Sprache](https://reader036.vdocuments.mx/reader036/viewer/2022062404/55204d7349795902118c7bfa/html5/thumbnails/31.jpg)
FH-Hof
Anfragen: Schlüsselwort DISTINCT
SELECT Dozent
FROM Vorlesung
SELECT ALL Dozent
FROM Vorlesung
SELECT DISTINCT Dozent
FROM Vorlesung
![Page 32: FH-Hof Standard Query Language Richard Göbel. FH-Hof Geschichte der Sprache SQL System/R-Projekts von IBM zu Beginn der 70er Jahre: Entwicklung der Sprache](https://reader036.vdocuments.mx/reader036/viewer/2022062404/55204d7349795902118c7bfa/html5/thumbnails/32.jpg)
FH-Hof
Anfragen: Sortieren von Ergebnissen
SELECT Personalnummer, Name, Geburtstag
FROM Dozent
ORDER BY Geburtstag DESC, Name ASC
![Page 33: FH-Hof Standard Query Language Richard Göbel. FH-Hof Geschichte der Sprache SQL System/R-Projekts von IBM zu Beginn der 70er Jahre: Entwicklung der Sprache](https://reader036.vdocuments.mx/reader036/viewer/2022062404/55204d7349795902118c7bfa/html5/thumbnails/33.jpg)
FH-Hof
VIEWS: Syntax
CREATE VIEW <viewName>
[ '(' <colName> (, <colName>)* ')' ]
AS <select-expression>
DROP VIEW <viewName>
![Page 34: FH-Hof Standard Query Language Richard Göbel. FH-Hof Geschichte der Sprache SQL System/R-Projekts von IBM zu Beginn der 70er Jahre: Entwicklung der Sprache](https://reader036.vdocuments.mx/reader036/viewer/2022062404/55204d7349795902118c7bfa/html5/thumbnails/34.jpg)
FH-Hof
VIEWS: Beispiel
CREATE VIEW Vorlesung2(Nummer, Vorlesungsname)
AS SELECT Nummer, Name
FROM Vorlesung
WHERE Dozent = 2
![Page 35: FH-Hof Standard Query Language Richard Göbel. FH-Hof Geschichte der Sprache SQL System/R-Projekts von IBM zu Beginn der 70er Jahre: Entwicklung der Sprache](https://reader036.vdocuments.mx/reader036/viewer/2022062404/55204d7349795902118c7bfa/html5/thumbnails/35.jpg)
FH-Hof
Kopieren: Syntax
INSERT INTO <tabName>
['(' <colName> (, <colName>)* ')']
<select-expression>
![Page 36: FH-Hof Standard Query Language Richard Göbel. FH-Hof Geschichte der Sprache SQL System/R-Projekts von IBM zu Beginn der 70er Jahre: Entwicklung der Sprache](https://reader036.vdocuments.mx/reader036/viewer/2022062404/55204d7349795902118c7bfa/html5/thumbnails/36.jpg)
FH-Hof
Kopieren: Beispiel
CREATE TABLE VorlesungNeu
(
Nummer DEC(6) NOT NULL,
Name CHAR(40),
Dozent CHAR(40),
PRIMARY KEY (Nummer)
)
INSERT INTO VorlesungNeu
SELECT Nummer, Vorlesung.Name, Dozent.Name
FROM Vorlesung v, Dozent d
WHERE v.Dozent = d.Personalnummer