Programmierung - SQL

Dieser SQL-Kurs wendet sich vor allem an Programmierer, die mit Hilfe von SQL auf Datebaken zugreifen, und an alle, die Datenbanken neu entwerfen, erweitern oder abändern wollen

Programmierung - SQL

Dieser SQL-Kurs wendet sich vor allem an Programmierer, die mit Hilfe von SQL auf Datebaken zugreifen, und an alle, die Datenbanken neu entwerfen, erweitern oder abändern wollen. Da die meisten der Kapitel voneinander unabhängig sind, is es aber auch als Nachschlagewerk empfehlenswert. Mittels der hier vermittelten Kenntnisse ist es relativ leicht z.B. eingene Internetseiten mit Datenbankanbindung zu erstellen. Für weitergehende Informationen beachten Sie bitte unsere Buchempfehlungen. 

Übersicht:


Kapitel 1: Relationales Datenmodell

- Begriffe 
- Integrität 
- Normalisierung 

Kapitel 2: SQL-Grundlagen

- Anwendung von SQL 
- Geschichte von SQL 
- Sprachumfang des SQL-Standards 

Kapitel 3: CREATE-Anweisung

- Datentypen 
- Datendefinition 
- CREATE-Anweisung 

Kapitel 4: SELECT-Anweisung

- Format der SELECT-Anweisung 
- Auswahl der Ergebnisspalten 
- Zeilenauswahl (WHERE-Klausel) 
- Verknüpfung von Tabellen 

Kapitel 5: Änderungsanweisungen

- DELETE: Datenlöschung 
- UPDATE: Datenänderung 
- INSERT: Datenneuaufnahme 

Kapitel 6: VIEW-Konzept

- Was ist ein VIEW 
- Wie wird ein VIEW definiert

Kapitel 1 Relationales Datenmodell

1.1 Begriffe

Eine relationale Datenbank besteht ausschließlich aus Tabellen. Ein Zugriff erfolgt immer über diese Tabellen. Da leicht neue Tabellen hinzugefügt oder gelöscht werden können, sind spätere Änderungen des Datenbankaufbaus relativ leicht möglich. Des weiteren sind Zugriffe auf Tabellen einfach zu programmieren, was zu der großen Beliebtheit dieses Datenbankmodells führte: praktisch alle Datenbanken sind relational aufgebaut. Die Zusammenhänge zwischen den einzelnen Tabellen werden über Beziehungen (Relationen) hergestellt. Diese Beziehungen sind in den Tabellen mit abgespeichert.
Hier finden Sie eine Aufstellung der wichtigsten Begriff bezüglich Datenbanken.

Relation (bzw. Tabelle):
Sammlung aller zugehörigen Tupeln.

Tupel:
Einzelner Satz einer Relation (Zeile) aus Attributen zusammengesetzt.

Attribut:
Teil (Feld) einer Tupel.

Schlüssel (Key):
Eindeutige Charakterisierung der Tupel einer Relation; aus einem oder mehreren Attributen zusammengesetzt

Tabellendarstellung einer Relation:

1.2 Intägrität

Bereits aus der Definition von Relationen ersehen wir, dass wir bestimmte Bedingungen beim Erzeugen von Relationen einhalten müssen. Um aber optimal mit Datenbanken arbeiten zu können, müssen wir weitere Bedingungen , die sog. Integritäts-Bedienungen, befolgen. Die Integritätsregeln befassen sich mit der korrekten Speicherung der Daten und lassen sich im wesentlichen in vier Arten unterscheiden:

Physische Integrität

Diese beinhaltet die Vollständigkeit der Zugriffspfade und der physischen Speicherstrukturen. Die physische Integrität kann der Datenbankprogrammierer nicht beeinflussen. Für diese Integrität muss die Datenbank und das darrunterliegende Betriebssystem sorgen.

Ablaufintegrität

Hier geht es um die korrektheit der ablaufenden Programme, dass etwa keine Endlosschleifen vorkommen dürfen, oder die Datenkonsistenz im Mehrbenutzerbetrieb garantiert wird. Für die Ablaufintegrität ist Anwendungsprogrammierer, insbesondere aber auch der Datenbankdesigner verantwortlich.

Zugriffsberechtigung

