MYSQL の COLLATE とは何ですか?
mysql で show create table
phpmyadmin を使用した開発は、中国語のヘッダーですでに答えが示されているため、非常によく知られているように見えるかもしれません:
phpmyadmin スクリーンショット
いわゆる utf8_unicode_ci は、実際には並べ替えに使用されるルールです。 VARCHAR、CHAR、TEXT タイプのカラムなど、mysql の文字タイプのカラムの場合、カラムのソートと比較の方法を mysql に指示するために COLLATE タイプが必要です。つまり、COLLATE は、ORDER BY ステートメントの順序、WHERE 条件の大なり小なり記号によってフィルタリングされた結果、および **DISTINCT**、**GROUP BY**、**HAVING* に影響します。 * ステートメント、クエリ結果。また、MySQL がインデックスを構築する際、インデックスカラムが文字型の場合、インデックスの作成にも影響しますが、この影響は認識できません。つまり、文字タイプの比較または並べ替えが関係する場合は、必ず COLLATE に関連します。
さまざまな COLLATE の違いCOLLATE は通常、データ エンコーディング (CHARSET) に関連しています。一般的に、各 CHARSET にはサポートされる複数の COLLATE があり、各 CHARSET はCOLLATE がデフォルト値として設定されます。たとえば、Latin1 エンコードのデフォルト COLLATE は latin1_swedish_ci、GBK エンコードのデフォルト COLLATE は gbk_chinese_ci、utf8mb4 エンコードのデフォルト値は utf8mb4_general_ci です。
余談ですが、mysql には utf8 と utf8mb4 という 2 つのエンコーディングがあります。mysql では **utf8** は忘れて、常に **utf8mb4** を使用してください。これは MySQL のレガシー問題です。MySQL の UTF8 は、最大長 3 バイトの文字エンコーディングのみをサポートします。4 バイトを占める必要がある一部のテキストについては、MySQL の UTF8 はサポートしません。utf8mb4 を使用する必要があります。
多くの COLLATE には、_ci という単語が含まれています。これは Case Insensitive の略語で、並べ替えと比較の際に「A」と「a」が同等に扱われることを意味します。 selection * from table1 where field1="a" では、field1 の値を「A」として選択することもできます。同時に、_cs サフィックスが付いた COLLATE では、Case Sensitive、つまり大文字と小文字が区別されます。
mysql で showcollation コマンドを使用して、mysql でサポートされているすべての COLLATE を表示します。 utf8mb4 を例に挙げると、このエンコーディングでサポートされるすべての COLLATE は次の図に示すとおりです。
mysql の utf8mb4 に関連するすべての COLLATEs
図には、多くの国の言語の照合規則が示されています。中国で一般的に使用される 3 つは、utf8mb4_general_ci (デフォルト)、utf8mb4_unicode_ci、および utf8mb4_bin です。これら 3 つの違いを見てみましょう。
まず、utf8mb4_bin の比較方法は、すべての文字を直接バイナリ文字列として扱い、最上位ビットから最下位ビットまで比較することです。したがって、明らかに大文字と小文字が区別されます。
実際には、中国語と英語の utf8mb4_unicode_ci と utf8mb4_general_ci の間に違いはありません。弊社が国内向けに開発したシステムですので、どれでもお選びいただけます。一部の西欧諸国の文字では、utf8mb4_general_ci よりも utf8mb4_unicode_ci の方がその言語の習慣に合っているというだけです。General は MySQL の古い標準です。たとえば、ドイツ語の文字「ß」は、utf8mb4_unicode_ci では 2 つの文字「ss」と同等ですが (これはドイツの習慣に従っています)、utf8mb4_general_ci では文字「s」と同等です。ただし、2 つのエンコーディング間の微妙な違いは、通常の開発では認識するのが困難です。テキスト フィールドを使用して直接並べ替えることはめったにありませんが、一歩下がって考えてみると、たとえ 1 つまたは 2 つの文字がずれていたとしても、それは本当にシステムに壊滅的な結果をもたらす可能性があるのでしょうか?インターネット上のさまざまな投稿や議論から判断すると、utf8mb4_unicode_ci の使用を推奨する人が増えていますが、デフォルト値を使用するシステムにはあまり抵抗がなく、大きな問題はないと考えています。結論: utf8mb4_unicode_ci を使用することをお勧めします。すでに utf8mb4_general_ci を使用しているシステムの場合、時間をかけて変更する必要はありません。
もう 1 つ注意すべき点は、mysql 8.0 以降、mysql のデフォルトの CHARSET が Latin1 ではなく utf8mb4 (参照リンク) に変更され、デフォルトの COLLATE も utf8mb4_0900_ai_ci に変更されたことです。 utf8mb4_0900_ai_ci は通常、unicode をさらに細分したものです。0900 は Unicode 比較アルゴリズム (Unicode 照合アルゴリズムのバージョン) の番号を指し、ai はアクセントを区別しない (発音は無関係です) ことを意味します。たとえば、e、è、é、ê、および ë は次のとおりです。平等に扱われます。関連参考リンク 1、関連参考リンク 2
COLLATE 設定レベルとその優先順位设置COLLATE可以在示例级别、库级别、表级别、列级别、以及SQL指定。实例级别的COLLATE设置就是mysql配置文件或启动指令中的collation_connection系统变量。 库级别设置COLLATE的语句如下: 如果库级别没有设置CHARSET和COLLATE,则库级别默认的CHARSET和COLLATE使用实例级别的设置。在mysql8.0以下版本中,你如果什么都不修改,默认的CHARSET是Latin1,默认的COLLATE是latin1_swedish_ci。从mysql8.0开始,默认的CHARSET已经改为了utf8mb4,默认的COLLATE改为了utf8mb4_0900_ai_ci。 表级别的COLLATE设置,则是在CREATE TABLE的时候加上相关设置语句,例如: 如果表级别没有设置CHARSET和COLLATE,则表级别会继承库级别的CHARSET与COLLATE。 列级别的设置,则在CREATE TABLE中声明列的时候指定,例如 如果列级别没有设置CHARSET和COLATE,则列级别会继承表级别的CHARSET与COLLATE。 最后,你也可以在写SQL查询的时候显示声明COLLATE来覆盖任何库表列的COLLATE设置,不太常用,了解即可: 如果全都显示设置了,那么优先级顺序是 SQL语句 > 列级别设置 > 表级别设置 > 库级别设置 > 实例级别设置。也就是说列上所指定的COLLATE可以覆盖表上指定的COLLATE,表上指定的COLLATE可以覆盖库级别的COLLATE。如果没有指定,则继承下一级的设置。即列上面没有指定COLLATE,则该列的COLLATE和表上设置的一样。 以上就是关于mysql的COLLATE相关知识。不过,在系统设计中,我们还是要尽量避免让系统严重依赖中文字段的排序结果,在mysql的查询中也应该尽量避免使用中文做查询条件。 推荐学习:《mysql视频教程》CREATE DATABASE <db_name> DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE TABLE (
……
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE (
`field1` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '',
……
) ……
SELECT DISTINCT field1 COLLATE utf8mb4_general_ci FROM table1;
SELECT field1, field2 FROM table1 ORDER BY field1 COLLATE utf8mb4_unicode_ci;
以上がMYSQL における COLLATE の役割とさまざまな COLLATE の違いの詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

MySQLは、初心者がデータベーススキルを学ぶのに適しています。 1.MySQLサーバーとクライアントツールをインストールします。 2。selectなどの基本的なSQLクエリを理解します。 3。マスターデータ操作:テーブルを作成し、データを挿入、更新、削除します。 4.高度なスキルを学ぶ:サブクエリとウィンドウの関数。 5。デバッグと最適化:構文を確認し、インデックスを使用し、選択*を避け、制限を使用します。

MySQLは、テーブル構造とSQLクエリを介して構造化されたデータを効率的に管理し、外部キーを介してテーブル間関係を実装します。 1.テーブルを作成するときにデータ形式と入力を定義します。 2。外部キーを使用して、テーブル間の関係を確立します。 3。インデックス作成とクエリの最適化により、パフォーマンスを改善します。 4.データベースを定期的にバックアップおよび監視して、データのセキュリティとパフォーマンスの最適化を確保します。

MySQLは、Web開発で広く使用されているオープンソースリレーショナルデータベース管理システムです。その重要な機能には、次のものが含まれます。1。さまざまなシナリオに適したInnodbやMyisamなどの複数のストレージエンジンをサポートします。 2。ロードバランスとデータバックアップを容易にするために、マスタースレーブレプリケーション機能を提供します。 3.クエリの最適化とインデックスの使用により、クエリ効率を改善します。

SQLは、MySQLデータベースと対話して、データの追加、削除、変更、検査、データベース設計を実現するために使用されます。 1)SQLは、ステートメントの選択、挿入、更新、削除を介してデータ操作を実行します。 2)データベースの設計と管理に作成、変更、ドロップステートメントを使用します。 3)複雑なクエリとデータ分析は、ビジネス上の意思決定効率を改善するためにSQLを通じて実装されます。

