Author Archive Netzmensch

Best Practices für die Auswahl des richtigen Kommunikationswegs im beruflichen Umfeld

In einer zunehmend digitalisierten Arbeitswelt ist die Wahl des passenden Kommunikationswegs entscheidend für Effizienz, Professionalität und die Wahrung der Work-Life-Balance. Die folgenden Empfehlungen basieren auf etablierten Standards, sind jedoch flexibel anpassbar und nicht als einzig mögliche Lösung zu betrachten.

Grundlegende Prinzipien

Arbeitszeit vs. Freizeit

  • Während der Arbeitszeit ist der bevorzugte Kommunikationsweg von Dringlichkeit, Verfügbarkeit und Inhalt abhängig.
  • Außerhalb der Arbeitszeit gilt: Themen, die während der Arbeitszeit als Instant Message (IM) übermittelt würden, sollten stattdessen als E-Mail verfasst werden, sofern keine dringende Reaktion erforderlich ist.

Reaktionszeiten

  • Anrufe (Mobil/Festnetz): Sofortige Reaktion wird erwartet.
  • Unified Communications (z. B. Teams): Minuten bis Stunden.
  • E-Mail: Stunden bis Tage, abhängig von der Dringlichkeit.
  • Briefe: Tage bis Wochen, üblicherweise ohne zeitkritischen Charakter.
  • Persönliche Abstimmung vor Ort: Sofort oder nach kurzer Vorlaufzeit.

Private Kommunikationsmittel

  • Kommunikationswege, die nicht durch den Arbeitgeber bereitgestellt werden (z. B. WhatsApp, Telegram, private E-Mail-Adressen, private Telefonnummern), sollten nur nach vorheriger Zustimmung des Empfängers und in absoluten Notfällen genutzt werden.
  • Eine Ausnahme bilden Business-Plattformen wie Xing oder LinkedIn, da diese ausdrücklich für berufliche Kontakte vorgesehen sind.

Förmlichkeit

  • Hohe Förmlichkeit: E-Mail, Brief, geplante Meetings.
  • Mittlere Förmlichkeit: Telefonanruf, Remote-Adhoc-Meetings.
  • Niedrige Förmlichkeit: Instant Messages, persönliches Erscheinen am Schreibtisch des Empfängers.

Empfehlungen für gängige Kommunikationswege

Geplante Meetings

  • Während der Arbeitszeit: Standardmethode für umfangreiche Themen, strategische Planungen und detaillierte Abstimmungen.
  • Außerhalb der Arbeitszeit: Nur bei Projekten mit spezifischen Anforderungen, wie internationalen Teams mit Zeitverschiebung.

Adhoc-Meetings (Remote oder vor Ort)

  • Während der Arbeitszeit: Effektiv für kurzfristige Abstimmungen oder Problemlösungen. Geeignet, wenn mehrere Beteiligte spontan verfügbar sind.
  • Außerhalb der Arbeitszeit: Nur in Notfällen oder mit vorheriger Absprache.

Unified Communications (z. B. Microsoft Teams)

  • Anruf: Ideal für virtuelle Meetings und bei Bedarf nach Bildschirmfreigabe. Außerhalb der Arbeitszeit nur mit vorheriger Absprache.
  • Instant Message: Während der Arbeitszeit zur Klärung kleinerer Fragen. Außerhalb der Arbeitszeit sollte der Dringlichkeitsfaktor im Vordergrund stehen, um wichtige Informationen schnell zu übermitteln.

Persönliches Erscheinen am Schreibtisch des Empfängers

  • Während der Arbeitszeit: Geeignet für spontane Klärungen, sofern der Empfänger verfügbar ist. Ungeeignet für komplexe oder vertrauliche Themen.
  • Außerhalb der Arbeitszeit: Nicht empfehlenswert, außer in absoluten Notfällen.

Anrufe (Mobil/Festnetz)

  • Während der Arbeitszeit: Geeignet für dringende Themen, wenn andere Kanäle nicht verfügbar sind.
  • Außerhalb der Arbeitszeit: Nur in Notfällen oder bei kritischen Geschäftsthemen.

E-Mail

  • Während der Arbeitszeit: Für formelle Kommunikation und Themen, die dokumentiert werden müssen.
  • Außerhalb der Arbeitszeit: Kann versendet werden, jedoch ohne Erwartung einer sofortigen Antwort. Verwendung der Sendezeitplanung wird empfohlen.

Private Kommunikationsmittel (z. B. WhatsApp, Telegram)

  • Während der Arbeitszeit: Nur für informelle Nachrichten oder in Teams mit lockerer Unternehmenskultur.
  • Außerhalb der Arbeitszeit: Ausschließlich bei Notfällen oder mit vorheriger Zustimmung des Empfängers.

Business Social Media Plattformen (z. B. LinkedIn)

Kommunikation über diese Plattformen ist generell akzeptabel, da sie beruflich orientiert sind. Für interne Abstimmungen sollten dennoch primär firmeneigene Kanäle genutzt werden.

Brief

Für rechtlich relevante oder offizielle Mitteilungen. Dieser Kommunikationsweg ist selten zeitkritisch.


Relevanz der Kommunikationswege für verschiedene Informationen

Geeignete Informationen für jeden Kommunikationsweg:

  • Anrufe: Dringende Eskalationen, zeitkritische Fragen.
  • Instant Messages: Kurzfristige Klärungen, Links oder kleine Updates.
  • E-Mail: Dokumentation, Berichte, langfristige Abstimmungen.
  • Persönliches Erscheinen: Direkte Fragen, Abstimmung vor Ort.
  • Meetings: Strategische Themen, Projektabstimmungen.

Ungeeignete Informationen:

  • Komplexe Themen über Instant Messages oder spontane Besuche.
  • Vertrauliche Inhalte über nicht firmeneigene Kommunikationswege.
  • Zeitkritische Themen per E-Mail ohne Vorwarnung.

Unterschiedliche Relevanz je nach Verfügbarkeit:

  • Während der Arbeitszeit: Fokus auf Effizienz und direkte Kommunikation.
  • Außerhalb der Arbeitszeit: Respekt vor der Work-Life-Balance, Zurückhaltung bei zeitkritischen Themen.

Zwischenfazit

Die Auswahl des richtigen Kommunikationswegs ist eine Balance zwischen Dringlichkeit, Verfügbarkeit und Angemessenheit. Während der Arbeitszeit sollte Effizienz im Vordergrund stehen, außerhalb der Arbeitszeit Zurückhaltung und Respekt für die Work-Life-Balance. Klare Absprachen zu Erreichbarkeit und Erwartungshaltung sind essenziell, um Missverständnisse zu vermeiden.


Wofür sich welcher Kommunikationsweg eignet

