Wie funktioniert SQL ? Was ist SQL? Befehle im Überblick

Was ist SQL?

SQL ist eine Standardsprache, mit der man auf Datenbanken zugreifen kann.

SQL = Structured (Strukturiert) Query (Abfrage) Language (Sprache).
SQL ist aber mehr, als nur eine Möglichkeit, Informationen von einer Datenbank abzurufen.

Mit SQL kann man:

    • Datenbanken selbst anlegen, ändern und löschen
    • Tabellen erzeugen, ändern und löschen
    • Daten hinzufügen, abrufen, ändern und löschen
    • Aktionen aufgrund von Änderungen der der Datenbank ausgelöst werden (z.B. Trigger)

SQL findet man nicht nur
in MySQL. Auch Datenbanksysteme wie MS-SQL-Server und Oracle arbeiten
mit SQL. Die grundlegende Syntax ist gleich, bei den höheren Funktionen
(z.B. JOIN, Trigger) findet man Unterschiede.

Wie kann ich SQL nutzen?

Mit Datenbanken kann man auf verschiedene Arten arbeiten. Am meisten wird wohl die Kombination MySQL/PHP verwendet. Auch Perl wird von vielen Scripten verwendet.

MySQL und PHP

SQL mit PHP auszuführen ist garnicht mal so schwer. Mit PHP kann man direkt und ohne ODBC (Open Database Connectivity) auf MySQL zugreifen.

Als erstes muss eine Verbindung zur Datenbank aufgebaut werden
(connect/pconnect). Dann kann eine Datenbank ausgewählt werden
(mysql_select_db). Danach kann eine SQL-Anweisung erstellt und mit
mysql_query ausgeführt werden.

Falls man mit mehreren Datenbanken arbeiten möchte, bietet sich
mysql_db_query an. Ein Parameter dieser Anweisung ist die Datenbank,
mysql_selsect_db muss nicht vorher ausgeführt werden.

So werden z.B. alle Daten aus einer Tabelle abgerufen:
<?php
$query = „SELECT * FROM Meine_Tabelle“;
$result = mysql_query($query) or die(„Anfrage fehlgeschlagen: “ . mysql_error());
?>

Hier eine Auflistung der wohl wichtigsten mysql-Anweisungen unter PHP.

mysql_connect   Stellt eine Datenbankverbindung
her. Der Rückgabewert dieser Funktion ist eine Verbingungs-ID, die für
weiter Funktionen benötigt wird.
       
mysql_pconnect  Unterschied zu mysql_connect: Die
Verbindung bleibt auch nach Ausführung des Scriptes erhalten, die mit mysql_close geschlossen werden muss.   

mysql_select_db         Legt die Datenbank fest, mit der weiter Funktionen (z.B. mysql_query) ausgeführt werden.       
mysql_query    
Führt eine SQL-Anweisung aus.
Der Rückgabewert ist abhängig von der ausgeführten Anweisung. Bei
SELECT ist der Rückgabewert eine Ergebnistabelle, bei INSERT, UPDATE
und DELETE ein Wert.      
mysql_db_query  Unterschied zu mysql_query: Es muss eine
Datenbank als Parameter übergeben werden.     

mysql_result    Liefert den Inhalt eines bestimmten Datensatzes der Ergebnistabelle. Wird genutzt, um das Ergebnis einer Abfrage (SELECT) auszugeben.  
mysql_insert_id        
Ermittelt den Wert eines AUOINCREMENT-Feldes, wenn der betreffende Datensatz zuvor mit einer INSERT-Anweisung erzeugt wurde.   

mysql_fetch_row         Liefert eine Ergebniszeile als Array. Auf die einzelnen Spalten greift man über die Array-Indizies zu. 
mysql_num_rows 
Ermittelt die Zahl der Zeilen (Datensätze) einer Ergebnistabelle. Diese Funktion verwendet man, um alle Datensätze einer Schleife auszugeben.  

mysql_field_name        Liefert den Namen eines Feldes.        
mysql_errno    
Liefertdie Fehlernummer einer zuvor fehlgeschlagenen Operation. Die Fehlernummer lässt sich für die Fehlerbehandlung nutzen.   

mysql_error     Liefert die Fehlermeldung einer zuvor fehlgeschlagenen Operation.      
mysql_close    
Schliesst eine Verbindung zur Datenbank.
Als Argument ist die Verbindungs-ID zu verwenden, die von
connect/pconnect zurückgegeben wird.

       

Diese Liste ist nur ein Auszug. Wer Genaueres wissen möchte, kann sich bei www.php.net informieren.

Index, Key

Indizies unterstützen die schnelle Sortierung und Filterung von Datensätzen und können daher Abfragen beschleunigen. Die einzelnen Datensätze können somit direkt angespochen werden, ohne bei jedem SELECT oder UPDATE die ganze Tabelle durchsuchen zu müssen.

Mehrere Spalten können zu einem Index zusammengefasst werden. Meistens ist es aber sinnvoller, eine einzelne Spalte dafür zu verwenden.
Der Wert in den Klammern ist bei allen Schlüsselworten wahlweise der
Spaltenname oder Index der Spalte oder auch der Spalten in der Tabelle.
Indizies können auch nach dem Erstellen einer Tabelle mit
CREATE INDEX und ALTER TABLE erstellt werden. Wenn Daten in der Tabelle enthalten sind, die nicht eindeutig sind, kann es dabei Probleme geben.

INDEX()
        Ein Index kann über mehrere
Spalten gehen. Die Hauptsortierung wird dann durch die erste Spalte
bestimmt.      
UNIQUE()        Es entsteht ein Index, der nur
eindeutige Werte
enthält. Das Hinzufügen eines schon enthaltenen Wertes führt zu einer
Fehlermeldung. Sinnvoll ist es, einer Spalte mit Ganzzahlen (z.B.
integer), AUTO_INCREMENT zuzuweisen.   
KEY()   Ist ein Synonym für INDEX.     

PRIMARY KEY()   Ein PRIMARY KEY ist ein eindeutiger KEY mit der zusätzlichen Beschränkung, dass alle Schlüsselspalten als NOT NULL deklariert sein müssen.     
Beispiele

1. Beispiel

SQL-Befehl:

CREATE TABLE `tabelle1` (
`id` INT NOT NULL AUTO_INCREMENT ,
`name` VARCHAR( 25 ) NOT NULL ,
`eintrag` TEXT NOT NULL ,
`datum` DATETIME NOT NULL ,
INDEX ( `id` )
);

Hier wird eine Tabelle mit dem Tabellennamen tabelle1 angelegt. Sie enhält 4 Spalten.

Bei einem INSERT wird der Wert der in die 1. Spalte eingetragen wird,
von der Datenbank selbst erstellt (AUTO_INCREMENT). Für die anderen 3
Spalten müssen Werte angegeben werden (NOT NULL).
Die Spalte id id ist indiziert.

2. Beispiel:

SQL-Befehl:
CREATE TABLE `artikel` (
`artikelnummer` INT UNSIGNED NOT NULL ,
`artikelbezeichnung` VARCHAR( 50 ) NOT NULL ,

`preis` DECIMAL( 5, 2 ) ,
`steuersatz` CHAR( 1 ) ,
`bestand` INT UNSIGNED,
PRIMARY KEY ( `artikelnummer` )
);

Eine Tabelle mit dem Tabellennamen artikel und 5 Spalten wird angelegt.
„artikelnummer“ und „artikelbezeichnung“ müssen bei INSERT immer Werte
enthalten, die anderen 3 Spalten dürfen auch leer (NULL) sein.
Die Werte der Spalte „preis“ haben maximal 5 Stellen, 2 davon nach dem Dezimalpunkt (999.99).
„artikelnummer“ und „bestand“ sind UNSIGNED. Es sind hier somit nur positive Werte möglich.

Die Spalte „steuer“ enthält die ID’S aus der Tabelle steuer:

SQL-Befehl:
CREATE TABLE `steuer` (
`id` CHAR( 1 ) NOT NULL ,
`steuersatz` TINYINT UNSIGNED NOT NULL ,
`beschreibung` VARCHAR( 25 ) NOT NULL ,
PRIMARY KEY ( `id` )
);

Diese muss nur 3 Spalten enthalten:

id      steuersatz      beschreibung   
0       0       keine Steuer   
1       7       geringer Satz  

2       16      voller Satz    

Falls sich der Steuersatz mal ändern sollte, muss nur die 2. Tabelle
geändert werden und nicht alle Werte in der Tabelle „artikel“.
Bei einer Datenbankabfrage werden beide Tabellen mit WHERE oder JOIN verknüpft.

Tabelle ändern

Mit ALTER TABLE kann die Struktur eine bestehenden Tabelle verändert werden.

Es können Spalten hinzugefügt (ADD), verändert (CHANGE) und gelöscht (DROP) werden.
Indexangaben können verändert werden (ADD, DROP), Spalten sortiert
(ORDER BY) und auch die ganze Tabelle umbenannt werden (RENAME).

Beispiele:

SQL-Befehl:
ALTER TABLE `tabelle1` ADD `vorname` VARCHAR( 25 ) AFTER `name` ;

Hier wurde in der „tabelle1“ die Spalte mit dem Spaltennamen „vorname“ nach der Spalte „name“ eingefügt. Die neue Spalte hat den Datentyp varchar und die Werte können maximal 25 Zeichen lang sein.

SQL-Befehl:
ALTER TABLE `kunden` CHANGE `name` `name` VARCHAR( 30 ) NOT NULL

Die Spalte „name“ wurde geändert.
Sie konnte nach CREATE TABLE Werte von maximal 25 Zeichen länge
aufnehmen, jetzt können die Werte maximal 30 Zeichen lang sein. Bei
einem Verringern der Länge würde bei schon vorhandenen Daten evtl.
Datenverlust auftreten. Werte zu lang sind, werden einfach gekürzt.

SQL-Befehl:
ALTER TABLE `tabelle1` ADD PRIMARY KEY ( `id` )

Mit dieser SQL-Anweisung wurde in der „tabelle1“ die Spalte „id“ zum Primärschlüssel (war nach CREATE TABLE nur INDEX).

SQL-Befehl:

ALTER TABLE `tabelle1` DROP INDEX `id`

Der Index für Spalte „id“ wurde gelöscht.

SQL-Befehl:
ALTER TABLE `tabelle1` RENAME `kunden` ;

Und hier wurde die Tabelle „tabelle1“ in „kunden“ umbenannt. Alternativ könnte man dazu auch RENAME TABLE verwenden

Tabelle umbenennen

Wie im Beispiel auf der
vorherigen Seite gesehen, kann eine Tabelle mit ALTER TABLE umbenannt
werden. Alterativ kann man dazu auch
RENAME TABLE verwenden.

SQL-Befehl:
RENAME TABLE `tabelle1` TO `kunden`

Benennt die Tablelle „tabelle1“ in „kunden“ um.

Tabelle leeren

Tabellen können mit TRUNCATE TABLE geleert werden. Intern wird dabei die Tabelle gelöscht und neu angelegt. Alternativ können auch all Datensätze einer Tabelle mit DELETE FROM gelöscht werden.

SQL-Befehl:
TRUNCATE TABLE `artikel`

Löscht unwiderruflich alle Sätze in der Tabelle artikel.

Tabelle löschen

Der Befehl DROP TABLE löscht unwiderruflich eine Tabelle. Eventuell sollte die Tabelle vorher gesichert werden.

SQL-Befehl:
DROP TABLE `telefon`