Hier kommt es auf die korrekte Vergabe der Zugriffsrechte an, was im wesentlichen die Aufgabe des Datenbank-Administrators ist.
Semantische Integrität

Hier handelt es sich um die Übereinstimmung der Daten aus der nachzubildenden realen Welt mit den abgespeicherten Informationen. Semantische Integrität ist zugegebenermaßen ein Problem, da der Rechner von sich aus nur schwer entscheiden kann, ob eine Eingabe den Daten der realen Welt entspricht.

1.3 Normalisierung

Die Normalformenlehre beschreibt, wie Relationen aufgebaut werden sollten, um Redundanz (mehrmaliges speichern der gleichen Werte) und Zugriffsprobleme zu vermeiden. Die drei Normalformen wurden bereits bei der Vorstellung der relationalen Datenbanken 1970 eingeführt. Diese Normalenformen sind hierarchisch aufgebaut, wobei die erste Normalenform am wenigsten, die dritte am stärksten einschränkt.

1. Normalenform

Alle Attribute sind atomar (d.h. An jeder Reihen- und Spaltenposition in der Tabelle steht genau ein Wert, keine Menge von Werten; d.h. insbesondere gibt es keine Gruppierungen und Wiederholungen).

Beispiel:

2. Normalenform

Relation ist in der 1. Normalenform und Zusammenfassung von "funktional abhängigen" Attributen zu eigenständigen Relationen ("Volle funktionale Abhängigkeit").

Beispiel:

KUNDENAUFTRÄGE in 1NF, aber NA, STRASSE, ORT sind funktional abhängig von KNR, und WNR, BEZ, PREIS, ANZAHL sind funktional abhängig von ANR (d.h. Abhängigkeit von Teilen des Primärschlüssels)

3. Normalenform

Relation in der 2. Normalenform und Zusammenfassung von "transitiv abhängigen" Attributen zu eigenständigen Relationen. (d.h. sie sind vom Primärschlüssel "transitiv abhängig")

Beispiel:

KUNDENAUFTRÄGE in 2Normalenform, aber BEZ, PREIS sind funktional abhängig vom Nicht-Schlüssel-Attribut WNR

Kapitel 2 SQL Grundlagen

2.1 Anwendung von SQL Seitenanfang 

SQL (ausgesprochen "sequel") steht für Structured Query Language und wird als Schnittstelle zu relationalen Daten- banken benutzt. SQL ist nach dem ANSI (American National Standards Institute) Standard genormt und damit auf viele RDBMS (relational database management systems) anwendbar, z.B. Oracle, Sybase, Microsoft SQL Server, Access, Ingres, mysql, etc. SQL Anweisungen werden sowohl zur Daten-Anfrage als auch zur Daten-Definition verwendet. Obwohl die meisten Systeme eine gemeinsame Standardmenge von Anfrage-/Definitionsbefehlen verwenden, haben sie meist auch herstellerspezifische (proprietary) Erweiterungen. Trotz alledem kann man mit den typischen und einfachen SQL-Befehlen "Select", "Insert", "Update", "Delete", "Create", and "Drop" und daraus konstruierten Kombinationen mächtige allgemein verwendbare Operationen in Datenbanken ausführen.
SQL unterstützt eine deskriptive (beschreibende) Vorgehensweise, d.h. Der Benutzer speziviert was er haben will, nicht wie es zu ermitteln ist.

2.2 Geschichte von SQL

1970: Relationen-Modell in den 7Oer Jahren als DB-Sprache des relationalen DB-Prototyps SYSTEM R von IBM entwickelt und erprobt Seit Anfang der 80er Jahre in Produkten verfügbar(z.B.: SQL/DS1 DB2, ORACLE1, INGRES, INFORMIX)
1986: SQL-Normierung durch ANSI (Database Committee X3H2) (ANSI-Standard (X3. 135-1986))
1987: Übernahme des ANSI-Standards durch ISO (WSQL 1 ~) (ISO-Standard (ISO 9075-1987))
1989: Erweiterung des SQL 1-Standards (ISO-Standard (ISO 9075-1989))
1992: SQL 2-Standard (ISO -Standard ISO 9075 - 1992)

2.3 Sprachumfang des SQL-Standards

Hier sehen Sie einen Überblick über die wichtigsten Befehle in SQL.

