Heim > Datenbank > MySQL-Tutorial > Wie ändere ich eine MySQL-Datenbanktabelle?

Wie ändere ich eine MySQL-Datenbanktabelle?

青灯夜游
Freigeben: 2020-10-02 09:46:25
Original
16128 Leute haben es durchsucht

So ändern Sie die MySQL-Datenbanktabelle: Verwenden Sie die Anweisung „ALTER TABLE“, um die Struktur der Originaltabelle zu ändern, z. B. Felder hinzuzufügen oder zu löschen, den ursprünglichen Felddatentyp zu ändern, Felder oder Tabellen umzubenennen, den Tabellenzeichensatz zu ändern, usw. ;Syntax „ALTER TABLE [Optionen ändern]“.

Wie ändere ich eine MySQL-Datenbanktabelle?

Voraussetzung für die Änderung der Datentabelle ist, dass die Tabelle bereits in der Datenbank vorhanden ist. Das Ändern einer Tabelle bezieht sich auf das Ändern der Struktur einer vorhandenen Datentabelle in der Datenbank. Das Ändern von Datentabellen ist auch bei der Datenbankverwaltung von wesentlicher Bedeutung. Es ähnelt dem Zeichnen einer Skizze. Wenn Sie zu viel zeichnen, können Sie es mit einem Radiergummi löschen.

Wenn wir nicht verstehen, wie die Datentabelle geändert wird, ist das gleichbedeutend mit Wegwerfen und Neuzeichnen, solange wir einen Fehler machen, was unnötige Kosten erhöht.

In MySQL können Sie die ALTER TABLE-Anweisung verwenden, um die Struktur der ursprünglichen Tabelle zu ändern, z. B. Spalten hinzuzufügen oder zu löschen, den ursprünglichen Spaltentyp zu ändern, Spalten oder Tabellen umzubenennen usw.

Das Syntaxformat ist wie folgt:

ALTER TABLE <表名> [修改选项]
Nach dem Login kopieren

Das Syntaxformat der Änderungsoption ist wie folgt:

{ ADD COLUMN <列名> <类型>
| CHANGE COLUMN <旧列名> <新列名> <新列类型>
| ALTER COLUMN <列名> { SET DEFAULT <默认值> | DROP DEFAULT }
| MODIFY COLUMN <列名> <类型>
| DROP COLUMN <列名>
| RENAME TO <新表名>
| CHARACTER SET <字符集名>
| COLLATE <校对规则名> }
Nach dem Login kopieren

Ändern Sie den Tabellennamen

MySQL verwendet die ALTER TABLE-Anweisung, um den Tabellennamen zu ändern Die Regeln lauten wie folgt:

ALTER TABLE <旧表名> RENAME [TO] <新表名>;
Nach dem Login kopieren

Unter diesen ist TO ein optionaler Parameter. Unabhängig davon, ob er verwendet wird oder nicht, hat er keinen Einfluss auf das Ergebnis.

Beispiel 1

Verwenden Sie ALTER TABLE, um die Datentabelle student in tb_students_info umzubenennen. Die SQL-Anweisung und die laufenden Ergebnisse lauten wie folgt.

mysql> ALTER TABLE student RENAME TO tb_students_info;
Query OK, 0 rows affected (0.01 sec)
mysql> SHOW TABLES;
+------------------+
| Tables_in_test   |
+------------------+
| tb_students_info |
+------------------+
1 row in set (0.00 sec)
Nach dem Login kopieren

Tipps: Durch das Ändern des Tabellennamens wird die Struktur der Tabelle nicht geändert. Daher ist die Struktur der Tabelle nach der Änderung des Namens dieselbe wie die Struktur der Tabelle vor der Änderung des Namens. Benutzer können den Befehl DESC verwenden, um die geänderte Tabellenstruktur anzuzeigen und

den Tabellenzeichensatz zu ändern

MySQL verwendet die ALTER TABLE-Anweisung, um den Tabellenzeichensatz zu ändern:

ALTER TABLE 表名 [DEFAULT] CHARACTER SET <字符集名> [DEFAULT] COLLATE <校对规则名>;
Nach dem Login kopieren

