Skip to content

MySQL 使用指南 ​

MySQL 是最流行的开源关系型数据库之一,广泛应用于 Web 应用开发。

一、SQL 语言分类 ​

SQL(Structured Query Language)按功能可分为四大类:

分类全称说明常用命令
DDLData Definition Language数据定义语言,定义数据库结构CREATE、ALTER、DROP、TRUNCATE
DMLData Manipulation Language数据操作语言,操作表中的数据INSERT、UPDATE、DELETE
DQLData Query Language数据查询语言,查询表中的数据SELECT
DCLData Control Language数据控制语言,控制访问权限GRANT、REVOKE

本文档重点介绍 DDL、DML 和 DQL,其中 DQL 是日常开发中使用最频繁的部分。

二、文档目录 ​

文档说明
DDL 数据定义数据库、表、索引的创建与修改
DML 数据操作数据的插入、更新、删除
DQL 数据查询SELECT 查询、JOIN、子查询、聚合函数(重点)
MyBatis XML 详解MyBatis 核心配置与 XML 映射
MyBatis-Plus 使用指南MyBatis-Plus 增强 CRUD 操作
Druid 连接池数据库连接池、SQL 监控、防火墙

三、快速开始 ​

3.1 连接 MySQL ​

bash
# 命令行连接
mysql -u root -p

# 指定主机和端口
mysql -h 127.0.0.1 -P 3306 -u root -p

3.2 Spring Boot 集成 ​

yaml
# application.yml
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/demo_db?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
    username: root
    password: your_password
    driver-class-name: com.mysql.cj.jdbc.Driver
xml
<!-- pom.xml -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.33</version>
</dependency>

四、示例数据 ​

本文档使用以下示例表进行演示:

sql
-- 部门表
CREATE TABLE tb_dept (
    id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '部门ID',
    dept_name VARCHAR(50) NOT NULL COMMENT '部门名称',
    create_time DATETIME DEFAULT CURRENT_TIMESTAMP
);

-- 用户表
CREATE TABLE tb_user (
    id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '用户ID',
    user_name VARCHAR(50) NOT NULL COMMENT '用户名',
    age INT COMMENT '年龄',
    email VARCHAR(100) COMMENT '邮箱',
    dept_id BIGINT COMMENT '部门ID',
    status TINYINT DEFAULT 1 COMMENT '状态:0-禁用 1-启用',
    create_time DATETIME DEFAULT CURRENT_TIMESTAMP,
    update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    deleted TINYINT DEFAULT 0 COMMENT '逻辑删除:0-未删除 1-已删除'
);

-- 订单表
CREATE TABLE tb_order (
    id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '订单ID',
    order_no VARCHAR(50) NOT NULL COMMENT '订单编号',
    user_id BIGINT NOT NULL COMMENT '用户ID',
    amount DECIMAL(10, 2) NOT NULL COMMENT '订单金额',
    status TINYINT DEFAULT 0 COMMENT '状态:0-待支付 1-已支付 2-已取消',
    create_time DATETIME DEFAULT CURRENT_TIMESTAMP
);
最近更新