Från MySQL docs :
En teckenuppsättning är en uppsättning symboler och kodningar. En sortering är en uppsättning regler för att jämföra karaktärer i en teckenuppsättning. Låt oss göra skillnaden tydlig med ett exempel på en imaginär teckenuppsättning.
Antag att vi har ett alfabet med fyra bokstäver:'A', 'B', 'a', 'b'. Vi ger varje bokstav en siffra:'A' =0, 'B' =1, 'a' =2, 'b' =3. Bokstaven 'A' är en symbol, siffran 0 är kodningen för 'A' och kombinationen av alla fyra bokstäverna och deras kodningar är en teckenuppsättning.
Anta nu att vi vill jämföra två strängvärden, 'A' och 'B'. Det enklaste sättet att göra detta är att titta på kodningarna:0 för 'A' och 1 för 'B'. Eftersom 0 är mindre än 1, säger vi att 'A' är mindre än 'B'. Vad vi just har gjort är att tillämpa en sortering på vår karaktärsuppsättning. Sammanställningen är en uppsättning regler (endast en regel i det här fallet):"jämför kodningarna." Vi kallar detta den enklaste av alla möjliga sammanställningar för abinär sammanställning.
Men vad händer om vi vill säga att de små och stora bokstäverna är likvärdiga? Då skulle vi ha åtminstone två regler:(1) behandla de små bokstäverna 'a' och 'b' som likvärdiga med 'A' och 'B'; (2) jämför sedan kodningarna. Vi kallar detta acase-okänslig sammanställning. Det är lite mer komplext än en binär sammanställning.
I verkligheten har de flesta teckenuppsättningar många tecken:inte bara 'A' och 'B' utan hela alfabet, ibland flera alfabet eller österländska skriftsystem med tusentals tecken, tillsammans med många speciella symboler och skiljetecken. Även i det verkliga livet har de flesta sammanställningar många regler:inte bara skiftlägesokänslighet utan också accentokänslighet (en "accent" är ett tecken på ett tecken som på tyska 'ö') och flerteckenmappningar (som regeln att 'ö' ='OE ' i en av de två tyska samlingarna).