KriteriumGeplante MeetingsAdhoc-Meetings vor OrtAdhoc-Meetings RemotePersönliches Erscheinen am Schreibtisch des EmpfängersUC Instant MessagingE-Mail (Dienstlich Bereitgestellt)E-Mail (privat)Anrufe (Dienstlich Bereitgestellt, Festnetz)Anrufe (Dienstlich Bereitgestellt, Mobil)Anrufe (Privat, Festnetz)Anrufe (Privat, Mobil)Private Kommunikationsmittel
DringlichkeitHohe bis mittlere DringlichkeitHohe Dringlichkeit, sofortiges KlärenHohe Dringlichkeit, schnell und flexibelHohe Dringlichkeit, informell und direktHohe DringlichkeitNiedrige DringlichkeitNiedrige DringlichkeitHohe DringlichkeitHohe DringlichkeitMittlere bis hohe DringlichkeitMittlere bis hohe DringlichkeitNiedrige bis mittlere Dringlichkeit
Länge der NachrichtLänger, detailliert, Agenda erforderlichVariabel, meist kurz und fokussiertVariabel, meist kurz und fokussiertSehr kurz, direkt auf den PunktKurz, prägnantLänger, detailliert, mit AnhängenLänger, detailliertVariabel, abhängig von ThemaVariabel, abhängig von ThemaVariabel, abhängig von ThemaVariabel, abhängig von ThemaVariabel, abhängig von Medium
InteraktivitätHoch, face-to-face oder über MedienHochHochSehr hoch, direkter KontaktHochGeringGeringMittelMittelMittelMittelMittel bis hoch
Verfügbarkeit des EmpfängersAbhängig von Planung und ZustimmungFlexibel, bei Anwesenheit möglichFlexibel, bei Erreichbarkeit möglichSpontan bei SichtkontaktStatusbasiert (z. B. „verfügbar“)Keine direkte Berücksichtigung der VerfügbarkeitKeine direkte BerücksichtigungAbhängig von ErreichbarkeitAbhängig von ErreichbarkeitAbhängig von ErreichbarkeitAbhängig von ErreichbarkeitKeine Berücksichtigung der Verfügbarkeit
Außerhalb der ArbeitszeitWenig geeignet, erfordert AbstimmungNicht geeignetNur bei hoher DringlichkeitNicht geeignetNur bei Dringlichkeit oder FreiwilligkeitGeeignet für nicht dringende Themen mit Zeitplan-FunktionEher unpassendNur bei hoher DringlichkeitNur bei hoher DringlichkeitNur bei hoher DringlichkeitNur bei hoher DringlichkeitMöglich, abhängig von individueller Absprache

Empfehlungen für die Praxis

Allgemein:

  • Richtlinien schaffen: Definieren Sie klare Regeln, wann welcher Kanal verwendet wird, und kommunizieren Sie diese an alle Beteiligten.
  • Dringlichkeit signalisieren: Klar kommunizieren, ob eine sofortige Antwort benötigt wird oder nicht.
  • Verfügbarkeit prüfen: Vor einer Nachricht per Instant Messaging den Status des Empfängers beachten.
  • Mit diesen klaren Abgrenzungen und Beispielen kann die Kommunikation effizienter und zielgerichteter gestaltet werden.

Während der Arbeitszeit:

Klare Erwartungshaltung:

  • Kommunizieren Sie klar, ob eine Nachricht dringend ist und ob eine sofortige Antwort erwartet wird.

Geeigneter Kommunikationsweg:

  • Nutzen Sie UC-Anrufe oder Instant Messages für Dringendes und E-Mail für weniger zeitkritische Themen.

Respekt vor Verfügbarkeit:

  • Prüfen Sie den Verfügbarkeitsstatus (z. B. in Teams) vor Kontaktaufnahme.

Außerhalb der Arbeitszeit:

Dringlichkeit bewerten:

  • Nur wirklich wichtige oder supportbezogene Themen rechtfertigen eine Kontaktaufnahme.

Option statt Verpflichtung:

  • Geben Sie dem Empfänger die Möglichkeit, freiwillig zu reagieren.

Work-Life-Balance respektieren:

  • Nachrichten, die nicht dringend sind, sollten mit Zeitplan-Funktion auf den nächsten Arbeitstag verschoben werden.
  • Work-Life-Balance respektieren: Instant Messages außerhalb der Arbeitszeit sollten optional und freiwillig bleiben, E-Mails können geplant verschickt werden.

Do’s / Don’ts

Nach Kommunikationsweg

Wann UC Instant Messaging (z. B. Teams-Chat) verwenden?

Innerhalb der Arbeitszeit
  • Do’s:
    • Für kurze, prägnante Nachrichten oder Fragen:
      • Beispiel: „Hast du den Bericht für das Meeting fertig? Kann ich ihn kurz ansehen?“
      • Vorteil: Sofortige Rückmeldung möglich, effizient für spontane Kommunikation.
    • Für Echtzeitabstimmungen in Projekten:
      • Beispiel: „Können wir die neue Funktion in 10 Minuten zusammen testen?“
      • Vorteil: Fördert kollaborative Arbeit in Echtzeit.
    • Für schnelle Rückfragen oder Abstimmungen bei Verfügbarkeit des Empfängers:
      • Beispiel: „Hast du die Freigabe von Max schon erhalten?“
      • Voraussetzung: Der Verfügbarkeitsstatus (z. B. „verfügbar“ in Teams) des Empfängers wird berücksichtigt.
  • Don’ts:
    • Komplexe oder längere Themen ansprechen:
      • Falsch: „Ich habe einige Ideen für die Umstrukturierung. Lass uns das hier diskutieren.“
      • Warum nicht? UC-Instant Messaging ist ungeeignet für lange Diskussionen oder umfangreiche Informationen.
    • Dringende Aufgaben außerhalb des Kontextes:
      • Falsch: „Ich brauche die Präsentation in 5 Minuten.“
      • Warum nicht? Verwenden Sie einen Anruf oder Besprechungen für zeitkritische Themen.
Außerhalb der Arbeitszeit
  • Do’s:
    • Nur für dringende oder freiwillige Supportthemen:
      • Beispiel: „Es gibt einen kritischen Supportfall. Kannst du helfen, oder soll ich jemand anderen fragen?“
      • Vorteil: Bietet die Möglichkeit, schnell zu reagieren, bleibt aber optional.
    • Für einfache, nicht störende Updates:
      • Beispiel: „Ich habe die Freigabe für den Report erhalten. Du kannst ihn morgen prüfen.“
      • Vorteil: Informiert den Empfänger ohne Erwartung einer sofortigen Reaktion.
  • Don’ts:
    • Nachrichten senden ohne Rücksicht auf Dringlichkeit:
      • Falsch: „Bitte schau dir diese neuen Designideen an, bevor du ins Büro kommst.“
      • Warum nicht? Erwartet indirekt eine Reaktion außerhalb der Arbeitszeit und stört die Work-Life-Balance.
    • Informelle Kommunikation ohne vorherige Abstimmung:
      • Falsch: „Hast du kurz Zeit für eine Idee, die ich habe?“
      • Warum nicht? Ohne Dringlichkeit sollte die Nachricht bis zur Arbeitszeit warten.