·CREATE: Definition von Basistabellen
Definition von Views
· ALTER: Tabellendefinition ändern
· GRANT: Autorisierung (Vergabe von Zugriffsrechten)
·SELECT: Zentrale Anweisung zur Datenauswahl
·INSERT: Hinzufügen von Zeilen
·DELETE: Löschen von Zeilen
·UPDATE: Verändern von Zeilen durch Änderung von Spalteninhalten

Kapitel 3 CREATE-Anweisung

3.1 Datentypen

Bevor man überhaupt eine Datentabelle mittels des CREATE Statements erstellen kann, muss man zumindest die wichtigsten Datentypen näher betrachten.

CHARACTER alphanumerisch (feste Länge)
VARCHAR(m), TEXT alphanumerisch (variable Länge)
INTEGER, INT, SMALLINT Ganzzahl binär
NUMERIC(m,n) Dezimalzahl (entpackt)
DECIMAL(m,n) Dezimalzahl (gepackt)
FLOAT, REAL, DQUBLE PRECISION Gleitpunktzahlen
DATE, TIME, TIMESTAMP Datum und/oder Uhrzeit

3.2 Datendefinition

Not Null:
spezifiziert ein "Mussfeld", d.h. in allen Zeilen der Tabelle muss dieses Feld mit einem signifikanten Wert versorgt sein!

Der Wert NULL bedeutet "Wert unbekannt". NULL ist nicht zu verwechseln mit Leerzeichen oder der "0"!

SQL unterstützt eine systematische Behandlung von NULL-Werten bzgl. der Datenmanipulation


Check:
Mittels einer Check-Klausel wird festgelegt, welche Bedingung ein Attribut erfüllen muss. Soll zum Beispiel ein Attribut Gehalt immer zwischen 500 und 10000 liegen, so wird dies von der Check-Klausel sichergestellt, d.h. der Attributwert wird nur in die Datenbank eingetragen wenn er dieser Restrektion entspricht.(siehe Beispiel in der Create Anweisung.)


Unique:
Die Unique-Klausel garantiert, dass ein Attributwert nur einmal in einer Spalte vorkommen kann. Dies ist sehr wichtig wenn zum Beispiel sichergestellt werden soll, dass Artikelnummern nur einmal vergeben werden.

Primary Key, Foreign Key:
Beschreibt den Primär- bzw. Sekundärschlüssel einer Relation. Die Schlüssel werden durch die Überführung in die dritte Normalenform ermittelt und müssen dann in der Create-Anweisung angegeben werden.

3.3 CREATE-Anweisung

Die Veranschaulichung der behandelten Befehle erfolgt am Beispiel einer Personalrelation.

CREATE TABLE personal
( Persnr SMALLINT PRIMARY KEY UNIQUE,
 Name   CHARACTER(25) NOT NULL,
 Ort       CHARACTER(20),
 Gehalt  NUMERIC(6.2) CHECK (Gehalt > 0.00 AND Gehalt < 20000.00)
)

Kapitel 4 SELECT-Anweisung


4.1 Übersicht über SELECT-Anweisung: Seitenanfang 

Die SELECT Anweisung ist die Zentrale Anweisung zur Datenauswahl. SELECT ist nicht nur eigenständige Anweisung, sondern findet auch Verwendung in weiteren SQL-Anweisungen wie zum Beispiel bei INSERT oder bei CREATE VIEW. SELECT liefert als Ergebnis eine Tabelle (Query-Tabelle, Ergebnistabelle) zurück. Gemäß Standard kann SELECT als eigenständige Anweisung nur formuliert werden, falls die Ergebnistabelle aus einer Zeile besteht!


4.2 Form der SELECT-Anweisung:

SELECT Ergebnisspalten SPALTENAUSWAHL
FROM Tabelle TABELLENAUSWAHL
[WHERE Bedingung] ZEILENAUSWAHL
[HAVING Bedingung] [GROUP BY Spalte,...] GRUPPIERUNG
[ORDER BY Spalte ASC bzw. DESC] SORTIERUNG

4.3 Anwendungsbeispiel SELECT:

BEISPIEL: Datenauswahl aus der Tabelle WARE

Kapitel 5 Änderungsanweisung

5.1 DELETE - Anweisung

Die DELETE - Anweisung übernimmt das löschen von Datensätzen.

DELETE

FROM Tabelle

[WHERE Bedingung]

