程序员scholar 程序员scholar
首页
  • Java 基础

    • JavaSE
    • JavaIO
    • JavaAPI速查
  • Java 高级

    • JUC
    • JVM
    • Java新特性
    • 设计模式
  • Web 开发

    • Servlet
    • Java网络编程
  • Web 标准

    • HTML
    • CSS
    • JavaScript
  • 前端框架

    • Vue2
    • Vue3
    • Vue3 + TS
    • 微信小程序
    • uni-app
  • 工具与库

    • jQuery
    • Ajax
    • Axios
    • Webpack
    • Vuex
    • WebSocket
    • 第三方登录
  • 后端与语言扩展

    • ES6
    • Typescript
    • node.js
  • Element-UI
  • Apache ECharts
  • 数据结构
  • HTTP协议
  • HTTPS协议
  • 计算机网络
  • Linux常用命令
  • Windows常用命令
  • SQL数据库

    • MySQL
    • MySQL速查
  • NoSQL数据库

    • Redis
    • ElasticSearch
  • 数据库

    • MyBatis
    • MyBatis-Plus
  • 消息中间件

    • RabbitMQ
  • 服务器

    • Nginx
  • Spring框架

    • Spring6
    • SpringMVC
    • SpringBoot
    • SpringSecurity
  • SpringCould微服务

    • SpringCloud基础
    • 微服务之DDD架构思想
  • 日常必备

    • 开发常用工具包
    • Hutoll工具包
    • IDEA常用配置
    • 开发笔记
    • 日常记录
    • 项目部署
    • 网站导航
    • 产品学习
    • 英语学习
  • 代码管理

    • Maven
    • Git教程
    • Git小乌龟教程
  • 运维工具

    • Docker
    • Jenkins
    • Kubernetes
  • 算法笔记

    • 算法思想
    • 刷题笔记
  • 面试问题常见

    • 十大经典排序算法
    • 面试常见问题集锦
关于
GitHub (opens new window)
首页
  • Java 基础

    • JavaSE
    • JavaIO
    • JavaAPI速查
  • Java 高级

    • JUC
    • JVM
    • Java新特性
    • 设计模式
  • Web 开发

    • Servlet
    • Java网络编程
  • Web 标准

    • HTML
    • CSS
    • JavaScript
  • 前端框架

    • Vue2
    • Vue3
    • Vue3 + TS
    • 微信小程序
    • uni-app
  • 工具与库

    • jQuery
    • Ajax
    • Axios
    • Webpack
    • Vuex
    • WebSocket
    • 第三方登录
  • 后端与语言扩展

    • ES6
    • Typescript
    • node.js
  • Element-UI
  • Apache ECharts
  • 数据结构
  • HTTP协议
  • HTTPS协议
  • 计算机网络
  • Linux常用命令
  • Windows常用命令
  • SQL数据库

    • MySQL
    • MySQL速查
  • NoSQL数据库

    • Redis
    • ElasticSearch
  • 数据库

    • MyBatis
    • MyBatis-Plus
  • 消息中间件

    • RabbitMQ
  • 服务器

    • Nginx
  • Spring框架

    • Spring6
    • SpringMVC
    • SpringBoot
    • SpringSecurity
  • SpringCould微服务

    • SpringCloud基础
    • 微服务之DDD架构思想
  • 日常必备

    • 开发常用工具包
    • Hutoll工具包
    • IDEA常用配置
    • 开发笔记
    • 日常记录
    • 项目部署
    • 网站导航
    • 产品学习
    • 英语学习
  • 代码管理

    • Maven
    • Git教程
    • Git小乌龟教程
  • 运维工具

    • Docker
    • Jenkins
    • Kubernetes
  • 算法笔记

    • 算法思想
    • 刷题笔记
  • 面试问题常见

    • 十大经典排序算法
    • 面试常见问题集锦
关于
GitHub (opens new window)
npm

(进入注册为作者充电)

  • MySQL速查

    • MySQL 数据库操作
    • MySQL 数据表操作
      • 1. 查询某个数据库的所有表的名称
      • 2. 查询表结构
      • 3. 创建表
      • 4. 复制表
      • 5. 修改表名
      • 6. 显示表的创建信息
      • 7. 修改表的字符集
      • 8. 清空表的数据
      • 9. 删除表
      • 10. 修改表的字段类型
      • 11. 添加新字段
      • 12. 删除字段
      • 13. 修改字段名
      • 14. 创建带索引的表
      • 15. 添加索引到已有表
      • 16. 删除索引
    • MySQL 数据列 (字段) 操作
    • MySQL 数据增删改操作
    • MySQL 单表查询
    • MySQL 多表查询
    • MySQL 数据字段设计
    • MySQL 特殊字段的设计
  • MySQL速查
  • MySQL速查
scholar
2024-08-20
目录

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. 查询表结构

-- 使用 `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

# 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

# 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

# 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

# 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

# 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

# 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

# 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

# 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

# 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

# 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

# 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

# 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

# 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

# 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
编辑此页 (opens new window)
上次更新: 2024/12/28, 18:32:08
MySQL 数据库操作
MySQL 数据列 (字段) 操作

← MySQL 数据库操作 MySQL 数据列 (字段) 操作→

Theme by Vdoing | Copyright © 2019-2025 程序员scholar
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式