MySQLの基本操作には、データベース、テーブルの作成、およびSQLを使用してデータのCRUD操作を実行することが含まれます。 1.データベースの作成:createdatabasemy_first_db; 2。テーブルの作成:createTableBooks(idintauto_incrementprimarykey、titlevarchary(100)notnull、authorvarchar(100)notnull、published_yearint); 3.データの挿入:InsertIntoBooks(タイトル、著者、公開_year)VA

WebアプリケーションにおけるMySQLの主な役割は、データを保存および管理することです。 1.MYSQLは、ユーザー情報、製品カタログ、トランザクションレコード、その他のデータを効率的に処理します。 2。SQLクエリを介して、開発者はデータベースから情報を抽出して動的なコンテンツを生成できます。 3.MYSQLは、クライアントサーバーモデルに基づいて機能し、許容可能なクエリ速度を確保します。

MySQLデータベースを構築する手順には次のものがあります。1。データベースとテーブルの作成、2。データの挿入、および3。クエリを実行します。まず、createdAtabaseおよびcreateTableステートメントを使用してデータベースとテーブルを作成し、InsertINTOステートメントを使用してデータを挿入し、最後にSelectステートメントを使用してデータを照会します。

MySQLは、使いやすく強力であるため、初心者に適しています。 1.MYSQLはリレーショナルデータベースであり、CRUD操作にSQLを使用します。 2。インストールは簡単で、ルートユーザーのパスワードを構成する必要があります。 3.挿入、更新、削除、および選択してデータ操作を実行します。 4. Orderby、Where and Joinは複雑なクエリに使用できます。 5.デバッグでは、構文をチェックし、説明を使用してクエリを分析する必要があります。 6.最適化の提案には、インデックスの使用、適切なデータ型の選択、優れたプログラミング習慣が含まれます。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

PhpStorm Mac バージョン
最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

SAP NetWeaver Server Adapter for Eclipse
Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

SublimeText3 英語版
推奨: Win バージョン、コードプロンプトをサポート!

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

Dreamweaver Mac版
ビジュアル Web 開発ツール
