Beispielanalyse der von MySQL 5.7 generierten Spaltennutzung

Beispielanalyse der von MySQL 5.7 generierten Spaltennutzung

Dieser Artikel veranschaulicht anhand von Beispielen die Verwendung generierter Spalten in MySQL 5.7. Teilen Sie uns die Einzelheiten zu Ihrer Information mit:

Der Wert einer generierten Spalte wird aus dem Ausdruck in der Spaltendefinition berechnet.

MySQL 5.7 unterstützt zwei Typen generierter Spalten:

1. Virtuell generierte Spalte: Der Spaltenwert wird berechnet, wenn Datensätze aus der Tabelle gelesen werden. Eine dauerhafte Speicherung der Daten auf der Festplatte erfolgt nicht.

2. Gespeicherte generierte Spalte: Wenn ein Datensatz in die Tabelle geschrieben wird, wird der Spaltenwert berechnet und als reguläre Spalte auf der Festplatte gespeichert.

Daher benötigt virtuell weniger Speicherplatz als gespeichert. Wenn der generierte Spaltentyp nicht angegeben ist, ist der standardmäßig generierte Spaltentyp in MySQL 5.7 virtuell.

Die Syntax zum Definieren einer generierten Spalte lautet:

col_name data_type [IMMER GENERIERT] AS (Ausdruck)
 [VIRTUELL | GESPEICHERT] [NICHT NULL | NULL]
 [EINZIGARTIGER [SCHLÜSSEL]] [[PRIMÄRER] SCHLÜSSEL]
 [KOMMENTAR 'Zeichenfolge']

Wir erstellen eine Tabelle und legen eines der Felder als generierte Spalte fest.

CREATE TABLE-Test (
 id INT (11) UNSIGNED NOT NULL AUTO_INCREMENT,
 chinesisch DOUBLE NOT NULL DEFAULT '0',
 mathematik DOUBLE NOT NULL DEFAULT '0',
 englisch DOUBLE NOT NULL DEFAULT '0',
 Gesamtpunktzahl DOUBLE AS (Chinesisch + Mathematik + Englisch),
 PRIMÄRSCHLÜSSEL (id)
)ENGINE=INNODB STANDARD-CHARSET=utf8mb4;

Wir fügen Daten in die Tabelle ein

in Test (Chinesisch, Mathematik, Englisch) Werte (66, 72, 54) einfügen;
wähle * aus Test;

Beachten Sie, dass wir in den generierten Spalten keine Werte manuell angeben können, da dies den FEHLER 3105 auslöst.

Wenn Sie den Feldnamen total_score in die Insert-Anweisung aufnehmen möchten, können Sie seinen Wert nur auf DEFAULT setzen.

in Test einfügen (Chinesisch, Mathematik, Englisch, Gesamtpunktzahl) Werte (33, 44, 55, STANDARD);

Wenn die Tabelle bereits vorhanden ist, können wir mit der Anweisung „Alter Table“ generierte Spalten erstellen, ändern oder löschen.

alter table test add column times_score double generiert immer 
als (Chinesisch * Mathematik * Englisch) gespeichert;

Ändern des Datentyps und des Ausdrucks der generierten Spalten

alter table test modify column times_score float generiert immer 
als (Chinesisch * Mathematik * Englisch * 10) gespeichert;

Umbenennen der generierten Spalten

alter table test change times_score times_score_new float generiert immer 
als (Chinesisch * Mathematik * Englisch * 10) gespeichert;

Generierte Spalten entfernen

Tabelle ändern, Test, Spalte „times_score_new“ löschen;

Eine virtuelle Spalte kann nicht in eine gespeicherte generierte Spalte geändert werden und umgekehrt. Du kannst es nur zuerst löschen und dann erneut hinzufügen

Tabelle ändern, Test, Spalte total_score löschen;
alter table test add column total_score double wird immer generiert 
als (Chinesisch + Mathematik + Englisch) gespeichert;

Normale Felder in einer Tabelle können so geändert werden, dass sie gespeicherte generierte Spalten sind, nicht jedoch virtuell generierte Spalten.

