对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)

  

  如果还有其他的操作,以后再加

posted @   苦逼运维  阅读(315)  评论(0编辑  收藏  举报
编辑推荐:
· .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 中新的强大生产力特性
点击右上角即可分享
微信分享提示