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

CentOS 7: Erläuterung zum Wechseln des Boot-Kernels und des Boot-Modus

Centos7-Switch-Boot-Kernel Hinweis: Bei Bedarf wi...

Anpassungsmethode des Linux-Peripheriedateisystems

Vorwort Wenn wir von Linux-Systemen sprechen, mei...

Tutorial zur Verwendung von Hyperlink-Tags in XHTML

Hyperlink, auch „Link“ genannt. Man kann sagen, d...

Detaillierte Erläuterung der grundlegenden Datentypen in mysql8.0.19

MySQL-Basisdatentypen Übersicht über gängige MySQ...

Detaillierte Erklärung zum Anzeigen der MySQL-Speichernutzung

Vorwort Dieser Artikel stellt hauptsächlich die r...

MySql 8.0.16-win64 Installations-Tutorial

1. Entpacken Sie die heruntergeladene Datei wie u...

Dinge, die Sie nicht über die CSS-Pseudoelemente ::before und ::after wissen

CSS hat zwei Pseudoklassen, die nicht häufig verw...