MySQLはライブラリ内の主キーなしでテーブルインスタンスコードを素早く取得します

MySQLはライブラリ内の主キーなしでテーブルインスタンスコードを素早く取得します

概要

MySQL データベースで主キーのないテーブルを表示するための SQL ステートメントをいくつかまとめてみましょう。見てみましょう。

1. テーブルの主キー情報を表示する

--テーブルの主キー情報を表示するSELECT
 t.テーブル名、
 t.制約タイプ、
 c.列名、
 c.ORDINAL_POSITION 
から
 INFORMATION_SCHEMA.TABLE_CONSTRAINTS AS t、
 INFORMATION_SCHEMA.KEY_COLUMN_USAGE AS c 
どこ
 t.テーブル名 = c.テーブル名 
 かつ t.CONSTRAINT_TYPE = 'PRIMARY KEY' 
 AND t.TABLE_NAME = '<TABLE_NAME>' 
 AND t.TABLE_SCHEMA = '<TABLE_SCHEMA>'; 


2. 主キーなしでテーブルを表示する

--主キーなしでテーブルを表示する SELECT table_schema, table_name,TABLE_ROWS
information_schema.tables から
WHERE (テーブルスキーマ、テーブル名) NOT IN (
SELECT DISTINCT テーブルスキーマ、テーブル名
information_schema.columns から
COLUMN_KEY = 'PRI' の場合
)
AND table_schema は ('sys'、'mysql'、'information_schema'、'performance_schema') に含まれません。 


3. 主キーのないテーブル

Innodb ストレージ エンジンでは、各テーブルに主キーがあり、データは主キーの順序で整理され、保存されます。このタイプのテーブルは、インデックス構成テーブルと呼ばれます。

テーブルの定義時に主キーが明示的に定義されていない場合、主キーは次のように選択または作成されます。

1) まず、テーブルに「空でない一意のインデックス」があるかどうかを確認します。ある場合は、

「空でない一意のインデックス」が1つだけの場合、このインデックスが主キーになります。

「空でない一意のインデックス」が複数ある場合は、インデックスの順序に従って、最初に定義された空でない一意のインデックスが主キーとして選択されます。

2) テーブル内に「空でない一意のインデックス」がない場合、6 バイトのポインタが主キーとして自動的に作成されます。

主キー インデックスにインデックス キーが 1 つしかない場合は、_rowid を使用して主キーを表示できます。実験テストは次のとおりです。

--テストテーブルを削除します。DROP TABLE IF EXISTS t1;
​
--テストテーブルを作成する CREATE TABLE `t1` (
 `id` int(11) NULLではない、
 `c1` int(11) デフォルト NULL,
 ユニーク uni_id (ID)、
 インデックスidx_c1(c1)
)ENGINE = InnoDB CHARSET = utf8;
​
--テストデータを挿入します INSERT INTO t1 (id, c1) SELECT 1, 1;
t1 (id, c1) に挿入し、2, 2 を選択します。
t1 (id, c1) に挿入し、4, 4 を選択します。
​
--データと_rowidを表示する
t1から*、_rowidを選択します。 


id 列はテーブル内の最初の一意かつ NOT NULL インデックスであるため、上記の _rowid は id の値と同じであることがわかります。

要約する

以上がこの記事の全内容です。この記事の内容が皆様の勉強や仕事に何らかの参考学習価値をもたらすことを願います。123WORDPRESS.COM をご愛顧いただき、誠にありがとうございます。

以下もご興味があるかもしれません:
  • 不足している主キーテーブル情報を取得するための MYSQL ステートメント

<<:  vue3 のさまざまな構文形式を比較したサンプルコード

>>:  Centos6.6 で php7 + nginx 環境をインストールする方法

推薦する

JavaScript 関数呼び出しの典型的なサンプルコード

目次JavaScript 関数呼び出しの典型的な例JS関数の定義と呼び出し方法要約するJavaScr...

HTML スクロールバーのテキストエリア属性の設定

1.オーバーフローコンテンツのオーバーフロー設定(設定されたオブジェクトにスクロールバーを表示するか...

Windows での MySQL のダウンロード、インストール、設定、使用に関するチュートリアル

MySQLの概要MySQL はリレーショナル データベース管理システムです。データベースは構造化され...

MySQLの通常インデックスとユニークインデックスの違いの詳しい説明

目次1 概念上の区別2 事例紹介3 クエリパフォーマンス4 アップデートのパフォーマンス4.1 記憶...

Vueのカスタムディレクティブの詳細なガイド

目次1. カスタム指示とは何ですか? 2. 指示をカスタマイズする方法フック機能3. 応用シナリオ入...

CSS 背景画像を設定するための 6 つの興味深いヒント

background-image は、おそらくすべてのフロントエンド開発者がキャリアの中で少なくとも...

MySQL MyISAM と InnoDB の違い

違い: 1. InnoDB はトランザクションをサポートしていますが、MyISAM はサポートしてい...

既存のMySQLデータベースの文字セットを統一する方法

序文データベースでは、一部のデータ テーブルとデータは latin1 であり、一部のデータ テーブル...

JSは画像の滝の流れの効果を実現します

この記事では、画像ウォーターフォールフローを実現するためのJSの具体的なコードを参考までに共有します...

12個のJavascriptテーブルコントロール(DataGrid)が整理されています

DataGrid コントロールの DataSource プロパティがデザイン時に設定されている場合、...

MySQL sql99構文の内部結合と非等価結合の詳細な説明

#事例: 従業員の給与水準を照会する 選択 給与、等級 から 従業員 参加する ジョブグレード g ...

Linuxドライバのプラットフォームバスの詳細説明

目次1. プラットフォームバスの紹介1.1. Linuxドライバの分離と階層化1.1.1. Linu...

MySQL スロークエリログの有効化と設定

導入MySQL スロー クエリ ログは、問題のある SQL ステートメントのトラブルシューティングや...

CentOS 7 で RPM パッケージを使用して MySQL 5.7.9 をインストールするチュートリアル

MySQL 5.7.9 のインストールチュートリアルを録画してみんなと共有しましょう環境の紹介:オペ...

Dockerはコンテナを通じてイメージを生成し、詳細にDockerCommitを送信します

目次ローカルでコンテナを作成した後、このコンテナに基づいてローカル イメージを作成し、このイメージを...