See also http://www.w3schools.com/sql
Source: http://sql.1keydata.com/de

================================================================================
=======  SQL > SQL Befehle ======================================================
================================================================================
================================================================================
SQL > SQL Befehle > Select
Example:
SELECT store_name FROM Store_Information
================================================================================
SQL > SQL Befehle > Distinct

Example:
SELECT DISTINCT store_name FROM Store_Information
================================================================================
SQL > SQL Befehle > Where

Example:
SELECT store_name
FROM Store_Information
WHERE Sales > 1000
================================================================================
SQL > SQL Befehle > And Or

Example:
SELECT store_name
FROM Store_Information
WHERE Sales > 1000
OR (Sales < 500 AND Sales > 275)
================================================================================
SQL > SQL Befehle > In

Example:
SELECT *
FROM Store_Information
WHERE store_name IN ('Los Angeles', 'San Diego')
================================================================================
SQL > SQL Befehle > Between

Example: !! Achtung Datum !!
SELECT *
FROM Store_Information
WHERE Date BETWEEN '06.Jan.1999' AND '10.Jan.1999'
================================================================================
SQL > SQL Befehle > Like

Example:
SELECT *
FROM Store_Information
WHERE store_name LIKE '%AN%'
================================================================================
SQL > SQL Befehle > Order By

Example:
SELECT "Spalten_Name"
FROM "Tabellen_Name"
[WHERE "Bedingung"]
ORDER BY "Spalten_Name" [ASC, DESC]

SELECT store_name, Sales, Date
FROM Store_Information
ORDER BY Sales DESC
================================================================================
SQL > SQL Befehle > Aggregatfunktionen

Example:
SELECT SUM(Sales) FROM Store_Information
================================================================================
SQL > SQL Befehle > Count

Example:
SELECT COUNT(store_name)
FROM Store_Information

SELECT COUNT(DISTINCT store_name)
FROM Store_Information
================================================================================
SQL > SQL Befehle > Group By

Example:
SELECT store_name, SUM(Sales)
FROM Store_Information
GROUP BY store_name
================================================================================
SQL > SQL Befehle > Having
http://sql.1keydata.com/de/sql-having.php

Example:
SELECT "Spalten_Name1", SUM("Spalten_Name2")
FROM "Tabellen_Name"
GROUP BY "Spalten_Name1"
HAVING (arithmetische Funktionsbedingung)

SELECT store_name, SUM(sales)
FROM Store_Information
GROUP BY store_name
HAVING SUM(sales) > 1500
================================================================================
SQL > SQL Befehle > Alias

Example:
SELECT "Tabellen_Alias"."Spalten_Name1" "Spalten_Alias"
FROM "Tabellen_Name" "Tabellen_Alias"

SELECT A1.store_name Store, SUM(A1.Sales) "Total Sales"
FROM Store_Information A1
GROUP BY A1.store_name
================================================================================
SQL > SQL Befehle > Join

Example:
Tabelle Store_Information
store_name  Sales Date
Los Angeles 1500 05.Jan.1999
San Diego    250 07.Jan.1999
Los Angeles  300 08.Jan.1999
Boston       700 08.Jan.1999

Tabelle Geography
region_name store_name
East        Boston
East        New York
West        Los Angeles
West        San Diego

SELECT A1.region_name REGION, SUM(A2.Sales) SALES
FROM Geography A1, Store_Information A2
WHERE A1.store_name = A2.store_name
GROUP BY A1.region_name

Result:
REGION    SALES
East    700
West    2050

================================================================================
SQL > SQL Befehle > Outer Join

Example:
Tabelle Store_Information
store_name  Sales Date
Los Angeles 1500 05.Jan.1999
San Diego    250 07.Jan.1999
Los Angeles  300 08.Jan.1999
Boston       700 08.Jan.1999

Tabelle Geography
region_name store_name
East        Boston
East        New York
West        Los Angeles
West        San Diego

SELECT A1.store_name, SUM(A2.Sales) SALES
FROM Geography A1, Store_Information A2
WHERE A1.store_name = A2.store_name (+)
GROUP BY A1.store_name

Result:
store_name  SALES
Boston       700
New York     null
Los Angeles 1800
San Diego    250

================================================================================
SQL > SQL Befehle > Unterabfrage

Example:
Tabelle Store_Information
store_name  Sales Date
Los Angeles 1500 05.Jan.1999
San Diego    250 07.Jan.1999
Los Angeles  300 08.Jan.1999
Boston       700 08.Jan.1999

Tabelle Geography
region_name store_name
East        Boston
East        New York
West        Los Angeles
West        San Diego


SELECT SUM(Sales) FROM Store_Information
WHERE Store_name IN
(SELECT store_name FROM Geography
WHERE region_name = 'West')

SUM(Sales)
2050
================================================================================
SQL > SQL Befehle > Union

Example:

