news 2026/6/5 18:13:51

MySQL基础入门 定义DDL、增删改DML、查DQL、多表查询、事务、索引

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
MySQL基础入门 定义DDL、增删改DML、查DQL、多表查询、事务、索引

目录

  • 一、概述
    • 数据模型
    • SQL语句的分类
    • 数据类型
  • 二、数据库设计 DDL
    • 数据库层面
    • 数据表层面
  • 三、数据库操作 DML
    • 添加数据insert
    • 修改数据update
    • 删除数据delete
  • 四、数据查询 DQL
    • 总结
    • 基本查询
    • 条件查询where
    • 聚合函数
    • 分组查询group by(where与having的区别)
    • 排序查询order by
    • 分页查询limit
    • if和case的使用
  • 五、多表关系
    • 一对多
    • 外键约束
    • 一对一
    • 多对多
  • 六、多表查询
    • 笛卡尔积
    • 内连接
    • 外连接
    • 子查询
      • 标量子查询
      • 列子查询
      • 行子查询
      • 表子查询
  • 七、事务
    • 问题场景引入
    • 概念
    • 事务操作
    • 事务
  • 八、索引
    • 介绍
    • 索引结构:B+树
    • 索引操作语法

一、概述

数据模型

MySQL是如何存储和管理数据的?
DBMS是MySQL服务器里内置的一个软件将SQL语句发送给它 通过它即可操作数据库当中的数据

SQL语句的分类

数据类型

数值类型:
tinyint默认是有符号的
tinynit unsigned才是无符号的

字符串类型:
char(10):不足十个,用空字符补到十个;超过十个,直接报错(性能高 但浪费空间)
varchar(10):最多只能存10个字符,不足10个字符, 按照实际长度存储(性能低 但节省空间 要判断实际长度)
char使用空间换时间 varchar使用时间换空间

日期时间类型:

二、数据库设计 DDL

数据库层面

数据表层面

创建表:
[ ]表示该语法可选
约束是作用在字段上的 用于限制存储在表中的数据

约束:


查询:

修改add,modify,change,drop,rename(表):
前四个是针对字段的修改alter table 表名 + 操作
最后一个是针对表的修改

删除:
删除表的时候表中的数据也会被全都删掉
删除字段是alter table tb_user02 drop column school_name;

三、数据库操作 DML

添加数据insert

插入时 指定的字段顺序要和values的顺序一致
字符串类型比如varchar,日期类型比如date,插入的时候都应该在引号里面

修改数据update

where条件如果没有就会更新当前表的所有记录

删除数据delete

where条件也是可有可无 如果没有就会删除当前表所有数据(危险操作)
delete无法删除某个字段的值(可以使用update 更新某个字段的值为NULL)
下图就是把id=1的那一条记录删除了
第二句SQL是删除了整个表所有的记录

四、数据查询 DQL

总结

where是分组前 having是分组后

编写顺序与实际执行顺序

基本查询

as可以省略
尽量少用select *


条件查询where

条件列表:




聚合函数

NULL值不参与任何一个聚合函数的运算 所以COUNT(字段)一定要是非空字段才算进去
COUNT(*),COUNT(字段),COUNT(常量)都可以统计数量 建议用第一个

分组查询group by(where与having的区别)

1.分组之后 select查询的一般是分组字段或者聚合函数查询其他的字段毫无意义
2.分组之后进行条件的过滤要用having而不是where
3.执行顺序:where > 分组操作/聚合函数 > having
4.where后面不能使用聚合函数因为where是在分组/聚合之前执行的
5.having可以对聚合函数进行判断 本质还是因为聚合函数是在having之前执行的

根据性别分组 统计男性和女性员工的数量

排序查询order by

ASC升序 默认就是它 可以不写
DESC降序
如果是多字段排序当第一个字段有重复值 才会根据第二个字段排序
逻辑上 按照下面这种顺序去写更为清晰

分页查询limit

起始索引从0开始 起始索引 = (查询页码 - 1) * 每页记录数
limit是MySQL的方言 并不是通用的
查询第一页的数据 起始索引可以省略

if和case的使用

if和case:

根据性别分组 , 统计男性和女性员工的数量
如果不把个if重命名为性别 那么他的表头就是这一坨东西(as可以省略)

职位信息统计

五、多表关系

一对多

一个部门 对应多个员工
一个员工 只归属一个部门


外键约束

