Software > Programmieren und Coding

SQL: Eintauchen in die Welt der Datenbanken

(1/2) > >>

niKoN:
Inhaltsverzeichnis:

Allgemeines
SQL Datenbanken
Verfügbare Befehle für SQL
Datentypen und Operatoren
Der SELECT-Befehl
Tipps & Tricks
Wichtige Links für SQL



Autor: doadro

niKoN:
In der heutigen IT-Welt ist es fast unumgänglich sich mit dem Umgang von Datenbanktabellen vertraut zu machen. Kaum einer kommt nicht in den Kontakt mit relationalen Datenbanken und, damit verbunden, der gängigen Datenbank-Abfragesprache SQL. Im Internet gibt es viele Beschreibungen zu SQL und relationalen Datenbanken, jedoch sind viele dieser Dokumente zu technisch bzw. betrachten nur spezielle Bereiche der doch breiten Informationspalette.

In diesem Artikel möchte ich euch eine kurze Einführung zu Datenbanken und SQL geben, lege jedoch eher Wert auf Datenformate und Datenbankbefehle, speziell dem "SELECT".


Allgemeines

SQL ist eine deklarative Abfragesprache für relationale Datenbanken. SQL („Structured Query Language“) ist aus SEQUEL (Structured English Query Language) hervorgegangen, das von IBM entworfen wurde. Sie hat eine relativ einfache Syntax und stellt eine Reihe von Befehlen


* zur Definition von Datenstrukturen nach der Relationalen Algebra
* zur Manipulation von Datenbeständen (Anfügen, Bearbeiten und Löschen von Datensätzen)
* zur Abfrage von Daten
zur Verfügung.

Durch ihre Rolle als Quasi-Standard ist SQL von großer Bedeutung, da eine weitgehende Unabhängigkeit von der benutzten Software erzielt werden kann.

Dr. Edgar Frank Codd (1923-2003 ) schuf in den 1960er und 70er Jahren bei seiner Forschungsarbeit am IBM Almaden Research Center in San Jose die Grundlagen der relationalen Datenbanken. Bis heute stellen diese einen De-facto-Standard unter den Datenbanktechniken dar.

niKoN:
Eine Datenbank ist die elektronische Form eines Karteikastens bzw. eines Systems zusammengehöriger Karteikästen. Es handelt sich um eine Sammlung von Daten, die aus der Sicht des Benutzers zusammengehören, z. B. eine Waren- oder Adressdatenbank. Die Datenbank wird üblicherweise von einem Datenbankverwaltungssystem (engl. database management system, DBMS) verwaltet. Ein DBMS zusammen mit einer oder mehreren Datenbanken nennt man Datenbanksystem (DBS). Es gibt hierarchische, relationale (RDBMS), multidimensionale und objektorientierte Datenbanken.
Eine relationale Datenbank ist eine Datenbank, die auf dem relationalen Datenbankmodell basiert; darin ist "Relation" ein im streng mathematischen Sinn wohldefinierter Begriff (terminus technicus), der im Wesentlichen ein mathematisches Modell für eine Tabelle beschreibt. Die Daten werden dabei in Form von zweidimensionalen Tabellen verwaltet, die über Schlüssel (Primärschlüssel, Fremdschlüssel) miteinander verknüpft werden können. Die meisten in der Praxis eingesetzten Datenbanksysteme sind für relationale Datenbanken konzipiert.

Im allgemeinen Sprachgebrauch ist deshalb oft eine relationale Datenbank bzw. ein relationales Datenbanksystem gemeint, wenn von Datenbanken die Rede ist. Relationale Datenbanken, wie das „MySQL“, legen die Daten in Form von Tabellen ab. Dabei ist es möglich, mehrere Tabellen anzulegen, miteinander zu verknüpfen und abzufragen. Die Gesamtheit dieser Tabellen bildet dann die Datenbank.
Heute gängige Datenbanksysteme sind z.B. DB2, Oracle, InterBase, SQLite, MySQL, SQL Server und das wohl eher ungeliebte Access von Microsoft.



niKoN:
In SQL unterscheidet man mehrere Befehlsgruppen:


* Befehle die zur Datendefinition dienen
Diese Befehlsgruppe wird als Data Definition Language (DDL) bezeichnet.
* Befehle die zur Manipulation der Daten verwendet werden
Diese Gruppe wird Data Manipulation Language (DML) genannt.
* Eine besondere Bedeutung kommt dem sogenannten SELECT-Kommando zu, mit dem man Auswertungen fast jeder Komplexität durchführen kann.