Tabelle Store_Information
store_name  Sales Date
Los Angeles 1500 05.Jan.1999
San Diego    250 07.Jan.1999
Los Angeles  300 08.Jan.1999
Boston       700 08.Jan.1999

Tabelle Internet_Sales Date Sales
07.Jan.1999 250
10.Jan.1999 535
11.Jan.1999 320
12.Jan.1999 750

und wir mchten alle Tage herausfinden, an denen ein Verkaufsvorgang stattgefunden hat.
Dazu verwenden wir folgende SQL-Anweisung:
SELECT Date FROM Store_Information
UNION
SELECT Date FROM Internet_Sales

Result:
Date
05.Jan.1999
07.Jan.1999
08.Jan.1999
10.Jan.1999
11.Jan.1999
12.Jan.1999
================================================================================
SQL > SQL Befehle > Union All

Example:

Tabelle Store_Information
store_name  Sales Date
Los Angeles 1500 05.Jan.1999
San Diego    250 07.Jan.1999
Los Angeles  300 08.Jan.1999
Boston       700 08.Jan.1999

Tabelle Internet_Sales Date Sales
07.Jan.1999 250
10.Jan.1999 535
11.Jan.1999 320
12.Jan.1999 750

und wir mchten alle Tage herausfinden, an denen ein Verkaufsvorgang
stattgefunden hat und ebenso alle Tage, an denen etwas ber das Internet verkauft
wurde. Dazu verwenden wir folgende SQL-Anweisung:

SELECT Date FROM Store_Information
UNION ALL
SELECT Date FROM Internet_Sales

Ergebnis:

Date
05.Jan.1999
07.Jan.1999
08.Jan.1999
08.Jan.1999
07.Jan.1999
10.Jan.1999
11.Jan.1999
12.Jan.1999

================================================================================
SQL > SQL Befehle > Intersect

Example:
Example:

Tabelle Store_Information
store_name  Sales Date
Los Angeles 1500 05.Jan.1999
San Diego    250 07.Jan.1999
Los Angeles  300 08.Jan.1999
Boston       700 08.Jan.1999

Tabelle Internet_Sales Date Sales
07.Jan.1999 250
10.Jan.1999 535
11.Jan.1999 320
12.Jan.1999 750

und wir mchten alle Tage herausfinden, an denen sowohl Verkufe im Warenhaus
als auch ber Internet stattgefunden haben.
Dazu verwenden wir folgende SQL-Anweisung:

SELECT Date FROM Store_Information
INTERSECT
SELECT Date FROM Internet_Sales

Ergebnis:

Date
07.Jan.1999


================================================================================
SQL > SQL Befehle > Minus

Example:

Tabelle Store_Information
store_name  Sales Date
Los Angeles 1500 05.Jan.1999
San Diego    250 07.Jan.1999
Los Angeles  300 08.Jan.1999
Boston       700 08.Jan.1999

Tabelle Internet_Sales Date Sales
07.Jan.1999 250
10.Jan.1999 535
11.Jan.1999 320
12.Jan.1999 750

und mchten diesmal alle Tage ermitteln, an denen Verkufe im Warenhaus,
jedoch keine Internet-Verkufe stattgefunden haben.
Dazu verwenden wir folgende SQL-Anweisung:

SELECT Date FROM Store_Information
MINUS
SELECT Date FROM Internet_Sales

Ergebnis:

Date
05.Jan.1999
08.Jan.1999

"05.Jan.1999", "07.Jan.1999", und "08.Jan.1999" sind die unterschiedlichen Werte,
die der Befehl "SELECT Date FROM Store_Information" ausgibt.
"07.Jan.1999" wird auch von der zweiten SQL-Anweisung
"SELECT Date FROM Internet_Sales,"
ausgegeben und somit aus dem endgltigen Ergebnissatz ausgeschlossen.

