Beispielanweisungen für Indizes und Einschränkungen in MySQL

Beispielanweisungen für Indizes und Einschränkungen in MySQL

Fremdschlüssel

Abfrage, bei welchen Tabellen der Primärschlüssel einer Tabelle der Fremdschlüssel ist

WÄHLEN
	TABELLE_NAME,
	SPALTENNAME,
	Einschränkungsname,
	REFERENZIERTER TABELLENNAME,
	REFERENCED_COLUMN_NAME
AUS
	INFORMATION_SCHEMA.KEY_COLUMN_USAGE
WO
	TABLE_SCHEMA = "meinDatenbankname"
	AND REFERENCED_TABLE_NAME = 'Tabellenname';

Exportieren aller Fremdschlüsselanweisungen

WÄHLEN
	CONCAT('ALTER TABLE', TABELLENNAME, 'ADD CONSTRAINT', CONSTRAINT_NAME, 'FREMDER SCHLÜSSEL (', SPALTENNAME, ') REFERENZEN ', REFERENZIERTER TABELLENNAME, '(', REFERENZIERTER SPALTENNAME, ') ON DELETE CASCADE ON UPDATE CASCADE;')
AUS
	INFORMATION_SCHEMA.KEY_COLUMN_USAGE
WO
	TABLE_SCHEMA = "meinDatenbankname"
	UND REFERENCED_TABLE_NAME IST NICHT NULL;

Löschen Sie alle Fremdschlüsselanweisungen

WÄHLEN
	CONCAT('ALTER TABLE', TABELLENNAME, 'DROP FOREIGN KEY', CONSTRAINT_NAME, ';')
AUS
	INFORMATION_SCHEMA.KEY_COLUMN_USAGE
WO
	TABLE_SCHEMA = "meinDatenbankname"
	UND REFERENCED_TABLE_NAME IST NICHT NULL;

Automatische Inkrementierung

Exportieren Sie die Anweisung zum Erstellen eines Auto-Increment-Felds

WÄHLEN
	CONCAT( 'ALTER TABLE `', TABLE_NAME, '` ', 'MODIFY COLUMN `', COLUMN_NAME, '` ', UPPER( COLUMN_TYPE ), ' NOT NULL AUTO_INCREMENT COMMENT "',COLUMN_COMMENT,'";' ) als 'ADD_AUTO_INCREMENT'
AUS
	information_schema.SPALTEN 
WO
	TABLE_SCHEMA = "meinDatenbankname" 
	UND EXTRA = UPPER( 'AUTO_INCREMENT' ) 
BESTELLEN BIS
	TABELLENNAME ASC;

Erstellen und Löschen aller Auto-Increment-Felder

WÄHLEN
	CONCAT( 'ALTER TABLE `', TABLE_NAME, '` ', 'MODIFY COLUMN `', COLUMN_NAME, '` ', UPPER( COLUMN_TYPE ), ' NOT NULL;' ) als 'DELETE_AUTO_INCREMENT'
AUS
	information_schema.SPALTEN 
WO
	TABLE_SCHEMA = "meinDatenbankname" 
	UND EXTRA = UPPER( 'AUTO_INCREMENT' ) 
BESTELLEN BIS
	TABELLENNAME ASC;

Index

Alle Indizes exportieren

WÄHLEN
	KONKAT(
		'ALTER TABLE `',
		TABELLE_NAME,
		'` ',
		'HINZUFÜGEN ',
	WENN
		(
			NON_UNIQUE = 1,
		FALL
				UPPER( INDEX_TYPE ) 
				WENN 'VOLLTEXT' DANN
				'VOLLSTÄNDIGER TEXTINDEX' 
				WENN 'RÄUMLICH', DANN
				'SPATIAL INDEX' ELSE CONCAT( 'INDEX `', INDEX_NAME, '` USING ', INDEX_TYPE ) 
			ENDE,
		WENN
			(
				UPPER( INDEX_NAME ) = 'PRIMARY',
				CONCAT( 'PRIMÄRSCHLÜSSEL VERWENDEN ', INDEX_TYPE ),
			CONCAT( 'EINDEUTIGER INDEX `', INDEX_NAME, '` VERWENDUNG ', INDEX_TYP ))),
		CONCAT( '(`', SPALTENNAME, '`)' ),
		';' 
) AS 'ADD_ALL_INDEX' 
AUS
	information_schema.STATISTIK 
WO
	TABLE_SCHEMA = "meinDatenbankname" 
BESTELLEN BIS
	TABELLE_NAME ASC,
	INDEX_NAME ASC;

Alle Indizes löschen

WÄHLEN
	CONCAT( 'ALTER TABLE `', TABLE_NAME, '` ', CONCAT( 'DROP ', WENN (UPPER( INDEX_NAME ) = 'PRIMARY', 'PRIMARY KEY', CONCAT( 'INDEX `', INDEX_NAME, '`' ))), ';' ) AS 'DELETE_ALL_INDEX' 
AUS
	information_schema.STATISTIK 
WO
	TABLE_SCHEMA = "meinDatenbankname" 
BESTELLEN BIS
	TABELLENNAME ASC;

Datenzusammenführung

