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 環境をインストールする方法

推薦する

Linux ファイアウォールを設定してポート 80 と 3306 を開く方法

ポート80も設定されています。まずファイアウォール設定ファイルを入力しますシェル># vim ...

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

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

VMware + Ubuntu18.04 による Hadoop クラスタ環境の構築に関するグラフィック チュートリアル

目次序文VMware クローン仮想マシン (準備、3 台の仮想マシンのクローン、1 台のマスター、2...

CSSで半透明の背景色を実現する2つの方法について簡単に説明します。

ページをレイアウトする際、ユーザーに異なる視覚効果を与えるために、div の背景色を半透明の状態に設...

MySQLは現在の日付と時刻を取得する関数

現在の日付 + 時刻 (日付 + 時刻) を取得する関数: now() mysql> now(...

JSは賞金の重さに基づいて当選確率を計算します

目次1. シナリオ例1.1. 抽選の賞品名を設定する1.2. 各賞の重みを設定する1.3. ラッキー...

CSS チュートリアル: CSS 属性メディア タイプ

スタイルシートの最も重要な機能の 1 つは、ページ、画面、電子シンセサイザーなどの複数のメディアに適...

Windows で virtualenv を使用して仮想環境を作成する方法 (2 つの方法)

オペレーティング システム: windows10_x64 Python バージョン: 3.6.8仮想...

親コンテナの CSS 均等分割 (完全三分の一) の実装

親コンテナの幅は固定されています。子要素が親の幅を均等に分割するには、どのような方法がありますか?コ...

VmWareでcentos7をインストールするときにインターネットにアクセスできない問題の解決策

Centos7 のインストール時に VmWare がインターネットにアクセスできない場合はどうすれば...

フォアマン Ubuntu16 クイックインストール

クイックスタートガイドForeman インストーラーは、完全に機能する Foreman セットアップ...

nginx の場所に複数の Proxy_pass メソッドがある

1. まず、nginxの位置情報に関する関連知識を確認しましょう1) 位置マッチング手順: ~ #波...

CSS で画像アダプティブ コンテナを実装するいくつかの方法 (要約)

多くの場合、画像をコンテナのサイズに合わせて調整する必要があります。 1. imgタグ方式幅と高さを...

この記事ではMySQLのNULLについて説明します。

目次序文MySQL の NULL 2 NULL占有長3 NULL値の比較4SQLはNULL値を処理す...

XHTML CSSを使用して正式なブログを書く

ブログの正式名称は「Web log」で、中国語で「ネットワークログ」を意味します。後にブログに短縮さ...