Regionaler Arbeitskreis Internet am Oberschulamt Karlsruhe
von Roland Bernert
Distribution:
SuSE-Linux
Einführung in MySQL   Datenbankerstellung und - abfrage
Installation:

Mit Yast werden aus der Serie "pay" folgende Pakete installiert:

  • mysqclnt
  • mysql
  • mysqldev
Soll MySql automatisch beim Hochfahren des Rechners gestartet werden, so sucht man in der /etc/rc.config den Eintrag: START_MYSQL = "yes" (bzw. ändert diesen auf "yes")
Ansonsten kann man den MySQL-Server auch manuell hochfahren mit
/sbin/init.d/mysql start
Möchte man ein Passwort setzen, so ist
/usr/sbin/mysqladm -u root passwort '.......xxx...'
einzugeben. (statt '.......xxx...' natürlich das gewünschte Passwort)

MySql-Client starten: mysql
MySql-Client beenden: quit



Datenbank erzeugen: (hier als Test: datenbank1)
Create Database datenbank1;
use datenbank1;
Tabelle in der Datenbank erzeugen: (hier als Test: datenbank1)
CREATE TABLE datenbank1 (zuname VARCHAR(25), vorname VARCHAR(25), 
strasse VARCHAR(25), ort VARCHAR(25));


Daten laden:
(die Daten befinden sich in einer Textdatei, wobei die Felder durch TAB-Zeichen getrennt sind)

LOAD DATA LOCAL INFILE "filename.txt" INTO TABLE datenbank1;


Datenbanktabelle neu einlesen:

SET autocommit =1;
DELETE From datenbank1;
LOAD DATA LOCAL INFILE "filename.txt" INTO datenbank1;
Datensätze hinzufügen:
INSERT INTO datenbank1 (zuname, vorname, strasse, ort) Values ('zunametest','vornametest','neuestrasse','neuerOrt');
Datensätze löschen:
DELETE from datenbank1 where zuname like 'Bernert';
Datensätze aktualisieren:
UPDATE datenbank1 Set zuname='Bernert' where vorname='Roland';
Alle Datensätze anzeigen:
SELECT * from datenbank1;
allgemein: 
SELECT (was soll angezeigt werden)
FROM Datenbank-Tabelle
WHERE Bedingung
Sortieren:
.... ORDER BY ort;
.... ORDER BY zuname; usw.


Pattern Matching:

... where zuname like "B%;     # zuname beginnt mit B
... where zuname like "%h";    # zuanme endet mit h
... where zuname like "%ber%"; # zuname enthält ber
... where zuname like "_____"; # zuname enthält genau 5 Zeichen


Reguläre Ausdrücke:

... where zuname REGEXP "^[bB]"; # zuname fängt mit b oder B an


Datensätze zählen

SELECT CONT(*) from datenbank1;


Wieviele Einträge hat ein Datenfeld ?

SELECT zuname, COUNT(*) from datenbank1 GROUP by zuname;


Batch-Modus:

MySQL kann auch im Batch-Modus betrieben werden. 
Die Abfragebefehle gibt man in eine Datei (batch-File) ein. 
Danach startet man mit

mysql < batchfile.
Bsp:
in der Datei test1 befinden sich folgende Zeilen:
use datenbank1;
select zuname from datenbank1;
Die Kommandozeile mysql < test1 führt die in test1 stehenden Befehle aus.


Benutzung in Perl:
#! /usr/bin/perl
print "Dies ist ein Test\n";
system "mysql < test1";
oder
system "/usr/bin/mysql < test1";
Mit system "/usr/bin/mysql -t < test1"; erfolgt die Ausgabe wie im Direktmodus.

Informationen über Datenbanken:

use datenbank1;
Select database();   # gibt alle Datenbanken aus
show tables;         # zeigt alle Datenbanktabellen
describe datenbank1; # zeigt die in der Datenbank enthaltenen Felder


Ein kleines Perlprogramm (Auslesen der Daten über Internetverbindung);
Im Verzeichnis .public_html/cgi-bin liegt folgendes Programm
Der MySQL-Server ist gestartet
Dann kann man über http://der_server_name/~user/cgi-bin/datenzugriff.cgi die Daten in der datenbank1 auslesen.

Das Script sieht fogendermassen aus: ./public_html/cgi-bin/datenzugriff1.cgi

#! /usr/bin/perl
use DBI;
$datenbank="datenbank1";
$hostname="localhost";
$port="3306";
$statement="SELECT zuname,vorname,strasse,ort,telefon FROM $datenbank";
$dbh=DBI->connect("DBI:mysql:$datenbank;mysql_compression=0",'root');
# alternativ: $dbh=DBI->connect("DBI:mysql:$datenbank:$hostname:$port". ";mysql_compression=0","za186",$password);
$sth = $dbh->prepare($statement);
$sth->execute();
print "Content-type: text/html\n\n";
print "<HTML><HEAD></HEAD>\n";
print "<H2>Beispiel einer Datenbanktabelle mit MySQL</H2>
       <HR>
       <TABLE>\n";
while (($zuname,$vorname,$strasse,$ort,$telefon)=$sth->fetchrow) {
  print "<Tr><TD>$zuname</TD><TD>$vorname</TD><TD>$strasse</TD><TD>$ort</TD>
 <TD>$telefon</TD></TR>\n";
}
print "</TABLE>
       </BODY></HTML>\n";
exit(0);

Roland Bernert
eine Seite zurück
eine Seite weiter
zurück zur RAI-Homepage