MySQL——数据表的基本操作(三)修改数据表

有时候,希望对表中的某些信息进行修改,这时就需要修改数据表。所谓修改数据表指的是修改数据库中已经存在的数据表结构,比如,修改表名、修改字段名、修改字段的数据类型等。在 MySQL中,修改数据表的操作都是使用 ALTER TABLE 语句,接下来,将针对修改数据表的相关操作进行详细的讲解,具体如下。

1.修改表名

在数据库中,不同的数据表是通过表名来区分的。在 MySQL中,修改表名的基本语法格式如下所示:

sql 复制代码
ALTER TABLE 旧表名 RENAME[TO]新表名;

在上述格式中,"旧表名"指的是修改前的表名,"新表名"指的是修改后的表名,关键字 TO 是可选的,其在 SQL语句中是否出现不会影响语句的执行。

例如,将数据库 itcast 中的 tb_grade 表名改为 grade 表。在修改数据库表名之前,首先使用 SHOW TABLES 语句查看数据库中的所有表,执行结果如下:

sql 复制代码
mysql> show tables;
+------------------+
| Tables_in_itcast |
+------------------+
| tb_grade         |
+------------------+
1 row in set (0.01 sec)

上述语句执行完毕后,使用 ALTER TABLE 将表名 tb_grade 修改为 grade,SQL 语句如下:

sql 复制代码
mysql>ALTER TABLE tb_grade RENAME To grade;
Query OK, 0 rows affected (0.00 sec)
Records: 0  Duplicates: 0  Warnings: 0

为了检测表名是否修改正确,再次使用 SHOW TABLES 语句查看数据库中的所有表,执行结果如下所示:

sql 复制代码
mysql> show tables;
+------------------+
| Tables_in_itcast |
+------------------+
| grade            |
+------------------+
1 row in set (0.00 sec)

从上述执行结果可以看出,数据库中的 tb_grade 表名被成功修改为 grade 了。

2.修改字段名

数据表中的字段是通过字段名来区分的。在 MySQL中,修改字段名的基本语法格式如下所示:

sql 复制代码
ALTER TABLE 表名 CHANGE 旧日字段名 新字段名 新数据类型;

在上述格式中,"旧字段名"指的是修改前的字段名,"新字段名"指的是修改后的字段名,"新数据类型" 指的是修改后的数据类型。需要注意的是,新数据类型不能为空,即使新字段与旧字段的数据类型相同,也必须将新数据类型设置为与原来一样的数据类型。

例如,将数据表 grade 中的 name 字段改为 username,数据类型保持不变,SQL语句如下所示:

sql 复制代码
mysql> ALTER TABLE grade CHANGE name username VARCHAR(20);
Query OK, 0 rows affected (0.00 sec)
Records: 0  Duplicates: 0  Warnings: 0

为了验证字段名是否修改成功,通过 DESC 语句查看 grade 表的结构,执行结果如下所示:

sql 复制代码
mysql> desc grade;
+----------+-------------+------+-----+---------+-------+
| Field    | Type        | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id       | int(11)     | YES  |     | NULL    |       |
| username | varchar(20) | YES  |     | NULL    |       |
| grade    | float       | YES  |     | NULL    |       |
+----------+-------------+------+-----+---------+-------+
3 rows in set (0.01 sec)

从上述执行结果可以看出,数据表 grade 中的字段名 name 被成功修改成了username.

3.修改字段的数据类型

修改字段的数据类型,就是将字段的数据类型转为另外一种数据类型。在MySQL中修改字段数据类型的基本语法格式如下所示:

sql 复制代码
ALTER TABLE 表名 MODIFY 字段名 数据类型;

在上述格式中,"表名"指的是要修改字段所在的表名,"字段名"指的是要修改的字段,"数据类型"指的是修改后的字段的数据类型。

例如,将数据表 grade 中的 id 字段的数据类型由 INT(11) 修改为 INT(20)在执行修改字段的数据类型之前,首先使用 DESC 查看 grade 表的结构,如下所示:

