MySQL初识和基础操作

文章目录

1. 数据库和MySQL

数据库

数据库本质是一个长期保存业务数据的系统

后端服务里会产生这些数据:

  • 用户注册信息
  • 用户登录记录
  • 商品订单
  • 支付记录
  • AI 聊天历史
  • AI 调用日志
  • 用户余额
  • 模型调用 token 消耗
  • 文件上传记录

这些数据不能放到内存里,因为:

  • 程序重启,内存会丢
  • 多台服务器之间不能共享本地内存
  • 数据需要长期保存
  • 数据需要被高效查询、修改、统计
  • 数据需要保证一致性和可靠性

数据库就做到了后端系统的持久化保存

MySQL

而MySQL是一种具体的数据库管理系统 ,是一个服务端程序

  • mysqld是数据库的服务端

  • mysql是数据库的客户端

  • mysql是一种典型的客户端/服务端架构,提供了一套数据存储服务的网络服务

再通俗讲,MySQL管理数据库,数据库存东西:

表时数据库中组织数据的基本单元,可以把一张表想象成一个struct结构体,例如:

id username email age created_at
1 kunkun kunkun@example.com 20 2026-05-07 10:00:00
2 gege gege@example.com 22 2026-05-07 10:05:00

一行就是一条具体的业务数据,对应着一个业务对象

这一行表示一个用户的所有详细信息

列表示这类业务对象的某个具体属性,也叫字段

比如用户有这些属性:

  • id:用户 ID
  • username:用户名
  • email:邮箱
  • age:年龄
  • created_at:注册时间

2. 库的基本操作

数据库 database可以理解为一个业务项目的数据容器,里面可以有多张表

还是这张图

比如:

txt 复制代码
MySQL 服务
  └── ai_backend 数据库
        ├── users 表
        ├── conversations 表
        ├── messages 表
        └── model_call_logs 表

可以对照到Linux的文件系统

text 复制代码
/home/vect/ai_backend/
    users
    conversations
    messages

查看所有数据库

sql 复制代码
show databases;	# 类似ls命令

创建数据库

sql 复制代码
create database if not exists 数据库名 [选项];

如果不存在这个数据库就创建

字符集和编码集

  • 数据库编码集:数据库未来存储数据的编码格式
  • 数据库校验集:数据库读取时采用的编码格式

要保证操作时用的同一个编码格式

一般都是使用:

sql 复制代码
create database if not exists ai_backend
default character set utf8mb4
default collate utf8mb4_unicode_ci;

使用数据库

sql 复制代码
use 数据库名;

接下来就对这个数据库进行操作

查看当前正在使用哪个数据库

sql 复制代码
select database();

删除数据库

sql 复制代码
drop database if exists 数据库名;

注意:这是相当于rm -rf 目录,整个路径下的数据全部清空,一般不要删库

备份和恢复数据库

备份:

sql 复制代码
mysqldump -P3306 -u root -p 密码 -B 数据库名1 数据库名2... > 新的路径

直接把所有有效操作的命令备份了!

只备份一个库里的几个表:

sql 复制代码
mysqldump -P3306 -u root -p 密码 -B 数据库名 表一 表二... > 新的路径

还原:

sql 复制代码
source 备份的文件.sql

如果在备份时,没有-B的选项,恢复数据库时,要先创建空的数据库,然后使用这个数据库,再使用source还原

库操作小结

需求 SQL
查看所有库 show databases;
创建库 create database if not exists 库名;
使用库 use 库名;
查看当前库 select database();
删除库 drop database if exists 库名;

3. 表的基本操作

表是数据库里真正存业务数据的地方,建表就是把业务对象翻译成数据库结构,这也是面向对象的思想:

cpp 复制代码
class User{
    long long _id;
    std::string _name;
    std::string _email;
    std::string _password;
}
sql 复制代码
create table users (
	id bigint primary key auto_increment,
    username varchar(50),
    email varchar(100),
    password varchar(255)
);

唯一的区别就是class类是内存中的结构,table表是磁盘上的持久化数据集合

查看当前数据库下的所有表

sql 复制代码
show tables;

创建表

sql 复制代码
create table if not exists 表名 (
	字段名 数据类型 约束,
    字段名 数据类型 约束,
    字段名 数据类型 约束
);

查看表结构

sql 复制代码
desc 表名;

查看建表语句

sql 复制代码
show create table 表名;

删除表

sql 复制代码
drop table if exists 表名;

drop是彻底删除整张表,结构和数据全没了

sql 复制代码
delete from 表名;

只是删除数据,表结构还在

修改表结构

添加字段

sql 复制代码
alter table users
add 新字段名 类型 约束;

修改字段类型

sql 复制代码
alter table 表名
modify 要修改的字段 新的类型;

修改字段名

sql 复制代码
alter table 表名
change 旧字段名 新字段名 新类型 新约束;

删除字段

sql 复制代码
alter table 表名
drop column 字段名;

删除字段会丢失这个字段里的所有数据

修改表名

sql 复制代码
rename table 旧表名 to 新表名;

或者:

sql 复制代码
alter table 旧表名 to 新表名;

done~

相关推荐
foolishlee18 小时前
Neon wal日志处理流程
数据库
星马梦缘18 小时前
数据库 事务管理 专项作战记录
数据库
名字还没想好☜18 小时前
Python concurrent.futures 实战:用 ThreadPoolExecutor 并发处理 + as_completed 收结果
数据库·python·php·并发
空杆推不起18 小时前
穿透数据库 JOIN 核心:语法分类、底层算法、生产优化与高频坑点全解析
数据库·oracle
xxwl58518 小时前
数据库后端接口测试报告
spring boot·mysql·tomcat
xqqxqxxq19 小时前
MySQL 数据类型笔记
数据库·笔记·mysql
Logintern0919 小时前
理解MySQL数据库的“事务与锁”
数据库·mysql
朱容zr33313319 小时前
为什么推荐使用自增主键?使用UUID作为主键的优缺点是什么?
java·运维·数据库·后端·mysql·面试·性能优化
麻瓜code20 小时前
【Redis 】数据类型、持久化与过期删除
数据库·redis·缓存
空杆推不起20 小时前
穿透 Flink CDC 表层用法:数据库日志捕获机制、Flink Source 运行时、端到端一致性底层原理详解
大数据·数据库·flink