MySQLの文字タイプは大文字と小文字を区別します

MySQLの文字タイプは大文字と小文字を区別します

デフォルトでは、MySQLの文字タイプは大文字と小文字を区別しません。つまり、name='AAA'が='aaa'と同じであるselect * from tです。以下はテスト例です。

(root@localhost)[hello]> テーブル test1(id int, name varchar(10)) を作成します。
(root@localhost)[hello]> test1に値(1,'aaa'),(2,'AAA'),(3,'bbb'),(4,'BbB')を挿入します。
(root@localhost)[hello]> test1から*を選択します。
+------+------+
| ID | 名前 |
+------+------+
| 1 | ああ |
| 2 | AAA |
| 3 | bbb |
| 4 | ビビ |
+------+------+

(root@localhost)[hello]> select * from test1 where name = 'AAA';
+------+------+
| ID | 名前 |
+------+------+
| 1 | ああ |
| 2 | AAA |
+------+------+

(root@localhost)[hello]> select * from test1 where name = 'aaa';
+------+------+
| ID | 名前 |
+------+------+
| 1 | ああ |
| 2 | AAA |
+------+------+

where条件後の「AAA」と「aaa」の結果に違いがないことがわかります。

「AAA」だけを検索したい場合は、いくつかの方法があります。
1. SQLにバイナリキーワードを追加する

(root@localhost)[hello]> select * from test1 where binary name = 'AAA';
+------+------+
| ID | 名前 |
+------+------+
| 2 | AAA |
+------+------+

2. 列定義を変更する

まず元のテーブルの定義を表示します

(root@localhost)[hello]> show create table test1\G
************************** 1. 行 ****************************
  表: test1
テーブルの作成: CREATE TABLE `test1` (
 `id` int(11) デフォルト NULL,
 `name` varchar(10) デフォルト NULL
) エンジン=InnoDB デフォルト文字セット=utf8mb4

テーブルtest1の名前列を変更する

alter table test1 列名 varchar(10) 文字セット utf8mb4 を変更 utf8mb4_bin をデフォルト null に照合;

collat​​e utf8mb4_binは、フィルタリングまたは並べ替えで大文字と小文字が区別されることを示します。

test1の定義を確認します

(root@localhost)[hello]> show create table test1\G
************************** 1. 行 ****************************
  表: test1
テーブルの作成: CREATE TABLE `test1` (
 `id` int(11) デフォルト NULL,
 `name` varchar(10) 文字セット utf8mb4 照合 utf8mb4_bin デフォルト NULL
) エンジン=InnoDB デフォルト文字セット=utf8mb4

次にクエリ文を実行します

(root@localhost)[hello]> name='AAA' の test1 から * を選択します。
+------+------+
| ID | 名前 |
+------+------+
| 2 | AAA |
+------+------+

次に、test2 テーブルを作成すると、列を変更する上記のステートメントが、実際には varchar の後に binary が続くテーブルを作成することと同じであることがわかります。

(root@localhost)[hello]> テーブル test2(id int, name varchar(10) binary); を作成します。
(root@localhost)[hello]> show create table test2\G
************************** 1. 行 ****************************
  表: test2
テーブルの作成: CREATE TABLE `test2` (
 `id` int(11) デフォルト NULL,
 `name` varchar(10) 文字セット utf8mb4 照合 utf8mb4_bin デフォルト NULL
) エンジン=InnoDB デフォルト文字セット=utf8mb4

大文字と小文字の区別を設定する方法は次のとおりです

  • データベースレベルで大文字と小文字の区別を設定する

作成する

データベース <db_name> を作成し、デフォルトの文字セットを utf8mb4 にして、utf8mb4_bin を照合します。

改訂

alter database <db_name> default character set utf8mb4 collat​​e utf8mb4_bin;
  • テーブルレベルで大文字と小文字の区別を設定する

作成する

テーブル <tb_name> を作成 (
......
) エンジン=innodb デフォルトの文字セット=utf8mb4 照合=utf8mb4_bin;

改訂

テーブル <tb_name> を変更します。engine=innodb default charset=utf8mb4 collat​​e=utf8mb4_bin;
  • 列レベルで大文字と小文字の区別を設定する