Löscht die Tabelle telefon unwiderruflich.

Daten einfügen

Mit INSERT werden Werte in eine Tabelle eingefügt. Für diese Anweisung sind verschiedene Schreibweisen möglich:

INSERT INTO tabelle

  [(spalten_name,…)]
  VALUES (ausdruck,…),(…),…

und:
INSERT INTO tabelle
  SET spalten_name=ausdruck, spalten_name=ausdruck, …

und:
INSERT INTO tabelle [(spalten_name,…)]
  SELECT …

Bei den ersten beiden Varianten werden die Spaltennamen und einzutragene Werte unterschiedlich angeordnet.
Die dritte Variante liest die Werte, die eingetragen werden sollen,
zuvor mit einer SELECT-Anweisung aus einer Tabelle aus. Es wird also
eine INSERT- und eine SELECT-Anweisung miteinander verbunden. Der
INSERT-Zweig legt nur noch die Zieltabelle und die Spaltennamen fest,
in welche die Werte geschrieben werden sollen.

Strings müssen immer in einfache Anführungszeichen (‚) gesetzt werden. Nummerische Werten können auch als Strings, also mit ‚ übergeben werden.
Strings die zu lang sind, werden auf den Maximalwert, der für die
jeweilige Spalte möglich ist, gekürzt. Bei nummerischen Werten wird der
jeweilige Maximalwert eingetragen. Bei solchen Fällen wird eine Warnung
ausgegeben.

Spalten mit Primärschlüssel (PRIMARY_KEY) müssen einen eindeutigen Wert übergeben bekommen.
Spalten, bei denen der Wert automatisch generiert wird (
AUTO_INCREMENT), müssen keine Werte übergeben bekommen. Der so generierte Wert kann mit mit der mysql_insert_id-Funktion ermittelt werden.

INSERT – Beispiele

1. Beispiel:

SQL-Befehl:
INSERT INTO `steuer` ( `id` , `steuersatz` , `beschreibung` )
VALUES (‚2′, ’16‘, ‚voller Steuersatz‘);

Hier wird in die Tabelle „steuer“, die wir bei einem vorherigen
Beispiel mit CREATE TABLE angelegt haben, ein Datensatz eingetragen.

2. Beispiel:

SQL-Befehl:
INSERT INTO `artikel` ( `artikelnummer` , `artikelbezeichnung` , `preis` , `steuersatz` , `bestand` )
VALUES (
‚12345‘, ‚Irgendwas‘, ‚12.23‘, ‚2‘, NULL
);

Und hier wird in die Tabelle „artikel“ ein Datensatz eingetragen. Der Wert für die Spalte „artikelnummer“ könnte auch ohne Anführungszeichen stehen, da die Spalte nummerisch ist (INT).

„artikelnummer“ und „artikelbezeichnung“ müssen immer Werte enthalten (NOT NULL), wobei darauf zu achten ist, das die Werte für „artikelnummer“ eindeutig sind (PRIMARY KEY).

3. Beispiel:

SQL-Befehl:
INSERT INTO `kunden` ( `id` , `name` , `vorname` , `eintrag` , `datum` )
VALUES (
“, ‚Müller‘, ‚Michael‘, ‚Müller“s mögen keine Milch.‘, NOW( )
);

Der Wert für die Spalte „eintrag“ sieht wohl ungewohnt aus. Das Sonderzeichen
‚ im Text würde als Endezeichen für die Spalte „eintrag“ gelesen werden
(‚Müller‘) und es würde so zu einer Fehlermeldung kommen. Damit das
nicht passiert, wird dem ‚ im Text noch ein ‚ vorangesetzt. Texte
sollten daher auch nicht einfach so aus Formularen übernommen sondern
immer erst geprüft und ggf. aufgearbeitet werden.

Die Spalte „datum“ (DATETIME) soll hier das aktuelle Datum enthalten. MySQL bietet dafür die Funktion NOW() an.
Für die Spalte „id“ muss kein Wert übergeben werden (AUTO_INCREMENT). Der
generierte Wert kann so ermittelt werden:

<?php
$lastid = mysql_insert_id($lk);

?>

Daten auslesen

Mit SELECT werden Daten aus einer Tabelle ausgelesen.
Hier eine verkürzte Syntax dieser Anweisung, die für die meisten Fälle reichen sollte:

SELECT [DISTINCT]
  select_ausdruck,…
  FROM tabelle
  [WHERE …]
  [GROUP BY … [ASC | DESC], …]
  [HAVING …]
  [ORDER BY … [ASC | DESC] ,…]
  [LIMIT [vonzeile] zeilen]

Die einfachste SELECT-Anweisung ist: SELECT * FROM kunden
Dabei werden alle Datensätze aus der Tabelle „kunden“ ausgelesen.
Klauseln und Funktionen können, müssen aber nicht angegeben werden. Die Reihenfolge wie sie hier abgebildet ist, muss dabei eingehalten werden.

Die SELECT-Anweisung wird mit mysql_db_query oder auch mysql_query ausgeführt. Als Rückgabewert liegt eine Tabelle vor, die mit mysql_fetch_row oder auch einer for-Schleife zeilenweise ausgegeben werden kann. Hier Beispiel dazu.

Die einzelnen Spalten können über Index, dem Spaltennamen oder dem mit „AS“ vergebenen Aliasnamen angesprochen werden.
Die
Reihenfolge der einzelnen Werte wird durch die Reihenfolge in der SELECT-Anweisung festgelegt.
Wenn alle Spalten einer Tabelle ausgelesen werden sollen, kann anstatt
der Spaltennamen auch ein * (Stern) angegeben werden. Die Reihenfolge
der Ergebniswerte entspricht dann der Reihenfolge der Spalten in der
Tabelle.

 < OLE-Objekt: Bild (Metafile) >>

Eine Spalte kann mit spaltenname, tabelle.spaltenname und auch mit datenbank.tabelle.spaltenname ausgelesen werden.
So ist z.B. auch ein Auslesen von Spalten gleichen Namens in 2 oder mehr
verschiedenen Tabellen in einer Anweisung möglich.

SELECT artikeltabelle1.artikel, artikeltabelle2.artikel
FROM artikeltabelle1, artikeltabelle2

 < OLE-Objekt: Bild (Metafile) >>

Für die Spalten im Ergebnis können auch Aliasnamen vergeben werden. nach diesen Aliasnamen kann auch in der SELECT-Anweisung gearbeitet werden. Hier erfolgt z.B. eine Sortierung.

SELECT artikeltabelle1.artikel AS artikel1, artikeltabelle2.artikel AS artikel2
FROM artikeltabelle1, artikeltabelle2

ORDER BY artikel2

 < OLE-Objekt: Bild (Metafile) >>

Auch für die Tabellen selbst können in der SELECT-Anweisung Aliase verwendet werden.

SELECT tab1.artikel, tab2.artikel
FROM artikeltabelle1 tab1, artikeltabelle2 tab2

Klauseln

DISTINCT        Es werden gleiche Zeilen in der Ergebnistabelle verhindert.    
FROM    Es folgt der
Tabellenname, aus dem gelesen werden soll. Es können auch mehrere Tabellen angegeben werden.
z.B. FROM artikel, kunden      
WHERE   Mit WHERE wird eine
Auswahl der Ergebnisdatensätze getroffen. Dazu werden Operatoren verwendet, die auf der nächsten Seite beschrieben werden.

z.B. SELECT * FROM kunden WHERE name = ‚Meier‘
gibt alle Sätze aus, in denen Name Meier ist   
GROUP BY        Hiermit können
Werte zusammengefasst (gruppiert) werden. Ob auf- oder absteigend wird durch ASC|DESC festgelegt.       
HAVING  Hier können
Gruppen ausgewählt werden, die zuvor mit GROUP BY gebildet wurden. WHERE bezieht sicht auf einelne Datensätze, HAVING auf Gruppen.