sql 复制代码
mysql> desc grade;
+----------+-------------+------+-----+---------+-------+
| Field    | Type        | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id       | int(11)     | YES  |     | NULL    |       |
| username | varchar(20) | YES  |     | NULL    |       |
| grade    | float       | YES  |     | NULL    |       |
+----------+-------------+------+-----+---------+-------+
3 rows in set (0.00 sec)

从上述执行结果可以看出,id字段的数据类型为 INT(11)。接下来,使用 ALTER语句修改id字段的数据类型,SQL语句如下所示:

sql 复制代码
mysql> ALTER TABLE grade MODIFY id INT(20);
Query OK, 0 rows affected (0.01 sec)
Records: 0  Duplicates: 0  Warnings: 0

为了验证 id字段的数据类型是否修改成功,再次使用 DECS 查看 grade 数据表,执行结果如下:

sql 复制代码
mysql> desc grade;
+----------+-------------+------+-----+---------+-------+
| Field    | Type        | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id       | int(20)     | YES  |     | NULL    |       |
| username | varchar(20) | YES  |     | NULL    |       |
| grade    | float       | YES  |     | NULL    |       |
+----------+-------------+------+-----+---------+-------+
3 rows in set (0.00 sec)

从上述结果可以看出,grade表中的[d字段的数据类型被成功修改成了INT(20)。

4.添加字段

在创建数据表时,表中的字段就已经定义好了。但是,如果想在创建好的数据表中添加字段,则需要通过 ALTER TABLE 语句进行增加。在 MySQL 中,添加字段的基本语法格式如下所示:

sql 复制代码
ALTER TABLE 表名 ADD 新字段名 数据类型
    [约束条件][FIRST|APTER 已存在字段名]

在上述格式中,"新字段名" 为添加字段的名称,"FIRST "为可选参数,用于将新添加的字段设置为表的第一个字段,"AFTER" 也为可选参数,用于将新添加的字段添加到指定的 "已存在字段名" 的后面。

例如,在数据表 grade 中添加一个没有约東条件的 INT 类型的字段 age,SQL语句如下:

sql 复制代码
ALTER TABLE grade ADD age INT (10);

为了验证字段 age 是否添加成功,接下来,使用 DESC 语句查看数据表 grade,执行结果如下:

sql 复制代码
mysql> desc grade;
+----------+-------------+------+-----+---------+-------+
| Field    | Type        | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id       | int(20)     | YES  |     | NULL    |       |
| username | varchar(20) | YES  |     | NULL    |       |
| grade    | float       | YES  |     | NULL    |       |
| age      | int(10)     | YES  |     | NULL    |       |
+----------+-------------+------+-----+---------+-------+
4 rows in set (0.00 sec)

从上述执行结果可以看出,grade表中添加了一个 age 字段,并且字段的数据类型为INT(10)。

5.删除字段

数据表创建成功后,不仅可以修改字段,还可以删除字段。所谓删除字段指的是将某个字段从表中删除。在 MySQL中,删除字段的基本语法格式如下所示:

sql 复制代码
ALTER TABLE 表名 DROP 字段名;

在上述格式中,"字段名"指的是要删除的字段的名称,例如,删除 grade 表中的 age 字段,SQL 语句如下:

sql 复制代码
mysql> ALTER TABLE grade DROP age;
Query OK, 0 rows affected (0.01 sec)
Records: 0  Duplicates: 0  Warnings: 0

为了验证 age 字段是否删除,接下来,使用 DESC 语句查看 grade表,执行结果如下:

sql 复制代码
mysql> desc grade;
+----------+-------------+------+-----+---------+-------+
| Field    | Type        | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id       | int(20)     | YES  |     | NULL    |       |
| username | varchar(20) | YES  |     | NULL    |       |
| grade    | float       | YES  |     | NULL    |       |
+----------+-------------+------+-----+---------+-------+
3 rows in set (0.00 sec)

从上述执行结果可以看出,grade表中已经不存在 age 字段,说明 age 字段被成功删除了。

6.修改字段的排列位置

创建数据表的数据,字段在表中的位置已经确定了。但要修改字段在表中的排列位置,则需要使用 ALTER TABLE语句来处理。在 MySQL中,修改字段排列位置的基本语法格式如下:

sql 复制代码
ALTER TABLE 表名 MODIFY 字段名1 数据类型 FIRST|AFTER 字段名 2

在上述格式中,"字段名1"指的是修改位置的字段,"数据类型"指的是字段1的数据类型,"FIRST"为可选参数,的是将字段1修改为表的第一个字段,"AFTER 字段名2是将字段1插入到字段2的后面。

例如,将数据表 grade 的 username 字段修改为表的第一个字段,执行的 SQL语句如下:

sql 复制代码
mysql> ALTER TABLE grade MODIFY username VARCHAR(20) FIRST;
Query OK, 0 rows affected (0.02 sec)
Records: 0  Duplicates: 0  Warnings: 0

为了验证 username 字段是否修改为表的第一个字段,接下来,使用 DESC 语句查看数据表,执行结果如下:

sql 复制代码
mysql> desc grade;
+----------+-------------+------+-----+---------+-------+
| Field    | Type        | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| username | varchar(20) | YES  |     | NULL    |       |
| id       | int(20)     | YES  |     | NULL    |       |
| grade    | float       | YES  |     | NULL    |       |
+----------+-------------+------+-----+---------+-------+
3 rows in set (0.01 sec)

从上述执行结果可以看出,username字段为表的第一个字段,说明 username 字段的排列位置被成功修改了。

例如,将数据表 grade 的 id 字段插入到 grade 字段后面,执行的 SQL 语句如下:

sql 复制代码
mysql> ALTER TABLE grade MODIFY id INT(20) AFTER grade;
Query OK, 0 rows affected (0.01 sec)
Records: 0  Duplicates: 0  Warnings: 0

为了验证 id 字段是否插入到 grade 字段后面,接下来,使用 DESC 语句查看数据表执行结果如下:

sql 复制代码
mysql> desc grade;
+----------+-------------+------+-----+---------+-------+
| Field    | Type        | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| username | varchar(20) | YES  |     | NULL    |       |
| grade    | float       | YES  |     | NULL    |       |
| id       | int(20)     | YES  |     | NULL    |       |
+----------+-------------+------+-----+---------+-------+
3 rows in set (0.01 sec)

从上述结果可以看出,id 字段位于 grade 字段后面,说明 id 字段的排列位置被成功修改了。

相关推荐
卡兰芙的微笑2 分钟前
get_property --Cmakelist之中
前端·数据库·编辑器
阿华的代码王国8 分钟前
【JavaEE】多线程编程引入——认识Thread类
java·开发语言·数据结构·mysql·java-ee
Z_W_H_13 分钟前
【PostgreSQL】安装及使用(Navicat/Arcgis),连接(C#)
数据库·postgresql
豆姐姐20 分钟前
金九银十,分享一波用例设计、数据库、编程笔试题!
自动化测试·数据库·测试用例·软件测试面试
计算机程序设计开发23 分钟前
计算机毕业设计公交站点线路查询网站登录注册搜索站点线路车次/springboot/javaWEB/J2EE/MYSQL数据库/vue前后分离小程序
数据库·vue.js·spring boot·课程设计·计算机毕业设计
qq_353233538928 分钟前
【原创】java+springboot+mysql高校社团网系统设计与实现
java·spring boot·mysql
布洛芬颗粒1 小时前
JAVA基础面试题(第二十二篇)MYSQL---锁、分库分表!
java·开发语言·mysql
waterHBO1 小时前
ER 图 Entity-Relationship (ER) diagram 101 电子商城 数据库设计
数据库
青云交1 小时前
大数据新视界 --大数据大厂之Kubernetes与大数据:容器化部署的最佳实践
数据库·kubernetes·容器编排·资源管理·大数据处理·扩展性、故障恢复·存储持久化·监控、日志管理、性能提升
liangbm32 小时前
MATLAB系列07:输入/输入函数
开发语言·数据库·笔记·matlab·函数·自定义函数·matlab函数