作成する

テーブル <tb_name> を作成 (
`field1` varchar(10) 文字セット utf8mb4 照合 utf8mb4_bin、
......
)

改訂

テーブル <tb_name> を変更し、列 `field1` varchar(10) 文字セット utf8mb4 を照合し、utf8mb4_bin をデフォルト null にします。

継承関係は列-->テーブル-->ライブラリであり、優先順位は列>テーブル>ライブラリである。

上記はMySQLの文字タイプの大文字と小文字の区別の詳細です。MySQLの文字タイプの大文字と小文字の区別の詳細については、123WORDPRESS.COMの他の関連記事に注目してください。

以下もご興味があるかもしれません:
  • MySQL の大文字と小文字の区別に関する注意
  • MySQL で大文字と小文字を区別しないように設定する方法
  • MySQLの大文字と小文字の区別によって発生する問題の分析
  • MySQLクエリで大文字と小文字を区別しない問題を解決する方法
  • MySQL データベースの大文字と小文字の区別の問題
  • MySQLテーブル名の大文字と小文字を区別しない設定方法の詳細な説明
  • Linux システム MySQL のパスワードを忘れた場合、パスワードをリセットし、テーブル名と列名の大文字と小文字を無視します
  • MySQL クエリ時に文字列の大文字と小文字を区別する方法
  • MySql クエリの大文字と小文字を区別しないソリューション (2)
  • MySQL テーブル名の大文字と小文字の選択

<<:  JS の new 関数の詳細な説明

>>:  HTMLエンコードによる文字化け問題について

推薦する

CSS3 メディアクエリにおけるデバイス幅と幅の違いの詳細な説明

1.デバイス幅定義: 出力デバイスの画面表示幅を定義します。 Web ページが Safari で開か...

Docker で onlyoffice をインストールして展開する詳細なプロセス

0. システム要件CPU I5-10400F以上メモリ 16 GB、32 GBのメモリが最適ハードド...

MYSQL接続ポートが占有され、ファイルパスエラーが発生する問題を解決します

今朝、私は Wampserver を使用してローカルの win7 マシン上に PHP 環境を構築し、...

CSS 要素で計算されたスタイルを取得します (カスケード/最終スタイル後)

CSS 要素内の計算されたスタイル (つまり、カスケード後の最終的なスタイル) を取得するには、W3...

jsはシンプルな計算機を実装します

参考までに、ネイティブjsを使用して簡単な計算機(詳細なコメント付き)を実装します。具体的な内容は次...

MySQL Innodb ストレージ構造と Null 値の保存の詳細な説明

背景:テーブルスペース: すべての INNODB データはテーブルスペース (共有テーブルスペース)...

mysql5.7.14 解凍版インストールと設定方法 グラフィックチュートリアル (win10)

Win10はmysql5.7の解凍版をインストールします。参考までに、具体的な内容は次のとおりです...

Ubuntu 20.04にSogou入力方式をインストールする詳細な手順

1. Fcitx入力フレームワークをインストールする関連する依存ライブラリとフレームワークは自動的に...

MySQL の general_log ログの知識ポイントの紹介

以下の操作デモンストレーションはすべて MySQL バージョン 5.6.36 に基づいています。仕事...

Dockerコンテナ内のホストのホスト名が取得できない問題の解決方法

Node.js環境でテストが通っています。他の言語でも同様です。環境変数を取得する方法を使うだけです...

CSSを使用してHTMLテキストボックス内のテキストの垂直方向の中央を制御する

Text の height 属性が定義されている場合、Text に入力されたテキストは垂直方向に中央...

Linux gzipコマンドの使用

1. コマンドの紹介gzip (GNU zip) コマンドは、ファイルの圧縮と解凍に使用されます。こ...

コピー&ペーストはパッケージングの敵です

OO、デザイン パターン、および多くのオブジェクト指向の原則について話す前に、まず 1 つのことを習...

デザイナーはコーディングを学ぶ必要がありますか?

多くの場合、 Web デザインが完成した後でデザイナーの無知が露呈し、批判されることがあります。彼ら...

CSS3で実装された3Dトンネル効果

達成された効果実装コードhtml <div class="scene"&g...