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 字段的排列位置被成功修改了。

相关推荐
月光水岸New2 小时前
Ubuntu 中建的mysql数据库使用Navicat for MySQL连接不上
数据库·mysql·ubuntu
狄加山6752 小时前
数据库基础1
数据库
我爱松子鱼2 小时前
mysql之规则优化器RBO
数据库·mysql
chengooooooo2 小时前
苍穹外卖day8 地址上传 用户下单 订单支付
java·服务器·数据库
Rverdoser3 小时前
【SQL】多表查询案例
数据库·sql
Galeoto3 小时前
how to export a table in sqlite, and import into another
数据库·sqlite
人间打气筒(Ada)4 小时前
MySQL主从架构
服务器·数据库·mysql
leegong231114 小时前
学习PostgreSQL专家认证
数据库·学习·postgresql
喝醉酒的小白4 小时前
PostgreSQL:更新字段慢
数据库·postgresql
敲敲敲-敲代码4 小时前
【SQL实验】触发器
数据库·笔记·sql