本系列可作为数据库学习系列的笔记,文中提到的一些练习的代码,小编会将代码复制下来,大家复制下来就可以练习了,方便大家学习。
点赞关注不迷路!您的点赞、关注和收藏是对小编最大的支持和鼓励!
系列文章目录
目录
目录
[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)
[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 数据库中,库是容器,表是核心。所有业务数据、用户信息、订单记录、日志内容,最终都必须以 "表" 的形式存储。表结构设计是否合理、操作是否规范,直接决定系统稳定性、查询效率与后期维护成本。
一、本节学习目标
- 熟练使用
show tables查看当前数据库中的所有表 - 完全掌握
CREATE TABLE完整建表语法,包括字段定义、数据类型、注释、存储引擎、字符集、排序规则 - 学会使用
DESC查看表结构,并看懂每一列含义 - 精通
ALTER TABLE所有常用修改操作:- 添加列
- 修改列类型 / 长度 / 位置
- 重命名列
- 删除列
- 修改表名
- 安全执行
DROP TABLE删除表,并理解高危风险 - 独立完成实战练习:商店管理系统三表设计(商品表、客户表、购买记录表)
二、查看数据库中的所有表
在操作任何表之前,必须先确认当前数据库中有哪些表。
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 个文件:
- 表名.MYD → 数据文件(MYData)
- 表名.MYI → 索引文件(MYIndex)
- 表名_数字.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 删除表注意事项(必读)
- 删除表不可恢复
- 删除表会删除磁盘上所有物理文件
- 生产环境严禁随意执行
- 可同时删除多张表,用逗号分隔
- 必须加
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 实战的基石:
- 会建表 = 会设计数据结构
- 会改表 = 能应对需求变化
- 会规范操作 = 能进企业开发
掌握表操作,你已经正式迈入数据库开发大门。

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