5.2 UPDATE - Anweisung

Die UPDATE - Anweisung übernimmt das ändern von Datensätzen.

UPDATE Tabelle SET Spalte = Ausdruck,...
[WHERE Bedingung]

5.3 INSERT - Anweisung

Die INSERT - Anweisung übernimmt das einfügen von Datensätzen.
INSERT

INTO Tabelle [(Spalte, ...)]

VALUES ("wert1","wert2" ,....)

Kapitel 6 VIEW-Konzept

6.1 Was ist ein VIEW

Die Möglichkeit des Erzeugens von Basisrelationen mit dem CREATE TABLE Befehl haben wir schon behandelt. Es existieren neben den so erzeugten Basisrelationen noch weitere Relationen sog. Sichten oder virtuelle Relationen (im englischen: View). Dies sind von Basisrelationen abgeleitete Relationen, wobei in der Datenbank nicht deren Inhalt, sondern nur die Ableitungsregeln abgespeichert sind. Der Sinn von Sichten liegt darin, den Benutzern auch andere Betrachtungsweisen von Relationen zu geben, ohne dass diese Relationen real existieren, wodurch Redundanzen vermieden werden. Auch im Falle des Zugriffschutzes gibt es wichtige Anwendungen, wenn zum Beispiel nur auf einen Teil einer Relation von Dritten zugegriffen werden darf.

6.2 Wie wird ein VIEW definiert

CREATE VIEW view [(spalte,...)]
AS SELECT.....
[WITH CHECK OPTION]

Beispiel:

CREATE VIEW BONNKUNDE (KUNR, KUNAME)
AS SELECT KNR, KNAME
FROM KUNDE

WHERE KORT = 'Bonn'

ORDER BY im SELECT verboten

Es können auch Views von Views definiert werden

Im Standard ist eine Anweisung zum Löschen eines Views nicht enthalten

Author

Ratings

There are no comments available yet.

Here you can write a comment


Please enter at least 10 characters.
Loading... Please wait.
* Pflichtangabe

Related topics

Eines Warenkorbsystem für Anfänger

Ein kurzes Tutorial für Anfänger um ein einfaches aber funktionelles Warenkorbsystem zu erstellen. Freue mich über Rückmeldungen und Kritik - denn nur so verbessert man sich :) ...

web3hoster

Autor : web3hoster
Category: PHP-Tutorials

Verschlüsselungsalgorithmus

Dieses Tutorial zeigt einen Verschlüsselungsalgorithmus von Texten nach dem PHP Data Encryption Standard. ...

Lukas Beck

Autor : Lukas Beck
Category: PHP-Tutorials

Konfiguration eines Linux-Rechners als DSL-Router

Dieser Artikel beschreibt wie man unter LINUX einen DSL-Rooter für Windows konfiguriert. ...

tschiesser@

Autor : tschiesser@
Category: Linux & Server Tutorials

PHP cURL Tutorial: Using cURL to Make HTTP Requests

cURL is a powerful PHP extension that allows you to communicate with different servers using various protocols, including HTTP, HTTPS, FTP, and more. ...

TheMax

Autor : TheMax
Category: PHP-Tutorials

SVN Server einrichten

Wie man unter Linux einen Subversion Server einrichtet. ...

admin

Autor : admin
Category: Linux & Server Tutorials

Werte aus Flash an PHP und JavaScript, und umgekehrt senden

Dieses Tutorial soll euch zeigen, auf welche Weise ihr Werte aus Flash an PHP und JavaScript, und umgekehrt senden könnt. ...

Borlabs

Autor : Borlabs
Category: Other tutorials

Basics of views in MySQL

Views in a MySQL database offer the option of creating a virtual table based on the result of an SQL query. This virtual table can be queried like a normal table without changing the underlying data. ...

admin

Autor : admin
Category: mySQL-Tutorials

Wie erstelle ich ein LogIn-Skript?

Das folgende Tutorial nutzt eine Datenbank, in der die Benutzerdaten gespeichert werden und eine Session, in der der Benutzer registriert wird. ...

andy@

Autor : andy@
Category: PHP-Tutorials

Publish a tutorial

Share your knowledge with other developers worldwide

Share your knowledge with other developers worldwide

You are a professional in your field and want to share your knowledge, then sign up now and share it with our PHP community

learn more

Publish a tutorial