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

MySQL-Abfrage – Erlernen grundlegender Abfrageoperationen

Vorwort MySQL ist das beliebteste relationale Dat...

Vue verwendet Openlayers zum Laden von Tiandi Map und Amap

Inhaltsverzeichnis 1. Weltkarte 1. Installieren S...

Vue implementiert die Funktionen Vergrößern, Verkleinern und Ziehen

In diesem Artikelbeispiel wird der spezifische Co...

JSONP-domänenübergreifende Simulation der Baidu-Suche

Inhaltsverzeichnis 1. Was ist JSONP 2. JSONP-Cros...

Lösung für das CSS-Höhenkollapsproblem

1. Hoher Einsturzgrad Im Dokumentfluss wird die H...

So verstehen Sie das Ref-Attribut von React genau

Inhaltsverzeichnis Überblick 1. Erstellen eines R...

Implementierung des Umschreibesprungs in Nginx

1. Neuer und alter Domain-Namenssprung Anwendungs...

In diesem Artikel erfahren Sie mehr über NULL in MySQL

Inhaltsverzeichnis Vorwort NULL in MySQL 2 NULL b...