MySQL 数据库操作

这是一份零基础可直接用 的 MySQL 核心操作笔记,覆盖库、表、数据、约束、查询、索引、事务高频用法,复制粘贴就能用,适合学习、复习、工作速查。

一、基础命令(登录 / 退出 / 查看)

sql

复制代码
-- 登录MySQL
mysql -u 用户名 -p  -- 回车后输入密码

-- 退出MySQL
exit; 或 quit;

-- 查看所有数据库
SHOW DATABASES;

-- 查看当前登录用户
SELECT USER();

-- 查看数据库版本
SELECT VERSION();

二、数据库(Database)操作

sql

复制代码
-- 1. 创建数据库(指定字符集,避免乱码)
CREATE DATABASE 数据库名 DEFAULT CHARSET utf8mb4;

-- 2. 使用数据库(必须先选库,才能操作表)
USE 数据库名;

-- 3. 删除数据库(谨慎使用!)
DROP DATABASE 数据库名;

-- 4. 查看数据库创建语句
SHOW CREATE DATABASE 数据库名;

三、数据表(Table)操作

1. 创建表(最常用模板)

sql

复制代码
CREATE TABLE 表名(
    字段1 数据类型 约束,
    字段2 数据类型 约束,
    PRIMARY KEY(主键字段)  -- 主键唯一标识
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

2. 常用数据类型

  • 整数INT(常规)、TINYINT(小数字)
  • 字符串VARCHAR(长度)(可变长度,必用)
  • 文本TEXT(长文本)
  • 小数DECIMAL(总长度,小数位)(金额专用)
  • 时间DATETIME(年月日时分秒)、DATE(年月日)

3. 表操作命令

sql

复制代码
-- 查看当前库所有表
SHOW TABLES;

-- 查看表结构
DESC 表名;

-- 查看表创建语句
SHOW CREATE TABLE 表名;

-- 修改表名
ALTER TABLE 旧表名 RENAME TO 新表名;

-- 删除表(谨慎!)
DROP TABLE 表名;

4. 字段操作(增 / 删 / 改)

sql

复制代码
-- 添加字段
ALTER TABLE 表名 ADD 字段名 数据类型;

-- 删除字段
ALTER TABLE 表名 DROP 字段名;

-- 修改字段名+类型
ALTER TABLE 表名 CHANGE 旧字段名 新字段名 数据类型;

-- 修改字段类型/约束
ALTER TABLE 表名 MODIFY 字段名 新数据类型;

四、数据增删改查(CRUD)

1. 新增数据(INSERT)

sql

复制代码
-- 全字段插入
INSERT INTO 表名 VALUES(值1,值2,值3);

-- 指定字段插入(推荐)
INSERT INTO 表名(字段1,字段2) VALUES(值1,值2);

-- 批量插入
INSERT INTO 表名(字段1,字段2) VALUES(值1,值2),(值3,值4);

2. 查询数据(SELECT)最核心

sql

复制代码
-- 基础查询
SELECT * FROM 表名;  -- 查询所有字段
SELECT 字段1,字段2 FROM 表名;  -- 指定字段

-- 条件查询 WHERE
SELECT * FROM 表名 WHERE 条件;

-- 模糊查询 LIKE
-- %匹配任意字符,_匹配一个字符
SELECT * FROM 表名 WHERE 字段 LIKE '%关键词%';

-- 排序 ORDER BY(ASC升序/DESC降序)
SELECT * FROM 表名 ORDER BY 字段 DESC;

-- 分页 LIMIT(常用在列表页)
SELECT * FROM 表名 LIMIT 起始位置, 查询条数;
-- 例:第1页10条 LIMIT 0,10;第2页 LIMIT 10,10

-- 去重 DISTINCT
SELECT DISTINCT 字段 FROM 表名;

3. 修改数据(UPDATE)必须加 WHERE!

sql

复制代码
-- 单字段修改
UPDATE 表名 SET 字段=新值 WHERE 条件;

-- 多字段修改
UPDATE 表名 SET 字段1=值1,字段2=值2 WHERE 条件;

⚠️ 警告:不加 WHERE 会修改全表数据!

4. 删除数据(DELETE)必须加 WHERE!

sql

复制代码
DELETE FROM 表名 WHERE 条件;

⚠️ 警告:不加 WHERE 会清空全表数据!


五、常用约束(保证数据规范)

sql

复制代码
-- 1. 主键 PRIMARY KEY:唯一+非空,一张表只有一个
id INT PRIMARY KEY AUTO_INCREMENT,  -- 自增主键

-- 2. 非空 NOT NULL:字段不能为空
name VARCHAR(20) NOT NULL,

-- 3. 唯一 UNIQUE:值不能重复
phone VARCHAR(11) UNIQUE,

-- 4. 默认值 DEFAULT:没有赋值时用默认值
status TINYINT DEFAULT 1,

-- 5. 外键 FOREIGN KEY:关联两张表(少用,影响性能)

六、高级查询(必会)

1. 聚合函数

sql

复制代码
SELECT 
    COUNT(*)  AS 总条数,   -- 统计行数
    SUM(字段)  AS 总和,     -- 求和
    AVG(字段)  AS 平均值,   -- 求平均
    MAX(字段)  AS 最大值,   -- 最大
    MIN(字段)  AS 最小值    -- 最小
FROM 表名;

2. 分组查询 GROUP BY

sql

复制代码
-- 按字段分组统计
SELECT 分组字段, COUNT(*) FROM 表名 GROUP BY 分组字段;

-- 分组后筛选 HAVING(必须跟在GROUP BY后)
SELECT 字段,COUNT(*) FROM 表名 GROUP BY 字段 HAVING COUNT(*)>数值;

3. 多表查询

sql

复制代码
-- 内连接 INNER JOIN:取两张表匹配的数据
SELECT * FROM 表1 INNER JOIN 表2 ON 表1.关联字段=表2.关联字段;

-- 左连接 LEFT JOIN:左表全部,右表匹配
SELECT * FROM 表1 LEFT JOIN 表2 ON 表1.关联字段=表2.关联字段;

七、索引(提升查询速度)

sql

复制代码
-- 创建普通索引
CREATE INDEX 索引名 ON 表名(字段);

-- 创建唯一索引
CREATE UNIQUE INDEX 索引名 ON 表名(字段);

-- 查看索引
SHOW INDEX FROM 表名;

-- 删除索引
DROP INDEX 索引名 ON 表名;

✅ 建议:经常用于 WHERE 查询的字段加索引,不要给所有字段都加。


八、事务(保证数据安全)

sql

复制代码
-- 开启事务
START TRANSACTION;  -- 或 BEGIN;

-- 执行增删改操作
INSERT/UPDATE/DELETE...

-- 提交事务(永久生效)
COMMIT;

-- 回滚事务(撤销所有操作)
ROLLBACK;

✅ 适用场景:转账、支付、订单等必须同时成功 / 失败的业务。


九、备份与恢复

bash

运行

复制代码
-- 备份数据库(cmd执行,不是SQL语句)
mysqldump -u用户名 -p 数据库名 > 备份文件.sql

-- 恢复数据库
mysql -u用户名 -p 数据库名 < 备份文件.sql

相关推荐
@Mike@19 分钟前
02-数据库学习笔记(SQL引擎)
数据库·笔记·学习
笃行3502 小时前
国产化落地避坑 · 干货向|Oracle 迁金仓 KES,我把外连接消除排在隐性陷阱第一位
数据库
老纪的技术唠嗑局2 小时前
花一年时间整理出的:AI 数据库混合搜索入门实践
数据库
川石课堂软件测试3 小时前
安全测试|常见SQL注入攻击方式、实例及预防
服务器·数据库·sql·功能测试·测试工具·安全·单元测试
笃行3503 小时前
国产化落地避坑 · 干货向|迁移后那条「测试能过、一上生产就查空」的 SQL,多半栽在 WHERE 函数顺序上
数据库
蓝田~3 小时前
MySQL慢查询怎么优化?B+Tree索引原理+MVCC读不阻塞写+EXPLAIN执行计划,从5秒到0.05秒
数据库·mysql
sunxunyong4 小时前
doris用户资源组配置
数据库
Cloud云卷云舒4 小时前
云卷云舒:HaishanDB的AI原生能力主要应用场景
数据库·人工智能·ai-native·haishandb·移动云长期记忆
时间的拾荒人4 小时前
MySQL 视图详解
android·数据库·mysql
qq_366086225 小时前
sql 查询中关于 null 值判断的问题
数据库·sql