================================================================================
SQL > SQL Befehle > Kaskadieren (http://sql.1keydata.com/de/sql-kaskadieren.php)

Manchmal ist es erforderlich, die Ergebnisse mehrerer verschiedener Felder zu
kombinieren (kaskadieren).

Example:
SQL Server:
SELECT region_name + ' ' + store_name FROM Geography
WHERE store_name = 'Boston';

Ergebnis:
'East Boston'
================================================================================
SQL > SQL Befehle > Substring

Die Teilstring-Funktion in SQL dient dazu, nur einen Teil der gespeicherten
Daten zu erfassen. Diese Funktion wird in den verschiedenen Datenbnken
unterschiedlich aufgerufen:


Example:
Tabelle Geography
region_name store_name
East        Boston
East        New York
West        Los Angeles
West        San Diego

Beispiel 1:

SELECT SUBSTR(store_name, 3)
FROM Geography
WHERE store_name = 'Los Angeles';

Ergebnis:
's Angeles'

Beispiel 2:

SELECT SUBSTR(store_name,2,4)
FROM Geography
WHERE store_name = 'San Diego';

Ergebnis:
'an D'
================================================================================
SQL > SQL Befehle > Trim

Die TRIM-Funktion in SQL dient dazu, ein definiertes Prfix oder Suffix von einer
Zeichenkette abzuschneiden. Am hufigsten werden Leerzeichen entfernt.
Diese Funktion hat in den verschiedenen Datenbnken unterschiedliche Bezeichnungen:

Oracle:     RTRIM(), LTRIM()
SQL Server: RTRIM(), LTRIM()

Example:
SELECT LTRIM('   Sample   ');

Ergebnis:
'Sample   '

Beispiel 3:
SELECT RTRIM('   Sample   ');

Ergebnis:
'   Sample'
================================================================================
SQL > SQL Befehle >...

Example:
SELECT ...
================================================================================
=======  SQL > SQL Syntax ======================================================
================================================================================

SQL > SQL Syntax

Auf dieser Seite ist die SQL-Syntax fr alle in diesem Tutorial behandelten SQL-Befehle aufgelistet. Ausfhrliche Erluterungen finden Sie in den einzelnen Abschnitten, die Sie durch Klicken des Schlsselworts aufrufen knnen.

Diese Seite dient als SQL-Syntaxbersicht. Wir empfehlen Ihnen, diese Seite mit Control-D in Ihre Bookmarks aufzunehmen, damit Sie jederzeit darauf zurckgreifen knnen.


Select
SELECT "Spalten_Name" FROM "Tabellen_Name"

Distinct
SELECT DISTINCT "Spalten_Name"
FROM "Tabellen_Name"

Where
SELECT "Spalten_Name"
FROM "Tabellen_Name"
WHERE "Bedingung"

And/Or
SELECT "Spalten_Name"
FROM "Tabellen_Name"
WHERE "einfache Bedingung"
{[AND|OR] "einfache Bedingung"}+

In
SELECT "Spalten_Name"
FROM "Tabellen_Name"
WHERE "Spalten_Name" IN ('Wert1', 'Wert2', ...)

Between
SELECT "Spalten_Name"
FROM "Tabellen_Name"
WHERE "Spalten_Name" BETWEEN 'Wert1' AND 'Wert2'

Like
SELECT "Spalten_Name"
FROM "Tabellen_Name"
WHERE "Spalten_Name" LIKE {MUSTER}

Order By
SELECT "Spalten_Name"
FROM "Tabellen_Name"
[WHERE "Bedingung"]
ORDER BY "Spalten_Name" [ASC, DESC]

Count
SELECT COUNT("Spalten_Name")
FROM "Tabellen_Name"

Group By
SELECT "Spalten_Name1", SUM("Spalten_Name2")
FROM "Tabellen_Name"
GROUP BY "Spalten_Name1"

Having
SELECT "Spalten_Name1", SUM("Spalten_Name2")
FROM "Tabellen_Name"
GROUP BY "Spalten_Name1"
HAVING (arithmetische Funktionsbedingung)

Create Table
CREATE TABLE "Tabellen_Name"
("Spalte1" "Datentyp_fr_Spalte1",
"Spalte2" "Datentyp_fr_Spalte2",
... )

Drop Table
DROP TABLE "Tabellen_Name"

Truncate Table
TRUNCATE TABLE "Tabellen_Name"

Insert Into
INSERT INTO "Tabellen_Name" ("Spalte1", "Spalte2", ...)
WertS ("Wert1", "Wert2", ...)

Update
UPDATE "Tabellen_Name"
SET "Spalte1" = [Wert]
WHERE {Bedingung}

Delete From
DELETE FROM "Tabellen_Name"
WHERE {Bedingung}




================================================================================
================================================================================
SQL > Tabellenbearbeitung > Create Table

Tabellen stellen die Grundstruktur fr die Speicherung von Daten in der Datenbank dar.
Da der Datenbankanbieter in den meisten Fllen nicht im Voraus wissen kann,
wie Ihre Anforderungen an die Datenspeicherung genau aussehen, ist davon auszugehen,
dass Sie die Tabellen in der Datenbank selbst erzeugen mssen.
Viele Datenbank-Tools erlauben die Erstellung von Tabellen ohne Rckgriff auf SQL,
aber da alle Daten in Tabellen enthalten sind, ist es wichtig,
dass die Syntax fr den Befehl CREATE TABLE in diesem Tutorial Bercksichtigung findet.

Bevor wir nher auf die SQL-Syntax fr CREATE TABLE eingehen,
sollten wir zunchst verstehen, wie eine Tabelle aufgebaut ist.
Tabellen sind in Zeilen und Spalten aufgeteilt.
Jede Zeile entspricht einem Datenbestandteil und jede Spalte lsst sich als
Entsprechung einer Komponente dieses Datenbestandteils vorstellen.
Bei einer Tabelle fr Kundendaten knnten die Spalten beispielsweise Informationen
wie Vorname, Nachname, Strae, Wohnort, Land, Geburtsdatum usw. enthalten.
Bei der Definition einer Tabelle, geben wir dementsprechend die
Spaltenkopfzeilen und die Datentypen fr die jeweilige Spalte an.

Was sind nun Datentypen? Im Allgemeinen liegen Daten in verschiedenen Formen und
Formaten vor. Dies kann eine Ganzzahl (wie 1), eine reelle Zahl (wie 0,55),
eine Zeichenkette (wie 'sql'), ein Datums-/Zeitausdruck (wie '2000-JAN-25 03:22:22')
oder sogar ein binres Format sein. Wenn wir eine Tabelle definieren,
mssen wir fr jede Spalte den zugehrigen Datentyp angeben
(z.B. fr 'Vorname' den Typ char(50), also einen aus 50 Zeichen bestehenden String).
Dabei ist zu beachten, dass verschiedene relationale Datenbnke unterschiedliche
Datentypen erlauben, weshalb zunchst eine datenbankspezifische Referenz in Anspruch
genommen werden sollte.

Die SQL-Syntax fr den Befehl CREATE TABLE sieht folgendermaen aus:

CREATE TABLE "Tabellen_Name"
("Spalte 1" "Datentyp_fr_Spalte_1",
"Spalte 2" "Datentyp_fr_Spalte_2",
... )

Zur Erstellung der oben beschriebenen Kundentabelle wrden wir also eingeben:

CREATE TABLE customer
(First_Name char(50),
Last_Name char(50),
Address char(50),
City char(50),
Country char(25),
Birth_Date date) ?
================================================================================
SQL > Tabellenbearbeitung > Create View

Ansichten knnen als virtuelle Tabellen angesehen werden. Allgemein liee sich
sagen, dass eine Tabelle ber einen Satz von Definitionen verfgt und Daten
physikalisch abspeichert. Eine Ansicht verfgt ebenfalls ber einen Satz von
Definitionen, die auf einer oder mehreren Tabellen oder anderen Ansichten
aufbauen, speichert die Daten aber nicht physikalisch ab.

Die Syntax fr die Erzeugung einer Ansicht sieht folgendermaen aus:

CREATE VIEW "SICHT_NAME" AS "SQL-Anweisung"

"SQL-Anweisung" kann irgendeine der in diesem Tutorial besprochenen
Anweisungen sein.

Nehmen wir zur Verdeutlichung ein einfaches Beispiel. Dabei gehen wir von
folgender Tabelle aus:

Tabelle Customer
(First_Name char(50),
Last_Name char(50),
Address char(50),
City char(50),
Country char(25),
Birth_Date date)



Wir mchten nun eine Ansicht mit der Bezeichnung V_Customer erzeugen, die nur
die Spalten Vorname, Nachname und Land dieser Tabelle enthlt. Dazu geben wir
ein:

CREATE VIEW V_Customer
AS SELECT First_Name, Last_Name, Country
FROM Customer

Wir haben nun eine Ansicht V_Customer mit folgender Struktur:

Ansicht V_Customer
(First_Name char(50),
Last_Name char(50),
Country char(25))


Es ist auch mglich, mit einer Ansicht zwei Tabellen zu kombinieren. In diesem
Fall haben die Anwender statt zwei Tabellen nur eine Ansicht vor sich, was die
SQL-Anweisung deutlich einfacher macht. Nehmen wir an, es liegen die folgenden
zwei Tabellen vor,

Tabelle Store_Information
store_name Sales Date
Los Angeles 1500 05.Jan.1999
San Diego 250 07.Jan.1999
Los Angeles 300 08.Jan.1999
Boston 700 08.Jan.1999


Tabelle Geography region_name store_name
East Boston
East New York
West Los Angeles
West San Diego

und wir mchten eine Ansicht erstellen, die den Umsatz nach Regionen zeigt.
Dazu wrden wir folgende SQL-Anweisung verwenden:

CREATE VIEW V_REGION_SALES
AS SELECT A1.region_name REGION, SUM(A2.Sales) SALES
FROM Geography A1, Store_Information A2
WHERE A1.store_name = A2.store_name
GROUP BY A1.region_name

Damit definieren wir eine Ansicht V_REGION_SALES, die Umstze anhand von
Regionsdatenstzen abspeichert. Um den Inhalt dieser Ansicht herauszufinden,
geben wir ein:

SELECT * FROM V_REGION_SALES

Ergebnis:

REGION SALES
East 700
West 2050
================================================================================
SQL > Tabellenbearbeitung > Create Index

Mit Indizes lassen sich Daten aus Tabellen schneller aufrufen. Nehmen wir zur
Verdeutlichung ein einfaches Beispiel: Wir mchten uns in einem Buch ber
Gartenbau ber den Anbau von Paprika informieren. Anstatt das Buch von Anfang
an zu lesen, bis wir auf einen Abschnitt ber Paprika stoen, empfiehlt es
sich, im Index am Ende des Buchs nachzuschauen, auf welchen Seiten
Informationen ber Paprika zu finden sind und dann diese Seiten aufzuschlagen.
Dies spart viel Zeit und ist die bei weitem effektivste Methode zum Auffinden
der bentigten Informationen.

Das gleiche Prinzip lsst sich auch auf Datenbanktabellen anwenden. Ohne Index
liest das Datenbanksystem die gesamte Tabelle aus (dieser Vorgang wird als
Tabellenscan bezeichnet), um die gewnschten Informationen aufzufinden. Mit
dem richtigen Index kann das Datenbanksystem zunchst den Index nach dem
Speicherort der Daten durchsuchen und die bentigten Daten dann direkt an
diesem Ort aufrufen. Dies spart viel Zeit.

Es ist daher in vielen Fllen empfehlenswert, Indizes fr Tabellen anzulegen.
Ein Index kann eine oder mehrere Spalten umfassen. Die allgemeine Syntax zur
Erstellung eines Index sieht folgendermaen aus:

CREATE INDEX "INDEX_NAME" ON "TABELLEN_NAME" (SPALTEN_NAME)

Gehen wir von folgender Tabelle aus:


Tabelle Customer
(First_Name char(50),
Last_Name char(50),
Address char(50),
City char(50),
Country char(25),
Birth_Date date)

Um einen Index fr die Spalte Nachname zu erzeugen, wrden wir eingeben:

CREATE INDEX IDX_CUSTOMER_LAST_NAME
on CUSTOMER (Last_Name)

Um einen Index fr die beiden Spalten Wohnort und Land zu erstellen, wrden
wir eingeben:

CREATE INDEX IDX_CUSTOMER_LOCATION
on CUSTOMER (City, Country)

Es gibt keine strikten Regeln fr die Index-Benennung. Im Allgemeinen wird ein
Prfix wie "IDX_" vor den Indexnamen gesetzt, um eine Verwechslung mit anderen
Datenbankobjekten zu vermeiden. Auerdem empfiehlt es sich, anzugeben, fr
welche Tabelle und welche Spalte(n) der Index verwendet wird.

Beachten Sie bitte, dass sich die genaue Syntax fr den Befehl CREATE INDEX je
nach Datenbank unterscheiden kann. Przise Angaben finden Sie im
Referenzhandbuch Ihrer Datenbank. ?
================================================================================
SQL > Tabellenbearbeitung > Alter Table

Nach der Erstellung einer Tabelle in der Datenbank gibt es viele Anlsse fr die nderung der Struktur dieser Tabelle. Typische Vorgnge sind dabei:

Spalten hinzufgen
Spalten lschen
Spaltennamen ndern
Datentyp einer Spalte ndern
Beachten Sie bitte, dass es sich hierbei nicht um eine vollstndige Liste handelt. Der Befehl ALTER TABLE wird auch bei anderer Gelegenheit verwendet, beispielsweise zum ndern der Primrschlsseldefinition.

Die SQL-Syntax fr den Befehl ALTER TABLE sieht folgendermaen aus:

ALTER TABLE "Tabellen_Name"
[Alter Spezifikation]

[Alter Spezifikation] hngt von der Art der gewnschten nderung ab. Fr die oben aufgefhrten Anwendungszwecke lauten die entsprechenden Anweisungen:

Spalte hinzufgen: ADD "Spalte 1" "Datentyp fr Spalte 1"
Spalte lschen: DROP "Spalte 1"
Spaltenname ndern: CHANGE "alter Spaltenname" "neuer Spaltenname" "Datentyp
fr neuen Spaltennamen" Datentyp einer Spalte ndern: MODIFY "Spalte 1" "neuer
Datentyp"

Es folgen nun Beispiele fr die einzelnen Vorgnge, unter Verwendung der im
Abschnitt CREATE TABLE erzeugten "Kunden"-Tabelle.

Tabelle customer
Spalten Name Datentyp
First_Name char(50)
Last_Name char(50)
Address char(50)
City char(50)
Country char(25)
Birth_Date date


Zunchst fgen wir eine Spalte "Geschlecht" zu dieser Tabelle hinzu. Dazu geben wir ein:

ALTER table customer add Gender char(1)

Resultierende Tabellenstruktur:

Tabelle customer
Spalten Name Datentyp
First_Name char(50)
Last_Name char(50)
Address char(50)
City char(50)
Country char(25)
Birth_Date date
Gender char(1)


Als nchstes benennen wir die Spalte "Address" in "Addr" um. Dazu geben wir ein:

ALTER table customer change Address Addr char(50)

Resultierende Tabellenstruktur:

Tabelle customer
Spalten Name Datentyp
First_Name char(50)
Last_Name char(50)
Addr char(50)
City char(50)
Country char(25)
Birth_Date date
Gender char(1)


Dann ndern wir den Datentyp der Spalte "Addr" zu char(30). Dazu geben wir ein:

ALTER table customer modify Addr char(30)

Resultierende Tabellenstruktur:

Tabelle customer
Spalten Name Datentyp
First_Name char(50)
Last_Name char(50)
Addr char(30)
City char(50)
Country char(25)
Birth_Date date
Gender char(1)


Schlielich lschen wir die Spalte "Gender" wieder. Dazu geben wir ein:

ALTER table customer drop Gender

Resultierende Tabellenstruktur:

Tabelle customer
Spalten Name Datentyp
First_Name char(50)
Last_Name char(50)
Addr char(30)
City char(50)
Country char(25)
Birth_Date date
================================================================================
SQL > Tabellenbearbeitung > Primrschlssels

Ein Primrschlssel dient der eindeutigen Identifizierung der einzelnen Zeilen
in einer Tabelle. Er kann entweder Teil des eigentlichen Datensatzes oder ein
knstliches Feld sein (das mit dem Datensatz nichts zu tun hat). Ein
Primrschlssel kann aus einem oder mehreren Feldern einer Tabelle bestehen.
Primrschlssel, die aus mehreren Attributen bestehen, werden als
zusammengesetzte Schlssel bezeichnet.

Primrschlssel knnen entweder bei der Erstellung der Tabelle (mit CREATE
TABLE) oder bei der nderung der vorhandenen Tabellenstruktur (mit ALTER TABLE)
 definiert werden.

Es folgen Beispiele fr die Definition eines Primrschlssels whrend der
Erzeugung einer Tabelle:

MySQL:
CREATE TABLE Customer
(SID integer,
Last_Name varchar(30),
First_Name varchar(30),
PRIMARY KEY (SID));

Oracle:
CREATE TABLE Customer
(SID integer PRIMARY KEY,
Last_Name varchar(30),
First_Name varchar(30));

SQL Server:
CREATE TABLE Customer
(SID integer PRIMARY KEY,
Last_Name varchar(30),
First_Name varchar(30));

Es folgen Beispiele fr die Definition eines Primrschlssels whrend der
nderung einer Tabelle:

MySQL:
ALTER TABLE Customer ADD PRIMARY KEY (SID);

Oracle:
ALTER TABLE Customer ADD PRIMARY KEY (SID);

SQL Server:
ALTER TABLE Customer ADD PRIMARY KEY (SID);

Hinweis: Vor Verwendung des Befehls ALTER TABLE zur Hinzufgung eines
Primrschlssels mssen Sie sicherstellen, dass das entsprechende Feld als
'NOT NULL' definiert ist, d.h. NULL ist kein akzeptabler Wert fr das Feld. ?
================================================================================
SQL > Tabellenbearbeitung > Fremdschlssels


Ein Fremdschlssel ist ein Feld (oder mehrere Felder), das auf den
Primrschlssel einer anderen Tabelle verweist. Zweck des Fremdschlssels ist
es, die referentielle Integritt der Daten sicherzustellen. Mit anderen Worten,
 es sind nur Werte zulssig, die auch fr die Datenbank vorgesehen sind.

Nehmen wir zum Beispiel an, es liegen zwei Tabellen vor, eine CUSTOMER-Tabelle
mit allen CUSTOMERdaten und eine ORDERS-Tabelle mit allen CUSTOMERauftrgen.
Die Bedingung lautet nun, dass alle Auftrge einem bereits in der
CUSTOMER-Tabelle verzeichneten CUSTOMER zugewiesen sein mssen. In diesem Fall
platzieren wir einen Fremdschlssel in die ORDERS-Tabelle und setzen ihn in
Bezug zum Primrschlssel der CUSTOMER-Tabelle. Auf diese Weise ist
sichergestellt, dass alle Bestellungen in der ORDERS-Tabelle einem CUSTOMER in
der CUSTOMER-Tabelle zugeordnet sind. Mit anderen Worten, die ORDERS-Tabelle
kann keine Daten zu einem CUSTOMER enthalten, der nicht in der
CUSTOMER-Tabelle aufgefhrt ist.

Die beiden Tabellen sind wie folgt strukturiert:

Tabelle CUSTOMER Spalten Name Merkmal
SID Primrschlssels
Last_Name
First_Name


Tabelle ORDERS Spalten Name Merkmal
Order_ID Primrschlssels
Order_Date
Customer_SID Fremdschlssels
Amount


Im oben stehenden Beispiel ist die Spalte Customer_SID in der ORDERS-Tabelle
ein Fremdschlssel, der auf die SID-Spalte der CUSTOMER-Tabelle verweist.

Es folgen Beispiele fr die Definition des Fremdschlssels whrend der
Erzeugung der ORDERS-Tabelle:

MySQL:
CREATE TABLE ORDERS
(Order_ID integer,
Order_Date date,
Customer_SID integer,
Amount double,
Primary Key (Order_ID),
Foreign Key (Customer_SID) references CUSTOMER(SID));

Oracle:
CREATE TABLE ORDERS
(Order_ID integer primary key,
Order_Date date,
Customer_SID integer references CUSTOMER(SID),
Amount double);

SQL Server:
CREATE TABLE ORDERS
(Order_ID integer primary key,
Order_Date datetime,
Customer_SID integer references CUSTOMER(SID),
Amount double);

Es folgen Beispiele fr die Definition eines Fremdschlssels durch ndern
einer Tabelle: Dies setzt voraus, dass die ORDERS-Tabelle bereits erzeugt ist
und der Fremdschlssel noch nicht eingefgt wurde:

MySQL:
ALTER TABLE ORDERS
ADD FOREIGN KEY (customer_sid) REFERENCES CUSTOMER(SID);

Oracle:
ALTER TABLE ORDERS
ADD (CONSTRAINT fk_orders1) FOREIGN KEY (customer_sid) REFERENCES CUSTOMER(SID);

SQL Server:
ALTER TABLE ORDERS
ADD FOREIGN KEY (customer_sid) REFERENCES CUSTOMER(SID); ?
================================================================================
SQL > Tabellenbearbeitung > Drop Table

Manchmal ist es wnschenswert, eine Tabelle aus welchem Grund auch immer aus
der Datenbank zu lschen. Wre dies nicht mglich, wrde die Verwaltung der
Datenbank fr die Administratoren nach einiger Zeit unntig verkompliziert.
Zum Glck gibt es mit DROP TABLE einen entsprechenden SQl-Befehl. Die Syntax
fr DROP TABLE lautet:

DROP TABLE "Tabellen_Name"

Um die im Abschnitt CREATE TABLE erzeugte Kundentabelle zu entfernen, wrden
wir also einfach eingeben:

DROP TABLE customer.
================================================================================
SQL > Tabellenbearbeitung > Truncate Table

Manchmal ist es wnschenswert, alle Daten in einer Tabelle zu entfernen. Dies
knnen wir mit dem Befehl DROP TABLE erreichen, der im letzten Abschnitt
erlutert wurde. Es ist jedoch auch mglich, nur die Daten zu lschen, nicht
jedoch die Tabelle selbst. Diese Funktion erfllt der Befehl TRUNCATE TABLE.
Die Syntax fr TRUNCATE TABLE lautet:

TRUNCATE TABLE "Tabellen_Name"

Um die in SQL CREATE TABLE erzeugte Kundentabelle zu leeren, wrden wir also
einfach eingeben:

TRUNCATE TABLE customer.
================================================================================
SQL > Tabellenbearbeitung > Insert Into

In den vorhergehenden Abschnitten haben wir uns mit dem Aufrufen von Daten aus
Tabellen beschftigt. Wie gelangen diese Datenzeilen aber ursprnglich in die
Tabellen? Um diese Frage geht es in den nchsten Abschnitten, die die
Anweisungen INSERT und UPDATE behandeln.

In SQL gibt es im Wesentlichen zwei Methoden zum Einfgen (INSERT) von Daten
in eine Tabelle: Bei der einen wird jeweils eine Zeile eingefgt und bei der
anderen mehrere gleichzeitig. Sehen wir uns zunchst den Befehl zum Einfgen
(INSERT) einzelner Datenzeilen an.

Die Syntax fr die entsprechende Funktion sieht folgendermaen aus:


INSERT INTO "Tabellen_Name" ("Spalte1", "Spalte2", ...)
VALUES ("Wert1", "Wert2", ...)

Nehmen wir an, uns liegt eine Tabelle mit der folgenden Struktur vor,

Tabelle Store_Information
Spalte Name Datentyp
store_name char(50)
Sales float
Date datetime

und wir mchten nun eine weitere Zeile mit den Umsatzdaten fr Los Angeles am
10. Januar 1999 in die Tabelle einfgen. An diesem Tag erzielte das
entsprechende Warenhaus einen Umsatz von  900. Wir verwenden dazu das
folgende SQL-Skript:

INSERT INTO Store_Information (store_name, Sales, Date)
VALUES ('Los Angeles', 900, '10.Jan.1999')

Mit dem zweiten Typ von INSERT INTO knnen wir mehrere Zeilen in eine Tabelle
einfgen. Im Gegensatz zum vorhergehenden Beispiel, bei dem wir eine einzelne
Zeile durch Angabe der Werte fr alle Spalten eingefgt haben, verwenden wir
nunmehr eine SELECT-Anweisung, um die einzufgenden Daten festzulegen. Mit der
Vermutung, dass dies die Verwendung von Daten aus einer anderen Tabelle
impliziert, liegen Sie richtig. Die Syntax sieht folgendermaen aus:

INSERT INTO "Tabellen_Name" ("Spalte1", "Spalte2", ...)
SELECT "Spalte3", "Spalte4", ...
FROM "Tabellen_Name2"

Beachten Sie, dass es sich hierbei um die einfachste Form handelt. Die
komplette Anweisung kann durchaus WHERE-, GROUP BY-, und HAVING-Klauseln sowie
Tabellen-Joins und Aliasse enthalten.

Wenn wir zum Beispiel eine Tabelle Store_Information wnschen, in der die
Umsatzdaten fr das Jahr 1998 gesammelt werden und bereits bekannt ist, dass
sich die Quelldaten in der Tabelle Sales_Information befinden, geben wir
Folgendes ein:

INSERT INTO Store_Information (store_name, Sales, Date)
SELECT store_name, Sales, Date
FROM Sales_Information
WHERE Year(Date) = 1998

Zum Abrufen der Jahresdaten aus einem Datum wurde hier die SQL Server-Syntax
verwendet. Andere relationale Datenbanken haben eine andere Syntax. In Oracle
wrden wir beispielsweise to_char(date,'yyyy')=1998 eingeben.
================================================================================
SQL > Tabellenbearbeitung > Update


In bestimmten Fllen kann es erforderlich sein, bereits vorhandene Daten zu
aktualisieren. Dies knnen wir mit dem Befehl UPDATE tun. Die entsprechende
Syntax lautet:

UPDATE "Tabellen_Name"
SET "Spalte1" = [Wert]
WHERE {Bedingung}

Nehmen wir zum Beispiel an, dass folgende Tabelle vorliegt,

Tabelle Store_Information
store_name Sales Date
Los Angeles 1500 05.Jan.1999
San Diego 250 07.Jan.1999
Los Angeles 300 08.Jan.1999
Boston 700 08.Jan.1999


und wir stellen nun fest, dass sich der Umsatz fr Los Angeles am 08.01.1999
anstatt auf 300  auf 500  belaufen hat, so dass der entsprechende Eintrag
aktualisiert werden muss. Dazu verwenden wir folgende SQL-Anweisung:

UPDATE Store_Information
SET Sales = 500
WHERE store_name = "Los Angeles"
AND Date = "08.Jan.1999"

Damit ergibt sich folgende Tabelle:

Tabelle Store_Information
store_name Sales Date
Los Angeles 1500 05.Jan.1999
San Diego 250 07.Jan.1999
Los Angeles 500 08.Jan.1999
Boston 700 08.Jan.1999


In diesem Fall erfllt nur eine Zeile die Bedingung in der WHERE-Klausel. Wenn
mehrere Zeilen diese Bedingung erfllen, werden alle diese Zeilen aktualisiert.

Es ist auch mglich, mit dem Befehl UPDATE mehrere Spalten gleichzeitig zu
aktualisieren. In diesem Fall wrde die Syntax folgendermaen aussehen:

UPDATE "Tabellen_Name"
SET Spalte1 = [Wert1], Spalte2 = [Wert2]
WHERE {Bedingung} ?
================================================================================
SQL > Tabellenbearbeitung > Delete From

Manchmal ist es wnschenswert, Datenstze aus einer Tabelle zu entfernen. Dies
knnen wir mit dem Befehl DELETE FROM erreichen. Die entsprechende Syntax
lautet:

DELETE FROM "Tabellen_Name"
WHERE {Bedingung}

Am einfachsten lsst sich dies mit einem Beispiel verdeutlichen.
Nehmen wir an, dass folgende Tabelle vorliegt,

Tabelle Store_Information
store_name Sales Date
Los Angeles 1500 05.Jan.1999
San Diego 250 07.Jan.1999
Los Angeles 300 08.Jan.1999
Boston 700 08.Jan.1999


und wir mchten alle Daten zu Los Angeles aus dieser Tabelle entfernen. Dazu
verwenden wir folgende SQL-Anweisung:

DELETE FROM Store_Information
WHERE store_name = "Los Angeles"

Der Tabelleninhalt sieht dann wie folgt aus:

Tabelle Store_Information
store_name Sales Date
San Diego 250 Jan-07-1999
Boston 700 Jan-08-1999
================================================================================
#New 12.12.2014 13:15
SELECT P.*
FROM Projekte P
WHERE EXISTS (SELECT 1
               FROM ProjektStatus
               WHERE StatusNummer = 5 AND
                     ProjektId = P.Id)

================================================================================
#New 03.05.2019 / J.Fes Example convert Datetime
set @para_plast_mod_date_min = Convert(datetime,'2019-05-02 06:56:00',120)
set @para_plast_rel_date_min = Convert(datetime,'2019-05-02 06:56:00',120)
