Nachteil von E-books: Man kann sie nicht so einfach frustriert💢 an die Wand werfen.
#OspalhReads #ospalhLiest #LearningSql
(Das Learning SQL Lehrbuch bringt den Leuten bei, dass eine Tabelle mit Personen-Stammdaten ein gender-Feld zu haben hat, und wie man es erzwingt, dass diese Feld einen von zwei Werten enthält, “M” oder “F”.)

Yeah.
The author goes on and uses “Gender is always 'F' or 'M'” as an example on how these constraints work and then pretends to read minds.
“definitely not what you intended” 🤬
I’ll let @foone@twitter comment on that a bit.
https://twitter.com/Foone/status/1434878650986287105
https://twitter.com/Foone/status/1393259851774447618

#OspalhReads #ospalhLiest #LearningSql #gender

foone on Twitter

“Gonna email my doctor about going on HRT and to explain why I'm just gonna attach a Twitter search of everything I've said after "my gender is"”

Twitter

Internationalization is hard.
Things that ar wrong in this paragraf:

#OspalhReads #LearningSql

Even when yu use plain English,¹ yu need more than plain ASCII as a characterset.
Proper left-and-right quotes, apostrofs, dashes – all essential.
And when yu operate a bank (like “we” do in the book’s examples) probably sooner rather than later a José will show up. “Sorry, Jose, we can’t spell yur name right” is so 20th century.
»Ö« is not an accented letter.
I mean, maybe yu can call the diaeresis on the »ö« in the New Yorker’s coöperation an accent.
But German umlauts ar not accented letters, just non-English letters.
ASCII is 7 bit. When yu count the 0 character it has 128 characters, not 255.²
And suggesting that 255 characters could be enuf is, again, so 20th century.
——
¹Using standard spelling or Simplified Spelling Board rules.
²OK, it looks like SQL itself got this wrong, along with the author. There is an ASCII() function that knows about some mithical 8bit ASCII.

Noch einen hinten dran.
Ich glaube, ich habe gerade einen Bug in MariaDB entdeckt.

Im Lehrbuch wird nicht erklärt, dass man in ein 30 Zeichen¹ langes DB-Feld einen String mit einer Länge (length()) von 77 Zeichen² unterzubringen.

MariaDB ist da auch verwirrt.
Es benutzt anscheinend die eigene length()-Funktion, um Platz für den Ausgabestring zu schaffen, auch wenn eine andere Länge gemeint ist.

#OspalhReads #ospalhLiest #LearningSql #unicode #MariaDB

¹vermutlich Unicode-Codepoints. Müsste bei zusammengesetzten ZWJ-Emoji mal schauen.
²Bytes bzw. Oktetts
Ach ja, und natürlich ist ø ≠ ⌀ und ğ ≠ ǧ.
🤷🏼‍♂️
Und keine Erwähnung von Bobby Tables im Abschnitt »Working with String Data«
https://xkcd.com/327/
#OspalhReads #ospalhLiest #LearningSql #sqlinjection #bobbytables #xkcd
Exploits of a Mom

xkcd
So, gar nicht. kein »inject« oder »sanitize«. »Clean« nur in anderem Kontext. 😩
Teilweise ist das Buch einfach schlecht – oder gar nicht – recherchiert.
Soweit ich weiß gibt es 37 Zeitzonen. Jedenfalls mehr als 24.
https://www.timeanddate.com/time/current-number-time-zones.html
#OspalhReads #ospalhLiest #LearningSql #zeitzone
How Many Time Zones Are There?

If each time zone were one hour apart, there would be 24 in the world. But several time zones have only 30 and 45 minutes offsets, making the total number worldwide much higher.

Könnte schlimmer sein.
Das »Learning SQL«-Buch.
Es könnte so sein wie »SQL Handbuch für Einsteiger«.

Die Beispieltabellen sind so richtig gruselig.
Für einen »Sportverein« wird in der Mitgliedertabelle nicht das Geburtsdatum gespeichert, sondern das Alter in Jahren. 🤦🏼‍♂️😭🤬🤦🏼‍♂️

#OspalhReads #ospalhLiest #LearningSql #SqlHandbuch

Alter natürlich als unsigned tinyint. 127 Jahre ist ja zu wenig, aber 255 sollte reichen.
🤦🏼‍♂️
Und was ist, wenn jemand alle Mitglieder aufgelistet haben will, die mindestens 20 Jahre jünger sind als der Vorsitzende. Wo doch der Verein letzte Woche eine 19-jährige zur Vorsitzenden gewählt hat.
Das war schon praktisch von Learning SQL dass die Leute sich die komplette Beispieldatenbank der »Bank« runterladen konnten.
Die DB hat eine Tabelle »customer«, eine »corporation«, eine »individual«, und die letzten beiden mit Gründungs- bzw. Geburtsdatum.
Beim Querlesen musste ich erst mal schauen, ob das nicht vielleicht ein View wäre, der mit cleverer Technik aus aktuellem und Geburts-Datum das Alter ausrechnet.
Aber nein, das wäre ja zu schick gewesen.
Vorteil bei meinem »SQL Handbuch«: Es ist auf 💀🌳.
→ 📕🤾🏼‍♂️ (Bücher-Ziel-Werfen)
Die Ausgaben der Beispiel-Anfragen sind übrigens JPEG-Bilder mit sichtbaren Artefakten. In der 💀🌳-Version natürlich noch minus die Farbe der »schicken« Windows™-Oberfläche, die der Autor benutzt.
🤦🏼‍♂️, aber ich wiederhole mich.