Unter Für sie ist DEFAULT ein optionaler Parameter. Unabhängig davon, ob er verwendet wird oder nicht, hat er keinen Einfluss auf die Ergebnisse.

Beispiel 2

Verwenden Sie ALTER TABLE, um den Zeichensatz der Datentabelle tb_students_info in gb2312 und die Sortierregel in gb2312_chinese_ci zu ändern. Die SQL-Anweisung und die Ausführungsergebnisse werden unten angezeigt.

mysql> ALTER TABLE tb_students_info CHARACTER SET gb2312  DEFAULT COLLATE gb2312_chinese_ci;
Query OK, 0 rows affected (0.08 sec)
Records: 0  Duplicates: 0  Warnings: 0
mysql> SHOW CREATE TABLE tb_students_info \G
*************************** 1. row ***************************
       Table: tb_students_info
Create Table: CREATE TABLE `tb_students_info` (
  `id` int(11) NOT NULL,
  `name` varchar(20) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=gb2312
1 row in set (0.00 sec)
Nach dem Login kopieren

Felder zur MySQL-Datentabelle hinzufügen

MySQL-Datentabelle besteht normalerweise aus Zeilen und Spalten und wird als „Feld“ bezeichnet Datensätze (Record) ). Wenn sich Ihr Unternehmen ändert, müssen Sie möglicherweise neue Felder zu vorhandenen Tabellen hinzufügen.

MySQL ermöglicht das Hinzufügen von Feldern am Anfang, in der Mitte und am Ende.

Felder am Ende hinzufügen

Ein vollständiges Feld enthält Feldnamen, Datentyp und Einschränkungen. Das Syntaxformat für das Hinzufügen von Feldern in MySQL lautet wie folgt:

ALTER TABLE <表名> ADD <新字段名><数据类型>[约束条件];
Nach dem Login kopieren

Das Syntaxformat lautet wie folgt:                                                                                                                                          ist das Feld, das hinzugefügt werden soll;

  • & lt;Datentyp> ist der Datentyp, den das Feld hat Das hinzuzufügende Feld kann Daten speichern.

  • [Einschränkungen] ist optional und wird verwendet, um das hinzugefügte Feld einzuschränken.

  • Dieses Syntaxformat fügt standardmäßig ein neues Feld an der letzten Position der Tabelle (nach der letzten Spalte) hinzu.

  • Hinweis: In diesem Abschnitt fügen wir nur neue Felder hinzu und berücksichtigen nicht deren Einschränkungen.
  • Beispiel

  • Erstellen Sie eine neue Schülerdatentabelle in der Testdatenbank. Die SQL-Anweisung und die Ausführungsergebnisse lauten wie folgt:
mysql> USE test;
Database changed
mysql> CREATE TABLE student (
    -> id INT(4),
    -> name VARCHAR(20),
    -> sex CHAR(1));
Query OK, 0 rows affected (0.09 sec)
Nach dem Login kopieren

Verwenden Sie DESC, um die Struktur der Schülertabelle anzuzeigen:

mysql> DESC student;
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id    | int(4)      | YES  |     | NULL    |       |
| name  | varchar(20) | YES  |     | NULL    |       |
| sex   | char(1)     | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+
3 rows in set (0.01 sec)
Nach dem Login kopieren

Verwenden Sie die ALTER TABLE-Anweisung, um einen INT-Typ hinzuzufügen. Das Feldalter, die SQL-Anweisung und die laufenden Ergebnisse lauten wie folgt:

mysql> ALTER TABLE student ADD age INT(4);
Query OK, 0 rows affected (0.16 sec)
Records: 0  Duplicates: 0  Warnings: 0
Nach dem Login kopieren

Verwenden Sie DESC, um die Struktur der Schülertabelle anzuzeigen und zu überprüfen, ob das Altersfeld erfolgreich hinzugefügt wurde. Die SQL-Anweisung und die laufenden Ergebnisse lauten wie folgt:

mysql> DESC student;
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id    | int(4)      | YES  |     | NULL    |       |
| name  | varchar(20) | YES  |     | NULL    |       |
| sex   | char(1)     | YES  |     | NULL    |       |
| age   | int(4)      | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+
4 rows in set (0.00 sec)
Nach dem Login kopieren

