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

推薦する

Vue+Websocketはチャット機能を実装するだけです

この記事では、チャット機能を簡単に実装するためのVue+Websocketの具体的なコードを参考まで...

MySQL 8.0.20 winx64 のインストールと設定方法のグラフィックチュートリアル

この記事では、MySQL 8.0.20 winx64 のインストールと設定方法を次のように説明します...

キャンバスはスクラッチカード効果を描画します

この記事では、キャンバスでスクラッチカード効果を描画するための具体的なコードを参考までに共有します。...

2018 年にリリースされる Apache Spark 2.4 の新機能は何ですか?

この記事は、2018 年 9 月 19 日に Adob​​e Systems Inc で開催された ...

Linux ファイルとユーザー管理の実践

1. /etc ディレクトリ内の、文字以外の文字で始まり、その後に文字と任意の長さのその他の文字が続...

MySQL MHA の高可用性構成とフェイルオーバーの詳細な導入手順

目次1. MHAの紹介1. MHAとは何ですか? 2. MHAの構成3. MHAの特徴2. MySQ...

Web プロジェクトでの SQL インジェクションの防止

目次1. SQLインジェクションの概要2. SQLインジェクション攻撃の全体的な考え方SQLインジェ...

SQLはROW_NUMBER() OVER関数を使用してシーケンス番号を生成します。

構文: ROW_NUMBER() OVER(PARTITION BY COLUMN ORDER BY...

Centos サーバーで nginx を設定する方法の例

セキュアターミナルMobaXterm_Personalをダウンロードまず、安全なターミナルをダウンロ...

Vueはプルダウンを実装してさらに読み込む

Element-UI に慣れた開発者なら、無限スクロールの InfiniteScroll が使いにく...

メタタグを簡単に説明すると

META タグは、一般的に タグと呼ばれ、HTML Web ページのソース コード内の重要な HTM...

複数の HTML ページで HTML コードをまとめて呼び出す方法

方法 1: スクリプト方式を使用する:共通ヘッダー ファイル head.js または共通フッター フ...

Vue の基本入門: Vuex のインストールと使用

目次1. vuexとは何か2. インストールと導入3. vuexの使用4. プロセスの紹介5. 突然...

Linux で実行中のバックグラウンド プログラムを表示および終了する方法

Linux タスク管理 - バックグラウンド実行と終了fg、bg、ジョブ、&、ctrl + ...

Typescriptを使用してローカルストレージをカプセル化する方法

目次序文ローカルストレージの使用シナリオ使用上の問題解決機能性有効期限を追加データ暗号化を追加する命...