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

Verständnis und Anwendungsszenarien von ES6-Erweiterungsoperatoren

Inhaltsverzeichnis 1. Ersetzen Sie die Apply-Meth...

Zehn beliebte Regeln für das Interface-Design

<br />Dies ist ein Artikel, den ich vor lang...

Implementierung eines einfachen Karussells auf Basis von JavaScript

In diesem Artikel wird der spezifische JavaScript...

JS implementiert die Benutzerregistrierungsschnittstellenfunktion

In diesem Artikelbeispiel wird der spezifische JS...

CSS zur Implementierung von Sprites und Schriftsymbolen

Sprites: In der Vergangenheit war jede Bildressou...

Thumbnail-Hover-Effekt mit CSS3 implementiert

Ergebnisse erzielenImplementierungscode html <...

Tutorial zur Installation und Konfiguration von VMware Tools für Ubuntu 18.04

Dieser Artikel beschreibt die Installation und Ko...

Verwenden Sie die vertikale Ausrichtung, um Eingabe und Bild auszurichten

Wenn Sie Eingabe und Bild in dieselbe Zeile setzen...

Zusammenfassung der MySQL-Fremdschlüsseleinschränkungen und Tabellenbeziehungen

Inhaltsverzeichnis Fremdschlüssel So ermitteln Si...

Gemeinsame MySQL-Indexwirksamkeitsbedingungen und Indexungültigkeitsbedingungen

Inhaltsverzeichnis 1. Bedingungen für das Versage...