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

Docker-Konfiguration Alibaba Cloud Container Service-Betrieb

Konfigurieren des Alibaba Cloud Docker Container ...

So benennen Sie die Tabelle in MySQL um und worauf Sie achten müssen

Inhaltsverzeichnis 1. Tabellenmethode umbenennen ...

Anwendungsbeispiele für die virtuelle Liste des WeChat-Applets

Inhaltsverzeichnis Vorwort Was ist eine virtuelle...

Wie implementiert MySQL ACID-Transaktionen?

Vorwort Kürzlich wurde ich in einem Interview gef...

SQL-Implementierung von LeetCode (182. Doppelte Postfächer)

[LeetCode] 182.Doppelte E-Mails Schreiben Sie ein...

So installieren Sie einen SVN-Server unter Linux

1. Yum-Installation yum installiere Subversion 2....

Verwenden Sie Iframe, um Wettereffekte auf Webseiten anzuzeigen

CSS: Code kopieren Der Code lautet wie folgt: *{Ra...

Implementierung von Linux-Dateisystemvorgängen

In dieser Lesenotiz werden hauptsächlich die Vorg...

Analysieren Sie den Unterschied zwischen ES5 und ES6

Inhaltsverzeichnis Überblick Funktionssignatur Op...

js, um den Zahlungs-Countdown zu realisieren und zur Startseite zurückzukehren

Zahlungs-Countdown, um zur Startseite zurückzukeh...

Implementierungsmethode für den React State-Zustand und Lebenszyklus

1. Methoden zur Implementierung von Komponenten:組...

Detaillierte Schritte zur vollständigen Deinstallation von MySQL 5.7

Dieser Artikel fasst hauptsächlich verschiedene P...

Detaillierte Erklärung des JavaScript-Statuscontainers Redux

Inhaltsverzeichnis 1. Warum Redux 2. Redux-Datenf...