Wie Sie den laufenden Ergebnissen entnehmen können, wurde das Feld „Alter“ zur Schülertabelle hinzugefügt und befindet sich an der letzten Position der Tabelle. Das Feld wurde erfolgreich hinzugefügt .

Ein Feld am Anfang hinzufügen

MySQL fügt standardmäßig ein neues Feld an der letzten Position der Tabelle hinzu. Wenn Sie am Anfang (vor der ersten Spalte) ein neues Feld hinzufügen möchten, können Sie Folgendes verwenden: Das Schlüsselwort FIRST hat das folgende Syntaxformat:

ALTER TABLE <表名> ADD <新字段名> <数据类型> [约束条件] FIRST;
Nach dem Login kopieren

Das Schlüsselwort FIRST wird im Allgemeinen am Ende der Anweisung platziert.

BeispielVerwenden Sie die ALTER TABLE-Anweisung, um das Feld stuId vom Typ INT zur ersten Spalte der Tabelle hinzuzufügen. Die SQL-Anweisung und die laufenden Ergebnisse lauten wie folgt.

mysql> ALTER TABLE student ADD stuId INT(4) FIRST;
Query OK, 0 rows affected (0.14 sec)
Records: 0  Duplicates: 0  Warnings: 0
mysql> DESC student;
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| stuId | int(4)      | YES  |     | NULL    |       |
| id    | int(4)      | YES  |     | NULL    |       |
| name  | varchar(20) | YES  |     | NULL    |       |
| sex   | char(1)     | YES  |     | NULL    |       |
| age   | int(4)      | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+
5 rows in set (0.00 sec)
Nach dem Login kopieren

Sie können den laufenden Ergebnissen entnehmen, dass das Feld „stuId“ zur Studententabelle hinzugefügt wurde und sich an der ersten Position in der Tabelle befindet. Das Feld wurde erfolgreich hinzugefügt.

Felder an der mittleren Position hinzufügen

MySQL ermöglicht nicht nur das Hinzufügen von Feldern am Anfang und Ende der Tabelle, sondern auch das Hinzufügen von Feldern an der mittleren Position (in diesem Fall nach dem angegebenen Feld). , müssen Sie das Schlüsselwort AFTER verwenden. Das Syntaxformat lautet wie folgt:

ALTER TABLE <表名> ADD <新字段名> <数据类型> [约束条件] AFTER <已经存在的字段名>;
Nach dem Login kopieren

AFTER wird verwendet, um ein neues Feld nach einem vorhandenen Feld hinzuzufügen.

Beachten Sie, dass Sie ein neues Feld nur nach einem vorhandenen Feld hinzufügen können, nicht jedoch davor. Beispiele

使用 ALTER TABLE 语句在 student 表中添加名为 stuno,数据类型为 INT 的字段,stuno 字段位于 name 字段的后面。SQL 语句和运行结果如下:

mysql> ALTER TABLE student ADD stuno INT(11) AFTER name;
Query OK, 0 rows affected (0.13 sec)
Records: 0  Duplicates: 0  Warnings: 0
 
mysql> DESC student;
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| stuId | int(4)      | YES  |     | NULL    |       |
| id    | int(4)      | YES  |     | NULL    |       |
| name  | varchar(20) | YES  |     | NULL    |       |
| stuno | int(11)     | YES  |     | NULL    |       |
| sex   | char(1)     | YES  |     | NULL    |       |
| age   | int(4)      | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+
6 rows in set (0.00 sec)
Nach dem Login kopieren

由运行结果可以看到,student 表中已经添加了 stuId 字段,且该字段在 name 字段后面的位置,添加字段成功。

MySQL 修改和删除数据表字段

修改字段名称

MySQL 中修改表字段名的语法规则如下:

ALTER TABLE <表名> CHANGE <旧字段名> <新字段名> <新数据类型>;
Nach dem Login kopieren

其中:

  • 旧字段名:指修改前的字段名;

  • 新字段名:指修改后的字段名;

  • 新数据类型:指修改后的数据类型,如果不需要修改字段的数据类型,可以将新数据类型设置成与原来一样,但数据类型不能为空。