Darüber hinaus gibt es Befehle, welche


* die Vergabe von Zugriffsrechten steuern (DCL, Data Control Language)
* die Struktur und Größe der Datenbank beeinflussen

Alle SQL-Befehle können bei ORACLE mit dem Programm sqlplus ausgeführt werden.

niKoN:
Folgende Datenformate sind wohl die gängigsten und meistverwendeten Typen in Datenbanken.



* INTEGER: Ganze Zahl (positiv oder negativ)

* CHAR(n): Es werden stets n-Byte benutzt (u.U. mit Blanks aufgefüllt) Max 255 Bytes

* VARCHAR(n): Synonym für varchar2 max. 2000 Bytes, könnte in der Zukunft für ein neues Datenformat verwendet werden

* VARCHAR2(n): Variable Spaltengröße, nur tatsächlich benützte Bytes werden belegt (max. 2000 Bytes bei Oracle7, 4000 Bytes bei Oracle 8)

* NUMBER(v,n): Integer oder Real (v=Vork., n=Nachk. ) max. v=38, n=-84 bis +127, es wird nur tatsächlich benutzte Länge gespeichert

* DATE: zur Speicherung des Datums (4 Byte) und Uhrzeit (3 Byte) bis 31.12.4712, bei nur Datum bis zum 31.12.9999

* RAW(n): zur Speicherung von Binärdaten max. 2000 Bytes (Oracle 7)

* LONG: zur Speicherung von alpha-num Daten (var. Spaltengröße) max. 2 GB, max. 1 je Tabelle

* LONG RAW: für binäre Daten (var. Spaltengröße) max. 2 GB max. 1 je Tabelle

* BLOB: Binary Large Object, es werden nur Zeiger zurückgegeben max. 4 GB, beliebig viele LOBS je Tabelle

* CLOB: Character Large Object Max 4 GB, beliebig viele LOBS je Tabelle

Die im folgenden aufgeführten Operatoren können innerhalb der meisten SQL-Anweisungen verwendet werden.


Arithmetische Operatoren:



* () überschreibt die normalen Vorrangregeln select (x+y)/(x-y)

* + - bezeichnet einen positiven oder negativen ...where wert = -1 Ausdruck ...where -gehalt < 0

* * / multiplizieren u. dividieren select 2*x+1

* + - addieren u. subtrahieren ...where x > y/2

Vergleichsoperatoren:



* () überschreibt die normalen Vorrangregeln ...not(a=1 or b=1)

* = Prüfung auf Gleichheit ...where X = 1000

* !=,^=,<> Test auf Ungleichheit ...where X != 1000

* >,<,>=,<= Tests auf kleiner/größer als ...where X >= 1000

* IN Gleichheit zu einem Mitglied, einer Liste oder Subquery. ...where Y in Menge ('A','B')

* NOT IN schliesst Gleichheit zu einem Mitglied, einer Liste oder Subquery aus. ...where X not in

* ANY vergleicht einen Wert mit jedem Wert aus einer Liste oder Subquery. ...where X = any
vorausgehen muß einer der Operatoren =,!=,<,>,<=,>=

* ALL vergleicht einen Wert mit allen Werten aus einer Liste oder Subquery. ...where (X,Y) >= all
vorausgehen muß einer der Operatoren =,!=,<,>,<=,>=

* [NOT] negiert Operationen ...where X not between 0 and 5
[NOT] liefert TRUE, wenn eine Subquery mindestens eine Zeile zurückliefert

* LIKE Definiert Ähnlichkeitswerte. Zeile stimmt mit dem nachfolgenden Muster annähernd überein.. Das Zeichen "%" kann hierbei auch als Platzhalter verwendet werden. ... where X like 'AB%'

Logische Operatoren:



* AND logisches UND ...where a=1 and b=1

* OR logisches ODER ...where a=1 or b=1

Mengenoperatoren


UNION kombiniert Queries, indem alle Zeilen geliefert werden, die von jeder einzelnen Abfrage erfaßt werden select... union select

[/B]INTERSECT[/B] Mengen-Durchschnitt der Zeilen ...select ... intersect select

MINUS Mengen-Differenz ...select ... minus select


Sonstige Operatoren:


COUNT liefert die Anzahl der Zeilen für die X nicht NULL ist ...select count(X) from Y

COUNT(*) liefert alle Zeilen einer Tabelle

DISTINCT eliminiert doppelte Zeilen oder doppelte Werte in einem Aggregatausdruck ... select distinct *

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln