Heim >Datenbank >MySQL-Tutorial >MySQL-Optimierung – Beispielcode-Analyse einfacher Syntax
MySQL-Optimierung – Beispielcode-Analyse der einfachen Syntax
--mysql CREATE TABLE emp ( id INT DEFAULT 12 )2 >
--mysql -- 设置自增ID从N开始 CREATE TABLE emp ( ID INT PRIMARY KEY AUTO_INCREMENT ) AUTO_INCREMENT = 100 ; --(设置自增ID从100开始)Der MySQL-Server verwaltet zwei Arten von MySQL-Systemparametern (Systemvariablen): globale Variablen und Sitzungsvariablen.
Ihre Bedeutung und Unterschiede sind in ihren jeweiligen Namen dargestellt, und Änderungen an ihnen wirken sich nur auf diese Sitzungsebene aus.
Änderungen an ihnen wirken sich auf alle aus Neue Sitzungen (bestehende Sitzungen sind von der Änderung nicht betroffen) bis zum nächsten Neustart des MySQL-Servers.
Beachten Sie, dass sich die Änderung nicht auf Neustarts erstrecken kann. Wenn Sie den neuen Wert beim Neustart des MySQL-Servers verwenden möchten, können Sie ihn nur angeben, indem Sie Variablenoptionen in der Befehlszeile angeben oder die Optionsdatei ändern Die Änderung durch SET ist „Kann nicht über Neustarts hinweg erreicht werden“.
Jede Systemvariable hat einen Standardwert, der beim Kompilieren des MySQL-Systems festgelegt wird.
Um Systemvariablen anzugeben, können Sie im Allgemeinen Optionen in der Befehlszeile angeben, wenn der Server gestartet wird, oder über die Optionsdatei.
Natürlich können die meisten Systemvariablen über den Set-Befehl angegeben werden, wenn das System ausgeführt wird. Wert.
Zeigen Sie den aktuellen Standard-Startwert und Schrittwert der automatisch inkrementierenden Spalte des Systems an
F: Wenn es eine Tabelle mit einem automatisch inkrementierenden Primärschlüssel gibt, dessen Feld id ist, wenn es Nachdem Sie 10 Daten in die Tabelle eingefügt haben, löschen Sie die Daten mit den IDs 8, 9 und 10, starten Sie MySQL neu und fügen Sie nach
SHOW GLOBAL VARIABLES LIKE 'auto_incre%'; -- 全局变量Antwort: Wenn der Tabellentyp MyISAM ist, dann ist er 11. Wenn der Tabellentyp InnoDB ist, ist die ID 8.
Dies liegt daran, dass die beiden Arten von Speicher-Engines den maximalen ID-Datensatz auf unterschiedliche Weise speichern. Die MyISAM-Tabelle zeichnet die maximale ID in der Datendatei auf und der maximale ID-Wert des automatisch inkrementierten Primärschlüssels geht nicht verloren Neustart von MySQL;
InnoDB zeichnet den maximalen ID-Wert im Speicher auf, sodass nach dem Neustart von MySQL oder dem Ausführen einer OPTIMIZE-Operation für die Tabelle der maximale ID-Wert verloren geht.
Übrigens gibt es für MYSQL vier Möglichkeiten, den Auto-Inkrementwert der aktuellen Tabelle zu erhalten
@@identity stellt die letzte Aktualisierung der Tabelle mit der Identität dar Attribut (d. h. Auto-Inkrement-Spalte) Der Wert der entsprechenden Auto-Inkrement-Spalte beim Einfügen von Daten ist eine vom System definierte globale Variable.
(1) SELECT MAX(id) FROM person 针对特定表 (2) SELECT LAST_INSERT_ID() 函数 针对任何表 (3) SELECT @@identity 针对任何表Voraussetzung für die Verwendung von @@identity ist, dass nach dem Ausführen des Einfügevorgangs die Verbindung beim Ausführen von select @@identity nicht geschlossen wird, da das Ergebnis sonst ein NULL-Wert ist.
Wenn Sie auf eine bestimmte Tabelle abzielen, wird die Verwendung dieser Methode empfohlen
(4) SHOW TABLE STATUS LIKE 'person'
3. Ändern Sie die Tabelle name
DESC empÄndern Sie den int-Typ des ID-Felds in bigint
ALTER TABLE emp RENAME emp2
Erforderlich beim Ändern des Feldnamens in MYSQL. Fügen Sie den Datentyp des Felds hinzu, andernfalls wird ein Fehler gemeldet. CHANGE kann auch nur den Datentyp ändern, um den gleichen Effekt wie MODIFY zu erzielen besteht darin, den „neuen Feldnamen“ und den „alten Feldnamen“ in der SQL-Anweisung auf denselben Namen zu setzen. Ändern Sie nur den „Datentyp“, ändern Sie beispielsweise den Datentyp, ändern Sie im Beispiel gerade die ID-Spalte zum Bigint-Datentyp
ALTER TABLE emp2 MODIFY id BIGINT
8, Felder löschen
<p style="margin-bottom: 7px;">ALTER TABLE emp2 CHANGE id id BIGINT<br/></p>MYSQL löscht Felder, ohne das Schlüsselwort COLUMN hinzuzufügen
ALTER TABLE emp2 ADD NAME NVARCHAR(200) NULL
Wenn es sich um eine Fremdschlüsseleinschränkung handelt, ist es erforderlich, DROP FOREIGN KEY zu verwenden. Wenn es sich um eine Primärschlüsseleinschränkung handelt, müssen Sie DROP verwenden PRIMÄRSCHLÜSSEL
--Löschen Sie die Fremdschlüsseleinschränkung
ALTER TABLE emp2 DROP NAME--Löschen Sie die Primärschlüsseleinschränkung
ALTER TABLE emp2 DROP FOREIGN KEY fk_emp_dept
Aber wenn Sie mehrere Tabellen gleichzeitig löschen oder vor dem Löschen ein Urteil fällen möchten
ALTER TABLE emp2 DROP PRIMARY KEY pk_emp_deptZusätzlich:
DROP TABLE emp2
Egal innodb Engine oder MYISAM-Engine-Tabelle kann es nur eine Spalte für die automatische Inkrementierung geben, und die Spalte für die automatische Inkrementierung muss eine Indexspalte sein, unabhängig davon, ob es sich um einen Sekundärindex oder einen Primärschlüsselindex handelt
DROP TABLE IF EXISTS emp1 ,emp2
Das obige ist der detaillierte Inhalt vonMySQL-Optimierung – Beispielcode-Analyse einfacher Syntax. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!