前面只是在逻辑上知道员工和部门多对一的关系 但是数据库层面并没有进行关联
插入测试数据假如把部门表ID为1的记录直接删除 员工表不会受到任何影响
但此时员工表已经出现数据不一致不完整的问题了还有部分员工仍归属于被删掉的部门下
外键约束用于解决多表之间数据的一致性和完整性问题
设置外键关联之后 1部门就删不了了 5部门还是能删 因为没有员工属于5部门

物理外键与逻辑外键:

一对一

比如用户 和 身份证的关系

多对多

通过中间表 可以查到学生选了什么课 课程被谁选了

六、多表查询

笛卡尔积

笛卡尔积 会有5*17条记录 每五条里面只有一条是有效的数据

内连接

第十七个员工 内连接就查不出来(不属于交集) 要用外连接
内连接求的其实就是笛卡尔积 要用where或者on消除无效的数据


外连接

左外连接包含左边表的所有数据 以及 交集部分


子查询

子查询分类:

标量子查询

子查询返回单个值


列子查询

返回的是一列 多行

行子查询

子查询返回的是一行 多列

表子查询

通常作为一张临时表 所以一般在select语句的from后面

七、事务

问题场景引入

有可能是SQL代码写错了或各种原因 导致该部门的员工没有被删除
但是这两个操作应该作为一个整体 要么都删了 要么都没有

概念

一组操作 要么都成功 要么都失败


事务操作

begin
commit
rollback

正常情况:执行完没错 提交事务

异常情况:执行出错 回滚事务
可以把删除掉的数据恢复 保证了操作前后数据的一致性

事务

wsm
的四大特性ACID

原子性 一致性 隔离性 持久性

八、索引

介绍

简单来说就是提高查询效率的数据结构

索引的优缺点

索引结构:B+树

为什么MySQL不用二叉搜索树或者红黑树?
大数据量情况下 层级深(树的高度过高) 检索速度慢 → B+树解决

索引操作语法

如果是唯一索引 就要加上unique

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/5 18:12:12

深度解析:如何通过AtlasOS系统级优化实现GPU性能跃升

深度解析:如何通过AtlasOS系统级优化实现GPU性能跃升 【免费下载链接】Atlas 🚀 An open and lightweight modification to Windows, designed to optimize performance, privacy and usability. 项目地址: https://gitcode.com/GitHub_Trending/atlas…

作者头像 李华
网站建设 2026/6/5 18:12:09

Allegro PCB设计:DXF文件导入导出全流程详解与避坑指南

1. 项目概述:为什么DXF文件是PCB设计的“骨架”在PCB设计这个行当里,无论你是画FPGA的高速板、MCU的工控板,还是消费电子的智能硬件,第一步往往不是摆元件、拉线,而是把板子的“骨架”——也就是外框和结构——给确定下…

作者头像 李华
网站建设 2026/6/5 18:05:52

VNN架构设计深度剖析:高性能神经网络部署框架的核心原理与技术实现

VNN架构设计深度剖析:高性能神经网络部署框架的核心原理与技术实现 【免费下载链接】VNN VNN是由欢聚集团(Joyy Inc.)推出的高性能、轻量级神经网络部署框架。目前已为Hago、VOO、VFly、马克相机等App提供20余种AI能力的支持,覆盖直播、短视频、视频编辑…

作者头像 李华
网站建设 2026/6/5 18:05:06

鸿蒙6.0应用开发——一多工程的部署与发布

鸿蒙6.0应用开发——一多工程的部署与发布 文章目录鸿蒙6.0应用开发——一多工程的部署与发布概述创建三层架构工程修改Module类型及设备类型修改依赖关系配置增强启动页发布一多应用概述 本章介绍一多应用在工程结构设计及应用上架配置中的方法。在开发“一多”应用时&#x…

作者头像 李华
网站建设 2026/6/5 18:05:02

xrdp远程桌面实战:5步深度配置解决Linux RDP连接难题

xrdp远程桌面实战:5步深度配置解决Linux RDP连接难题 【免费下载链接】xrdp xrdp: an open source RDP server 项目地址: https://gitcode.com/gh_mirrors/xrd/xrdp xrdp作为Linux系统上功能最全面的开源RDP服务器,为Windows远程桌面协议提供了在…

作者头像 李华
网站建设 2026/6/5 18:04:57

2023B卷,最长广播响应

👨‍⚕️ 主页: gis分享者 👨‍⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍⚕️ 收录于专栏:华为OD面试 文章目录 一、🍀前言 1.1 ☘️题目详情 1.2 ☘️参考解题答案 一、🍀前言 2023B卷,最长广播响应。 1.1 ☘️题目详情 题目: 某通信网…

作者头像 李华