MySQL erhält schnell den Tabelleninstanzcode ohne Primärschlüssel in der Bibliothek

MySQL erhält schnell den Tabelleninstanzcode ohne Primärschlüssel in der Bibliothek

Überblick

Lassen Sie uns einige SQL-Anweisungen zum Anzeigen von Tabellen ohne Primärschlüssel in der MySQL-Datenbank zusammenfassen. Werfen wir einen Blick darauf.

1. Zeigen Sie die Primärschlüsselinformationen der Tabelle an

--Informationen zum Primärschlüssel der Tabelle anzeigen SELECT
 t.Tabellenname,
 t.CONSTRAINT_TYPE,
 c.SPALTENNAME,
 c.ORDINAL_POSITION 
AUS
 INFORMATION_SCHEMA.TABLE_CONSTRAINTS AS t,
 INFORMATION_SCHEMA.KEY_COLUMN_USAGE AS c 
WO
 t.Tabellenname = c.Tabellenname 
 UND t.CONSTRAINT_TYPE = 'PRIMARY KEY' 
 UND t.TABLE_NAME = '<TABLE_NAME>' 
 UND t.TABLE_SCHEMA = '<TABLE_SCHEMA>'; 


2. Zeigen Sie die Tabelle ohne Primärschlüssel an

--Tabelle ohne Primärschlüssel anzeigen SELECT table_schema, table_name,TABLE_ROWS
VON information_schema.tables
WHERE (Tabellenschema, Tabellenname) NOT IN (
SELECT DISTINCT Tabellenschema, Tabellenname
VON information_schema.columns
WO COLUMN_KEY = 'PRI'
)
UND Tabellenschema NICHT IN ('sys', 'mysql', 'information_schema', 'performance_schema'); 


3. Tabelle ohne Primärschlüssel

In der Innodb-Speicher-Engine hat jede Tabelle einen Primärschlüssel, und die Daten werden in der Reihenfolge des Primärschlüssels organisiert und gespeichert. Dieser Tabellentyp wird als indexorganisierte Tabelle bezeichnet.

Wenn bei der Definition einer Tabelle kein Primärschlüssel explizit angegeben wird, wird dieser folgendermaßen ausgewählt bzw. erstellt:

1) Stellen Sie zunächst fest, ob die Tabelle einen „nicht leeren eindeutigen Index“ enthält. Wenn ja,

Wenn es nur einen "nicht leeren eindeutigen Index" gibt, ist dieser Index der Primärschlüssel

Wenn mehrere „nicht leere eindeutige Indizes“ vorhanden sind, wird der erste definierte nicht leere eindeutige Index entsprechend der Reihenfolge der Indizes als Primärschlüssel ausgewählt.

2) Wenn in der Tabelle kein „nicht leerer eindeutiger Index“ vorhanden ist, wird automatisch ein 6-Byte-Zeiger als Primärschlüssel erstellt.

Wenn der Primärschlüsselindex nur einen Indexschlüssel hat, können Sie _rowid verwenden, um den Primärschlüssel anzuzeigen. Der experimentelle Test sieht wie folgt aus:

--Löschen Sie die Testtabelle DROP TABLE IF EXISTS t1;
​
--Erstellen Sie eine Testtabelle CREATE TABLE `t1` (
 `id` int(11) NICHT NULL,
 `c1` int(11) DEFAULT NULL,
 EINDEUTIGE uni_id (id),
 INDEX idx_c1(c1)
)ENGINE = InnoDB CHARSET = utf8;
​
--Testdaten einfügen INSERT INTO t1 (id, c1) SELECT 1, 1;
EINFÜGEN IN t1 (id, c1) AUSWÄHLEN 2, 2;
EINFÜGEN IN t1 (id, c1) AUSWÄHLEN 4, 4;
​
--Daten und _rowid anzeigen
WÄHLEN SIE *, _rowid VON t1; 


Sie können sehen, dass die obige _rowid mit dem Wert von id identisch ist, da die id-Spalte der erste eindeutige und NICHT NULL-Index in der Tabelle ist.

Zusammenfassen

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, dass der Inhalt dieses Artikels einen gewissen Lernwert für Ihr Studium oder Ihre Arbeit hat. Vielen Dank für Ihre Unterstützung von 123WORDPRESS.COM.

Das könnte Sie auch interessieren:
  • MySQL-Anweisung zum Abrufen fehlender Primärschlüsseltabelleninformationen

<<:  Beispielcode zum Vergleich verschiedener Syntaxformate von vue3

>>:  So installieren Sie eine PHP7 + Nginx-Umgebung unter CentOS6.6

Artikel empfehlen

MySQL-Lösung zur funktionalen Indexoptimierung

Bei der Verwendung von MySQL führen viele Entwick...

Detaillierte Erläuterung des Zahlungsfunktionscodes des Vue-Projekts

1. Alipay-Methode: Alipay-Methode: Klicken Sie zu...

Vue verwendet E-Charts, um ein Organigramm zu zeichnen

Gestern habe ich einen Blog über den kreisförmige...

So konfigurieren Sie NAS unter Windows Server 2019

Vorwort Dieses Tutorial installiert die neuste Ve...

Detaillierte Erläuterung des Vue-Routing-Routers

Inhaltsverzeichnis Routing-Plugins modular nutzen...

Erstellen und Verwenden von Docker-Datenvolumencontainern

Ein Datenvolumencontainer ist ein Container, der ...

Vue3 Vue-Ereignisbehandlungshandbuch

Inhaltsverzeichnis 1. Grundlegende Ereignisbehand...

MySQL SHOW PROCESSLIST unterstützt den gesamten Prozess der Fehlerbehebung

1. SHOW PROCESSLIST-Befehl SHOW PROCESSLIST zeigt...

SQL-Funktion zum Zusammenführen eines Feldes

Vor kurzem musste ich alle Felder einer verknüpft...

CSS3 realisiert Partikelanimationseffekte beim Matching von Königen

Beim Codieren werden Sie feststellen, dass viele ...