MySQL 数据表操作
# MySQL 数据表操作
# 1. 查询某个数据库的所有表的名称
-- 使用 `show tables;` 查看当前数据库中的所有表
show tables;
-- 输出示例(假设当前数据库有两张表)
+-------------------+
| Tables_in_数据库名称 |
+-------------------+
| users | -- 用户信息表
| orders | -- 订单信息表
+-------------------+
-- 解释:
-- 该命令列出当前活动数据库中的所有表名,通常用于了解数据库结构。表名信息会缓存,以提升后续查询速度。
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
# 2. 查询表结构
-- 使用 `desc 表名;` 查看表的字段结构
desc 表名;
-- 输出示例
+---------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+----------------+
| id | int | NO | PRI | NULL | auto_increment |
| name | varchar(50) | YES | | NULL | |
| email | varchar(100)| NO | UNI | NULL | |
+---------+-------------+------+-----+---------+----------------+
-- 解释:
-- `desc` 命令返回表的字段定义,包括字段名、数据类型、是否允许为空、索引类型、默认值和额外信息。
-- 此信息存储在系统表中,通常会被缓存以加快查询速度。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 3. 创建表
-- 使用 `create table 表名(列名1 数据类型1, 列名2 数据类型2, ...);` 创建新表
create table 表名 (
列名1 数据类型1,
列名2 数据类型2,
列名3 数据类型3,
primary key (列名1) -- 设置主键
);
-- 输出示例
Query OK, 0 rows affected (0.02 sec)
-- 解释:
-- 该命令用于创建一张新的数据表,包含字段定义和主键设置。创建表成功后,MySQL 会立即更新系统表信息并缓存结果。
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
# 4. 复制表
-- 使用 `create table 表名1 like 表名2;` 复制表的结构(不包括数据)
create table 新表名 like 原表名;
-- 输出示例
Query OK, 0 rows affected (0.01 sec)
-- 解释:
-- 该命令会创建一个新表,结构与原表相同,但不会复制数据。新表的索引、字段、字符集等属性与原表一致。
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
# 5. 修改表名
-- 使用 `alter table 表名 rename to 新的表名;` 修改表名
alter table 原表名 rename to 新表名;
-- 输出示例
Query OK, 0 rows affected (0.01 sec)
-- 解释:
-- 该命令用于修改表的名称,不会影响表中的数据和结构。系统表会同步更新新表名,并缓存以加快后续查询速度。
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
# 6. 显示表的创建信息
-- 使用 `show create table 表名;` 查看表的创建语句
show create table 表名;
-- 输出示例
+-------+-----------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+-------+-----------------------------------------------------------------------------------------------------------------------------------+
| users | CREATE TABLE `users` (
`id` int NOT NULL AUTO_INCREMENT,
`name` varchar(50) DEFAULT NULL,
`email` varchar(100) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `email` (`email`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 |
+-------+-----------------------------------------------------------------------------------------------------------------------------------+
-- 解释:
-- 该命令返回表的完整创建语句,包括字段定义、索引、存储引擎和字符集设置等详细信息。
-- 该信息存储在系统表中,通常不会频繁变动,因此查询结果可能被缓存。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 7. 修改表的字符集
-- 使用 `alter table 表名 character set 字符集;` 修改表的字符集
alter table 表名 character set utf8mb4;
-- 输出示例
Query OK, 0 rows affected (0.01 sec)
-- 解释:
-- 修改表的字符集会影响后续插入的数据字符编码,但不会自动转换已有数据。操作成功后,系统表会更新并缓存新字符集信息。
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
# 8. 清空表的数据
-- 使用 `delete from 表名;` 清空表的数据
delete from 表名;
-- 输出示例
Query OK, X rows affected (0.03 sec) -- X 表示被删除的行数
-- 解释:
-- `delete from 表名;` 会删除表中所有数据,但保留表结构。该操作不会重置自增主键的计数。
-- 由于涉及大量数据操作,该命令通常不会被缓存。
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
# 9. 删除表
-- 使用 `drop table if exists 表名;` 删除表(先判断表是否存在)
drop table if exists 表名;
-- 输出示例
Query OK, 0 rows affected (0.01 sec)
-- 解释:
-- `drop table` 命令会删除表及其所有数据,操作不可逆。`if exists` 可以避免删除不存在的表时发生错误。
-- 删除表后,系统表会立即更新并清除缓存。
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
# 10. 修改表的字段类型
-- 使用 `alter table 表名 modify column 字段 修改后的数据类型;` 修改表字段的数据类型
alter table 表名 modify column 字段名 新数据类型;
-- 输出示例
Query OK, 0 rows affected (0.02 sec)
-- 解释:
-- 该命令用于更改表中字段的类型,通常用于调整字段长度或数据格式。更改字段类型不会影响已有数据的存储方式。
-- 修改成功后,系统表会更新字段定义并缓存结果。
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
# 11. 添加新字段
-- 使用 `alter table 表名 add column 字段名 数据类型 [位置];` 为表添加新字段
alter table 表名 add column 新字段名 数据类型 [after 现有字段名];
-- 输出示例
Query OK, 0 rows affected (0.01 sec)
-- 解释:
-- 该命令会在表中添加新字段,`after` 关键字用于指定新字段的位置(可选,默认在最后添加)。添加字段不会影响现有数据。
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
# 12. 删除字段
-- 使用 `alter table 表名 drop column 字段名;` 删除表中的某个字段
alter table 表名 drop column 字段名;
-- 输出示例
Query OK, 0 rows affected (0.01 sec)
-- 解释:
-- 删除字段后,表中的数据将丢失该字段的信息。操作成功后,系统表会更新结构并缓存修改结果。
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
# 13. 修改字段名
-- 使用 `alter table 表名 change column 原字段名 新字段名 新数据类型;` 修改字段名并保留或更改数据类型
alter table 表名 change column 原字段名 新字段名 数据类型;
-- 输出示例
Query OK, 0 rows affected (0.01 sec)
-- 解释:
-- 该命令用于重命名字段,同时可以选择是否更改数据类型。操作成功后,系统表会更新字段定义并缓存结果。
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
# 14. 创建带索引的表
-- 创建包含索引的表,例如唯一索引或普通索引
create table 表名 (
id int not null auto_increment,
name varchar(50) not null,
email varchar(100),
primary key (id), -- 主键索引
unique key unique_email (email) -- 唯一索引
);
-- 输出示例
Query OK, 0 rows affected (0.02 sec)
-- 解释:
-- 创建带索引的表时,可以定义主键、唯一索引等。索引在提高查询效率时非常重要,但过多的索引可能会降低写操作的速度。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
# 15. 添加索引到已有表
-- 使用 `alter table 表名 add index 索引名(字段名);` 添加索引
alter table 表名 add index 索引名(字段名);
-- 输出示例
Query OK, 0 rows affected (0.02 sec)
-- 解释:
-- 该命令会在已有表的指定字段上添加索引,索引名可自定义。添加索引后,查询该字段的数据会更快,但写入操作可能稍慢。
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
# 16. 删除索引
-- 使用 `alter table 表名 drop index 索引名;` 删除索引
alter table 表名 drop index 索引名;
-- 输出示例
Query OK, 0 rows affected (0.01 sec)
-- 解释:
-- 删除索引后,表在该字段上的查询速度可能会降低。删除索引不会影响数据本身,主要
影响查询性能。
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
编辑此页 (opens new window)
上次更新: 2024/12/28, 18:32:08