数据库---Day4 数据表的操作

本系列可作为数据库学习系列的笔记,文中提到的一些练习的代码,小编会将代码复制下来,大家复制下来就可以练习了,方便大家学习。

点赞关注不迷路!您的点赞、关注和收藏是对小编最大的支持和鼓励!

系列文章目录

JAVA初阶---------已更完

JAVA数据结构---------已更完

数据库---Day 1 数据库基础

数据库---Day2 数据库操作

数据库---Day3 数据类型

数据库---Day4 数据表的操作

数据库---Day5 数据表的增删改查


目录

目录

系列文章目录

目录

前言

一、本节学习目标

二、查看数据库中的所有表

[2.1 查看表语法](#2.1 查看表语法)

[2.2 执行前提](#2.2 执行前提)

[2.3 正确执行流程](#2.3 正确执行流程)

[2.4 执行结果示例](#2.4 执行结果示例)

[三、创建表(CREATE TABLE)](#三、创建表(CREATE TABLE))

[3.1 完整官方建表语法](#3.1 完整官方建表语法)

[3.2 语法每一部分详细解释](#3.2 语法每一部分详细解释)

[3.2.1 CREATE TABLE](#3.2.1 CREATE TABLE)

[3.2.2 [TEMPORARY]](#3.2.2 [TEMPORARY])

[3.2.3 [IF NOT EXISTS]](#3.2.3 [IF NOT EXISTS])

[3.2.4 表名](#3.2.4 表名)

[3.2.5 字段定义格式](#3.2.5 字段定义格式)

[3.2.6 ENGINE = 存储引擎](#3.2.6 ENGINE = 存储引擎)

[3.2.7 CHARACTER SET = 字符集](#3.2.7 CHARACTER SET = 字符集)

[3.2.8 COLLATE = 排序规则](#3.2.8 COLLATE = 排序规则)

四、建表完整示例(文档原版)

[示例 1:创建用户表 users](#示例 1:创建用户表 users)

[示例 2:创建 MyISAM 引擎表](#示例 2:创建 MyISAM 引擎表)

五、表在磁盘上的物理文件(原理必懂)

[5.1 InnoDB 引擎表(默认)](#5.1 InnoDB 引擎表(默认))

[5.2 MyISAM 引擎表](#5.2 MyISAM 引擎表)

[六、安全建表:IF NOT EXISTS](#六、安全建表:IF NOT EXISTS)

七、查看表结构(DESC)

[7.1 查看表结构语法](#7.1 查看表结构语法)

[7.2 示例](#7.2 示例)

[7.3 输出字段含义(必须背)](#7.3 输出字段含义(必须背))

[八、修改表结构(ALTER TABLE)](#八、修改表结构(ALTER TABLE))

[8.1 完整修改语法](#8.1 完整修改语法)

[8.2 修改操作 1:添加新列](#8.2 修改操作 1:添加新列)

[8.3 修改操作 2:修改字段类型 / 长度](#8.3 修改操作 2:修改字段类型 / 长度)

[8.4 修改操作 3:重命名列名](#8.4 修改操作 3:重命名列名)

[8.5 修改操作 4:删除列(高危!)](#8.5 修改操作 4:删除列(高危!))

[8.6 修改操作 5:修改表名](#8.6 修改操作 5:修改表名)

[九、删除表(DROP TABLE)](#九、删除表(DROP TABLE))

[9.1 删除表语法](#9.1 删除表语法)

[9.2 示例](#9.2 示例)

[9.3 删除表注意事项(必读)](#9.3 删除表注意事项(必读))

[十、实战练习:商店数据库 store(文档完整版)](#十、实战练习:商店数据库 store(文档完整版))

[10.1 第一步:创建数据库](#10.1 第一步:创建数据库)

[10.2 第二步:创建商品表 goods](#10.2 第二步:创建商品表 goods)

[10.3 第三步:创建客户表 customer](#10.3 第三步:创建客户表 customer)

[10.4 第四步:创建购买记录表 purchase](#10.4 第四步:创建购买记录表 purchase)

十一、表操作全部语法速查表(开发必备)

十二、本章总结

总结


前言

小编作为新晋码农一枚,会定期整理一些写的比较好的代码,作为自己的学习笔记,会试着做一下批注和补充,如转载或者参考他人文献会标明出处,非商用,如有侵权会删改!欢迎大家斧正和讨论!

在 MySQL 数据库中,库是容器,表是核心。所有业务数据、用户信息、订单记录、日志内容,最终都必须以 "表" 的形式存储。表结构设计是否合理、操作是否规范,直接决定系统稳定性、查询效率与后期维护成本。

一、本节学习目标

  1. 熟练使用 show tables 查看当前数据库中的所有表
  2. 完全掌握 CREATE TABLE 完整建表语法,包括字段定义、数据类型、注释、存储引擎、字符集、排序规则
  3. 学会使用 DESC 查看表结构,并看懂每一列含义
  4. 精通 ALTER TABLE 所有常用修改操作:
    • 添加列
    • 修改列类型 / 长度 / 位置
    • 重命名列
    • 删除列
    • 修改表名
  5. 安全执行 DROP TABLE 删除表,并理解高危风险
  6. 独立完成实战练习:商店管理系统三表设计(商品表、客户表、购买记录表)

二、查看数据库中的所有表

在操作任何表之前,必须先确认当前数据库中有哪些表。

2.1 查看表语法

sql 复制代码
show tables;

2.2 执行前提

必须先使用 use 数据库名 进入某个数据库,否则会报错:

bash 复制代码
No database selected

2.3 正确执行流程

sql 复制代码
-- 1. 进入数据库
use java01;

-- 2. 查看所有表
show tables;

2.4 执行结果示例

bash 复制代码
+--------------------+
| Tables_in_java01    |
+--------------------+
| users              |
| t_myisam           |
+--------------------+

三、创建表(CREATE TABLE)

建表是数据库开发最核心、最基础、最常用的操作。一条建表语句,定义了数据未来的存储结构。

3.1 完整官方建表语法

sql 复制代码
CREATE [TEMPORARY] TABLE [IF NOT EXISTS] 表名 (
    字段名1  数据类型  [约束条件]  [COMMENT '字段说明文字'],
    字段名2  数据类型  [约束条件]  [COMMENT '字段说明文字'],
    字段名3  数据类型  [约束条件]  [COMMENT '字段说明文字'],
    ...
)
[ ENGINE = 存储引擎 ]
[ CHARACTER SET = 字符集 ]
[ COLLATE = 排序规则 ];

3.2 语法每一部分详细解释

3.2.1 CREATE TABLE

固定关键字,表示创建表

3.2.2 [TEMPORARY]

可选关键字,表示创建临时表

  • 临时表只对当前会话可见
  • 会话断开连接,临时表自动删除
  • 普通开发极少使用

3.2.3 [IF NOT EXISTS]

最推荐、最常用、必须加

  • 判断表是否存在
  • 不存在 → 创建
  • 已存在 → 不报错,只提示警告
  • 避免程序重复执行建表语句崩溃

3.2.4 表名

  • 见名知意:user、order、goods、customer
  • 小写字母 + 下划线
  • 不使用 MySQL 关键字、数字开头、特殊符号

3.2.5 字段定义格式

sql 复制代码
字段名  数据类型  [约束]  [COMMENT '说明']
  • 字段名:列名,如 id、name、phone、create_time
  • 数据类型:int、bigint、varchar、char、date、datetime、decimal
  • 约束:非空、主键、唯一、自增、默认值(下一章重点)
  • COMMENT :字段注释,企业开发必须写,方便后期维护

3.2.6 ENGINE = 存储引擎

指定表使用的存储引擎,不写则使用默认(InnoDB)。常用:

  • InnoDB(默认,支持事务、外键、行锁)
  • MyISAM(查询快,不支持事务)

3.2.7 CHARACTER SET = 字符集

推荐:utf8mb4(支持中文、emoji)

3.2.8 COLLATE = 排序规则

推荐:utf8mb4_0900_ai_ci

四、建表完整示例(文档原版)

示例 1:创建用户表 users

sql 复制代码
create table users (
    id bigint,
    name varchar(20) comment '用户名',
    password char(32) comment '密码是32位的md5值',
    birthday date comment '生日'
)
CHARACTER SET = utf8mb4
COLLATE = utf8mb4_0900_ai_ci;

执行成功:

sql 复制代码
Query OK, 0 rows affected (0.01 sec)

示例 2:创建 MyISAM 引擎表

sql 复制代码
create table t_myisam (
    id bigint,
    name varchar(20) comment '用户名'
)
engine = MyISAM;

五、表在磁盘上的物理文件(原理必懂)

不同存储引擎,在磁盘上生成的文件完全不同。

5.1 InnoDB 引擎表(默认)

只生成 1 个文件

  • 表名.ibd
    • 存储:数据 + 索引 + 表结构

示例:users.ibd

5.2 MyISAM 引擎表

生成 3 个文件

  1. 表名.MYD → 数据文件(MYData)
  2. 表名.MYI → 索引文件(MYIndex)
  3. 表名_数字.sdi → 表结构描述文件(JSON)

MySQL 8.0 以前使用 .frm 文件保存表结构,8.0 之后统一使用 .sdi


六、安全建表:IF NOT EXISTS

如果直接重复建表,会直接报错:

sql 复制代码
Table 'users' already exists

使用安全写法:

sql 复制代码
create table if not exists users (
    id int,
    name varchar(20)
);

执行结果:

sql 复制代码
Query OK, 0 rows affected, 1 warning (0.01 sec)

查看警告:

sql 复制代码
show warnings;

提示:

sql 复制代码
Table 'users' already exists

七、查看表结构(DESC)

建表完成后,必须查看表结构是否正确。

7.1 查看表结构语法

sql 复制代码
desc 表名;
-- 等价写法
describe 表名;

7.2 示例

sql 复制代码
desc users;

7.3 输出字段含义(必须背)

字段 含义
Field 列名
Type 数据类型
Null 是否允许为 NULL(YES = 允许,NO = 不允许)
Key 是否是索引(PRI = 主键,UNI = 唯一,MUL = 普通索引)
Default 默认值
Extra 扩展信息(auto_increment 等)

八、修改表结构(ALTER TABLE)

开发中需求会不断变化,表结构必须经常调整。所有修改都使用 ALTER TABLE

8.1 完整修改语法

sql 复制代码
ALTER TABLE 表名
    ADD 列名 数据类型 [位置]
  | MODIFY 列名 数据类型 [位置]
  | RENAME COLUMN 旧列名 TO 新列名
  | DROP 列名
  | RENAME TO 新表名;

8.2 修改操作 1:添加新列

sql 复制代码
alter table users
ADD assets varchar(100) comment '头像地址' after birthday;

位置关键字:

  • after 列名 → 在某列之后
  • first → 放在第一列

查看结果:

sql 复制代码
desc users;

8.3 修改操作 2:修改字段类型 / 长度

sql 复制代码
alter table users
MODIFY assets varchar(255);

8.4 修改操作 3:重命名列名

sql 复制代码
alter table users
RENAME COLUMN assets TO avatar;

8.5 修改操作 4:删除列(高危!)

sql 复制代码
alter table users
DROP avatar;

⚠️ 删除列会永久丢失数据!


8.6 修改操作 5:修改表名

sql 复制代码
alter table users RENAME TO employee;

查看表:

sql 复制代码
show tables;

另一种修改表名方式:

sql 复制代码
RENAME TABLE employee TO users;

九、删除表(DROP TABLE)

删除表是最高危操作,一旦删除无法恢复。

9.1 删除表语法

sql 复制代码
DROP [TEMPORARY] TABLE [IF EXISTS] 表名1, 表名2, ...;

9.2 示例

sql 复制代码
drop table if exists employee;
drop table if exists t_myisam;

9.3 删除表注意事项(必读)

  1. 删除表不可恢复
  2. 删除表会删除磁盘上所有物理文件
  3. 生产环境严禁随意执行
  4. 可同时删除多张表,用逗号分隔
  5. 必须加 if exists 避免报错

十、实战练习:商店数据库 store(文档完整版)

我们按照文档要求,完整实现 商店管理系统,包含 1 个库 + 3 张表。

10.1 第一步:创建数据库

sql 复制代码
create database if not exists store
character set utf8mb4
collate utf8mb4_0900_ai_ci;

use store;

10.2 第二步:创建商品表 goods

sql 复制代码
create table goods (
    id bigint comment '商品编号',
    name varchar(50) comment '商品名',
    unitprice decimal(12, 2) comment '零售单价',
    costprice decimal(12, 2) comment '成本价',
    category varchar(20) comment '商品类型',
    provider varchar(50) comment '供应商'
)
character set utf8mb4
collate utf8mb4_0900_ai_ci;

10.3 第三步:创建客户表 customer

sql 复制代码
create table customer (
    id bigint comment '客户编号',
    name varchar(20) comment '客户姓名',
    gender bool comment '性别 1男 0女',
    phone_num varchar(20) comment '电话号码',
    email varchar(50) comment '电子邮件',
    address varchar(255) comment '地址',
    create_time datetime comment '注册时间'
)
character set utf8mb4
collate utf8mb4_0900_ai_ci;

10.4 第四步:创建购买记录表 purchase

sql 复制代码
create table purchase (
    order_id varchar(32) comment '订单编号',
    customer_id bigint comment '客户编号',
    goods_id bigint comment '商品编号',
    nums int comment '购买商品数量',
    amount decimal(12, 2) comment '总金额',
    create_time datetime comment '订单生成时间'
)
character set utf8mb4
collate utf8mb4_0900_ai_ci;

十一、表操作全部语法速查表(开发必备)

操作 语法
查看所有表 show tables;
建表 create table 表名 (...);
安全建表 create table if not exists ...;
查看表结构 desc 表名;
添加列 alter table 表 add ...;
修改列 alter table 表 modify ...;
重命名列 alter table 表 rename column ... to ...;
删除列 alter table 表 drop ...;
修改表名 alter table 表 rename to ...;
删除表 drop table if exists 表;

十二、本章总结

这一章是 MySQL 实战的基石

  • 会建表 = 会设计数据结构
  • 会改表 = 能应对需求变化
  • 会规范操作 = 能进企业开发

掌握表操作,你已经正式迈入数据库开发大门。

总结

以上就是今天要讲的内容,本文简单记录了数据结构学习内容,仅作为一份简单的笔记使用,大家根据注释理解,您的点赞关注收藏就是对小编最大的鼓励!

相关推荐
杨云龙UP2 小时前
Linux环境下Oracle RMAN全量、增量备份与定时任务实践_20260331
linux·运维·服务器·数据库·oracle
Yvonne爱编码2 小时前
数据库---Day5 数据表的增删改查
数据库
赵优秀一一2 小时前
对课上SQL使用技巧示例补充
数据库·sql
小陈工2 小时前
Python Web开发入门(三):配置文件管理与环境变量最佳实践
开发语言·jvm·数据库·python·oracle·性能优化·开源
数据库小组2 小时前
Oracle 到 PostgreSQL 迁移,2026 年如何实现平滑切换?
数据库·postgresql·oracle·数据同步·数据库迁移·oracle迁移·postgresql迁移
ANii_Aini2 小时前
mysql数据库保姆级安装教程-mac(一站式服务,提供资源)
数据库·sql·mysql·navicat
云飞云共享云桌面2 小时前
8人SolidWorks研发共享一台服务器——性能算力共享智能按需分配
运维·服务器·网络·数据库·3d·电脑
高梦轩2 小时前
MySQL 主从复制 + 读写分离
android·数据库
城数派2 小时前
1985-2024年各省市县不同土地覆盖类型的土地面积(Excel)
数据库·arcgis·信息可视化·数据分析·excel