Tabelle ändern, Test, Spalte ändern, chinesisch, doppelt generiert, immer 
als (math + 1) gespeichert;

Die gespeicherte generierte Spalte kann in ein reguläres Feld mit einem generierten Wert geändert werden

Tabellentest ändern, Spalte total_score double ändern;

Leser, die an weiteren MySQL-bezogenen Inhalten interessiert sind, können sich die folgenden Themen auf dieser Site ansehen: „MySQL-Abfragekenntnisse“, „Zusammenfassung der allgemeinen MySQL-Funktionen“, „MySQL-Protokolloperationskenntnisse“, „Zusammenfassung der MySQL-Transaktionsoperationskenntnisse“, „MySQL-gespeicherte Prozedurkenntnisse“ und „Zusammenfassung der MySQL-Datenbanksperrenkenntnisse“.

Ich hoffe, dass dieser Artikel für jedermann beim Entwurf einer MySQL-Datenbank hilfreich ist.

Das könnte Sie auch interessieren:
  • Detaillierte Beispiele zur Konvertierung von Zeilen in Spalten und Spalten in Zeilen in MySQL
  • Neue Felder (Spalten) zu bestehenden Tabellen in der MySQL-Datenbank hinzufügen
  • So fügen Sie Seriennummern zu Abfrageergebnissen in MySQL hinzu
  • So verwenden Sie MySQL, um die Anzahl identischer Werte in einer Spalte abzufragen
  • Beispiel für die Verwendung von MySQL zum Zählen der Anzahl unterschiedlicher Werte in einer Spalte
  • Gibt alle Tabellennamen, Spaltennamen und Datentyphinweise einer Datenbank in Mysql zurück
  • MySQL fügt Tabellenspalten und Einschränkungen hinzu, ändert und löscht sie usw.
  • Datenbankimplementierung der Zeilen- und Spaltenkonvertierung (MySQL-Beispiel)
  • Verwenden der dynamischen Konvertierung von Zeilen in Spalten in einer gespeicherten MySQL-Prozedur
  • MySQL-Konvertierung von Spalten in Zeilen, Methode zum Zusammenführen von Feldern (unbedingt lesen)
  • So konvertieren Sie Spaltenwerte in MySQL in Spalten

<<:  So ändern Sie die Ali-Quelle in Ubuntu 20.04

>>:  Beispiele für korrekte Beurteilungsmethoden für Datentypen in JS

Artikel empfehlen

So verstecken Sie RAR-Dateien in Bildern

Sie können dieses Logo lokal als .rar-Datei speic...

Detaillierte Erläuterung des Installationsprozesses von Jenkins auf CentOS 7

Installieren Sie Jenkins über Yum 1. Installation...

Mysql aktualisiert die Datenbank dynamisch - Skriptbeispiel - Erklärung

Das spezifische upgrade -Skript lautet wie folgt:...

Zusammenfassung zur Verwendung des MySQL-Autorisierungsbefehls „grant“

So verwenden Sie den MySQL-Autorisierungsbefehl „...

Grafisches Tutorial zur Installation und Konfiguration von MySQL 8.0.11 (Win10)

In diesem Artikel werden die Installations- und K...

Spezifische Verwendung von Linux which Befehl

Oft möchten wir in Linux eine Datei finden, wisse...

Eine kurze Einführung in MySQL-Funktionen

Inhaltsverzeichnis 1. Mathematische Funktionen 2....

Zusammenfassung des Front-End-Wissens im Gokudō-Spiel

Hintergrund Zu Beginn meines Japanisch-Lernens fi...

Implementierung mehrerer Tomcat-Instanzen auf einer einzigen Maschine

1. Einleitung Zunächst müssen wir eine Frage bean...

CSS, um horizontale Linien auf beiden Seiten des mittleren Textes zu erreichen

1. Die Eigenschaft „vertical-align“ erzielt folge...

Tutorial zur Installation und Konfiguration von msmtp und mutt für Raspberry Pi

1. Installieren Sie mutt sudo apt-get install mut...

17 JavaScript-Einzeiler

Inhaltsverzeichnis 1. DOM & BOM bezogen 1. Üb...