クエリでのMySQLのユニークキーの使用と関連する問題

クエリでのMySQLのユニークキーの使用と関連する問題

1. テーブルステートメントを作成します。

テーブル「従業員」を作成します(
 `emp_no` int(11) NULLではない、
 `birth_date` 日付がNULLではない、
 `first_name` varchar(14) NOT NULL,
 `last_name` varchar(16) NOT NULL,
 `性別` char(1) NOT NULL,
 `hire_date` 日付がNULLではない、
 主キー (`emp_no`)、
 ユニークキー `idxunique_first_name_gender` (`first_name`,`gender`),
 ユニークキー `uniq_idx_firstname` (`first_name`,`gender`)
) エンジン=InnoDB デフォルト文字セット=utf8

2. 一意のキーを追加します。

-- 一意のインデックスを追加します。alter table employees add constraint idxunique_first_name_gender unique(first_name, gender);

3. クエリテストステートメント:

-- インデックスにすべてのフィールドを含め、順序はインデックスと一致します。select * from employees where first_name='Chirstian' and gender='M';
-- キー列の値: idxunique_first_name_gender
-- インデックスにすべてのフィールドを含めますが、順序とインデックスが一貫していません。select * from employees where gender='M' and first_name='Chirstian';
-- キー列の値: idxunique_first_name_gender
-- 最初のフィールドにインデックスを含める select * from employees where first_name='Chirstian';
-- キー列の値: idxunique_first_name_gender
-- インデックスに最初のフィールド以外のフィールドを含める select * from employees where gender='M';
-- キー列の値: NULL

4. クエリを実行するときに、WHERE 条件に一意のキーの列 (一部またはすべて) のみが含まれ、列の値の型が const の場合。一意のキーを使用する場合は、一意のキーを作成するときに、where 句に最初の列を含める必要があります。その他の列はオプションです。

MySQLのユニークキーに関する質問

xxx_tab の user_id は一意のキーです。疑似コードを見てみましょう。

xxx_tabからuser_id=10000を取得します。
存在する場合 
{
  返品OK
}
ret = user_id=10000を挿入
大丈夫なら 
{
  返品OK
}
not_okを返す

質問: 最終結果が not_ok なのはなぜですか?

ヒント: 分散された影響

要約する

以上がこの記事の全内容です。この記事の内容が皆様の勉強や仕事に何らかの参考学習価値をもたらすことを願います。123WORDPRESS.COM をご愛顧いただき、誠にありがとうございます。これについてもっと知りたい場合は、次のリンクをご覧ください。

以下もご興味があるかもしれません:
  • SQL Server がオブジェクト文字列を一意の識別子に変換する際の保存エラーの問題を解決する
  • MySQL インデックスの種類 (通常、ユニーク、フルテキスト) の説明
  • MySQLは重複しないデータ挿入を実装するためにUNIQUEを使用する
  • MySQL のフィールドに一意のインデックスを追加および削除する方法
  • Mysqlで一意の列に重複した値を挿入する問題を解決する方法
  • uniqueidentifier を varchar データ型に変換する SQL ステートメント
  • ユニークSQLの原理と応用の詳細な説明

<<:  JavaScript で外部変数にアクセスするサブ関数の 3 つのソリューション

>>:  Alibaba Cloud Server に Tomcat をインストールして設定し、外部ネットワーク アクセス ポートを追加するチュートリアル

推薦する

コードをセマンティックにする HTML のヒント

HTML のセマンティクスはありふれた問題のようです。Google で検索すると、セマンティクスに関...

DockerはElasticsearch7.6クラスタをインストールし、パスワードを設定します

Elasticsearch 6.8 以降、無料ユーザーは X-Pack のセキュリティ機能を使用でき...

Dockerコマンドの学習を1つの記事にまとめる

目次導入ミラーリポジトリログイン引く押す検索ローカル画像管理画像rmiタグ建てる歴史保存負荷輸入コン...

MySQL マスタースレーブ同期遅延の原因と解決策

歴史的な理由により、MySQL レプリケーションは、REDO ログではなく論理バイナリ ログに基づい...

HTMLインライン要素とブロックレベル要素の基本概念と使用例

HTML タグには、インライン要素とブロックレベル要素の 2 種類があります。まず、インライン要素と...

Unicode署名BOMによる事故原因の分析

ここでは、通常ヘッダーとフッターに対して行われるインクルード ファイルを使用している可能性があります...

Vue+flaskで動画合成機能を実現(ドラッグ&ドロップアップロード)

目次ドラッグアンドドロップアップロードについては以前の記事で書きました。ファイルをアップロードするF...

JavaScript配列をツリー構造に変換する方法

1. 需要バックエンドは、フロントエンドがツリー構造(重複データなし)に変換するためのデータを提供し...

MySQLクエリのパフォーマンスに影響を与える大きなオフセットの理由と最適化の詳細な説明

序文MySQL クエリは select コマンドを使用し、limit および offset パラメー...

Javascript での JSBridge に関する予備的研究

目次JSBridgeの起源JSBridgeの双方向通信原理JSはネイティブを呼び出すネイティブコール...

Linux で Sudo を使用して権限を委譲する

sudo 権限委譲の概要su スイッチ ID: su –l ユーザー名 –c 'コマンド&#...

CentOS8.0ネットワーク設定の実装

1. CentOS 7 と CentOS 8 のネットワーク構成の違い: VMware Workst...

Reactの二次連携を実現する方法

この記事では、二次リンクを実現するためのReactの具体的なコードを参考までに共有します。具体的な内...

MySQLデータベースのnullに関する知識ポイントのまとめ

MySQL データベースでは、null は一般的な状況です。MySQL での null に関する注意...