当前位置: 首页 > backend >正文

MySQL 基础操作教程

MySQL 是目前最流行的开源关系型数据库管理系统之一,广泛应用于Web开发、数据分析等场景。掌握基础的增删改查操作是入门的关键。本文将从环境准备开始,带你深入,mysql


一、前置准备:安装与连接 MySQL

1. 安装 MySQL

  • Windows:前往 https://dev.mysql.com/ 下载安装包(选择 Community Server),按向导完成安装(注意记录 root 用户密码)。
  • macOS:推荐通过 Homebrew 安装:
    brew install mysql
    
  • Linux(Ubuntu/Debian):
    sudo apt-get update && sudo apt-get install mysql-server
    

2. 连接 MySQL

安装完成后,通过命令行工具连接 MySQL(需先启动服务):

mysql -u root -p  # 输入安装时设置的 root 密码

成功连接后,会看到 MySQL 的命令行提示符 mysql>


二、数据库操作:创建与管理数据库

数据库(Database)是存储数据的容器,用于组织多个相关表。以下是数据库的核心操作:

1. 查看所有数据库

SHOW DATABASES;   #列出服务器中所有数据库

2. 创建数据库

CREATE DATABASE IF NOT EXISTS school;   #创建名为 "school" 的数据库(若不存在)
  • IF NOT EXISTS 是可选参数,避免因数据库已存在而报错。
  • 建议指定字符集(如 utf8mb4,支持 emoji)和存储引擎(如 InnoDB,默认引擎):
    CREATE DATABASE school 
    DEFAULT CHARSET utf8mb4 
    

3. 切换数据库

USE school;  #切换到 "school" 数据库(后续操作将基于此数据库)

执行后提示 Database changed 表示切换成功。

4. 删除数据库(谨慎!)

DROP DATABASE IF EXISTS school;  #删除名为 "school" 的数据库(数据将永久丢失)

三、表操作:创建与管理数据表

表(Table)是数据库的核心结构,由行和列组成。创建表时需定义字段的名称、数据类型、约束(如主键、非空等)。

1. 查看当前数据库的表

SHOW TABLES;  #列出当前数据库中的所有表(若未创建表则无结果)

2. 创建表

以创建学生表 students 为例:

CREATE TABLE students (id INT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '学生ID(主键)',name VARCHAR(50) NOT NULL COMMENT '姓名',gender ENUM('男','女','其他') DEFAULT '其他' COMMENT '性别',age TINYINT UNSIGNED COMMENT '年龄(0-255)',birth DATE COMMENT '出生日期',class VARCHAR(20) NOT NULL COMMENT '班级',create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '记录创建时间',PRIMARY KEY (id)  -- 指定主键(唯一标识一条记录)
)DEFAULT CHARSET utf8mb4;
关键参数说明:
  • 数据类型

    • INT UNSIGNED:无符号整数(取值范围 0~4294967295)。
    • VARCHAR(50):可变长度字符串(最多50字符)。
    • ENUM('男','女','其他'):枚举类型(仅允许指定值)。
    • DATE:日期(格式 YYYY-MM-DD)。
    • DATETIME:日期时间(格式 YYYY-MM-DD HH:MM:SS)。
    • CURRENT_TIMESTAMP:自动填充当前时间(插入或更新时)。
  • 约束

    • NOT NULL:字段不可为空。
    • AUTO_INCREMENT:自增(主键常用,插入新记录时自动生成唯一ID)。
    • DEFAULT:字段默认值(未显式赋值时使用)。
    • PRIMARY KEY:主键(唯一且非空,用于快速查找记录)。

3. 查看表结构

DESCRIBE students;  -- 或简写 DESC students

输出结果会显示字段名、类型、是否为空、默认值、键等信息。

4. 修改表结构

(1)添加字段
ALTER TABLE students 
ADD COLUMN email VARCHAR(100) UNIQUE COMMENT '邮箱(唯一)' AFTER class;
  • AFTER class 表示将新字段 email 添加到 class 字段之后(可选,默认添加到末尾)。
(2)修改字段类型
ALTER TABLE students 
MODIFY COLUMN age SMALLINT UNSIGNED COMMENT '年龄(调整类型)';
(3)删除字段
ALTER TABLE students 
DROP COLUMN birth;  -- 删除 `birth` 字段(数据将丢失!)

5. 删除表(谨慎!)

DROP TABLE IF EXISTS students;  -- 删除 "students" 表(数据永久丢失)

四、数据操作:增删改查(CRUD)

1. 插入数据(Create)

(1)插入单条记录
INSERT INTO students (name, gender, age, class) 
VALUES ('张三', '男', 18, '高三1班');
  • 若未指定字段(如 idcreate_time),则使用默认值(id 自增,create_time 自动填充当前时间)。
