Ich habe eine allgemeine Frage zu Datenbanken. Normalerweise verwenden wir den Begriff Kollatierung bei Datenbanken. Ich würde gerne wissen, wie es sich vom Zeichensatz unterscheidet. Ich denke, Kollatierung ist eine Teilmenge des Zeichensatzes. Wenn dies zutrifft, welchen Zweck hat die Mehrfachsortierung unter einem Zeichensatz?
database
mysql
database-design
Schande
quelle
quelle
Antworten:
Zeichensätze ist eine Liste von Symbolen. Wenn Sie ASCII mit latin1 vergleichen , können Sie mit latin1 alle amerikanischen Wörter schreiben, da latin1 alle ASCII- Zeichen enthält , die ausreichen, um ein englisches Wort zu schreiben. Im Gegenteil, mit ASCII können Sie nicht alle Wörter westeuropäischer spezifischer Sprachen schreiben, da beispielsweise Zeichen wie 'À', 'ë', 'õ', 'Ñ' fehlen.
Bei der Sortierung geht es um den Vergleich zwischen Zeichen. Es definiert eine Reihe von Regeln zum Vergleichen von Zeichen eines Zeichensatzes.
In MySQL beziehen sich Kollatierungen häufig auf eine Sprache (z. B. 'latin1_swedish_ci', 'latin1_german1_ci' usw.). Wenn Sie eine Auswahlabfrage bestellen, wird ein Wort, das mit 'ö' beginnt, in einigen Sprachen (mit einigen Kollatierungen) zwischen zwei Wörtern platziert, die mit 'o' und 'p' beginnen. Bei einer anderen Sortierung kann dieses Zeichen jedoch vollständig am Ende platziert werden, wodurch sich die resultierende Auswahl unterscheidet.
quelle
Wie die vorherige Antwort zeigt, ist der Zeichensatz eine Reihe von Zeichen (Buchstaben, Zahlen, Ideogramme usw.), die einer Zahl zugeordnet sind. Um sie sehen zu können, müssen Sie die Schrift haben (die kleinen "Bilder", die wir lesen). Sie waren bei der Verwendung von LatinX wichtig, da für jedes X dieselbe Nummer (Byte) auf ein anderes Zeichen verweisen kann.
Heutzutage ist es wichtiger, die Codierung auszuwählen: Der Standard ist UTF-8, die erfolgreichste Darstellung von Unicode (kompatibel mit ASCII, aber so flexibel, dass alle Sprachen, sogar Chinesisch und Japanisch, einbezogen werden können) und der W3C-Standard. Mit anderen Worten, es enthält alle Zeichensätze.
Kollation: Dies ist ein altmodisches Wort, abgeleitet vom Lateinischen. Es bedeutet: Vergleichen Sie eine Kopie (Manuskript) mit dem Original, um Unterschiede (Fehler oder Änderungen) festzustellen. Früher war es sehr nützlich, aber jetzt ist es fast ein Archaismus, weil unsere Dokumente und Bücher mit Computern geschrieben werden und die Kopie immer mit dem Original identisch ist. Beispiel: Auf Italienisch (abgeleitet von Latein) gibt es das Verb "collazionare", aber es steht in den Wörterbüchern und wird von niemandem verwendet.
Die Kollatierung definiert also das Verhalten von Vergleichsoperatoren: =,>, <, <=,> = ...
Natürlich werden diese Operatoren verwendet, um zu entscheiden, ob zwei Zeichenfolgen gleich sind oder ob ein Wort "größer" ist als eine andere, was sehr wichtig ist, wenn wir sortieren möchten. Die Buchstaben sind nicht für jede Sprache gleich angeordnet, daher kann ein Wort mit einer Kollatierung größer sein als ein anderes, jedoch kein anderes. Siehe [1] für ein praktisches Beispiel.
Die "bin" -Kollatierungen sind die strengsten: SELECT "b" = "B" => FALSE
Bei den "ci" -Kollatierungen wird die Groß- und Kleinschreibung nicht berücksichtigt: SELECT "b" = "B" => TRUE
Die "Allgemeinen" neigen dazu, einige Unterschiede zu ignorieren: SELECT "a" = "à" => TRUE
andere sind spezifisch für eine oder mehrere Sprachen. Beispiel "schwedisch" (Ich weiß nicht, warum Schwedisch oft eine Voreinstellung ist)
Ich bin noch auf der Suche nach einer Website, auf der das Verhalten jeder Kollation detailliert beschrieben wird. Diese Beispiele sind auf meine Erfahrung zurückzuführen.
[1] http://www.olcot.co.uk/sql-blogs/revised-difference-between-collation-sql_latin1_general_cp1_ci_as-and-latin1_general_ci_as
quelle