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

MySQL 基础学习文档

一、MySQL 概述

1.1 核心概念

  • 数据库 (DB):存储数据的结构化仓库
  • 数据库管理系统 (DBMS):操作数据库的软件(如 MySQL、Oracle)
  • SQL:操作关系型数据库的标准语言

1.2 安装与配置

  1. 下载地址:MySQL Installer
  2. 安装步骤
    • 选择 "Developer Default" 安装类型
    • 设置 root 用户密码
    • 配置 Windows 服务(默认名称:MySQL80)
  3. 环境变量配置:将C:\Program Files\MySQL\MySQL Server 8.0\bin添加到 Path

1.3 连接方式

  • 命令行工具mysql -u root -p
  • 图形化工具:推荐使用 DataGrip

二、SQL 基础语法

2.1 通用规则

  • 语句以分号结尾
  • 不区分大小写(建议关键字大写)
  • 注释:-- 单行,/* */ 多行

2.2 分类

类型功能关键字
DDL定义数据库对象CREATE/DROP/ALTER
DML操作数据INSERT/UPDATE/DELETE
DQL查询数据SELECT
DCL控制权限GRANT/REVOKE

三、DDL 操作

3.1 数据库操作

-- 创建数据库(指定字符集)
CREATE DATABASE db_name DEFAULT CHARSET utf8mb4;

-- 删除数据库
DROP DATABASE IF EXISTS db_name;

-- 切换数据库
USE db_name;

3.2 表操作

3.2.1 数据类型
类型示例说明
整数TINYINT(1)0-255(无符号)
字符串VARCHAR(50)可变长度字符串
日期DATEYYYY-MM-DD
3.2.2 表结构操作
-- 创建表
CREATE TABLE user (
  id INT PRIMARY KEY AUTO_INCREMENT,
  name VARCHAR(50) NOT NULL,
  age TINYINT UNSIGNED
);

-- 修改表(添加字段)
ALTER TABLE user ADD COLUMN email VARCHAR(100);

-- 删除表
DROP TABLE IF EXISTS user;

四、DML 操作

4.1 数据插入

-- 插入单条记录
INSERT INTO user (name, age) VALUES ('张三', 20);

-- 批量插入
INSERT INTO user (name, age) 
VALUES ('李四', 25), ('王五', 30);

4.2 数据更新

-- 更新单条记录
UPDATE user SET age = 26 WHERE id = 1;

-- 更新多条记录
UPDATE user SET age = age + 1 WHERE age < 30;

4.3 数据删除

-- 删除单条记录
DELETE FROM user WHERE id = 1;

-- 删除所有记录(保留表结构)
TRUNCATE TABLE user;

五、DQL 查询

5.1 基础查询

-- 查询所有字段
SELECT * FROM user;

-- 查询指定字段并去重
SELECT DISTINCT age FROM user;

-- 字段别名
SELECT name AS 姓名, age AS 年龄 FROM user;

5.2 条件查询

-- 范围查询
SELECT * FROM user WHERE age BETWEEN 20 AND 30;

-- 模糊查询
SELECT * FROM user WHERE name LIKE '张%';

-- 空值处理
SELECT * FROM user WHERE email IS NULL;

5.3 聚合函数

函数功能
COUNT()统计数量
AVG()平均值
MAX()最大值
SUM()求和
-- 统计总人数
SELECT COUNT(*) AS 总人数 FROM user;

-- 计算平均年龄
SELECT AVG(age) AS 平均年龄 FROM user;

5.4 分组与排序

-- 按性别分组统计人数
SELECT gender, COUNT(*) FROM user GROUP BY gender;

-- 按年龄降序排序
SELECT * FROM user ORDER BY age DESC;

5.5 分页查询

-- 每页10条,显示第2页
SELECT * FROM user LIMIT 10 OFFSET 10;

六、约束

6.1 类型

约束关键字说明
主键PRIMARY KEY唯一标识,非空
外键FOREIGN KEY关联其他表主键
唯一UNIQUE字段值唯一
非空NOT NULL字段值不能为空

6.2 外键示例

-- 创建部门表
CREATE TABLE dept (
  id INT PRIMARY KEY,
  name VARCHAR(50)
);

-- 创建员工表(外键关联)
CREATE TABLE emp (
  id INT PRIMARY KEY,
  name VARCHAR(50),
  dept_id INT,
  FOREIGN KEY (dept_id) REFERENCES dept(id)
);

七、多表查询

7.1 连接类型

类型说明
内连接只返回匹配的数据
左外连接返回左表所有数据
右外连接返回右表所有数据
全外连接返回所有数据(MySQL 不支持)

7.2 示例

-- 内连接查询员工及其部门
SELECT e.name, d.name 
FROM emp e 
JOIN dept d ON e.dept_id = d.id;

-- 左外连接查询所有员工
SELECT e.name, d.name 
FROM emp e 
LEFT JOIN dept d ON e.dept_id = d.id;

八、事务

8.1 基本操作

-- 开启事务
START TRANSACTION;

-- 提交事务
COMMIT;

-- 回滚事务
ROLLBACK;

8.2 隔离级别

级别脏读不可重复读幻读
READ UNCOMMITTED
READ COMMITTED
REPEATABLE READ
SERIALIZABLE

九、函数

9.1 常用函数

类型函数示例
字符串CONCAT(a,b)CONCAT('Hello', 'MySQL') → 'HelloMySQL'
日期CURDATE()获取当前日期
流程控制IF(condition, t, f)IF (age>18, ' 成年 ', ' 未成年 ')

十、权限管理

10.1 用户管理

-- 创建用户
CREATE USER 'user'@'localhost' IDENTIFIED BY 'password';

-- 修改密码
ALTER USER 'user'@'localhost' IDENTIFIED BY 'new_password';

-- 删除用户
DROP USER 'user'@'localhost';

10.2 权限控制

-- 授予权限
GRANT SELECT, INSERT ON db.* TO 'user'@'localhost';

-- 撤销权限
REVOKE INSERT ON db.* FROM 'user'@'localhost';

相关文章:

  • 李宏毅NLP-1-课程介绍
  • Excel导出工具类--复杂的excel功能导出(使用自定义注解导出)
  • C++实现线程安全的队列
  • 【Spring】第二弹:通过反射机制初步理解 IoC
  • C++从入门到入土(八)——多态的原理
  • 【GIS】重要技术3DGS
  • 改变一生的思维模型【12】笛卡尔思维模型
  • 【嵌入式学习】计算机组成原理-二进制存储基础
  • Spring Boot 的自动装配
  • 几种常见的激活函数解析
  • Vue学习笔记集--scoped组件
  • Elasticsearch面试题
  • 基于ssm的电子病历系统(全套)
  • 嵌入式项目代码架构与分层
  • 【AI 加持下的 Python 编程实战 2_04】第三章:GitHub Copilot 在 Python 函数设计中的正确打开方式(含本地实操)
  • python局部变量和全局变量
  • 深入理解 C++20 中的 `std::shared_ptr` 原子操作
  • JDK 动态代理和 CGLIB 动态代理
  • 新能源电站系统建设提速!麒麟信安操作系统驱动光伏风电双领域安全升级
  • PEFT简介
  • 摩根士丹利:对冲基金已加码,八成投资者有意近期增配中国
  • 我国7名优秀护理工作者荣获第50届南丁格尔奖
  • 上海与世界|环城生态公园带是上海绿色发展新名片
  • 西藏日喀则市拉孜县发生5.5级地震,震源深度10千米
  • 郎朗也来了,在辰山植物园“轻松听古典”
  • 高培勇:中国资本市场的发展应将预期因素全面纳入分析和监测体系