Ob MySQL bei Texten Groß- und Kleinschreibung unterscheidet, hängt vor allem von Datentyp und Kollation ab. Betriebssystem und Konfiguration beeinflussen zusätzlich die Behandlung von Bezeichnern.

Kollation verstehen

Endungen wie _ci bedeuten meist case-insensitive, _cs case-sensitive und _bin binären Vergleich.

SHOW VARIABLES LIKE 'collation%';
SHOW FULL COLUMNS FROM kunden;

Vergleich gezielt formulieren

SELECT * FROM kunden WHERE name COLLATE utf8mb4_0900_as_cs = 'Müller';
SELECT * FROM kunden WHERE BINARY benutzername = 'Admin';

Ein COLLATE-Ausdruck kann Indizes beeinflussen. Lege die gewünschte Semantik möglichst im Spaltenmodell fest.

Tabellen- und Dateinamen

Die Behandlung von Tabellennamen kann sich zwischen Linux und Windows unterscheiden. Entwickle mit konsistenter Schreibweise und ändere lower_case_table_names nicht unüberlegt.

Indizes und Eindeutigkeit

Bei Benutzernamen oder Codes entscheidet die Kollation, ob abc und ABC identisch sind. Prüfe Unique-Indizes vor Migrationen.

SHOW CREATE TABLE kunden;
EXPLAIN SELECT * FROM kunden WHERE name = 'Müller';

Sichere Abfragen

Wichtig: Verwende parametrisierte Abfragen. Groß-/Kleinschreibung schützt nicht vor SQL-Injection.

  • Kollation dokumentieren.
  • Tests für Sonderzeichen anlegen.
  • Systeme angleichen.
  • Migrationen auf Datenkopien prüfen.

Fazit

Zuverlässige Vergleiche entstehen durch bewusst gewählte Kollationen, konsistente Bezeichner und Tests.