Archiv der Kategorie: Kurztipps

SQL-Referenz Mini

Datentypen in SQL

Die wichtigsten SQL-Datentypen sind

bool TRUE oder FALSE
int Ganzzahlen
char () String fester Länge
varchar () String variabler Länge mit festgesetztem Maximum
long varchar (unter einigen Datenbanken: Text mit mehr als 2048 Zeichen)
dec (, ) Offensichtlich Festkomma. übersteigt ein Wert die Zahl der möglichen Stellen wird der höchstmögliche Wert gespeichert (bei dec(3,3) und 4321.4321 ist das z.B. 999.999).
float () Fließkommazahl
date Datumsangabe. Vorsicht: Datumsformate unterscheiden sich in den Datenbanken, MySQL möchte z.B. Daten in der Form 4 Zeichen für Jahr, 2 für Monat und 2 für Tag in der Formatierung YYYY-MM-DD. Außerdem werden Daten meist als Strings übergeben (also bei INSERT unbedingt auf Hochkomma achten). Angesichts all dieser Probleme und den Schwierigkeiten, z.B. herauszufinden wie viele Tage zwischen zwei DATEs lagen, beschränke ich meine Programmierung auf Unix-Timestamps: Die haben den Wert int.

SELECT

Einfaches SELECT
select ist der erste Schritt für eine Ausgabe aus einer Datenbank. Die Syntax ist
SELECT FROM [WHERE ]. Es werden immer alle Zeilen einer Datenbank angesprochen, sind alle Spalten gemeint genügt ein *, ansonsten werden Spaltennamen (genau wie Tabellennamen) durch ein Komma getrennt. example.
select * from hauptbuchselektiert alle Zeilen mit allen Spalten aus hauptbuch. Mit Funktionen, die die Programmiersprachen dann zur Verfügung stehen, können selektierte Einträge z.b. in Strings gespeichert werden (siehe: Eine kleine ODBC-Referenz).
select transaktion, datum from hauptbuchgewährt dann nur Zugriff auf die Spalten transaktion und datum (nur wenige Spalten auszuwählen vergrößert oft übersicht und verschnellert).

SELECT mit Bedingungen

select * from hauptbuch where (transaktion>40000)selektiert nur die Zeilen (alle Spalten, da *) einer Tabelle, bei denen Transaktion>40000 ist. Ein weiteres Beispiel ist
select kundennr, letztebestellung from faktura where
(kundennr=192)

SELECT mit Sortierung

Syntax ist
order by [ascending/descending]select * from hauptbuch where (transaktion>40000) order by transaktion descendingselektiert z.b. bei einer Tabelle mit den Werten
wobei descending eine fallende Reihenfolge symbolisiert, ascending oder keine Angabe der Reihenfolge sortiert die Selektion in die andere Richtung.

JOINS

Oft werden die Einträge aus einer Tabelle in einer anderen Tabelle als Schlüsselwerte benutzt. Schlüsselwerte sind Werte, die in jeweils nur einer Zeile der Tabelle vorkommen. Z.B. wäre einen Kundendatenbank, in der jedem Kunden eine eindeutige Kundennummer zugeordnet ist, eine Datenbank mit Schlüsselwerten. Haben wir zwei Tabellen Können wir in SQL auch in einem Schritt nach einem Kundennamen suchen und den Zeitpunkt der letzten Bestellung ausgeben. Das nennt man dann einen JOIN aus beiden Tabellen.
Um gleichnamige Spaltennamen in verschiedenen Tabellen unterscheiden zu können schreibt man den Tabellennamen mit einem Punkt vor den Spaltenname:
select hauptbuch.transaktion, hauptbuch.datum from
hauptbuch
sieht zwar dumm aus, das ändert sich aber bei
select * from kunden, bestellungen where ((kunden.kundennr=bestellungen.kundennr) AND (kundenname=’Fr. Brisbois‘)) liefert Kundennr und Bestellzeitpunkt von Andreas Mühl zurück.
Die letzte anweisung ist für konventionelle Programmierer (zumindest ging es mir so) erst einmal schwer zu verdauen. Es zeit aber auch, das ein where kein if ist: where wird alle Spalten aller Datenbanken angewendet. So funktioniert die Geschichte auch wenn z.B. Anderas Mühl in der Kundendatenbank die erste Zeile innehat, in der Bestelldatenbank aber nur die 5te oder 1000ste.

CREATE

