对Mysql数据表本身进行操作
创建实验环境
1 2 3 4 5 6 7 | mysql> create database test_db; Query OK, 1 row affected (0.00 sec) mysql> use test_db; Database changed mysql> create table test_table(id int (10),name varchar(20),age int ); Query OK, 0 rows affected (0.04 sec) |
(1).查看表结构
查看表结构有四种方法,如果查找的不是当前数据库里的表,一定要使用[数据库名].[表名]的格式使用。最常用的一般是desc [表名]。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | mysql> desc test_table; +-------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+-------------+------+-----+---------+-------+ | id | int (10) | YES | | NULL | | | name | varchar(20) | YES | | NULL | | | age | int (11) | YES | | NULL | | +-------+-------------+------+-----+---------+-------+ 3 rows in set (0.01 sec) mysql> explain test_table; +-------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+-------------+------+-----+---------+-------+ | id | int (10) | YES | | NULL | | | name | varchar(20) | YES | | NULL | | | age | int (11) | YES | | NULL | | +-------+-------------+------+-----+---------+-------+ 3 rows in set (0.00 sec) mysql> show columns from test_table; +-------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+-------------+------+-----+---------+-------+ | id | int (10) | YES | | NULL | | | name | varchar(20) | YES | | NULL | | | age | int (11) | YES | | NULL | | +-------+-------------+------+-----+---------+-------+ 3 rows in set (0.00 sec) mysql> show fields from test_table; +-------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+-------------+------+-----+---------+-------+ | id | int (10) | YES | | NULL | | | name | varchar(20) | YES | | NULL | | | age | int (11) | YES | | NULL | | +-------+-------------+------+-----+---------+-------+ 3 rows in set (0.00 sec) |
(2).修改表名
alter table [旧的表名] rename [新的表名];
如果不在当前数据库,需要使用[数据库名].[表名]代替单一的[表名]。
1 2 3 4 5 6 7 8 9 10 | mysql> alter table test_table rename table_newname; Query OK, 0 rows affected (0.04 sec) mysql> show tables; +-------------------+ | Tables_in_test_db | +-------------------+ | table_newname | +-------------------+ 1 row in set (0.00 sec) |
(3).只修改表的字段类型
alter tabel [表名] modify [字段名] [修改后的字段类型];
如果不在当前数据库,需要使用[数据库名].[表名]代替单一的[表名]。
修改已有数据的表的字段类型,请谨慎。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | mysql> desc table_newname; +-------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+-------------+------+-----+---------+-------+ | id | int (10) | YES | | NULL | | | name | varchar(20) | YES | | NULL | | | age | int (11) | YES | | NULL | | +-------+-------------+------+-----+---------+-------+ 3 rows in set (0.00 sec) mysql> alter table table_newname modify name char (22); Query OK, 0 rows affected (0.07 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql> desc table_newname; +-------+----------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+----------+------+-----+---------+-------+ | id | int (10) | YES | | NULL | | | name | char (22) | YES | | NULL | | | age | int (11) | YES | | NULL | | +-------+----------+------+-----+---------+-------+ 3 rows in set (0.00 sec) |
(4).修改表的字段名和字段类型
alter table [表名] change [旧的字段名] [新的字段名] [新的字段类型];
如果不在当前数据库,需要使用[数据库名].[表名]代替单一的[表名]。
修改已有数据的表的字段类型,请谨慎。如果不想修改字段类型,请保持类型的一致。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | mysql> desc table_newname; +-------+----------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+----------+------+-----+---------+-------+ | id | int (10) | YES | | NULL | | | name | char (22) | YES | | NULL | | | age | int (11) | YES | | NULL | | +-------+----------+------+-----+---------+-------+ 3 rows in set (0.00 sec) mysql> alter table table_newname change name newname char (30); Query OK, 0 rows affected (0.07 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql> desc table_newname; +---------+----------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +---------+----------+------+-----+---------+-------+ | id | int (10) | YES | | NULL | | | newname | char (30) | YES | | NULL | | | age | int (11) | YES | | NULL | | +---------+----------+------+-----+---------+-------+ 3 rows in set (0.00 sec) |
(5).添加字段
alter table [表名] add [字段名] [字段类型];
如果不在当前数据库,需要使用[数据库名].[表名]代替单一的[表名]。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | mysql> desc table_newname; +---------+----------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +---------+----------+------+-----+---------+-------+ | id | int (10) | YES | | NULL | | | newname | char (30) | YES | | NULL | | | age | int (11) | YES | | NULL | | +---------+----------+------+-----+---------+-------+ 3 rows in set (0.01 sec) mysql> alter table table_newname add job char (40); Query OK, 0 rows affected (0.13 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql> desc table_newname; +---------+----------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +---------+----------+------+-----+---------+-------+ | id | int (10) | YES | | NULL | | | newname | char (30) | YES | | NULL | | | age | int (11) | YES | | NULL | | | job | char (40) | YES | | NULL | | +---------+----------+------+-----+---------+-------+ 4 rows in set (0.00 sec) |
(6).在表的指定位置添加字段
字段添加到第一位:alter table [表名] add [字段名] [字段类型] first;
字段添加到某一位的后面:alter table [表名] add [字段名] [字段类型] after [字段名];
如果不在当前数据库,需要使用[数据库名].[表名]代替单一的[表名]。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | mysql> desc table_newname; +---------+----------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +---------+----------+------+-----+---------+-------+ | id | int (10) | YES | | NULL | | | newname | char (30) | YES | | NULL | | | age | int (11) | YES | | NULL | | | job | char (40) | YES | | NULL | | +---------+----------+------+-----+---------+-------+ 4 rows in set (0.00 sec) mysql> alter table table_newname add sex enum ( 'M' , 'W' ) first; Query OK, 0 rows affected (0.03 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql> alter table table_newname add address varchar(40) after newname; Query OK, 0 rows affected (0.02 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql> desc table_newname; +---------+---------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +---------+---------------+------+-----+---------+-------+ | sex | enum ( 'M' , 'W' ) | YES | | NULL | | | id | int (10) | YES | | NULL | | | newname | char (30) | YES | | NULL | | | address | varchar(40) | YES | | NULL | | | age | int (11) | YES | | NULL | | | job | char (40) | YES | | NULL | | +---------+---------------+------+-----+---------+-------+ 6 rows in set (0.00 sec) |
(7).删除表的指定字段
alter table [表名] drop [字段名];
如果不在当前数据库,需要使用[数据库名].[表名]代替单一的[表名]。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | mysql> desc table_newname; +---------+---------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +---------+---------------+------+-----+---------+-------+ | sex | enum ( 'M' , 'W' ) | YES | | NULL | | | id | int (10) | YES | | NULL | | | newname | char (30) | YES | | NULL | | | address | varchar(40) | YES | | NULL | | | age | int (11) | YES | | NULL | | | job | char (40) | YES | | NULL | | +---------+---------------+------+-----+---------+-------+ 6 rows in set (0.00 sec) mysql> alter table table_newname drop sex; Query OK, 0 rows affected (0.06 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql> desc table_newname; +---------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +---------+-------------+------+-----+---------+-------+ | id | int (10) | YES | | NULL | | | newname | char (30) | YES | | NULL | | | address | varchar(40) | YES | | NULL | | | age | int (11) | YES | | NULL | | | job | char (40) | YES | | NULL | | +---------+-------------+------+-----+---------+-------+ 5 rows in set (0.00 sec) |
如果还有其他的操作,以后再加
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性