Wann E-Mail verwenden?

Innerhalb der Arbeitszeit
  • Do’s:
    • Für formelle und dokumentationspflichtige Kommunikation:
      • Beispiel: „Anbei die detaillierte Analyse der letzten Woche. Bitte prüfen Sie diese bis Freitag.“
      • Vorteil: Bietet eine schriftliche Aufzeichnung und Zeit zur Bearbeitung.
    • Für Themen, die keine sofortige Antwort erfordern:
      • Beispiel: „Ich benötige Ihre Rückmeldung zur Budgetfreigabe. Eine Antwort bis Ende der Woche reicht.“
      • Vorteil: Ermöglicht dem Empfänger, die Prioritäten selbst festzulegen.
    • Für umfangreiche Informationen oder Anhänge:
      • Beispiel: „Im Anhang finden Sie das Protokoll des letzten Meetings.“
      • Vorteil: Klare Struktur und Nachvollziehbarkeit für komplexe Inhalte.
  • Don’ts:
    • Für zeitkritische Themen oder kurzfristige Entscheidungen:
      • Falsch: „Bitte bestätigen Sie bis 14 Uhr, dass die Änderungen umgesetzt werden.“
      • Warum nicht? Verwenden Sie einen Anruf oder UC-Instant Messaging für dringende Themen.
    • Für kurze Nachrichten oder Fragen:
      • Falsch: „Können wir uns heute Nachmittag treffen?“
      • Warum nicht? E-Mail ist zu langsam für Echtzeitabstimmungen.
Außerhalb der Arbeitszeit
  • Do’s:
    • Für nicht dringende Themen mit Zeitplan-Funktion:
      • Beispiel: „Bitte prüfen Sie morgen früh die angehängten Dokumente. Kein Handlungsbedarf vor Arbeitsbeginn.“
      • Vorteil: Respektiert die Freizeit des Empfängers und kommuniziert gleichzeitig wichtige Informationen.
    • Für Themen, die bis zum nächsten Arbeitstag warten können:
      • Beispiel: „Ich habe den Report fertiggestellt. Bitte prüfen Sie ihn in Ruhe.“
      • Vorteil: Gibt dem Empfänger die Möglichkeit, während der Arbeitszeit darauf zu reagieren.
    • Für umfangreiche Statusberichte oder Zusammenfassungen:
      • Beispiel: „Hier ist die Zusammenfassung des Projekts bis heute.“
      • Vorteil: Dokumentiert den Stand ohne Dringlichkeit.
  • Don’ts:
    • Für dringende oder zeitkritische Themen:
      • Falsch: „Bitte melden Sie sich sofort, der Kunde wartet auf eine Antwort.“
      • Warum nicht? Solche Themen sollten über UC-Instant Messaging oder Anrufe gelöst werden.
    • Für Nachrichten ohne klare Relevanz:
      • Falsch: „Ich wollte Ihnen nur Bescheid geben, dass ich den Bericht abgeschlossen habe.“
      • Warum nicht? Solche Updates können bis zur nächsten Arbeitszeit warten.

Simple Beispiele

Kommunikation während der Arbeitszeit

Vorgesetzter → Angestellter
  • Do:
    • Teams-Instant Message:
      • „Hallo, könntest du bitte die Präsentation für das Meeting um 14 Uhr vorbereiten? Ich bin in 10 Minuten für Rückfragen verfügbar.“
      • → Klare, präzise Anfrage mit Option für Rückfragen.
    • Anruf: Für kurzfristige Abstimmungen zu zeitkritischen Themen (z. B. „Ich brauche dringend Feedback zu den Zahlen, kannst du kurz sprechen?“).
  • Don’t:
    • E-Mail mit Dringlichkeit:
      • „Ich brauche das bis in 10 Minuten. Siehe E-Mail, die ich gestern um 22 Uhr geschickt habe.“
      • → Dringende Themen sollten telefonisch oder über UC geklärt werden.
Angestellter → Vorgesetzter
  • Do:
    • Teams-Instant Message:
      • „Ich benötige eine kurze Rückmeldung zur Budgetfreigabe. Haben Sie dafür 5 Minuten Zeit?“
      • → Respektvolle Anfrage unter Berücksichtigung der Verfügbarkeit.
    • E-Mail:
      • „Anbei die Zusammenfassung der Ergebnisse. Bitte prüfen Sie diese bis morgen Abend.“
  • Don’t:
    • Anruf ohne Vorwarnung:
      • „Ich wollte Ihnen nur ein Update zu meinem Projekt geben.“
      • → Längere Updates sollten schriftlich erfolgen, Anrufe nur bei Dringlichkeit.

Kommunikation außerhalb der Arbeitszeit

Vorgesetzter → Angestellter
  • Do:
    • E-Mail mit Zeitplanung:
      • „Bitte prüfen Sie morgen früh die angehängten Dokumente. Kein Handlungsbedarf vor Arbeitsbeginn.“
      • → Respektiert die Freizeit des Angestellten und setzt keine sofortige Antwort voraus.
    • Teams-Instant Message (bei Supportthemen):
      • „Es gibt einen kritischen Fall in der Supporthotline. Kannst du helfen, oder soll ich jemand anderen fragen?“
      • → Möglichkeit zur freiwilligen Annahme durch den Angestellten.
  • Don’t:
    • WhatsApp-Nachricht:
      • „Warum wurde das Dokument nicht aktualisiert? Klär das bitte sofort!“
      • → Vermeidet unnötigen Druck und informelle Kanäle.
Angestellter → Vorgesetzter
  • Do:
    • E-Mail:
      • „Ich habe bemerkt, dass die IT ein Problem hat. Ich werde es morgen früh prüfen.“
      • → Zeigt Verantwortungsbewusstsein ohne unnötigen Druck.
    • Teams-Instant Message (bei Supportthemen):
      • „Ich bin gerade online und übernehme den Fall aus der Hotline.“
      • → Klare Kommunikation der Bereitschaft, ohne Erwartungen zu setzen.
  • Don’t:
    • Anruf spätabends:
      • „Ich habe eine Idee für unser nächstes Projekt.“
      • → Solche Themen sollten während der Arbeitszeit besprochen werden.

Komplexes Beispiel

Szenario:

Der Angestellte übermittelt während der Arbeitszeit seinen Stundenzettel der letzten Woche per E-Mail. Der Vorgesetzte sieht die E-Mail außerhalb der Arbeitszeit des Angestellten und möchte ihm mitteilen, dass es dazu Fragen gibt, die in einem ohnehin regelmäßig stattfindenden Meeting in zwei Tagen besprochen werden sollen.

Do: Kommunikation per E-Mail (Empfohlener Weg)

  • Verhalten: Der Vorgesetzte nutzt E-Mail, um klarzustellen, dass das Thema in einem regulären Meeting besprochen wird, und formuliert die Nachricht so, dass keine Eile besteht.
  • Beispiel:
    • Betreff: Fragen zu deinem Stundenzettel Hallo [Name], ich habe deinen Stundenzettel erhalten und dazu ein paar Fragen. Diese können wir ganz entspannt in unserem regelmäßigen Meeting am [Tag] um [Uhrzeit] besprechen. Es ist kein Handlungsbedarf vorab erforderlich. Danke für die rechtzeitige Übermittlung! Viele Grüße [Vorgesetzter]
  • Erklärung:
    • Die Nachricht respektiert die Freizeit des Angestellten und erwartet keine Reaktion außerhalb der Arbeitszeit.
    • Durch den Verweis auf das Meeting wird klar signalisiert, dass das Thema nicht dringend ist.

Don’t: Kommunikation per Instant Messaging (Nicht empfehlenswert)

  • Verhalten: Der Vorgesetzte schickt eine IM mit einer ähnlichen Botschaft, selbst wenn er betont, dass keine Eile besteht.
  • Beispiel:
    • Hallo [Name], ich habe deinen Stundenzettel geprüft. Es gibt ein paar Fragen, die ich gerne im Meeting am [Tag] klären möchte. Keine Eile! :)
  • Erklärung:
    • Selbst wenn keine Antwort erwartet wird, signalisiert die Nutzung von IM eine potenzielle Dringlichkeit oder eine Erwartungshaltung, die Druck auf den Angestellten ausüben könnte.
    • IM suggeriert oft eine höhere Priorität als E-Mail, was unnötig in die Freizeit des Angestellten eingreifen kann.

Empfehlung für die Führungskraft

  • Primär E-Mail nutzen:
    • E-Mail ist der geeignete Kommunikationsweg für nicht dringende Themen, insbesondere außerhalb der Arbeitszeit.
    • Sie erlaubt dem Empfänger, die Nachricht zu einem passenden Zeitpunkt während der Arbeitszeit zu lesen und zu bearbeiten.
  • Instant Messaging komplett vermeiden:
    • In diesem Szenario sollte IM nicht genutzt werden, da:
      • es während der Arbeitszeit: den Angestellten unnötig aus seiner aktuellen Arbeit/ Konzentration reißt.
      • es außerhalb der Arbeitszeit: unnötig die Freizeit des Angestellten tangieren könnte.
    • Selbst mit freundlicher Formulierung vermittelt IM indirekt eine Erwartung auf schnelle Rückmeldung.
  • Klare Kommunikation:
    • Die Nachricht sollte unmissverständlich ausdrücken, dass keine sofortige Reaktion oder Aktion erwartet wird.
  • Verwendung der Zeitplan-Funktion:
    • Wenn der Vorgesetzte außerhalb der Arbeitszeit kommunizieren muss, könnte die E-Mail mit einer Zeitplan-Funktion so eingestellt werden, dass sie erst zu Beginn der Arbeitszeit des Angestellten gesendet wird.

Halt mal meinen E-Scooter…

… oder meine Odyssee durch Mönchengladbach!

Vorweg, ich habe eine Meinung zu den E-Scootern und die wurde durch meine Odyssee nicht verbessert.

So begab es sich, dass ich in Mönchengladbach gestrandet war, weil dort ein Mittelaltermarkt stattfand. Meine Frau sandte mich kurz ins Kaufland etwas zu kaufen. Kurz das waren 3km (was ich zu diesem Zeitpunkt aber noch nicht wusste). Aber hey überall stehen diese schrecklichen Dinger rum. Dann wollen wir das doch mal testen.

Die Registrierung, bei Bolt, war recht einfach und zügig abgeschlossen. Schade nur das der Roller, vor dem ich nun stand, leer war. Okey also weiter zu Fuß Richtung meines Zieles, weit kann das ja nicht mehr sein. Siehe da! Ein Roller. Och Mist, dieser ist von Tier… Naja dank ausreichendem Datenvolumen, war auch diese App schnell installiert und eingerichtet. Roller gescanned und… Das ist nicht der Roller, den ihr sucht. Die App war steif und fest davon überzeugt, dass dort kein Fahrzeug stand. Also ging es weiter. Man ist es ja inzwischen gewohnt die Biester an allen Ecken und Enden zu finden, also kann der nächste nicht mehr weit sein. Und so war es auch, da stand er, der nächste Roller. Ein strahlendes Weiß/ Lemon farbiges Gefährt strahlte mich an. Es war von Lime. Also wurde die 3. App des Tages installiert und eingerichtet. Und schon ging die Reise los. Kurz die Erklärung in der App gelesen und ab ging die Fahrt 800m waren es noch. Mein Ziel, Kaufland. Parken? NEEEE hier nicht. Sie dürfen den Roller hier weder Abstellen noch die Fahrt unterbrechen, so sagte es mir die App. WTF. Nicht einmal kostenpflichtiges Pausieren. Also in der App geschaut wieweit ich nun wieder von meinem Ziel weg muss bis ich parken darf. Juhu Goth sei Dank 2 Querstraßen weiter gab es eine kleine Kreuzung, hier durfte ich parken. Diesen Punkt hatten wohl auch schon andere gefunden, denn die aus Großstädten bekannte Rollertraube wurde vorgefunden.

Roller geparkt, einkaufen gewesen und ab zurück zum Markt. Puh, mein Roller stand noch, also ab damit zurück. Jetzt kommt der Punkt an dem ich selbst schuld war: Ich hätte in der App sehen können. Das dort wo ich hin will eine nicht Parken Area ist, aber wer, der das zum ersten Mal macht, tut das schon? Also ich nicht, bin ich ja ehrlich. Geil die Fahrt zurück ging wie im Fluge. Noch schnell parken und… Da war es wieder mein Problem. Parken NÖ, Ungefähr da wo ich mein Gefährt gefunden hatte endete auch schon die „Non Parking Area“ also wieder zurück. OHOH Das Akku mach schlapp. Kann ich den wenigsten dann hier parken … NEIN. Mit den letzten % noch bis zur Grenze der Zone und geparkt. Zu Fuß ab zum Markt. Auf meinem Weg dorthin kam ich an dem einem oder anderen Lime Roller vorbei. Ein Blick in die App sagte mir, die hätten noch Akku und könnten nun entliehen werden.