create ist für uns nur im Zusammenhang mit create table interessant. Es erzeugt eine neue Tabelle in einer Datenbank. der Syntax ist
create table [,(… ] )z.B.:
create table kunden (kundennr int, name varchar(50))

INSERT

insert into < Tabellenname > values ([,…])Beachten Sie, dass der Wert sowohl bei Datumsangaben (i.d.r in der Form ‚JAHR-MO-TG‘) als auch bei Varchars (Strings) in Hochkomma (‚) eingeschlossen sein muss.
Eine Insert-Anweisung führt logischerweise zu Fehlern, falls nicht die gleiche Anzahl Werte in die Tabelle eingefügt werden soll, wie Spalten vorhanden sind.
Hin und wieder passiert es, dass ein Programmierer insert into tabelle1 value (2001, ‚Jahr‘) schreibt. Ein fehlendes s mach es dem Programmierer da bei der Fehlersuche schwer weil (nicht das korrekte values) value auch als Schlüsselwort erkannt wird.

DELETE

Zeilen löscht man in SQL mit
DELETE FROM WHERE < Bedingung >Beispiel:
DELETE FROM ANTIQUES WHERE ITEM = ‚Ottoman‘;

DROP

Drop ist das delete für ganze Tabellen. Mit
DROP löschen Sie die ganze Tabelle. Ich verwende es oft in den setup-Dateien, den Dateien, die Tabellen in den Datenbanken aufbauen. Vor dem Erstellen der Tabellen versuche man sie oft zu löschen, da ein Erstellen mit geänderten Spalten nicht möglich ist wenn die Tabelle noch in anderer Form existiert.

ALTER

Mit ALTER TABLE ADD/DROP COLUMN /kann man Tabellen im Nachhinein ändern — praktisch.
Spalten hinzufügen
Spalten hinzufügen kann man z.B. mit
ALTER TABLE ANTIQUES ADD COLUMN (PRICE INT); Spalten löschen
… und Spalten löscht man mit ALTER….DROP:
ALTER TABLE ANTIQUES DROP COLUMN PRICE;

UPDATE

UPDATE SET = WHERE ändert einen Eintrag in einer Datenbank (und ist als solches sehr praktisch in Administrationsseiten wo desöfteren in den Datenbankinhalten etwas geändert wird. Man denke nur an Preisänderungen in Online-Shops.)
UPDATE ANTIQUES SET PRICE = 500.00 WHERE ITEM = ‚Chair‘;

CSR-Datei für Apache erzeugen

Was ist ein CSR?

CSR ist die Abkürzung für Certificate Signing Request (deutsch „Zertifikatsregistrierungsanforderung“). Das CSR enthält den öffentlichen Schlüssel Ihres erzeugten Schlüsselpaars und kann darüberhinaus weitere Angaben enthalten, die der Aussteller in das endgültige Zertifikat aufnehmen kann. Hierzu gehören neben dem CommonName auch Daten über den Antragsteller (Herkunft, etc.).

CSR Generieren

Diese Anleitung setzt OpenSSL unter Linux voraus.
In dem folgenden Beispiel ersetzen Sie bitte „ssl.muster.de“ durch den jeweiligen Domainnamen. Geben Sie unter Linux zum Erstellen eines CSRs den folgenden Befehl ein:

openssl req -new -nodes -newkey rsa:2048 -keyout ssl.muster.de.key -out ssl.muster.de.csr

Country Name (2 letter code) [AU]:DE
State or Province Name (full name) [Some-State]:Niedersachsen
Locality Name (eg, city) []:30173 Hannover
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Muster GmbH & Co. KG
Organizational Unit Name (eg, section) []:IT
Common Name (eg, YOUR name) []:ssl.muster.de
Email Address []:hostmaster@ssl.muster.de

Ãœberspringen sie das Eingabefelder mit dem Password mit einem Tastendruck auf Return:

A challenge password []:
An optional company name []:

Um den Inhalt der CSR Datei zu betrachten verwenden sie folgenden Befehl in der Shell:
openssl req -noout -text -in ssl.muster.de.csr

Um den Inhalt der KEY Datei zu betrachten verwenden sie folgenden Befehl in der Shell:
openssl rsa -noout -text -in ssl.muster.de.key

Mysql DB Check mit mysqlcheck

mysqlcheck — Hilfsprogramm für die Wartung und Reparatur von Tabellen

Der Client mysqlcheck prüft, repariert, optimiert und analysiert Tabellen.