SELECT * FROM kunden GROUP BY name HAVING COUNT(name) >= 3
gibt z.B. alle Namen aus, die mindestens dreimal auftreten.    
ORDER BY       
Sortiert die Ergebnistabelle. Ob auf- oder absteigend wird durch ASC|DESC festgelegt. Es kann auch nach mehreren Spalten sortiert werden.
z.B. ORDER BY name DESC, datum ASC     
LIMIT(m,n)      Wird verwendet, um die
Anzahl der Zeilen im Ergebnis zu begrenzen.
Bei 2 angegebenen Argumenten ist das erste die 1. Zeile, das zweite die
Anzahl der Zeilen, die zurückgegeben werden. Bei einem Argument ist die
1. Zeile immer 0 und das Argument die Anzahl der Zeilen.

z.B. LIMIT(30,10)
die 1. Zeilen die gelesen wird ist 30, insgesammt 10 Zeilen    
ASC|DESC        Legt die
Sortierreihenfolge
der Ergebniszeilen fest. ASC und DESC können bei ORDER BY und GROUP BY
angegeben werden. DESC = absteigend, ASC = aufsteigend. ASC ist
Standard.
z.B. ORDER BY name DESC
bewirkt eine absteigende Sortierung der Ergebnisse nach der Spalte name        

Operatoren

Und hier die Operatoren, die man z.B. bei WHERE verwenden kann:

=       Gleichheit, Identität
z.B. SELECT * FROM artikel WHERE artikelnummer = ‚12345‘       
<       kleiner als

z.B. SELECT * FROM artikel WHERE artikelnummer < ‚12345‘       
>       grösser als
z.B. SELECT * FROM artikel WHERE preis > ‚50.00‘       
<=      kleiner oder gleich
z.B. SELECT * FROM artikel WHERE preis <= ‚50.00‘      

>=      grösser oder gleich
z.B. SELECT * FROM artikel WHERE artikelnummer >= ‚12345‘      
!=      ungleich
z.B. SELECT * FROM artikel WHERE steuer != ‚0‘ 
BETWEEN         Prüft, ob eine Wert
zwischen zwei Werten liegt.

z.B. SELECT * FROM artikel WHERE preis BETWEEN ‚10.00‘ AND ‚80.00‘     
IN      Prüft, ob ein Wert in einer Liste von Werten
enthalten ist.
z.B. SELECT * FROM artikel WHERE preis IN(20.00,50.00) 
LIKE    Prüft, ob eine
Übereinstimmung mit einem Muster besteht.

z.B.SELECT * FROM kunden WHERE name LIKE ‚m%‘
Gibt alle Sätze zurück, in denen name mit „m“ beginnt  
NOT LIKE        Prüft, ob
keine Übereinstimmung mit einem Muster besteht.
z.B.SELECT * FROM kunden WHERE name NOT LIKE ‚m%‘
gibt alle Sätze zurück, in denen name nicht mit „m“ beginnt    
%      
Ersetzt beliebig viele Zeichen.        

_ (Unterstrich) Ersetzt genau ein Zeichen.
z.B. SELECT * FROM kunden WHERE name LIKE ‚m_ier‘
würde Meier und auch Maier zurückgeben 
AND &&  Liefert den Wahrheitswert true, wenn
beide Teilbedingungen logisch wahr sind. Es kann „AND“ und auch „&&“ geschrieben werden.