使用 ALTER TABLE 修改表 tb_emp1 的结构,将 col1 字段名称改为 col3,同时将数据类型变为 CHAR(30),SQL 语句和运行结果如下所示。

mysql> ALTER TABLE tb_emp1
    -> CHANGE col1 col3 CHAR(30);
Query OK, 0 rows affected (0.76 sec)
Records: 0  Duplicates: 0  Warnings: 0
mysql> DESC tb_emp1;
+--------+-------------+------+-----+---------+-------+
| Field  | Type        | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| col3   | char(30)    | YES  |     | NULL    |       |
| id     | int(11)     | YES  |     | NULL    |       |
| name   | varchar(30) | YES  |     | NULL    |       |
| deptId | int(11)     | YES  |     | NULL    |       |
| salary | float        | YES  |     | NULL    |       |
+--------+-------------+------+-----+---------+-------+
5 rows in set (0.01 sec)
Nach dem Login kopieren

CHANGE 也可以只修改数据类型,实现和 MODIFY 同样的效果,方法是将 SQL 语句中的“新字段名”和“旧字段名”设置为相同的名称,只改变“数据类型”。

提示:由于不同类型的数据在机器中的存储方式及长度并不相同,修改数据类型可能会影响数据表中已有的数据记录,因此,当数据表中已经有数据时,不要轻易修改数据类型。

修改字段数据类型

修改字段的数据类型就是把字段的数据类型转换成另一种数据类型。在 MySQL 中修改字段数据类型的语法规则如下:

ALTER TABLE <表名> MODIFY <字段名> <数据类型>
Nach dem Login kopieren

其中:

  • 表名:指要修改数据类型的字段所在表的名称;

  • 字段名:指需要修改的字段;

  • 数据类型:指修改后字段的新数据类型。

使用 ALTER TABLE 修改表 tb_emp1 的结构,将 name 字段的数据类型由 VARCHAR(22) 修改成 VARCHAR(30),SQL 语句和运行结果如下所示。

mysql> ALTER TABLE tb_emp1
    -> MODIFY name VARCHAR(30);
Query OK, 0 rows affected (0.15 sec)
Records: 0  Duplicates: 0  Warnings: 0
mysql> DESC tb_emp1;
+--------+-------------+------+-----+---------+-------+
| Field  | Type        | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| col1   | int(11)     | YES  |     | NULL    |       |
| id     | int(11)     | YES  |     | NULL    |       |
| name   | varchar(30) | YES  |     | NULL    |       |
| col2   | int(11)     | YES  |     | NULL    |       |
| deptId | int(11)     | YES  |     | NULL    |       |
| salary | float        | YES  |     | NULL    |       |
+--------+-------------+------+-----+---------+-------+
6 rows in set (0.00 sec)
Nach dem Login kopieren

语句执行后,发现表 tb_emp1 中 name 字段的数据类型已经修改成 VARCHAR(30),修改成功。

删除字段

删除字段是将数据表中的某个字段从表中移除,语法格式如下:

ALTER TABLE <表名> DROP <字段名>;
Nach dem Login kopieren

其中,“字段名”指需要从表中删除的字段的名称。

使用 ALTER TABLE 修改表 tb_emp1 的结构,删除 col2 字段,SQL 语句和运行结果如下所示。

mysql> ALTER TABLE tb_emp1
    -> DROP col2;
Query OK, 0 rows affected (0.53 sec)
Records: 0  Duplicates: 0  Warnings: 0
mysql> DESC tb_emp1;
+--------+-------------+------+-----+---------+-------+
| Field  | Type        | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| col1   | int(11)     | YES  |     | NULL    |       |
| id     | int(11)     | YES  |     | NULL    |       |
| name   | varchar(30) | YES  |     | NULL    |       |
| deptId | int(11)     | YES  |     | NULL    |       |
| salary | float        | YES  |     | NULL    |       |
+--------+-------------+------+-----+---------+-------+
5 rows in set (0.00 sec)
Nach dem Login kopieren

推荐教程:mysql视频教程

Das obige ist der detaillierte Inhalt vonWie ändere ich eine MySQL-Datenbanktabelle?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage