クエリでの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 をインストールして設定し、外部ネットワーク アクセス ポートを追加するチュートリアル

推薦する

nginx の default_server 定義とマッチングルールの詳細な説明

nginx の default_server ディレクティブは、server_name と一致しない...

MySQL インデックス障害の上位 10 の問題の概要

目次背景1. クエリ条件に「or」が含まれているため、インデックスが失敗する可能性があります。 2....

MySQL では SQL ステートメントはどのように実行されますか?

目次1. MySQLアーキテクチャの分析1.1 コネクタ1.2 クエリキャッシュ1.3 アナライザー...

Windows 10 に TomCat をインストールするチュートリアル図

WindowsにTomCatをインストールするこの記事では、WindowsプラットフォームにTomC...

Linux ブートシステム方式の分析

この記事では、Linux システムを起動する方法について説明します。ご参考までに、詳細は以下の通りで...

Ubuntu でディスク容量不足により MySQL が起動しない場合の解決策

序文最近、データベースのテーブルに 2 つのフィールドを追加しました。その後、ディスク容量不足のよう...

表内のコンテンツオーバーフローのレイアウト方法について

コンテンツオーバーフローとは何ですか?実際、テキストが大量にある場合、コンテンツ領域がそれだけの長さ...

JS はシンプルな todoList (メモ帳) 効果を実装します

メモ帳プログラムは、HTML + CSS + JavaScript の 3 つの主要なフロントエンド...

JavaScript 非同期プログラミングにおける Promise の初期の使用法の詳細な説明

1. 概要Promise オブジェクトは、ES6 で提案された非同期プログラミングの仕様です。非同期...

MySQLは重複しないデータ挿入を実装するためにUNIQUEを使用する

SQL UNIQUE制約UNIQUE 制約は、データベース テーブル内の各レコードを一意に識別します...

Vueは、選択した月に応じて日付に対応する曜日を動的に表示します。

私たち謙虚なプログラマーは、今でもこう歌わなければなりません。「あなたも私も、この世に生まれて、一日...

Centos7 で yum を使用して Mysql5.7.19 をインストールする詳細な手順

Centos7 の yum ソースには、mysql の代わりに mariaDB が使用されているため...

MySQL の null と not null、null と空の値の違いの詳細な説明 ''''

MySQL を長い間使用してきた多くの人は、これら 2 つのフィールド属性の概念をまだよく理解して...

LinuxシステムにTomcatをインストールし、サービスの起動とシャットダウンを構成する

Linuxシステムでサービスの起動とシャットダウンを構成する1. コマンドcd /etc/init....

Windows 10 無料インストール版の MySQL インストールと設定のチュートリアル

ネットでいろいろ検索してみたところ、Linux システム向けではなく、現在の新しいバージョンと一致し...