WIE zur Hölle haben die User die Dinger da geparkt?

Also zum Fazit: Solang das Ding fuhr hat es Spaß gemacht, aber was für einen Nutzen haben die Dinger, wenn man sie nicht wieder los wird. Meine Meinung bleibt: Zu teuer, unpraktisch und verschandeln das Stadtbild!

YAD(-C) Tutorial (Yet another docker(-compose) Tutorial)

In den folgenden Zeilen will ich euch eine kurze Einführung geben, wie man einen Server mit Docker und Docker-Compose am besten einrichtet. Dieses Tutorial dient mehr oder minder als Vorbereitung auf einge weitere Tutorials, die auf Docker aufbauen. Daher erklärt es eher, was ihr eingerichtet braucht um Docker so zu verwenden, wie ich es in den anderen Tutorial tue.

Keine Lust alles zu lesen? Soll einfach laufen? -> tl:dr

Da Ubuntu das Lieblings-Unix des Authoren ist, werden wir dieses als Grundlage nutzen. Im Vorliegenden Tutorial handelt es sich um ubuntu-20.04.1-live-server-amd641

Was ist Docker?

Docker ist eine Freie Software zur Isolierung von Anwendungen mit Hilfe von Containervirtualisierung.

Docker vereinfacht die Bereitstellung von Anwendungen, weil sich Container, die alle nötigen Pakete enthalten, leicht als Dateien transportieren und installieren lassen. Container gewährleisten die Trennung und Verwaltung der auf einem Rechner genutzten Ressourcen. Das beinhaltet laut Aussage der Entwickler: Code, Laufzeitmodul, Systemwerkzeuge, Systembibliotheken – alles was auf einem Rechner installiert werden kann

Docker (Software) – https://de.wikipedia.org/wiki/Docker_(Software) [Stand_ 03.01.2021]

Okey wenn ihr die Wikipedia lesen wollen würdet währet ihr wahrscheinlich nicht hier. Also wollen wir das mal übersetzen:

Docker ist eine Virtualisierungssoftware (wer sich an dieser Stelle die Frage stellt, was eine Virtualisierungssoftware ist, liest dann doch besser die Wiki und kommt danach zurück), bei der anders als bei anderen Anwendungen auf diesem Gebiet nicht immer ein ganzes Betriebssystem eingerichtet werden muss. Docker stellt uns vorbereitete Images und Container zur Verfügung auf deren Basis wir unsere Software einrichten können. In der Theorie spart dies sowohl Arbeit als auch Ressourcen, in der Praxis habe ich das Gefühl, dass die Trennung und Wartbarkeit eher der Vorteil sind. Jeder Container (was das ist, dazu kommen wir später) läuft für sich Isoliert und kann andere Container nur in geringen Masse beeinflussen. Da sich bei der Virtualisierung, egal ob Container oder Voll, die virtuellen Maschinen (VMs) dieselbe Hardware teilen, können besonders ressourcenhungrige Vertreter ihrer Art leicht Ressourcen ihrer Kollegen auslasten. Dies kann durch viele Parameter allerdings unterbunden werden.

Hier ein Beispiel für den Fall, dass mehrere VMs versuchen alles für sich zu beanspruchen (IT-Bezeichnung: Overprovisioning2):

Sind keine weiteren Parameter eingestellt, hat jede VM (Virtuellen Maschine) das Gefühl für sich allein die gesamte Hardware zur Verfügung zu haben. Und wird versuchen so viel Ressourcen zu beanspruchen wie sie für richtig hält. Grade Datenbanken neigen dazu dabei bis zu 90 % einfach zu belegen, nicht weil sie müssten, sondern weil sie schneller sind, wenn sie das Tun. Virtualisiert man nun 2 Datenbanken werden beide versuchen 90 % der Ressourcen des Hosts zu beanspruchen, und aus ihrer Sicht Erfolg dabeihaben, was dazu führt das nun 180% des z.B.: Arbeitsspeichers (RAM) beansprucht werden. Leider hat unserer Virtualisierungshost (der Rechner, auf dem die Software physikalisch läuft) dadurch nicht auf einmal mehr Arbeitsspeicher. Also muss er gucken wie er damit klarkommt. Einer VM zur Laufzeit (der Zeit, in der sie eingeschaltet ist) Arbeitsspeicher zu entziehen ist in der Regel nicht möglich und wird durch einen Absturz quittiert (Ausnahmen lassen wir hier mal unter den Tisch fallen), also muss ein anderer Weg her. Dieser Weg nennt sich Auslagerungsdatei (Windows) oder Swap (unixbasierte Betriebssysteme), hierbei werden die Daten des Arbeitsspeichers, die nicht mehr hineinpassen, auf einer Festplatte gespeichert. Das dies langsamer ist brauche ich wohl kaum sagen.

Vorwort , Vorbereitungen und Installation

Bei allen Befehlen wird davon ausgegangen, dass man nicht als root user sondern als ein User mit sogenannten sudo-Rechten3 auf einer Konsole (shell / Terminal / SSH / etc.) angemeldet ist. Solltet ihr als root angemeldet sein könnt ihr auf das sudo zu beginn aller Befehle verzichten ( obwohl es auch als root user nicht schlimm ist dies mitzutippen).

Bevor man irgendetwas unter Ubuntu installiert, sollte man sicherstellen, dass alle Updates installiert sind:

sudo apt update && sudo apt dist-upgrade -y

Diese Zeile beinhaltet 2 Anweisungen :

apt update:
Aktualisiert die Packetliste, also das Verzeichnis, in dem gespeichert wird, was Installiert werden kann.

apt dist-upgrade -y:
Startet die eigentliche Aktualisierung inclusive Betriebssystem. Das -y sorgt dafür, dass wir nicht noch einmal gefragt werden ob wir das wirklich tun wollen

Nach dem wir nun wissen, dass unser Ubuntu auf dem aktuellen Stand ist, können wir uns daran machen, alles zu installieren was wir brauchen (könnten).

sudo apt install python3-pip -y

Diese Zeile hat eigentlich nichts mit Docker zu tun, sondern installiert einen Python3 Paketmanager. Da wir aber später einige unterstüzende Module aus dem Python Repository benötigen installieren wir dies gleich mit.

sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common -y

Bei diesen 5 Paketen handelt es sich um Voraussetzungen, die lt. Docker.com für docker benötigt werden. Ich werde an dieser stelle nicht darauf eingehen, was die einzelnen Pakete tun, da dies den Rahmen sprengen würde. Da in der Unixwelt allerdings Dokumentation recht groß geschrieben wird, lässt sich das bei weitergehender Neugierde sehr leicht mit der Suchmaschine deiner Wahl ermitteln.

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

curl, eins der Pakete das im vorangegangenden Schritt installiert wurde, läd nun den Schlüssel für das Docker Repository herunter. Hierdurch können wir Pakete direkt von docker.com installieren.

apt-key add sorgt dafür, dass wir diesem Schlüssel auch vertrauen.

sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

Nach dem wir dem Repository vertrauen, können wir diesen nun auch unseren Repositories hinzufügen.

sudo apt update && sudo apt install docker-ce docker-ce-cli containerd.io -y

Ähnlich wie bereits zu Anfang werden hier wieder einge befehle direkt hintereinander ausgeführt.

apt update aktualisiert erneut die Liste der installierbaren Paketen, nun allerdings inklusive der Pakete, die unter download.docker.com liegen.

apt install installiert die benötigten Pakete. Das Suffix -ce bei den Dockerpaketen sagt uns das wir die kostenlose Community Edition installieren.

Für docker war es das schon, da docker aber erst so richtig Spass macht wenn wir es auch automatisieren, installieren wir uns gleich auch noch docker-compose. Eine Engine die es uns erlaubt mehrere Container auf einmal zu starten.

Docker-compose Installation

sudo curl -L "https://github.com/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

docker-compose ist ein einzelnes programm, dass wir einfach herunterladen könnten und damit fertig wären. Aber das ist uns ja zu langweilig also wollen wir auch noch, dass es aus egal welchen Ordner heraus aufgerufen werden kann.

sudo chmod +x /usr/local/bin/docker-compose && sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

diese letzte Zeile macht die datei docker-compose ausführbar, sorgt also dafür das unser Linux bereit ist diese auch als Programm anzuerkennen und fügt sie als Verküpfung zu den global verfügbaren Befehlen hinzu.

tl;dr

Wenn ihr einfach nur Docker unter Ubuntu 20.04 ans laufen bekommen wollt könntet ihr einfach alle Befehle von oben in ein einziges .sh Script kopieren, ausführen und glücklich sein. Dieses Script sähe dann wie folgt aus:

install.sh

#!/bin/sh
#System update
sudo apt update && sudo apt -y dist-upgrade

#Setup Python3 deps
sudo apt install python3-pip -y

#SetupDocker
sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common -y

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

sudo apt-get update && sudo apt-get install docker-ce docker-ce-cli containerd.io -y

#Setup docker-compose
sudo curl -L "https://github.com/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

sudo chmod +x /usr/local/bin/docker-compose

sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

Auf der Konsole:

sudo chmod +x ./install.sh && sudo ./install.sh

Sieh zu wie tausende Zeilen über den Bildschirm fliegen, fertig …

Viel Spass

