Heim >Datenbank >MySQL-Tutorial >Wussten Sie, dass bei in MySQL gespeicherten Feldern die Groß-/Kleinschreibung nicht beachtet wird?

Wussten Sie, dass bei in MySQL gespeicherten Feldern die Groß-/Kleinschreibung nicht beachtet wird?

步履不停
步履不停Original
2019-06-19 13:30:378042Durchsuche

Wussten Sie, dass bei in MySQL gespeicherten Feldern die Groß-/Kleinschreibung nicht beachtet wird?

00 Kurzrezension

Ich habe bereits einen Artikel über die Groß-/Kleinschreibung von MySQL-Tabellen geschrieben. Tatsächlich wird bei den in Feldern in MySQL gespeicherten Inhalten nicht zwischen Groß- und Kleinschreibung unterschieden.

Möchten Sie überprüfen:

Die Groß-/Kleinschreibungsregeln von MySQL für Datenbanknamen, Tabellennamen, Spaltennamen und Aliase unter Linux lauten wie folgt:

1. Datenbankname und Tabellenname Bei Tabellenaliasen wird die Groß- und Kleinschreibung strikt beachtet.

4. Beim Feldinhalt wird standardmäßig die Groß-/Kleinschreibung nicht beachtet.

01 Ein BeispielEinfaches Beispiel:

CREATE TABLE `tb_user` (
	`id` BIGINT (20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '用户id',
	`username` VARCHAR (50) NOT NULL COMMENT '用户名',
	PRIMARY KEY (`id`)
) ENGINE = INNODB DEFAULT CHARSET = utf8 COMMENT = '用户表';


INSERT INTO `u2s`.`tb_user` (`id`, `username`) VALUES ('1', 'user');
INSERT INTO `u2s`.`tb_user` (`id`, `username`) VALUES ('2', 'User');
INSERT INTO `u2s`.`tb_user` (`id`, `username`) VALUES ('3', 'USER');

Verwenden Sie die Abfrageanweisung, um Benutzer abzufragen, deren Benutzernamen ausschließlich aus Kleinbuchstaben bestehen

. Das Ergebnis ist, dass alle drei Datensätze wurden gefunden. Alle überprüft.

mysql> SELECT username from tb_user where username = 'user';
+----------+
| username |
+----------+
| user     |
| User     |
| USER     |
+----------+
3 rows in set
Um dieses Beispiel kurz zu veranschaulichen, wird beim Feldinhalt standardmäßig die Groß-/Kleinschreibung nicht beachtet.

user02 Lösung

** Da beim Feldinhalt standardmäßig nicht zwischen Groß- und Kleinschreibung unterschieden wird, wird die Groß-/Kleinschreibung nicht beachtet. **Die Lösung besteht also darin, Überprüfungsregeln für Feldinhalte hinzuzufügen.

Verwenden Sie das MySQL-Schlüsselwort

, um bei der Suche die Groß-/Kleinschreibung zu berücksichtigen.

Fügen Sie das BINARY-Schlüsselwort

mysql> select * from tb_user where BINARY username ='user';
+----+----------+
| id | username |
+----+----------+
|  1 | user     |
+----+----------+
1 row in set
zur Abfrage-SQL hinzu. Diese Methode ist relativ einfach Um die Felder zu unterscheiden, die abgefragt werden müssen, fügen Sie vorher Schlüsselwörter hinzu. Diese Methode weist auch Nachteile auf. Jedes Mal, wenn Sie eine Abfrage schreiben, müssen Sie auf das Hinzufügen von Schlüsselwörtern achten, und es muss möglicherweise viel Code geändert werden. BINARYBegrenzen Sie beim Erstellen der Tabelle

CREATE TABLE `tb_user1` (
	`id` BIGINT (20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '用户id',
	`username` VARCHAR (50) BINARY NOT NULL COMMENT '用户名',
	PRIMARY KEY (`id`)
) ENGINE = INNODB DEFAULT CHARSET = utf8 COMMENT = '用户表';


mysql> show create table tb_user1;
tb_user1 | CREATE TABLE `tb_user1` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '用户id',
  `username` varchar(50) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT '用户名',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用户表'
1 row in set

oder verwenden Sie

CREATE TABLE `tb_user2` (
	`id` BIGINT (20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '用户id',
	`username` VARCHAR (50) NOT NULL COMMENT '用户名',
	`info` VARCHAR (100) NOT NULL COMMENT '详情描述',
	PRIMARY KEY (`id`)
) ENGINE = INNODB DEFAULT CHARSET = utf8 COLLATE=utf8_bin COMMENT = '用户表';

mysql> show create table tb_user2;
tb_user2 | CREATE TABLE `tb_user2` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '用户id',
  `username` varchar(50) COLLATE utf8_bin NOT NULL COMMENT '用户名',
  `info` varchar(100) COLLATE utf8_bin NOT NULL COMMENT '详情描述',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='用户表'
Durch die Verwendung von

werden alle Einstellungen des Varchar-Typs im Feld größenabhängig Schreiben. Die Details dieser beiden Ansichtstabellen fügen im Wesentlichen

zu den Feldern hinzu.

03 ZusammenfassungNGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_binCOLLATE utf8_binDie Groß- und Kleinschreibung von Feldwerten wird durch die Sortierregeln von MySQL gesteuert. Wenn es um Korrekturleseregeln geht, müssen wir über Zeichensätze sprechen. Ein Zeichensatz ist ein Satz von Symbolen und Kodierungen, und eine Sortierregel ist ein Satz von Regeln zum Vergleichen von Zeichen innerhalb eines Zeichensatzes. Im Allgemeinen beginnt eine Sortierregel mit dem Namen des zugehörigen Zeichensatzes, normalerweise einschließlich eines Sprachnamens, und endet mit _ci (ohne Berücksichtigung der Groß-/Kleinschreibung), _cs (ohne Berücksichtigung der Groß-/Kleinschreibung) oder _bin (binär).

Zum Beispiel der utf8-Zeichensatz, wie in der folgenden Tabelle gezeigt:

1) utf8_bin: utf8_bin speichert jedes Zeichen in der Zeichenfolge als Binärdaten, wobei die Groß-/Kleinschreibung beachtet wird.

2) utf8_general_ci: utf8_genera_ci unterscheidet nicht zwischen Groß- und Kleinschreibung, ci ist die Abkürzung für case insensitive, also case insensitive.

3) utf8_general_cs: Bei utf8_general_cs wird zwischen Groß- und Kleinschreibung unterschieden. cs ist die Abkürzung für case sensitive, also zwischen Groß- und Kleinschreibung.

Hinweis: Die Version 5.7 meines Computers unterstützt den Zeichensatz utf8_general_cs nicht und beim Erstellen wurde ein Fehler gemeldet.

Durch den Inhalt des vorherigen Artikels und dieses Artikels hat jeder ein gewisses Verständnis für die Groß- und Kleinschreibung von MySQL. In der tatsächlichen Entwicklung ist es am besten, Kleinbuchstaben für Bibliotheks- und Tabellennamen zu verwenden. Bitte beachten Sie das Problem der Groß- und Kleinschreibung von Feldspeicherinhalten. Und machen Sie die Konfiguration von MySQL in der lokalen Entwicklungsumgebung mit der Konfiguration von MySQL auf dem Server konsistent, um zu verhindern, dass aufgrund inkonsistenter Umgebungen seltsame Probleme auftreten.

Sind Sie während der Entwicklung auf seltsame Probleme gestoßen? Gerne können Sie eine Nachricht hinterlassen und teilen.

Weitere technische Artikel zum Thema MySQL finden Sie in der Spalte

MySQL-Tutorial.

Das obige ist der detaillierte Inhalt vonWussten Sie, dass bei in MySQL gespeicherten Feldern die Groß-/Kleinschreibung nicht beachtet wird?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn