Difference between revisions of "Einführung SQL1"

From Coders.Bay Wiki
Jump to navigation Jump to search
 
Line 115: Line 115:
<code>F</code> sei die Menge aller österreichischen Flüsse (Domäne <code>F</code>) (Mur, Donau, Inn, …)
<code>F</code> sei die Menge aller österreichischen Flüsse (Domäne <code>F</code>) (Mur, Donau, Inn, …)


<code>R</code> sei die Relation  <code>liegt am / liegt</code> an der
<code>R</code> sei die Relation  <code>liegt am / liegt an der</code>


Eine Relation über den beiden Domänen  ist definiert als eine Teilmenge des kartesischen Produktes:
Eine Relation über den beiden Domänen  ist definiert als eine Teilmenge des kartesischen Produktes:

Latest revision as of 07:35, 13 July 2023

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

Öffne die Kundendatei
Lies den ersten Satz
Solange die Datei nicht leer mache folgendes
wenn plz = '4040'
gib Vorname und Zuname aus
lies den nächsten Satz
Schliesse die Kundendatei

SELECT VORNAME, ZUNAME
FROM KUNDE
WHERE PLZ = '4040'

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