Show 3 footnotes
  1. Download (https://releases.ubuntu.com/20.04.1/ubuntu-20.04.1-live-server-amd64.iso)
  2. Ich weiß, dass Overprovisioning ursprünglich nur Speicherplatz bezeichnete, aber in der letzten Zeit wird der Ausdruck auch immer öffter für alle Ressourcen genutzt
  3. Sudoer sind Nutzer die Systemnahe Befehle ausführen dürfen, hierzu müssen sie jedoch ihr eigenes Passwort erneut eingeben. Goth sei dank müssen sie dass allerdings nur 1 mal innerhalb eines bestimmten Zeitraums und nicht für jeden Befehl einzeln

PHP Kapitel 1: Installation und Einrichtung

1.Einleitung

In diesem Artikel will ich euch die Installation bzw. Einrichtung von PHP auf euren Computern erklären und die wichtigsten Grundbegriffe einmal aufzählen. Da ich ein Windowsnutzer bin erfolgen die Beispiele anhand von Windowsscreens, eine seperate Anleitung für Mac und Linux folgt ggf. später. Alle Kapitel außer diesem sind für alle Betriebssysteme identisch.

PHP war ursprünglich die Abkürzung für Personal Homepage Tool wird heute aber mit PHP: Hypertextpreprocessor übersetzt. Wikipedia

Obwohl PHP auch in der Console genutzt werden kann, erkläre ich in diesem Tutorial die Verwednung in Verbindung mit einem Webserver. Die Einrichtung eines solchen Webservers soll nicht Hauptaugenmerk dieses Tutorials sein, da Anfänger in der Regel ihre Seiten auf Webservern von Webhostern hosten. Zur lokalen Entwicklung sollte man einen Webserver auf seinem PC haben. Hierzu empfehle ich XAMPP ((X)cross-plattform, Apache, MariaDB (früher Mysql), PHP und Perl) einen vollständig zu Entwicklungszwecken vorkonfigurieren Webserver. Wie auch schon auf der Webseite beschrieben möchte ich hier allerdings noch einmal eindringlich darauf hinweisen, dass XAMPP für die Entwicklung vorkonfiguriert ist und unter keinen Umständen für den Livebetrieb verwendet werden sollte.

2. XAMPP Installation

Wie bereits in der Einleitung verlinkt kann XAMPP unter https://www.apachefriends.org kostenfrei für das jeweilige Betriebssystem herruntergeladen werden. Nach dem Download startet man die xampp-*-installer.exe wie gewohnt mittels Doppelklick.

Windowsnutzer werden nun durch eine Fehlermeldung begrüßt:

 Warning
 Important! Because an activated User Account Control (UAC) on your system some functions of XAMPP are possibly restricted. With UAC please avoid to install XAMPP to C:\Program Files (missing write permisssions). Or deactivate UAC with msconfig after this setup.

Warning
Important! Because an activated User Account Control (UAC) on your system some functions of XAMPP are possibly restricted. With UAC please avoid to install XAMPP to C:\Program Files (missing write permisssions). Or deactivate UAC with msconfig after this setup.

Diese sagt, ins deutsche übersetzt, soviel wie: „Installieren sie diese Software nicht unter C:\Program Files, da die Software von hier aus auf Grund von Beschränkungen nicht richtig arbeiten kann…“ der Hinweiß, dass man alternativ auch die UNC Einstellungen von Windows anpassen kann sollte dringend ignoriert werden, da dies ein riesiges Sicherheitsproblem schafft. Dieser Dialog kann getrost weggeklickt werden.

Danach zeigt sich wie gewohnt ein geführter Installer, der uns nach der Begrüßung fragt, was wir alles installieren wollen. Wie eingehens erwähnt möchte ich hier nicht alle Möglichkeiten von XAMPP durchgehen und rate dazu, einfach alles wie Vorgeschlagen zu belassen und dann auf Weiter (Next) zu klicken.

Im nächsten Schritt fragt und der Installer wo wir hin Installieren wollen. Dankenswerterweise schlagen die aktuellen Versionen des Installers direkt „C:\xampp“ vor. Also einen Pfad außerhalb von „C:\Program Files“. Wenn man kein Mehrfestplattensystem oder andere Preferenzen hat ist man mit dieser Vorauswahl gut beraten. Im Laufe dieses Tutorials wird immer wieder davon ausgegangen, dass es sich beim Installationsverzeichnis um diesen Pfad handelt.

Hat man einen Installationspfad festgelegt so gelangt man auf eine Seite, die es einem ermöglicht, weitere Programme zu installieren. Hier kann man getrost den Harken bei „Learn more …“ entfernen.

So nach dem das geschafft ist und man noch einigemale auf Weiter und Fertig geklickt hat sieht man zum erstenmal das Controlpanel vor sich

XAMPP Controlpanel
Controlpanel

Sollte dies nicht automatisch aufgegangen sein, findet man es im Startmenu unter „XAMPP Control Panel“

Zur reinen Entwicklung von PHP braucht man nur den Apache Server. Dieses sollte idealerweise nur dann gestartet sein, wenn man auch entwickelt. Wenn ein Modul, wie z.B.: der Apache Webserver gestartet ist, wird dieser Grün hinterlegt.

3. Der Editor

Als Editor oder IDE (Integrated Development Enviroment) für PHP reicht im Prinzip der normale Texteditor (notepad.exe), allerdings gibt es auch eine ganze Reihe coole Entwicklungsumgebungen wie z.B.: Eclipse (als Vertreter der kostenlosen) und PHP Storm (als Vertreter der kostenpflichtigen).
Diese Entwicklungsumgebungen nehmen uns allerhand ab, daher verzichten wir am Anfang auf diese und einigen uns auf ein Mittelding: Notepad++.

Notepad ++ ist ein mittelding zwischen IDE und stumpfen Editor. Es bietet Syntax Highlighting und eine milde Autocompletion sowie Tabs, wenn man mal mehr als eine Datei offen haben will.

Notepad++ kann unter https://notepad-plus-plus.org/ herruntergeladen werden. Da bei der Installation nichts weiter Beachtet werden muss, verzichte ich an dieser Stelle auf die Erklärung der Installation.

4. Zusammenfassung

So nun haben wir alles, was es braucht um PHP lokal auf unserem Rechner zu entwickeln. Aller Anfang ist Trocken und schwer aber ich verspreche, ab hier wird es nicht mehr so Staubig.

Ich freue mich darauf euch in meinem nächsten Artikel zum Thema PHP wieder begrüßen zu dürfen.

MySQL Select 1: Simple Select

Vorwort

In diesem Tutorial möchte ich euch einmal den Select- Befehl aus MySQL etwas näher bringen. Hierzu möchte ich mit euch Stück für Stück einige Selects aufbauen und euch Tipps und Anregungen geben wie ihr das am besten angeht. Da ich versuche alle Leute mitzunehmen, mögen mir mögliche Experten falsche Benamung oder nicht angewendete Vereinfachungen zu verzeihen. Diesen möchte ich mich Später widmen.

Gegeben ist eine Tabelle Namens Kontakte, diese umfasst die Felder (Attribute) die habe ich der Einfachheit unter https://de.fakenamegenerator.com/ generieren lassen und enthält KEINE echten Daten. Auch dem Thema wie eine Tabelle angelegt wird widme ich mich an einer anderen Stelle, da dieser Post lediglich den Select erklären soll!

Tabellenstruktur:

FieldTypeComment
Numberint(11)Autoincrement
Titlevarchar(255) 
Surnamevarchar(255) 
GivenNamevarchar(255) 
NameSetvarchar(255) 
MiddleInitialvarchar(255) 
Gendervarchar(255) 
StreetAddressvarchar(255) 
Cityvarchar(255) 
ZipCodevarchar(255) 
EmailAddressvarchar(255) 
TelephoneNumbervarchar(255) 
Birthdaydatetime 

Datenauszug

Abbildung1: Klick auf das Bild um die Ansicht in einem neuen Tab zu öffnen

Was ist ein Select-Befehl

Als einen Select beschreibt man eine Abfrage gegen die Datenbank, bei der man eine gewisse Menge an Daten zurück erhält. Dies kann der gesamte Inhalt einer Tabelle aber auch nur eine einzelne Zeile sein.

In diesem Tutorial werden wir nur mit einer Tabelle arbeiten, in der Praxis und späteren Lektionen werde ich euch aber auch zeigen, wie man Daten aus mehreren Tabellen zusammenfügt.

Der erste Select

Der simpelste Select den man sich vorstellen kann, ist der Select der einem den gesamten Inhalt einer Tabelle unsortiert, also in der Reihenfolge, in der die Daten in die Datenbank geschrieben wurden.

SELECT * FROM kontakte

Erster Select-Befehl

Führt man diesen Befehl über einen beliebigen MySql Client (Workbench, phpMyAdmin, Toad….) aus führt er zu der in Abbildung 1 (oben) gezeigten Ausgabe.

SELECT und FROM sind Schlüsselworte, die der Datenbank mitteilen was man von ihnen will. Um die Lesbarkeit eines SQL Statements zu erhöhen empfiehlt es sich Schlüsselworte immer UPPERCASE, also alle Buchstaben groß zu schreiben.

Kontakte ist die Tabelle, aus der wir unsere Daten haben wollen.

Das * an dieser Stelle ist bereits das erste Mogeln. ein * in der Feldliste ersetzt eine Liste ALLER Attribute. Was genau die Feldliste ist erkläre ich euch im nächsten Absatz. Dort gehe ich auch etwas detaillierter auf die Struktur eines Selects ein.

Select mit ausgewählten Feldern (Geburtstagsliste)

In den meisten Fällen braucht man aber gar nicht immer alle Informationen (Attribute) eines Datensatzes sondern nur eine Teilmenge. In der Zeit der schnellen Datenverbindungen und des massenhaften Arbeitsspeichers verzichten viele Entwickler gerne auf diese Einschränkung und selektieren lieber alles, ob sie es Später anzeigen oder nicht. Ich möchte euch bereits an dieser Stelle von diesem Vorgehen DRINGEND abraten. Neben dem Datenmüll den ihr mit euch mit schleppt, der sich in der Performance niederschlägt, schafft ihr euch damit viele Sicherheits- und Datenschutzprobleme.

Möchte ich jetzt zum Beispiel eine Geburtstagsliste erstellen so interessieren mich Informationen wie Adresse, Geschlecht und Kontaktdaten herzlich wenig. Diese machen meine Ausgabe nur unübersichtlich und unbrauchbar. In diesem Fall kann ich einzelne Attribute (Felder) mit einem Komma getrennt aufführen um nur noch diese Auszugeben. Interessant oder auch wichtig zu wissen ist hierbei, dass ich die Reihenfolge frei wählen kann, also auch erst den Geburtstag und dann den Namen ausgeben. Auch kann man ein Feld beliebig oft ausgeben. Der Sinn dahinter mag sich in diesem Tutorial nicht erschließen, wird aber in späteren Lektionen behandelt.

SELECT
Birthday , Surname, GivenName FROM kontakte

Select einer Geburtstagsliste
BirthdaySurnameGivenName
25-06-1964 00:00:00HeadstrongBilcuzal
06-06-1936 00:00:00Bolger-BagginsEsmeralda
12-11-1939 00:00:00OldbuckBertha
03-04-1988 00:00:00LightfootGuido
27-02-1991 00:00:00BrandagambaRowan
03-01-1980 00:00:00BoffinOtho
08-02-1979 00:00:00SackvilleRegina
28-11-1987 00:00:00GoldworthyBelladonna
08-06-1966 00:00:00GaukrogersJago
14-04-1936 00:00:00TunnellyPrisca

Auch bei dieser Ausgabe handelt es sich wieder nur um die ersten 10 Zeilen, da ich keine 500 Zeilen untereinander ausgeben will.

Struktur eines Selects

Der Select, den wir oben sehen unterscheidet sich vom ersten Select ausschließlich durch seine geänderte Fieldlist. Um euch nicht weiter zu verwirren nun einmal die Struktur eines einfachen Selectes vollständig aufgedröselt

SELECT [Fieldlist] FROM [Tabelle]

Wie bereits oben Erklärt, handelt es sich bei SELECT und FROM um sogenannte Schlüsselworte, die der Datenbank mitteilen was wir eigentlich tun wollen. Diese Schlüsselworte muss man leider stumpf Auswendig lernen. Ins ein deutschen Satz verpackt seht da oben nun:

Hol mir folgende Informationen [Fieldlist] aus der Tabelle.

Die Fieldlist

Die Fieldlist hat allerdings noch so einiges zu bieten, so können hier neben der einfachen Auswahl auch Berechnungen und Funktionen in ihr ausgeführt werden. Ich möchte auch auf Funktionen erst etwas weiter unten eingehen stelle euch aber eine Funktion (NOW) vor um euch einmal zu zeigen wie das ganze aussieht.

Eine Besonderheit von MySql ist übrigens, dass man für einen Select eigentlich nur das Schlüsselwort SELECT und eine Fieldlist braucht. Solange die Fieldlist keine Felder einer Tabelle beinhaltet reicht dies bereits aus

SELECT 1+1, 1+2, 3-1, 5*2, 3/2

1+11+23-15*23/2
232101,5000

Eine Funktion wird einfach mit Klammer auf, Klammer zu in die Fieldlist geschrieben. Im folgenden das Beispiel mit NOW() was uns die aktuelle Uhrzeit und das Datum gibt. WICHTIG diese Zeitdaten werden von der Systemuhr des Datenbankserver geliefert, geht diese Falsch oder steht in einer anderen Zeitzone, kann das zu Verwirrung führen!

SELECT NOW()

08-02-2019 12:34:28

Das soll es an dieser Stelle erst einmal von der Fieldlist gewesen sein. Weitere Möglichkeiten und wozu der Quatsch benötigt wird werden wir im Verlauf nach und nach sehen.

Sortierung

Um bei unserem Beispiel von oben zu bleiben, der Geburtstagsliste spinnen wir das ganze einmal weiter. Eine Liste macht ja erst so richtig Sinn wenn man sie auch irgendwie Sortiert… Im Falle von Geburtstagen bietet es sich an, von wer hat zu erst nach wer hat als letztes Geburtstag

Die Schlüsselworte ORDER BY sind hier unsere Helfer und stehen rechtweit hinten im Select Befehl.

SELECT
Birthday , Surname, GivenName FROM kontakte ORDER BY
Birthday

Select einer sortierten Geburtstagsliste
BirthdaySurnameGivenName
14-04-1936 00:00:00TunnellyPrisca
06-06-1936 00:00:00Bolger-BagginsEsmeralda
12-11-1939 00:00:00OldbuckBertha
25-06-1964 00:00:00HeadstrongBilcuzal
08-06-1966 00:00:00GaukrogersJago
08-02-1979 00:00:00SackvilleRegina
03-01-1980 00:00:00BoffinOtho
28-11-1987 00:00:00GoldworthyBelladonna
03-04-1988 00:00:00LightfootGuido
27-02-1991 00:00:00BrandagambaRowan

Diese Liste ist zwar sortiert, aber nicht so, wie wir es uns wünschen würden. Denk man an eine Geburtstagsliste Wünscht man sich doch eher eine Sortierung nach Monat und Tag und nicht von Alt nach Jung.

Da wir das aber noch nicht können, begnügen wir uns damit die Tabelle nach Nachnamen zu sortieren

SELECT
Birthday , Surname, GivenName FROM kontakte ORDER BY
Surname

Select einer sortierten Nachname

Bei der Sortierung haben wir noch einige Möglichkeiten, so können wir zum Einen entscheiden, ob wir etwas Aufsteigen (ascending) oder Absteigend (descending) Sortieren wollen. Die Schlüsselworte hierfür sind ASC für Aufsteigend und DESC für Absteigend. Wie euch beim nochmal Ansehen der vorangegangenen Select Befehlen sicher aufgefallen ist, habe ich darauf verzichtet das ASC mit zu tippen. Der Grund dafür ist, dass die meisten, eigentlich alle mir bekannten, Datenbanken bei einer Sortierung standartmäßig ASC sortieren, wenn man ihnen nichts anderes sagt. Bei der Sortierung werden Zahlen Nummerisch und Text wie Text behandelt.
Das klingt erstmal komisch ist aber schnell erklärt:
Speichert man die Zahlen 1-20 in jeweils einer Zeile in einer Spalte die als Text markiert ist (varchar, text, …) würde eine sortierte Ausgabe wie folgt aussehen

1
10
11
12
13
14
15
16
17
18
19
2
20
3
4
5
6
7
8
9

SELECT
Birthday , Surname, GivenName FROM kontakte ORDER BY
Surname DESC

Select einer sortierten Nachname Absteigend

Die Zweite und genau so wichtige Möglichkeit der Sortierung ist nach mehreren Feldern zu sortieren. Das kann nützlich sein, wenn man zum Beispiel in unserer Liste alle Familienmitglieder zusammen ausgeben will.

SELECT
Birthday , Surname, GivenName FROM kontakte ORDER BY
Surname, GivenName

Select einer sortierten Nachname, Vorname

BirthdaySurnameGivenName
30-09-1996 00:00:00BagginsAngelica
05-01-1935 00:00:00BagginsArnor
17-03-1942 00:00:00BagginsCamelia
29-07-1981 00:00:00BagginsElanor
17-07-1936 00:00:00BagginsFerumbras
12-05-1984 00:00:00BagginsHob
04-07-1992 00:00:00BagginsLily