z.B. SELECT * FROM kunden WHERE name LIKE ‚m%‘ AND eintrag LIKE ‚m%‘
gibt alle Sätze zurück in denen name mit „m“ beginnt und eintrag mit „m“ gebinnt       
OR ||   Liefert den Wahrheitswert true, wenn mindestens
eine Teilbedingung logisch wahr ist. Es kann „OR“ und auch „||“ geschrieben werden.
z.B. SELECT * FROM kunden WHERE name LIKE ‚m%‘ || name LIKE ‚%d‘
gibt alle Sätze zurück in denen name mit „m“ beginnt oder mit „d“ endet
NOT !  
Kehrt den Wahrheitswert eines logischen Ausrucks um. Es kann „NOT“ oder auch „!“ geschrieben werden.

z.B. SELECT * FROM kunden WHERE name NOT LIKE ‚m%‘
gibt alle Sätze zurück in denen name nicht mit „m“ beginnt     
Funktionen

Es gibt „normale“
Funktionen und Aggregatfunktionen. Die „normalen“ Funktionen
modifizieren Werte in der Ergebnistabelle. Der Umfang dieser Funktionen
ist recht gross, so das hier nur einige erwähnt werden können.

Stringfunktionen

LEFT    Liefert einen Teilstring aus einem anderen String, beginnend beim ersten Zeichen.      

LOWER/UPER      Wandelt alle Buchstaben eines Strings in Klein- bzw. Grossbuchstaben um.       
SUBSTRING       Liefert einen
Teilstring aus einem String.     

TRIM    Entfernt führende und folgende Leerzeichen.    

SQL-Befehl:
SELECT artikelnummer,
 LEFT(artikelbezeichnung,10) AS bezeichnung,

FROM artikel

Hier werden von der Spalte artikelbezeichnung nur die ersten 10 Zeichen verwendet:

Mathematische Funktionen

ABS     Liefert den Absolutwert einer Zahl.    

CEILING         Liefert die kleinste Ganzzahl (Integer), die nicht kleiner ist als ein vorgegebener Wert.      
FLOOR   Liefert die
grösste Ganzzahl (Integer), die nicht grösser ist als ein vorgegebener Wert.       
LOG     Ermittelt den
natürlichen Logarithmus eines Wertes.    

MOD     Liefert den Rest einer Division.       
ROUND  
Rundet einen Wert auf eine Ganzzahl oder eine Dezimalzahl auf oder ab. 

SQL-Befehl:
SELECT artikelnummer, preis,

 ROUND(preis*0,05) AS rabatt
 FROM artikel

So kann z.B. ganz einfach ein Rabatt von 5% berechnet werden.

Datumsfunktionen

Diese Funktionen setzen ein gültiges Datum wie z.B. DATE und DATETIME voraus.

DAYOFMONTH      Ermittelt den Tag des Monats.  

MONTH   Ermittelt den Monat als nummerischen Wert.     
MONTHNAME       Ermittelt den
Monatsnamen.     
QUARTER         Ermittelt das
Quartal

YEAR    Ermittelt das Jahr.    

SQL-Befehl:
SELECT * FROM kunden WHERE DAYOFMONTH( datum ) = ’24‘

Hier werden z.B. alle Datensätze ausgegeben, die an einem 24. des Monats eingetragen wurden.

Aggregatfunktionen

Diese Funktionen werden bei GROUP BY verwendet.

COUNT   Ermittelt für eine Spalte die Anzahl der Datensätze.   
MAX     Ermittelt den
höchsten Wert einer Spalte.      

MIN     Ermittelt den niedrigsten Wert einer Spalte.   
AVG     Ermittelt den
Durchschnittswert aller Einträge einer Spalte.   
SUM     Ermittelt die
Summe der Werte einer Spalte.    


SQL-Befehl:
SELECT AVG(preis), SUM(preis), MIN(preis), MAX(preis) FROM artikel

Durchschnitt, Summe, Minimum und Maximum aller Werte in der Spalte „preis“ werden ermittelt.

SELECT über mehrere Tabellen

Oft müssen Werte aus
mehren Tabellen ausgelesen werden. Meistens sind Tabellen miteinander
durch die Schlüssel (KEY, PRIMARY_KEY)
logisch miteinander verknüpft.

