Samstag, 19. Mai 2012

·.¸.·´¯`·.¸.·´¯`· netfreak.de

geTwitter

netfreak107: ;-)


netfreak107: LOL -> Herr Ponader ist nicht die einzige Person im deutschen Fernsehen, die Arbeitslosengeld II bezieht http://t.co/tMikbCfh


netfreak107: Hollande erhielt die Atom-Codes und sagte, er wolle Frankreich wieder aufbauen. -Huch? Ist es etwa zerstört ? #N24 #Verblödungsstrahler


netfreak107: Chef eben so: Piratenpartei ? Sind sie da etwa Mitglied? Ich so: na klar, seit 2009. Sehr spannend dort... Werde ich jetzt gekündigt?


netfreak107: Vorsicht das macht süchtig ! RT @DerDemokrateur: Ich liebe die #piraten ! Unglaublich wen man hier kennenlernt :-)


ZufallsSlogan

Wer nicht mehr liebt und nicht mehr irrt, der lasse sich begraben. (Johann Wolfgang von Goethe)
Für den Frieden zu Töten ist dasselbe wie für die Keuschheit zu Ficken!! xD
Die Menschen sind so sehr damit beschäftigt, ihre materiellen und körperlichen Bedürfnisse zu befriedigen, dass sie nicht einmal mehr die innere Anwesenheit einer anderen Welt spüren; ihre Seele, ihr Geist sind für sie zu einem fremden Land geworden.
Selbst wenn sie erwähnt werden, sind diese Worte für sie ohne Sinn, sie sagen ihnen nichts und so irren sie wie arme Unglückliche in dürren, unfruchtbaren Regionen herum.
Der grundlegende Zweck der Informationsgesellschaft ist es, menschliches denken zu verbinden und zu befreien.
Eine Information ist Allgemeingut und will umsonst sein.
Es ist besser, auf 90 Prozent der Menschen zu verzichten und das Interesse der restlichen 10 Prozent zu erregen, als für alle irgendwie ganz okay zu sein.
Es zählt nicht was Du hast, sondern was Du machst mit dem was Du hast!!!
Wenn in deinem Leben mal etwas nicht so läuft wie du es willst...dann hat Gott etwas besseres für dich vorhergesehen!
Keiner hat gefragt ob Du Leben willst, also hat auch keiner zu sagen wie Du zu Leben hast!!!
Drei Pferde Essen drei Eimer Hafer in drei Stunden. Wie viel Pferde fressen sechs Eimer Hafer in zwei Stunden ?
"Die Menschen muss man nehmen, wie sie sind, nicht wie sie sein sollten. " - Franz Schubert
Zeitung ist so ein Medium, da erfahren die Leute, was gestern im Internet stand.
Der Mensch, dieser ewige Verlierer, beim Schach, bei Jeopardy und beim Andocken von Raumstationen, wird in Zukunft schweigend danebenstehen.
Also von internet hat die Politik keine Anhnung, von Atomstrom anscheinend auch nicht, aber vom Verfassungsrecht auch nicht. Was bleibt?
"Sex, Drugs and Rock'n'Roll" hieß bei uns "Youporn, Pizza und die Melodie von Tetris" #nerdelternsprüche
"Das Internet ist ein wunderbares Geschenk. Es gab noch nie ein solches Befreiungsinstrument für den menschlichen Geist." (Ai Weiwei)
Das Vertrauen der Unschuldigen ist die grösste Waffe des Lügners!
"Ich war zu faul zum Rechnen, also erfand ich den Computer." - Konrad Zuse
Es gibt Dinge, die sollte man auf sich beruhen lassen, weil es sie nicht mehr gibt und auch nicht zurückzuholen sind.
Wenn ich die Menschen aufzählen sollte, die für mich wichtig waren. käme ich selbst an dreißigster Stelle.
Es ist nicht einzusehen, warum Tabak, Extremsport, Alkohol und McDonalds legal sind, Haschisch, Kokain und LSD aber nicht.
Wer mit der Herde geht, kann nur den Ärschen folgen.
Meine Stärke: -2.25 Dioptrien. Meine Schwäche: Twitter.
"... aber du musst!" -- "ich muss ueberhaupt nichts. nur sterben muss ich, irgendwann."
"Ich glaube an das Pferd. Das Automobil ist nur eine vorübergehende Erscheinung." (Kaiser Wilhelm II)
"Flachbildschirm rückseitenberatung"
Es gibt kein gutmütigeres, aber auch kein leichtgläubigeres Volk als das Deutsche. Keine Lüge kann grob genug ersonnen werden, die Deutschen glauben sie. Um eine Parole, die man ihnen gab, verfolgen sie ihre Landsleute mit größerer Erbitterung, als ihre wirklichen Feinde. Napoléon Bonaparte
Albert Einstein: "Die Welt wird nicht bedroht, durch die Menschen die böse sind, sondern von denen, die das Böse zulassen."

Zufallsbilder

Wie funktioniert SQL ? Was ist SQL? Befehle im Überblick
Mittwoch, den 04. Mai 2005 um 11:18 Uhr

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".

 

Kommentar schreiben

Sicherheitscode
Aktualisieren