(2)插入多条记录
INSERT INTO students (name, gender, age, class) 
VALUES ('李四', '女', 17, '高三1班'),('王五', '男', 19, '高三2班'),('赵六', '其他', 18, '高三1班');

2. 查询数据(Read)

查询是最常用操作,通过 SELECT 语句实现。

(1)基础查询(查询所有字段)
SELECT * FROM students;  -- * 表示所有字段
(2)指定字段查询
SELECT name, age, class FROM students;  -- 只查询姓名、年龄、班级
(3)条件过滤(WHERE 子句)
-- 查询高三1班的男生,年龄 >=18
SELECT * FROM students 
WHERE class = '高三1班' AND gender = '男' AND age >= 18;-- 查询年龄在17-19岁之间的学生(BETWEEN ... AND)
SELECT * FROM students 
WHERE age BETWEEN 17 AND 19;-- 查询姓名包含“张”的学生(LIKE 模糊查询,% 匹配任意字符)
SELECT * FROM students 
WHERE name LIKE '%张%';-- 查询性别为“女”或“其他”的学生(IN 枚举值)
SELECT * FROM students 
WHERE gender IN ('女', '其他');
(4)排序(ORDER BY)
-- 按年龄降序排序(年龄大的在前)
SELECT * FROM students 
ORDER BY age DESC;-- 先按班级升序,再按年龄降序(多字段排序)
SELECT * FROM students 
ORDER BY class ASC, age DESC;
(5)分组与聚合(GROUP BY + 聚合函数)

统计每个班级的学生人数:

SELECT class, COUNT(*) AS student_count  -- COUNT(*) 统计记录数
FROM students 
GROUP BY class;  -- 按班级分组

在这里插入图片描述

(6)分页(LIMIT)

查询第2页数据(每页10条):

SELECT * FROM students 
LIMIT 10 OFFSET 10;  -- OFFSET 表示跳过的记录数(第2页从第11条开始)
-- 简写:LIMIT 10, 10(前10条跳过,取接下来的10条)

在这里插入图片描述

3. 修改数据(Update)

-- 将姓名为“张三”的学生年龄改为19岁
UPDATE students 
SET age = 19 
WHERE name = '张三';  -- 必须加 WHERE 条件,否则会修改所有记录!

4. 删除数据(Delete)

-- 删除高三2班的学生记录
DELETE FROM students 
WHERE class = '高三2班';  -- 必须加 WHERE 条件,否则会删除全表数据!

五、注意事项与最佳实践

  1. 编码问题:创建数据库/表时指定 CHARSET=utf8mb4,避免中文或 emoji 乱码。
  2. 主键设计:每张表建议设置主键(如自增 id),提高查询效率。
  3. 避免全表操作UPDATEDELETE 语句必须加 WHERE 条件,否则会修改/删除所有数据(可先 SELECT 验证条件)。
  4. 字段类型优化:根据业务需求选择合适的数据类型,如年龄用 TINYINT 而非 INT,节省空间。
http://www.xdnf.cn/news/17546.html

相关文章:

  • PyTorch基础(使用Numpy实现机器学习)
  • 2025-8-11-C++ 学习 暴力枚举(2)
  • 面试题-----微服务业务
  • wed前端第三次作业
  • 本地文件夹与 GitHub 远程仓库绑定并进行日常操作的完整命令流程
  • Java 大视界 -- Java 大数据在智能安防视频监控系统中的多目标跟踪与行为分析优化(393)
  • Windows Server 2022域控制器部署与DNS集成方案
  • 机器学习中数据集的划分难点及实现
  • LangGraph 历史追溯 人机协同(Human-in-the-loop,HITL)
  • 通用 maven 私服 settings.xml 多源配置文件(多个仓库优先级配置)
  • OpenCV计算机视觉实战(19)——特征描述符详解
  • Python自动化测试实战:reCAPTCHA V3绕过技术深度解析
  • 关于JavaScript 性能优化的实战指南
  • 4-下一代防火墙组网方案
  • 需求列表如何做层级结构
  • Redis类型之Hash
  • vscode的wsl环境,怎么打开linux盘的工程?
  • 【Oracle】如何使用DBCA工具删除数据库?
  • 九,算法-递归
  • ​电风扇离线语音芯片方案设计与应用场景:基于 8 脚 MCU 与 WTK6900P 的创新融合
  • Spark 优化全攻略:从 “卡成 PPT“ 到 “飞一般体验“
  • Empire--安装、使用
  • 布控球:临时布防场景的高清回传利器-伟博
  • 人工智能-python-机器学习-逻辑回归与K-Means算法:理论与应用
  • PYTHON开发的实现运营数据大屏
  • OFD一键转PDF格式,支持批量转换!
  • pip 和 conda,到底用哪个安装?
  • golang开源库之LaPluma
  • 是否有必要使用 Oracle 向量数据库?
  • Oracle 19C 配置TAF