Die Werte könnten mit einzelnen SELECT-Anweisungen nacheinander
ausgelesen werden, was aber ein unnötiger Aufwand ist. Für das Auslesen
von Werten aus mehreren Tabellen wird
WHERE und JOIN verwendet.

WHERE ist dabei wohl die einfachere Variante:

SELECT * FROM artikel,steuer WHERE artikel.steuersatz=steuer.id
Liest alle Spalten der Tabellen „artikel“ und „steuer“ aus, wenn in der
Tabelle „artikel“ in der Spalte „steuersatz“ ein Wert eingetragen ist,
der in der Spalte „id“ in der Tabelle „steuer“ enthalten ist.

Man könnte dasselbe auch wie folgt erreichen:
SELECT * FROM artikel INNER JOIN steuer ON artikel.steuersatz=steuer.id

Nach dem JOIN können auch noch weitere WHERE-Klauseln stehen. Z.B. WHERE name = ‚meier‘

Bei JOIN gibt es in verschiedene Formen, die sich bei den einzelnen Datenbanksystemen unterscheiden.

Diese sind unter MySQL vorhanden:

INNER JOIN
     Es werden grundsätzlich nur Datensätze
angezeigt, für die in den Verknüpfungsfeldern beider Tabellen
gleiche Enträge enthalten sind.   
LEFT [OUTER] JOIN       Liest
alle Datensätze der linken Tabelle aus und alle Datensätze der rechten, für die ein passender Eintrag in der linken Tabelle enthalten ist. „OUTER“ kann dabei auch weggelassen werden.   

RIGHT [OUTER] JOIN      Analog dem LEFT [OUTER] JOIN, werden alle Datensätze der rechten Tabelle und alle Datensätze der linken Tabelle, für die passende Einträge in der rechten enthalten sind, zurückgegeben.       

NATURAL JOIN    Ist mit INNER JOIN identisch.  
Daten ändern

Mit UPDATE werden Werte in einer Tabelle verändert.

UPDATE tabelle

 SET spalten_name1=ausdruck1, [spalten_name2=ausdruck2, …]
 [WHERE where_definition]

Nach SET werden paarweise
die Spalten und der Wert, der in diese Spalte eingetragen werden soll,
angegeben. Nicht angegebene Spalten werden nicht verändert.

WHERE legt die Bedingung

fest, welche Datensätze geändert werden sollen. WHERE muss nicht
angegeben werden. In dem Fall werden alle Datensätze in der Tabelle
geändert.

Der Rückgabewert von UPDATE ist die Anzahl der Zeilen, bei denen eine Änderung durchgeführt wurde.

SQL-Befehl:
UPDATE artikel SET steuersatz=’2′, preis=’10.00′
 WHERE artikelnummer < ‚10000‘

Setzt bei allen Datensätzen der Tabelle „artikel“ den „steuersatz“ auf
2 und „preis“ auf 10.00, deren „artikelnummer“ kleiner als 10000 ist.

Daten löschen

Mit DELETE werden Daten in einer Tabelle gelöscht. Mit WHERE kann man die Datensätze auswählen,
die gelöscht werden sollen. Um sicher zu sein, das man die richtigen
Sätze löscht, kann man zum Testen das DELETE mit SELECT ersetzen. Die
Sätze, die dann angezeigt werden, werden beim DELETE gelöscht.

DELETE FROM tabelle
 [WHERE where_definition]

SQL-Befehl:
DELETE FROM artikel WHERE steuer != ‚0‘
Löscht alle Datensätze mit steuer ungleich 0 in der Tabelle „artikel“.

SQL-Befehl:
DELETE FROM artikel

Löscht alle Datensätze der Tabelle „artikel“.

0 0 Bewertungen
Beitragsbewertung
Abonnieren
Benachrichtigen bei
guest
0 Kommentare
Älteste
Neueste Meistbewertet
0
Deine Meinung würde uns sehr interessieren. Bitte kommentiere.x