Beim Migrieren und Zusammenführen von Daten ist es schwieriger, dass die Primärschlüssel verschiedener Datenbanken wiederholt werden, sodass wir die Primärschlüsselwerte stapelweise ändern müssen. Um Duplikate zu vermeiden, können wir die Autoinkrementnummer in eine Zeichenfolge ändern

Die Schritte sind grundsätzlich wie folgt

  • Automatische Primärschlüsselinkrementierung abbrechen
  • Alle Fremdschlüssel löschen
  • Ändern Sie das Primärschlüsselfeld in varchar
  • Alle Fremdschlüssel hinzufügen
  • Ändern des Wertes eines Primärschlüssels
  • Zusammenführen von Daten

Seien Sie vorsichtig beim Ändern von Primärschlüsselwerten

Wenn bei Selbstassoziationen wie ID und PID der Wert nicht direkt geändert werden kann, müssen Sie zuerst die Einschränkung löschen und sie dann hinzufügen.

Zum Beispiel

Löschen von Selbstbeschränkungen

ALTER TABLE `t_director` DROP FOREIGN KEY `fk_directorpid`;

Wert ändern

Aktualisiere t_director, setze directorid=directorid+100000000;
Aktualisiere t_director, setze directorid=CONV(directorid,10,36);

aktualisiere t_director, setze directorpid=directorpid+100000000, wobei directorpid nicht null ist;
Aktualisiere t_director, setze directorpid=CONV(directorpid,10,36), wobei directorpid nicht null ist;

Hinzufügen von Selbstbeschränkungen

ALTER TABLE t_director ADD CONSTRAINT fk_directorpid FOREIGN KEY (directorpid) REFERENCES t_director(director-id) ON DELETE CASCADE ON UPDATE CASCADE;

Beachten

Die letzten beiden Parameter von CONV(directorpid,10,36) sind die ursprüngliche digitale Basis und die zu konvertierende Basis.

Der erste Parameter kann konvertiert werden, auch wenn der Typ varchar ist, solange der Inhalt eine Zahl ist.

Oben sind die Einzelheiten der Beispielanweisungen für Indizes und Einschränkungen in MySQL aufgeführt. Weitere Informationen zu MySQL-Indizes und -Einschränkungen finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM!

Das könnte Sie auch interessieren:
  • Erläuterung des MySQL-Nicht-Null-Einschränkungsfalls
  • MySQL-Fremdschlüsseleinschränkung (FOREIGN KEY) Fallerklärung
  • Zusammenfassung der MySQL-Fremdschlüsseleinschränkungen und Tabellenbeziehungen
  • MySQL-Integritätsbeschränkungen – Definition und Beispiel-Tutorial
  • Neue Funktionen in MySQL 8.0 - Einführung in Check Constraints
  • Erstellen, Einschränkungen und Löschen von Fremdschlüsseln in MySQL
  • Beispielerklärung von MySQL-Fremdschlüsseleinschränkungen
  • Detaillierte Erläuterung der MySQL-Fremdschlüsseleinschränkungen
  • Detaillierte Erläuterung des Beispiels für MySQL-Integritätsbeschränkungen
  • MySQL-Einschränkungen - Super detaillierte Erklärung

<<:  HTML-Tabellen-Tag-Tutorial (35): spaltenübergreifendes Attribut COLSPAN

>>:  Docker ändert die Konfigurationsinformationen eines nicht gestarteten Containers

Artikel empfehlen

MySQL 5.6-Binärinstallationsprozess unter Linux

1.1 Download des binären Installationspakets wget...

Vue implementiert die richtige Slide-Out-Layer-Animation

In diesem Artikelbeispiel wird der spezifische Co...

Analyse des HTTP-Schnittstellentestprozesses basierend auf Postman

Ich habe zufällig ein tolles Tutorial zum Thema k...

jQuery-Plugin zum Erreichen einer Bildunterbrechung

In diesem Artikel wird der spezifische Code des j...

Die Hook-Funktion von Vue-Router implementiert Routing Guard

Inhaltsverzeichnis Überblick Globale Hook-Funktio...

Beispielcode zum Generieren eines QR-Codes mit js

Vor einiger Zeit musste das Projekt die Funktion ...

Zwei Möglichkeiten, damit IE6 Bilder im PNG-24-Format normal anzeigt

Methode 1: Bitte fügen Sie den folgenden Code nach...

React-Internationalisierung – Verwendung von react-intl

Wie erreicht man Internationalisierung in React? ...

Einfaches Anwendungsbeispiel für MySQL-Trigger

Dieser Artikel veranschaulicht anhand von Beispie...

Implementierungsprozessdatensatz für benutzerdefinierte Vue-Tabellenspalten

Inhaltsverzeichnis Vorwort Rendern setTable-Kompo...

Analyse der zum Ausführen von Docker erforderlichen Berechtigungen

Zum Ausführen von Docker sind Root-Rechte erforde...

Tutorial zu HTML-Tabellen-Tags (8): Hintergrundbild-Attribut BACKGROUND

Legen Sie ein Hintergrundbild für die Tabelle fes...

Langsame MySQL-Abfrage: Langsame Abfrage aktivieren

1. Was nützt eine langsame Abfrage? Es kann alle ...