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
2009-04-01 13:12:35 2009-04-01 13:12:35 webmaster205@
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
- Anwendung von SQL
- Geschichte von SQL
- Sprachumfang des SQL-Standards
- Datentypen
- Datendefinition
- CREATE-Anweisung
- Format der SELECT-Anweisung
- Auswahl der Ergebnisspalten
- Zeilenauswahl (WHERE-Klausel)
- Verknüpfung von Tabellen
- DELETE: Datenlöschung
- UPDATE: Datenänderung
- INSERT: Datenneuaufnahme
- 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 enthaltenErfahrungen
Hier Kannst Du einen Kommentar verfassen
Verwandte Beiträge
Ein Gästebuch in PHP Programmieren
Eine ausführliche Anleitung wie man auf einfache Art ein Gästebuch realsiert. Dieses Gästebuch basiert auf einer Textdatenbank! ...
Autor :
Freak
Kategorie:
PHP-Tutorials
Webserver, Sicherheit ist realisierbar
Diese Facharbeit beschäftigt sich mit dem Herzstück eines Netzwerkes, dem Webserver. ...
Autor :
me1@
Kategorie:
Linux & Server Tutorials
Wie kann man komplexe Abfragen mit SQL-Querys In MySQLi effektiv durchführen?
In diesem MySQL-Tutorial wird erklärt, wie komplexe SQL-Abfragen in MySQLi effizient durchgeführt werden können. Wir werden uns mit verschiedenen Aspekten der Datenbankabfrage beschäftigen und spezifische Methoden kennenlernen. ...
Autor :
TheMax
Kategorie:
mySQL-Tutorials
PHP 7 Virtual Machine
Dieser Artikel zielt darauf ab, einen Überblick über die Zend Virtual Machine, wie es in PHP 7 gefunden wird. ...
Autor :
admin
Kategorie:
PHP-Tutorials
Objektorientiertes Programmieren
Dieses Tutorial beschreibt sehr gut die Wirkunsweise von objektorientiertes Programmieren. Also bestens geeignet um das objektorientierte Programmieren zu verstehen. ...
Autor :
phpsven
Kategorie:
PHP-Tutorials
Tutorials zu Facebook Anwendungen mit PHP
In mehreren Tutorials wird der Zugriff auf Facebook Daten mittels Graph API, FQL und REST API erklärt. Alle Codebeispiele liegen zum Ausprobieren in einem SVN, bzw. github Repository bereit. ...
Autor :
abouttheweb
Kategorie:
PHP-Tutorials