Comment faire pour modifier le classement par défaut de la table?
create table check2(f1 varchar(20),f2 varchar(20));
crée un tableau avec le classement par défaut latin1_general_ci
;
alter table check2 collate latin1_general_cs;
show full columns from check2;
montre l'individu classement des colonnes comme "latin1_general_ci'.
Alors quel est l'effet de la commande alter table?
- double possible de Modifier le classement de base de données
- Vous pouvez modifier la réponse correcte comme moi et beaucoup d'autres semblent d'accord pour dire que le 2ème est la bonne.
- fait.
Vous devez vous connecter pour publier un commentaire.
Pour modifier le jeu de caractères par défaut et de classement d'une table y compris ceux des colonnes existantes (note de l' convertir clause):
Édité la réponse, grâce à l'impulsion de quelques commentaires:
et
utf8_bin
est mieux, n'est-ce pas? Quelle est la différence entreutf8_bin
etutf8_unicode_ci
?utf8_bin
est sensible à la casse etutf8_unicode_ci
est pas sensible à la casse. L'un n'est pas nécessairement meilleure que l'autre, utiliser ce qui convient à vos besoins.utf8
. Elle n'est presque jamais ce que vous voulez, et conduit souvent à des dégâts. Leutf8
jeu de caractères n'est pas entièrement compatible avec l'encodage UTF-8. Leutf8mb4
jeu de caractères est ce que vous voulez si vous voulez UTF-8.MySQL dispose de 4 niveaux de classement: serveur, base de données, table, colonne.
Si vous modifiez le classement du serveur, de la base de données ou une table, vous ne modifiez pas le réglage de chaque colonne, mais vous modifiez la valeur par défaut des classements.
E. g si vous modifiez le classement par défaut d'une base de données, chaque nouveau tableau que vous créez dans cette base de données permettra d'utiliser ce classement, et si vous modifiez le classement par défaut d'un tableau, chaque colonne que vous créez dans la table qui va obtenir ce classement.
show variables like "collation%";
, de sorte que le total est SIX.Il définit le classement par défaut de la table; si vous créez une nouvelle colonne, qui devrait être réuni avec latin_general_ci -- je pense. Essayez de spécifier le classement de la colonne individuelle et voir si cela fonctionne. MySQL a vraiment un comportement bizarre en ce qui concerne la façon dont il gère cette.
peut-être besoin de modifier le SCHÉMA, non seulement le tableau
(mariaDB 10)
<database name>
au lieu de<table name>
utf8
, maisutf8mb4
.