mysqlcheck ähnelt hinsichtlich seines Funktionsumfangs myisamchk, funktioniert aber anders. Der wesentliche Unterschied besteht darin, dass mysqlcheck verwendet werden muss, wenn der Server mysqld ausgeführt wird, wohingegen myisamchk verwendet werden sollte, wenn er nicht läuft. Der Vorteil der Verwendung von mysqlcheck besteht darin, dass Sie den Server nicht beenden müssen, um Ihre Tabellen zu überprüfen oder zu reparieren.

mysqlcheck verwendet die SQL-Anweisungen CHECK TABLE, REPAIR TABLE, ANALYZE TABLE und OPTIMIZE TABLE auf eine für den Benutzer praktische Weise. Das Programm bestimmt, welche Anweisungen für die gewünschte Operation durchzuführen sind, und sendet diese Anweisungen dann zur Ausführung an den Server. Weitere Informationen dazu, bei welchen Speicher-Engines die jeweiligen Anweisungen funktionieren, finden Sie in Kapitel 13, SQL-Anweisungssyntax.

Die MyISAM-Speicher-Engine unterstützt alle vier Anweisungen, d. h., mysqlcheck kann zur Durchführung aller vier Operationen an MyISAM-Tabellen verwendet werden. Andere Speicher-Engines unterstützen nicht unbedingt alle Operationen. Gegebenenfalls wird eine Fehlermeldung angezeigt. Wenn beispielsweise test.t eine MEMORY-Tabelle ist, dann führt der Versuch, sie zu überprüfen, zu folgendem Ergebnis:

shell> mysqlcheck test t
test.t
note : The storage engine for the table doesn’t support check

Es gibt drei Möglichkeiten, mysqlcheck aufzurufen:

shell> mysqlcheck [options] db_name [tables]
shell> mysqlcheck [options] –databases db_name1 [db_name2 db_name3…]
shell> mysqlcheck [options] –all-databases

Wenn Sie auf db_name folgend keine Tabellen aufführen oder die Optionen –databases oder –all-databases verwenden, dann werden ganze Datenbanken überprüft.

mysqlcheck bietet eine im Vergleich zu anderen Clientprogrammen spezielle Funktion. Das Standardverhalten des Ãœberprüfens von Tabellen (–check) kann geändert werden, indem die Binärdatei umbenannt wird. Wenn Sie ein Tool benötigen, das Tabellen standardmäßig repariert, sollten Sie einfach eine Kopie von mysqlcheck namens mysqlrepair oder eine symbolische Verknüpfung zu mysqlcheck namens mysqlrepair erstellen. Wenn Sie dann mysqlrepair aufrufen, werden die Tabellen standardmäßig repariert.

Die folgenden Namen können verwendet werden, um das Standardverhalten von mysqlcheck zu ändern:
mysqlrepair Die Standardoption ist –repair.
mysqlanalyze Die Standardoption ist –analyze.
mysqloptimize Die Standardoption ist –optimize.

mysqlcheck unterstützt die folgenden Optionen:

* –help, -?Zeigt eine Hilfemeldung an und wird dann beendet.
* –all-databases, -AÃœberprüft alle Tabellen in allen Datenbanken. Dies entspricht der Option –databases bei gleichzeitiger Nennung aller Datenbanken auf der Befehlszeile.
* –all-in-1, -1Statt eine Anweisung für jede Tabelle einzeln abzusetzen, wird eine einzelne Anweisung für jede Datenbank ausgeführt, die alle zu verarbeitenden Tabellen aus dieser Datenbank benennt.
* –analyze, -aAnalysiert die Tabellen.
* –auto-repairWenn eine überprüfte Tabelle beschädigt ist, wird sie automatisch repariert. Reparaturarbeiten werden erledigt, nachdem alle Tabellen überprüft wurden.
* –character-sets-dir=pathDas Verzeichnis, in dem Zeichensätze installiert sind. Siehe auch Abschnitt 5.11.1, „Der für Daten und zum Sortieren benutzte Zeichensatz“.
* –check, -cÃœberprüft die Tabellen auf Fehler. Dies ist die Standardoperation.
* –check-only-changed, -CÃœberprüft nur solche Tabellen, die seit der letzten Ãœberprüfung geändert oder aber nicht korrekt geschlossen wurden.
* –compressKomprimiert alle Daten, die zwischen Client und Server ausgetauscht werden, sofern beide die Komprimierung unterstützen.
* –databases, -BVerarbeitet alle Tabellen in den aufgeführten Datenbanken. Normalerweise betrachtet mysqlcheck das erste Namensargument auf der Befehlszeile als Datenbank- und alle nachfolgenden Argumente als Tabellennamen. Bei dieser Option hingegen werden alle Namensargumente als Datenbanknamen behandelt.
* –debug[=debug_options], -# [debug_options]Schreibt ein Debuglog. Der String debug_options heißt häufig ‚d:t:o,file_name‘.
* –default-character-set=charset_nameVerwendet charset_name als Standardzeichensatz. Siehe auch Abschnitt 5.11.1, „Der für Daten und zum Sortieren benutzte Zeichensatz“.
* –extended, -eWenn Sie diese Option zur Ãœberprüfung von Tabellen einsetzen, ist sichergestellt, dass diese hundertprozentig konsistent sind; der Vorgang dauert allerdings sehr lange.Wenn Sie die Option bei der Reparatur von Tabellen einsetzen, wird eine erweiterte Reparatur durchgeführt, deren Ausführung nicht nur extrem lange dauert, sondern die auch eine Menge überflüssiger Datensätze erzeugt!
* –fast, -FÃœberprüft nur Tabellen, die nicht ordnungsgemäß geschlossen wurden.
* –force, -fDas Programm wird auch dann fortgesetzt, wenn ein SQL-Fehler auftritt.
* –host=host_name, -h host_nameStellt eine Verbindung zum MySQL Server auf dem angegebenen Host her.
* –medium-check, -mFührt eine Ãœberprüfung durch, die schneller ist als eine –extended-Operation. Hierdurch werden nur 99,99 Prozent aller Fehler gefunden (dies sollte allerdings in den meisten Fällen ausreichend sein).
* –optimize, -oOptimiert die Tabellen.
* –password[=password], -p[password]Verwendet das angegebene Passwort zur Verbindung mit dem Server. Wenn Sie die Kurzform der Option (-p) verwenden, dürfen Sie kein Leerzeichen zwischen Option und Passwort setzen. Lassen Sie den Wert password auf die Option –password bzw. -p folgend weg, dann werden Sie zur Eingabe des Passworts aufgefordert.Die Angabe eines Passworts direkt auf der Befehlszeile ist als nicht sicher einzuordnen. Siehe auch Abschnitt 5.9.6, „Wie Sie Ihre Kennwörter sicher halten“.
* –port=port_num, -P port_numDie TCP/IP-Portnummer, die für die Verbindung verwendet werden soll.
* –protocol={TCP|SOCKET|PIPE|MEMORY}Das zu verwendende Verbindungsprotokoll.
* –quick, -qWenn Sie mit dieser Option Tabellen überprüfen, wird verhindert, dass die Datensätze auf falsche Verknüpfungen geprüft werden. Dies ist die schnellste Prüfmethode.Wenn Sie die Option bei der Reparatur von Tabellen einsetzen, wird versucht, nur den Indexbaum zu reparieren. Dies ist die schnellste Reparaturmethode.
* –repair, -rFührt eine Reparatur durch, die fast alle Fehler beheben kann. Ausgenommen sind lediglich eindeutige Schlüssel, die nicht eindeutig sind.
* –silent, -sStummer Modus. Gibt nur Fehlermeldungen aus.
* –socket=path, -S pathBei Verbindungen mit localhost ist dies die zu verwendende Unix-Socketdatei bzw. (unter Windows) der Name der zu verwendenden Named Pipe.
* –tablesSetzt die Option –databases bzw. -B außer Kraft. Alle auf die Option folgenden Namensargumente werden als Tabellennamen betrachtet.
* –user=user_name, -u user_nameVerwendet den angegebenen MySQL-Benutzernamen zur Verbindung mit dem Server.
* –verbose, -vAusführlicher Modus. Gibt Informationen zu den verschiedenen Stufen des Programmablaufs aus.
* –version, -VZeigt die Versionsinformation an und wird dann beendet.

iWatch Dateisystemüberwachung in Echtzeit

iWatch ist ein Programm zur Dateisystemüberwachung in Echtzeit. Es ist ein einfaches Perl-Skript, das Veränderungen in bestimmten Verzeichnissen/Dateien überwacht und Benachrichtigungen unverzüglich per E-Mail verschickt. Die Liste der überwachten Objekte wird aus einer xml-Konfigurationsdatei gelesen.
http://iwatch.sourceforge.net/documentation.html

Downloads
http://sourceforge.net/project/showfiles.php?group_id=174218

OpenSUSE 10.3:
http://software.opensuse.org/search

VIM oder Wer suchet, der findet

