[modifier les options]"."/> [modifier les options]".">
Maison > Article > base de données > Comment modifier la table de la base de données MySQL ?
Comment modifier la table de la base de données MySQL : utilisez l'instruction "ALTER TABLE" pour modifier la structure de la table d'origine, par exemple en ajoutant ou en supprimant des champs, en modifiant le type de données du champ d'origine, en renommant des champs ou des tables, en modifiant Jeu de caractères de table, etc. ; syntaxe "ALTER TABLE ec0983fd17b6413e27b8650c341d2c1b [modifier les options]".
La condition préalable pour modifier la table de données est que la table existe déjà dans la base de données. Modifier une table fait référence à la modification de la structure d'une table de données existante dans la base de données. L'opération de modification des tableaux de données est également essentielle dans la gestion de bases de données. C'est comme dessiner un croquis, vous pouvez l'effacer avec une gomme. Si vous dessinez trop peu, vous pouvez l'ajouter avec un stylo.
Ne pas savoir comment modifier le tableau de données équivaut à jeter et redessiner tant qu'on fait une erreur, ce qui augmente les coûts inutiles.
Vous pouvez utiliser l'instruction ALTER TABLE
dans MySQL pour modifier la structure de la table d'origine, comme ajouter ou supprimer des colonnes, modifier le type de colonne d'origine, renommer des colonnes ou des tables, etc.
Le format de syntaxe est le suivant :
ALTER TABLE <表名> [修改选项]
Le format de syntaxe de l'option de modification est le suivant :
{ ADD COLUMN <列名> <类型> | CHANGE COLUMN <旧列名> <新列名> <新列类型> | ALTER COLUMN <列名> { SET DEFAULT <默认值> | DROP DEFAULT } | MODIFY COLUMN <列名> <类型> | DROP COLUMN <列名> | RENAME TO <新表名> | CHARACTER SET <字符集名> | COLLATE <校对规则名> }
Modifier le nom de la table
MySQL utilise l'instruction ALTER TABLE pour modifier le nom de la table. Les règles de syntaxe sont les suivantes :
ALTER TABLE <旧表名> RENAME [TO] <新表名>;
Parmi elles, TO est un paramètre facultatif, et s'il est utilisé. ou non n'affecte pas le résultat.
Exemple 1
Utilisez ALTER TABLE pour renommer la table de données student en tb_students_info L'instruction SQL et les résultats d'exécution sont les suivants.
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)
Astuce : Modifier le nom de la table ne modifie pas la structure de la table, donc la structure de la table après la modification du nom est la même que celle de la table avant la modification du nom. Les utilisateurs peuvent utiliser la commande DESC pour afficher la structure de la table modifiée,
modifier le jeu de caractères de la table
MySQL implémente le jeu de caractères de la table via le Modification de l'instruction ALTER TABLE, les règles de syntaxe sont les suivantes :
ALTER TABLE 表名 [DEFAULT] CHARACTER SET <字符集名> [DEFAULT] COLLATE <校对规则名>;
Parmi elles, DEFAULT est un paramètre facultatif, et qu'il soit utilisé ou non n'affectera pas le résultat.
Exemple 2
Utilisez ALTER TABLE pour modifier le jeu de caractères de la table de données tb_students_info en gb2312 et la règle de classement en gb2312_chinese_ci. L'instruction SQL et les résultats d'exécution sont présentés ci-dessous.
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)
Ajouter des champs à la table de données MySQL
La table de données MySQL est composée de lignes et de colonnes. Les "colonnes" de la table sont généralement. appelé Field (Field) fait référence à la "ligne" de la table en tant qu'enregistrement (Record). À mesure que votre entreprise évolue, vous devrez peut-être ajouter de nouveaux champs aux tables existantes.
MySQL permet d'ajouter des champs au début, au milieu et à la fin.
Ajouter des champs à la fin
Un champ complet comprend le nom du champ, le type de données et les contraintes. Le format de syntaxe pour ajouter des champs dans MySQL est le suivant :
ALTER TABLE <表名> ADD <新字段名><数据类型>[约束条件];
La description du format de syntaxe est la suivante : 🎜>
Remarque : Dans cette section, nous ajoutons uniquement de nouveaux champs et ne prêtons pas attention à ses contraintes.
Créez une nouvelle table de données d'étudiant dans la base de données de test. Les instructions SQL et les résultats d'exécution sont les suivants :
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)
Utilisez DESC pour afficher la structure de la table des étudiants. Les instructions SQL et les résultats d'exécution sont les suivants :
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)
Utilisez l'instruction ALTER TABLE pour ajouter un champ de type INT age. L'instruction SQL et les résultats d'exécution sont les suivants :
mysql> ALTER TABLE student ADD age INT(4); Query OK, 0 rows affected (0.16 sec) Records: 0 Duplicates: 0 Warnings: 0. Utilisez DESC pour afficher la structure de la table des étudiants et vérifier si le champ d'âge a été ajouté avec succès. L'instruction SQL et les résultats en cours d'exécution sont les suivants :
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)Comme vous pouvez le voir sur les résultats en cours, le champ âge a été ajouté à la table des étudiants et le champ se trouve à la dernière position de la table. Le champ a été ajouté avec succès.
MySQL ajoute un nouveau champ à la dernière position du tableau par défaut Si vous souhaitez ajouter un nouveau champ au début. (avant la première colonne), alors Vous pouvez utiliser le mot-clé FIRST, le format de syntaxe est le suivant :
ALTER TABLE <表名> ADD <新字段名> <数据类型> [约束条件] FIRST;
Le mot-clé FIRST est généralement placé à la fin de l'instruction. Exemple
Utilisez l'instruction ALTER TABLE pour ajouter le champ de type INT stuId dans la première colonne de la table. L'instruction SQL et les résultats d'exécution sont les suivants.
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)
Comme vous pouvez le voir sur les résultats en cours, le champ stuId a été ajouté à la table des étudiants et le champ est en première position dans la table. Le champ a été ajouté avec succès.
Ajouter des champs au milieuEn plus de permettre l'ajout de champs au début et à la fin du tableau, MySQL permet également d'ajouter des champs au milieu (après le champ spécifié) Champ, vous devez utiliser le mot-clé AFTER à ce moment, le format de syntaxe est le suivant :
ALTER TABLE <表名> ADD <新字段名> <数据类型> [约束条件] AFTER <已经存在的字段名>;
La fonction d'AFTER est d'ajouter un nouveau champ après un champ existant. Notez que vous ne pouvez ajouter un nouveau champ qu'après un champ existant, mais pas devant celui-ci.
Exemple
使用 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)
由运行结果可以看到,student 表中已经添加了 stuId 字段,且该字段在 name 字段后面的位置,添加字段成功。
MySQL 修改和删除数据表字段
修改字段名称
MySQL 中修改表字段名的语法规则如下:
ALTER TABLE <表名> CHANGE <旧字段名> <新字段名> <新数据类型>;
其中:
旧字段名:指修改前的字段名;
新字段名:指修改后的字段名;
新数据类型:指修改后的数据类型,如果不需要修改字段的数据类型,可以将新数据类型设置成与原来一样,但数据类型不能为空。
例
使用 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)
CHANGE 也可以只修改数据类型,实现和 MODIFY 同样的效果,方法是将 SQL 语句中的“新字段名”和“旧字段名”设置为相同的名称,只改变“数据类型”。
提示:由于不同类型的数据在机器中的存储方式及长度并不相同,修改数据类型可能会影响数据表中已有的数据记录,因此,当数据表中已经有数据时,不要轻易修改数据类型。
修改字段数据类型
修改字段的数据类型就是把字段的数据类型转换成另一种数据类型。在 MySQL 中修改字段数据类型的语法规则如下:
ALTER TABLE <表名> MODIFY <字段名> <数据类型>
其中:
表名:指要修改数据类型的字段所在表的名称;
字段名:指需要修改的字段;
数据类型:指修改后字段的新数据类型。
例
使用 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)
语句执行后,发现表 tb_emp1 中 name 字段的数据类型已经修改成 VARCHAR(30),修改成功。
删除字段
删除字段是将数据表中的某个字段从表中移除,语法格式如下:
ALTER TABLE <表名> DROP <字段名>;
其中,“字段名”指需要从表中删除的字段的名称。
例
使用 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)
推荐教程:mysql视频教程
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!