Einführung SQL1
Spaß mit Datenbanken[edit]
SQL[edit]
Structured Query Language[edit]
Entwicklung[edit]
The paper, “A Relational Model of Data for large Shared Data Banks,” by Dr. E. F. Codd, was published in June 1970 in the Association of Computer Machinery (ACM) journal. Codd’s model is now accepted as the definitive model for relational database management systems (RDBMS).
ca. 1975 - SEQUEL = Structured English Query Language, Vorläufer von SQL wird für das Projekt System R von IBM
1979 - SQL gelangt mit Oracle V2 erstmals durch Relational Software Inc. auf den Markt.
1986 - SQL1 wird von ANSI als Standard verabschiedet.
1987 - SQL1 wird auch von ISO als Standard verabschiedet und 1989 nochmals überarbeitet.
1992 - Der Standard SQL2 bzw. SQL-92 wird von der ISO verabschiedet.
1999 - SQL3 bzw. SQL:1999 wird verabschiedet.
2003 - SQL:2003 wird von der ISO als Nachfolger des SQL:1999 Standards verabschiedet.
2006 - SQL:2006 ISO/IEC 9075-14:2006 legt fest, wie SQL in Zusammenhang mit XML verwendet werden kann.
2008 - SQL:2008 ISO/IEC 9075
2011 - SQL:2011 ISO/IEC 9075:2011 ist die aktuelle Revision des SQL Standards
Benefits of SQL[edit]
The strengths of SQL benefit all ranges of users including application programmers, database administrators, management and end users.
SQL is a non–procedural language because it:
- processes sets of records rather than just one at a time
- provides automatic navigation to the data
SQL provides commands for a variety of tasks including:
- querying data
- inserting, updating, and deleting rows in a table
- creating, replacing, altering, and dropping objects
- controlling access to the database and its objects
- guaranteeing database consistency and integrity
SQL unifies all of the above tasks in one consistent language
SQL Generation 4[edit]
Gesucht ist der Vorname und der Familienname aller Kunden, die in '4040' wohnen.
3.Generation | 4. Generation |
---|---|
|
|
Subsprache[edit]
Data Definition Language (DDL)[edit]
dient zur Implementierung des relationalen Modells in einer Datenbank. Definition von Tabellen, deren Attribute, Typen und Wertebereiche
Beispiel Pseudocode:
erstelle Tabelle kunde mit den Feldern
kundennummer ganzzahlig,
vorname zeichenkette
- CREATE - definieren
- ALTER - ändern
- DROP - löschen
Data Manipulation Language (DML)[edit]
dient zur Manipulation von Daten: Abfrage, Ändern, Einfügen, Löschen.
- SELECT - auswählen
- UPDATE - aktualisieren
- INSERT - einfügen
- DELETE - löschen
Data Control Language (DCL)[edit]
regelt den Zugriff und die Berechtigungen insbesondere in Mehrbenutzersystemen.
- GRANT - Berechtigungsvergabe
- REVOKE - Berechtigungsentzug
- COMMIT - fixieren von Veränderungen
- ROLLBACK - Zurücksetzen
- LOCK - sperren
Relationale Algebra[edit]
Die Grundlagen der Relationalen Datenbanken liegen in den Arbeiten von Edgar F. Codd aus den 60er und 70er Jahren.
Er entwickelte ein algebraisches Modell (eine Algebra befasst sich mit den Eigenschaften von Rechenoperationen), das sich damit befasst, wie Daten gespeichert, abgefragt und manipuliert werden können.
Die Operationen basieren auf Relationen, den Tabellen.
Konzepte relationaler Datenbanken[edit]
Theorie[edit]
Alle zu speichernden Informationen, also auch die Beschreibung der Datenbank selbst, werden in Form von Tabellen durchgeführt.
Mathematische Beschreibung der Relation:
Eine Relation R
zwischen den Mengen A
und B
kann durch die Elementpaare (a, b)
ausgedrückt werden, für die aRb
gilt. Eine Relation ist eine Teilmenge des kartesischen Produkts A x B
.
Beispiel[edit]
S
sei die Menge aller österreichischen Städte (Domäne S
) (Wien, Linz, Eisenstadt, Bregenz, …)
F
sei die Menge aller österreichischen Flüsse (Domäne F
) (Mur, Donau, Inn, …)
R
sei die Relation liegt am / liegt an der
Eine Relation über den beiden Domänen ist definiert als eine Teilmenge des kartesischen Produktes:
s liegt am / an der f
Relation und Tupel[edit]
Ein Tupel (Zeile) ist ein Element einer Relation
Ein Telefonbuch ist Beispiel für eine Relation. Ein Tupel besteht aus den Komponenten (Attributen) Name, Straße und Telefonnummer
.
Das Tupel für die CODERS.BAY
hat die Attributsausprägungen Peter Behrens Platz 6 und 073269227070
Operationen der relationalen Algebra[edit]
- Projektion
- Selektion
- Kartesisches Produkt
- Umbenennung
- Vereinigung
- Differenz
Beispieltabellen[edit]
DEPT[edit]
DEPTNO | DNAME | LOC |
---|---|---|
10 | ACCOUNTING | NEW YORK |
20 | RESEARCH | DALLAS |
30 | SALES | CHICAGO |
40 | OPERATIONS | BOSTON |
EMP[edit]
EMPNO | ENAME | JOB | MGR | HIREDATE | SAL | COMM | DEPTNO |
---|---|---|---|---|---|---|---|
7369 | SMITH | CLERK | 7902 | 17-DEC-80 | 800 | 20 | |
7499 | ALLEN | SALESMAN | 7698 | 20-FEB-81 | 1600 | 300 | 30 |
7521 | WARD | SALESMAN | 7698 | 22-FEB-81 | 1250 | 500 | 30 |
7566 | JONES | MANAGER | 7839 | 02-APR-81 | 2975 | 20 | |
7654 | MARTIN | SALESMAN | 7698 | 01-MAY-81 | 1250 | 1400 | 30 |
7698 | BLAKE | MANAGER | 7839 | 09-JUN-81 | 2850 | 30 | |
7782 | CLARK | MANAGER | 7839 | 09-DEC-82 | 2450 | 10 | |
7788 | SCOTT | ANALYST | 7566 | 17-NOV-81 | 3000 | 20 | |
7839 | KING | PRESIDENT | 08-SEP-81 | 5000 | 10 | ||
7844 | TURNER | SALESMAN | 7698 | 12-JAN-83 | 1500 | 30 | |
7876 | ADAMS | CLERK | 7788 | 03-DEC-81 | 1100 | 20 | |
7900 | JAMES | CLERK | 7698 | 03-DEC-81 | 950 | 30 | |
7902 | FORD | ANALYST | 7566 | 22-SEP-81 | 3000 | 20 | |
7934 | MILLER | CLERK | 7782 | 23-JAN-82 | 1300 | 10 |
Tabellen anlegen[edit]
- Der Name der Tabelle
- Der Name jeder Spalte
- Der Typ der Daten, die in jeder Spalte gespeichert werden
- Die Länge jeder Spalte
- Weitere optionale Informationen
DEPT[edit]
DEPTNO | DNAME | LOC |
---|---|---|
10 | ACCOUNTING | NEW YORK |
20 | RESEARCH | DALLAS |
30 | SALES | CHICAGO |
40 | OPERATIONS | BOSTON |
CREATE TABLE DEPT ( DEPTNO NUMBER(2) NOT NULL, DNAME CHAR(14), LOC CHAR(13), CONSTRAINT DEPT_PRIMARY_KEY PRIMARY KEY (DEPTNO));
Einfügen von Tupel[edit]
INSERT INTO Tabelle VALUES (Liste von Datenwerten);
Beim INSERT
Kommando müssen die einzelnen Werte durch Komma getrennt werden. Character- und Datumswerte müssen unter einfache Hochkomma gestellt werden. Die Werte müssen in der gleichen Reihenfolge angegeben werden, in der die Spalten angegeben worden sind als die Tabelle erzeugt wurde.
Beispiel[edit]
INSERT INTO EMP VALUES (7954,'CARTER','CLERK',7698,'7-APR-84',1000,NULL,30);
- Einfügen von Null-Werten:
INSERT INTO EMP (EMPNO,ENAME,HIREDATE,DEPTNO,SAL) VALUES (7955,'WILSON','22-APR-84',30,1500);
- Einfügen von Datumswerten:
INSERT INTO EMP VALUES (7657,'MASON','ANALYST',7566, TO_DATE(’4/24/84','MM/DD/YY'), 3400, NULL, 20);
Ändern und Löschen[edit]
Ändern[edit]
UPDATE EMP SET JOB = 'SALESMAN' WHERE ENAME = 'WILSON’;
Löschen[edit]
DELETE FROM BONUS WHERE ENAME = 'WARD';
Daten auslesen (SELECT)[edit]
SELECT DNAME, DEPTNO FROM DEPT; SELECT * FROM EMP SELECT DISTINCT JOB FROM EMP; SELECT (DISTINCT) DNAME FROM DEPT