Vorwärts suchen
Um in einem geöffneten Text zu suchen, gibt man im Standardmodus ein / ein, d. h. man drückt „Shift“ + „7“. Anschließend fügt man den Suchbegriff ein: Also z. B. „Wort“. Abschließend bestätigt man den Suchauftrag über die Eingabetaste „Enter“.
Der Cursor bewegt sich nun an die erste Stelle im Text, an der der Begriff „Wort“ gefunden wird. Die Taste „N“ wiederholt die Suche, der Cursor springt zur nächsten Fundstelle.
Rückwärts suchen
Mit „Shift“ + „N“ wird rückwärts im Text gesucht, also ab der aktuellen Cursorposition in Richtung Textanfang.
Man kann mit der Eingabe von ?, also „Shift“ + „ß“, und einem nachfolgenden „Wort“ dem Editor auch mitteilen, dass er von vornherein rückwärts suchen soll.
Suchmuster
In den Suchbegriff eingebettet kann man nach verschiedenen Kriterien suchen und zwar (nach Betreten des Suchmodus mit „Shift“ + „7“):
W.
sucht nach W und einem beliebigen Zeichen
^W
sucht nach W am Zeilenanfang
W$
sucht nach W am Zeilenende
W[a-e]
sucht W und einem Zeichen von a bis e
Groß- und Kleinschreibung umgehen
Vim unterscheidet bei der Suche immer zwischen Groß- und Kleinschreibung. Wenn man dies nicht möchte, kann man das mit einem angehängten \c umgehen. Das gilt anschließend nur für diese eine Suche. Damit es für alle weiteren Suchen gilt, führt man das Kommando :set ignorecase aus. Die Eingabe screen \c sucht also nach „screen“ und nach „Screen“.
Inkrementelle Suche
Das Kommando :set incsearch aktiviert die inkrementelle Suche. Dies ist sinnvoll, wenn man nach dem Beginn eines Wortes sucht. Hier wird der Cursor schon während der Eingabe des Suchbegriffes an den ersten Ãœbereinstimmungsort bewegt. Die „Enter“-Taste beendet diesen Spuk, mit der „Escape“-Taste wird die Suche abgebrochen. Nach der Suche bleiben die Ãœbereinstimmungen im Text markiert, bis man entweder eine neue Suche beginnt oder das Kommando :nohlsearch eingibt.
Anmerkungen zum :set-Kommando
Die Optionen, die mit :set gesetzt werden, gelten nur für die aktuelle Vim-Sitzung. Sollen hingegen die Einstellungen permanent gesetzt bzw. nicht gesetzt sein, so muss dies in /etc/vimrc (gültig für das ganze System) oder ~/.vimrc (gültig nur für den aktuellen Benutzer) erfolgen.
Suchen und Ersetzen
Hier nun einige Funktionen, wie man Text suchen und ersetzen kann. Das Kommando, um zum Beispiel „abc“ durch „efg“ zu ersetzen, lautet :%s/abc/efg.
Um das Suchen und Ersetzen noch besser zu kontrollieren, bestehen darüber hinaus folgende Möglichkeiten, die durch das Anfügen an das obige Kommando erreicht werden:
/g
ohne Rückfrage werden alle Vorkommen von „abc“ durch „efg“ ersetzt
/gc
mit Rückfrage werden alle Vorkommen von „abc“ durch „efg“ ersetzt
/gi
ersetzt alle Vorkommen von „abc“ durch „efg“ ohne Groß- und Kleinschreibung zu berücksichtigen
Hinweis: Der ganze Ausdruck muss aneinander geschrieben werden: z. B. :%s/abc/efg/gi.
Abspeichern und Verlassen
Ganz am Schluss der Bearbeitung sollte man nicht vergessen, die Datei abzuspeichern. Dazu einfach das Kommando :w absetzen. Dann verlässt man die Datei mit einem :q. Ein :wq erledigt dies in einem Schritt.
Fazit
Wer erst einmal den Vim-Editor in seinen Grundfunktionen beherrscht, der kann zum Beispiel viel schneller Änderungen an Konfigurationsdateien vornehmen, als so manch anderer Benutzer, der mit einem grafischen Editor unterwegs ist.
Voraussetzung dafür ist aber das ständige und konsequente Benutzen des Editors. Am Besten macht man sich nebenher auf einem Stück Papier eine Ãœbersicht der gängigsten Befehle und legt das neben die Tastatur. So gewöhnt man sich schneller an den Umgang und wird immer vertrauter mit diesem Urgestein der Editoren.

🙂