MySQL 实验 4:修改数据表的结构

MySQL 实验 4:修改数据表的结构

目录

  • [MySQL 实验 4:修改数据表的结构](#MySQL 实验 4:修改数据表的结构)
    • [一、为 MySQL 数据表添加列](#一、为 MySQL 数据表添加列)
    • [二、 删除 MySQL 数据表中的某一列](#二、 删除 MySQL 数据表中的某一列)
    • [三、修改 MySQL 数据表中列的数据类型](#三、修改 MySQL 数据表中列的数据类型)
    • [四、修改 MySQL 数据表的名称](#四、修改 MySQL 数据表的名称)
    • [五、修改 MySQL 数据表中的列名](#五、修改 MySQL 数据表中的列名)

MySQL 修改数据表结构的操作主要包含:添加列,删除列,修改列的数据类型。修改表结构使用 alter table 命令。下面的所有例子均基于表 emp,表结构如下:

sql 复制代码
mysql> desc emp;
+---------+---------------+------+-----+---------+-------+
| Field   | Type          | Null | Key | Default | Extra |
+---------+---------------+------+-----+---------+-------+
| id      | int(11)       | YES  |     | NULL    |       |
| name    | char(20)      | YES  |     | NULL    |       |
| birth   | date          | YES  |     | NULL    |       |
| salary  | decimal(10,2) | YES  |     | NULL    |       |
| phone   | char(20)      | YES  |     | NULL    |       |
| address | varchar(200)  | YES  |     | NULL    |       |
| remark  | varchar(500)  | YES  |     | NULL    |       |
+---------+---------------+------+-----+---------+-------+
7 rows in set (0.00 sec)

一、为 MySQL 数据表添加列

1、语法
sql 复制代码
alter table table_name add col_name data_type;

-- 该命令添加的列默认位置在最后。如果需要指定添加列的位置,可以使用如下格式:
alter table table_name add col_name data_type after col_name|first;
-- 说明:
(1)使用 after 选项可以把新增的列放到某一列的后面。
(2)使用 first 选项可以把新增的列放在第一个位置。
2、举例
sql 复制代码
-- 在所有列的后面添加一个新列,名称为 wechat
mysql> alter table emp add wechat char(20);
Query OK, 0 rows affected (0.01 sec)
Records: 0  Duplicates: 0  Warnings: 0

-- 新增一个列,列名为 gender,放在 name 的后面
mysql> alter table emp add gender char(2) after name;
Query OK, 0 rows affected (0.01 sec)
Records: 0  Duplicates: 0  Warnings: 0

-- 查看 emp 表的结构
mysql> desc emp;
+---------+---------------+------+-----+---------+-------+
| Field   | Type          | Null | Key | Default | Extra |
+---------+---------------+------+-----+---------+-------+
| id      | int(11)       | YES  |     | NULL    |       |
| name    | char(20)      | YES  |     | NULL    |       |
| gender  | char(2)       | YES  |     | NULL    |       |
| birth   | date          | YES  |     | NULL    |       |
| salary  | decimal(10,2) | YES  |     | NULL    |       |
| phone   | char(20)      | YES  |     | NULL    |       |
| address | varchar(200)  | YES  |     | NULL    |       |
| remark  | varchar(500)  | YES  |     | NULL    |       |
| wechat  | char(20)      | YES  |     | NULL    |       |
+---------+---------------+------+-----+---------+-------+
9 rows in set (0.00 sec)

二、 删除 MySQL 数据表中的某一列

1、语法
sql 复制代码
alter table table_name drop col_name;
2、举例
sql 复制代码
mysql> alter table emp drop remark;
Query OK, 0 rows affected (0.01 sec)
Records: 0  Duplicates: 0  Warnings: 0

-- 查看 emp 表的结构
mysql> desc emp;
+---------+---------------+------+-----+---------+-------+
| Field   | Type          | Null | Key | Default | Extra |
+---------+---------------+------+-----+---------+-------+
| id      | int(11)       | YES  |     | NULL    |       |
| name    | char(20)      | YES  |     | NULL    |       |
| gender  | char(2)       | YES  |     | NULL    |       |
| birth   | date          | YES  |     | NULL    |       |
| salary  | decimal(10,2) | YES  |     | NULL    |       |
| phone   | char(20)      | YES  |     | NULL    |       |
| address | varchar(200)  | YES  |     | NULL    |       |
| wechat  | char(20)      | YES  |     | NULL    |       |
+---------+---------------+------+-----+---------+-------+
8 rows in set (0.01 sec)

三、修改 MySQL 数据表中列的数据类型

1、语法
sql 复制代码
alter table table_name modify col_name new_data_type;
2、举例
sql 复制代码
-- 把 birth 列的数据类型修改为 datetime
mysql> alter table emp modify birth datetime;
Query OK, 0 rows affected (0.01 sec)
Records: 0  Duplicates: 0  Warnings: 0

-- 把 salary 列的小数位数修改为 4,精度修改为 12
mysql> alter table emp modify salary decimal(12,4);
Query OK, 0 rows affected (0.01 sec)
Records: 0  Duplicates: 0  Warnings: 0

-- 把 name 列的长度修改为 30
mysql> alter table emp modify name char(30);
Query OK, 0 rows affected (0.01 sec)
Records: 0  Duplicates: 0  Warnings: 0

-- 把 wechat 列的类型修改为 varchar,长度修改为 50
mysql> alter table emp modify wechat varchar(50);
Query OK, 0 rows affected (0.01 sec)
Records: 0  Duplicates: 0  Warnings: 0

-- 查看 emp 表的结构
mysql> desc emp;
+---------+---------------+------+-----+---------+-------+
| Field   | Type          | Null | Key | Default | Extra |
+---------+---------------+------+-----+---------+-------+
| id      | int(11)       | YES  |     | NULL    |       |
| name    | char(30)      | YES  |     | NULL    |       |
| gender  | char(2)       | YES  |     | NULL    |       |
| birth   | datetime      | YES  |     | NULL    |       |
| salary  | decimal(12,4) | YES  |     | NULL    |       |
| phone   | char(20)      | YES  |     | NULL    |       |
| address | varchar(200)  | YES  |     | NULL    |       |
| wechat  | varchar(50)   | YES  |     | NULL    |       |
+---------+---------------+------+-----+---------+-------+
8 rows in set (0.01 sec)

四、修改 MySQL 数据表的名称

该功能不常用,正常情况下很少修改数据表的名称。

1、语法
sql 复制代码
alter table table_name rename new_table_name;
2、举例
sql 复制代码
-- 查看当前数据库中的表
mysql> show tables;
+----------------+
| Tables_in_mydb |
+----------------+
| emp            |
| emp03          |
| t1             |
+----------------+
3 rows in set (0.00 sec)

-- 表 emp 表的名称修改为 emp001
mysql> alter table emp rename emp001;
Query OK, 0 rows affected (0.00 sec)

-- 查看当前数据库中的表
mysql> show tables;
+----------------+
| Tables_in_mydb |
+----------------+
| emp001         |
| emp03          |
| t1             |
+----------------+
3 rows in set (0.00 sec)

五、修改 MySQL 数据表中的列名

该功能不常用,正常情况下很少修改数据表中列的名称。

1、语法
sql 复制代码
alter table table_name chang col_name new_col_name data_type;
-- 说明:修改列名时必须指定列的数据类型。如果指定的数据类型和修改前相同,则表示不修改数据类型。也可以指定新的数据类型。
2、举例
sql 复制代码
-- 把 name 列的列名修改为 s_name,类型不变
mysql> alter table emp001 change name s_name char(30);
Query OK, 0 rows affected (0.01 sec)
Records: 0  Duplicates: 0  Warnings: 0

-- 把 phone 列的列名修改为 mobile,类型不变,长度修改为 11
mysql> alter table emp001 change phone mobile char(11);
Query OK, 0 rows affected (0.01 sec)
Records: 0  Duplicates: 0  Warnings: 0

-- 查看 emp001 表的结构
mysql> desc emp001;
+---------+---------------+------+-----+---------+-------+
| Field   | Type          | Null | Key | Default | Extra |
+---------+---------------+------+-----+---------+-------+
| id      | int(11)       | YES  |     | NULL    |       |
| s_name  | char(30)      | YES  |     | NULL    |       |
| gender  | char(2)       | YES  |     | NULL    |       |
| birth   | datetime      | YES  |     | NULL    |       |
| salary  | decimal(12,4) | YES  |     | NULL    |       |
| mobile  | char(11)      | YES  |     | NULL    |       |
| address | varchar(200)  | YES  |     | NULL    |       |
| wechat  | varchar(50)   | YES  |     | NULL    |       |
+---------+---------------+------+-----+---------+-------+
8 rows in set (0.01 sec)
相关推荐
JacksonMx27 分钟前
Java CompletableFuture 异步编程实战:从入门到架构师避坑指南
linux·数据库·python
tachibana233 分钟前
性能指标的口径选择
数据库·人工智能·架构·大模型·llm
机器人梦想家1 小时前
具身机器人视觉服务的异步回调与并发控制
数据库·算法·机器人
菀亓2 小时前
ubuntu系统mysql安装
mysql
小妖同学学AI2 小时前
开源向量数据库的王者:Milvus 深度解析,专为 AI 应用打造的云原生搜索引擎!
数据库·开源·milvus
程序员贺加贝2 小时前
别被 saveBatch 骗了:一次 MyBatis-Plus 批量插入性能排查
mysql
l1258652 小时前
# RAG上线评估指标体系:六大核心指标与压测实战全解析
数据库·人工智能·python·mysql·langchain·milvus
宠友信息3 小时前
IM系统开发技术路线分析,即时通讯源码助力快速搭建聊天应用
java·spring boot·redis·websocket·mysql·uni-app·vue
一只鹿鹿鹿3 小时前
数据资产管理解决方案(Word文件)
大数据·数据库·安全·web安全·系统安全
2401_894915533 小时前
Geo 优化源码部署实战:环境配置、参数调优完整指南
运维·服务器·数据库·tcp/ip·安全