学习笔记 | 一文搞懂MySQL体系架构!!!(day22)

2024-09-03 10:20

本文主要是介绍学习笔记 | 一文搞懂MySQL体系架构!!!(day22),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本文章的内容会在后面文章中慢慢讲解,该文章主要给各位博友zaipin提供学习思路,也希望大家在评论区发言表述,觉得文章有不足指出也可点评,希望大家多多支持!!!

目录

 一、MySQL

1.1 数据库概述

1.2 数据库分类

1.2.1 关系型数据库

1.2.2 非关系型数据库

1.3 MySQL的安装

1.4 访问数据库服务器

1.5 SQL分类

1.6 MySQL注解

1.7 DDL

1.7.1 数据库的管理

1.7.2 数据表的管理

1.8 DQL(重点)

1.8.1 基础查询

1.8.2 条件查询

1.8.2.1 WHERE关键字

1.8.2.1.1 条件表达式

1.8.2.1.2 逻辑表达式

1.8.2.1.3 模糊查询

1.8.2.2 DISTINCT 

 1.8.2.3 排序查询

 1.8.2.4 别名

 1.8.2.5 多行函数

 1.8.2.6 分组查询

 1.8.2.7 HAVING

 1.8.2.8 子查询 

1.8.3 分页查询

1.8.4 多表连接查询

1.8.4.1 笛卡尔积查询

1.8.4.1.1 公式

1.8.4.1.2 缺点

1.8.4.1.3 优点

1.8.4.2 连接查询

1.8.4.2.1 内连接

1.8.4.2.2 外连接

1.8.4.2.2.1 左外连接

1.8.4.2.2.2 右外连接

1.8.4.2.2.3 全外连接

1.9 数据类型(重点)

1.9.1 数值类型

1.9.2 字符串类型

1.9.3 日期类型

1.10 DML(必须掌握)

1.10.1 插入数据

1.10.1.1 插入全表单条数据

1.10.1.2 插入指定字段单条数据

1.10.1.3 全表插入多条数据

1.10.1.4 指定字段插入多条数据

1.10.2 修改数据

1.10.3 删除数据

1.11 约束(必须掌握)

1.11.1 主键约束

1.11.1.1 概念

1.11.1.2 特点

1.11.1.3 语法

1.11.1.4 自增主键

1.11.2 非空约束

1.11.2.1 概念

1.11.2.2 语法

1.11.3 唯一约束

1.11.3.1 概念

1.11.3.2 语法

1.11.4 检查约束

1.11.4.1 概念

1.11.4.2 语法

1.11.5 外键约束

1.11.5.1 概念

1.11.5.2 特点

1.11.5.3 语法

1.12 数据库TCL语言

1.12.1 事务概述

1.12.2 特点

1.12.3 事务操作

1.12.4 事务并发问题

1.12.5 事务隔离界别

1.12.6 设置隔离级别

二、JDBC

2.1 概述

2.1.1 数据库的持久化

2.1.2 JDBC介绍

2.2.3 JDBC开发流程

2.2 使用

2.2.1 注册驱动

2.2.2 获取数据库连接

2.2.2.1 指定URL

2.2.2.2 指定用户名

2.2.2.3 指定密码

2.2.2.4 调用获取连接方法

2.2.3 获取传输器

2.2.4 处理结果集

2.2.5 资源释放

2.2.6 JDBC的事务处理

2.2.6.1 开启手动提交事务

2.2.6.2 提交事务

2.2.6.3 回滚事务

三、Spring

3.1 Maven

3.2 Spring简介

3.2.1 概念

3.2.2 优势

3.3 Spring Boot简介

3.3.1 概念

3.3.2 功能

3.4 IOC

3.4.1 概念

3.4.2 常用注解

3.5 DI

3.5.1 概念

3.5.2 常用注解

3.6 HikariCP

3.6.1 概念

3.6.2 作用

3.6.3 使用方式

3.7 JDBC Template

3.7.1 作用

3.7.2 使用方式

四、MyBatis

4.1 概念

4.2 Spring Boot整合MyBatis

4.3 注解方式

4.3.1 编写实体类

4.3.2 定义接口

4.3.3 定义方法

4.3.4 绑定SQL

4.3.5 进行测试

4.4 XML方式开发

4.4.1 编写实体类

4.4.2 定义接口

4.4.3 定义SQL

4.4.3.1 Select标签

4.4.3.2 Update标签

4.4.4 进行测试

4.5 #{}占位符

4.6 resultMap


 一、MySQL

1.1 数据库概述

① 数据库

② 数据库管理系统

③ SQL

1.2 数据库分类

1.2.1 关系型数据库

① MySQL

② MariaDB

③ Oracle

1.2.2 非关系型数据库

1.3 MySQL的安装

① 安装时需要注意设置密码;

② 最好勾选UTF-8选项。

1.4 访问数据库服务器

命令行(不推荐,易写错SQL)

可视化工具(安装MySQL时自带HedisSQL)

JDBC

使用集成工具连接(IDEA)

1.5 SQL分类

DDL 操作数据库或者数据表

DML 表记录的增删改查

DQL 数据查询语句

TCL 事务控制语句

1.6 MySQL注解

单行注释 #注释文字

单行注释 --注释文字

多行注释 /*注释文字*/

1.7 DDL

1.7.1 数据库的管理

查看所有的数据库

SHOW DATABASES;

建库

① 基础创建

CREATE DATABASE 数据库名;

② 如果数据库不存在则创建

CREATE DATABASE IF NOT EXISTS 数据库名;

查询数据库信息

SHOW CREATE DATABASE 数据库名;

删库

① 基础删除

DROP DATABASE 数据库名;

② 如果库存在则删除

CREATE DATABASE IF NOT EXISTS 数据库名;

使用数据库

USE 数据库名;

1.7.2 数据表的管理

查看所有表

SHOW TABLES;

创建表

CREATE TABLE 表名(

字段1名 数据类型,

字段2名 数据类型,

.....

)[CHARSET=utf8/gbk];

查看表结构

SHOW CREATE TABLE 表名;

查询表字段

DESC 表名;

删除表

DROP TABLE 表名;

1.8 DQL(重点)

1.8.1 基础查询

SELECT 要查询的东西 [FROM 表名];

1.8.2 条件查询

1.8.2.1 WHERE关键字
1.8.2.1.1 条件表达式

>、<、>=、<=、=、!=、<>、BETWEEN...AND...、IN、IS NULL

1.8.2.1.2 逻辑表达式

&&、AND、||、OR、NOT

1.8.2.1.3 模糊查询

LIKE关键字:_代表单个字符、%代表多个字符

1.8.2.2 DISTINCT 

去除重复数据

 1.8.2.3 排序查询

ORDER BY :排序关键字

 ASC:升序

 DESC:降序

 1.8.2.4 别名

表别名:表名 AS 表别名

字段别名:字段名 AS 字段别名

 1.8.2.5 多行函数

SUM():求和

MAX():最大值

MIN():最小值

AVG():平均数

COUNT():COUNT(*)-->获取表的总行数、COUNT(字段)-->获取字段的总行数

 1.8.2.6 分组查询

SELECT 查询的字段,分组函数

FROM 表

GROUP BY 分组的字段

 1.8.2.7 HAVING

WHERE用于分组之前的筛选

HAVING用于分组之后的筛选

 1.8.2.8 子查询 

单行子查询:将一个查询的一个结果作为另一个SQL的条件使用

多行子查询:将一个查询的多个结果作为另一个SQL的条件使用

1.8.3 分页查询

LIMIT N (前N条数据)

 LIMIT M,N (M: 从第M+1条记录开始,N: 每页显示N条记录)

 LIMIT(PAGE -1) * SIZE,SIZE(PAGE: 要显示的页数,SIZE: 每页显示的记录数)

1.8.4 多表连接查询

1.8.4.1 笛卡尔积查询
1.8.4.1.1 公式

SELECT ...

FROM 表1,表2...

WHERE 关联条件

1.8.4.1.2 缺点

① 查询出来的结果时关联表的记录乘积(比如表1有N条记录,表2有M条记录,则查询的结果会有M*N条记录);

② 处理大型数据时,耗时很大;

③ 只能查询符合筛选条件的记录,不符合条件的记录会被清空。

1.8.4.1.3 优点

返回所有可能的行数

1.8.4.2 连接查询
1.8.4.2.1 内连接

作用:只查询符合连接条件的数据

关键字:INNER JOIN ... ON ...

1.8.4.2.2 外连接
1.8.4.2.2.1 左外连接

作用:左侧表中连接条件之外的数据

关键字:LEFT JOIN ... ON ...

1.8.4.2.2.2 右外连接

作用:右侧表中连接条件之外的数据

关键字:RIGHT JOIN .. ON ...

1.8.4.2.2.3 全外连接

作用:双侧表中连接条件之外的数据,但是MySQL不支持

关键字:FULL JOIN ... ON ...

1.9 数据类型(重点)

1.9.1 数值类型

整数类型:TINYINT、SMALLINT、INT、BIGINT

浮点数类型:FLOAT、DOUBLE、DECIMAL(M,N)

1.9.2 字符串类型

CHAR:最多容纳256个字符

VARVHAR:UTF-8 65535/2字符

TEXT:最长字节量是65535字节

1.9.3 日期类型

DATETIME:年月日 时分秒

DATE:年月日

TIME:时分秒

TIMESTAMP:时间戳

1.10 DML(必须掌握)

1.10.1 插入数据

INSERT INTO 表名[(字段1,字段2,...)] VALUES(值1,值2,...)[,(值1,值2,...),(值1,值2,...),...]

1.10.1.1 插入全表单条数据

INSERT INTO 表名 VALUES(值1,值2);

插入的值的顺序要和表字段顺序一致;

当有的字段无值时,需要设置为null。

1.10.1.2 插入指定字段单条数据

INSERT INTO 表名(字段1名,字段2名) VALUES(值1,值2);

插入的值的书写序要和指定的字段顺序一致;

如果指定的时部分字段,只需要给指定的字段传入值,没有指定的字段自动设置为null。

1.10.1.3 全表插入多条数据

INSERT INTO 表名 VALUES(值1,值2),(值1,值2),(值1,值2);

插入的值的顺序要和表字段顺序一致;

当有的字段无值时,需要设置为null。

1.10.1.4 指定字段插入多条数据

INSERT INTO 表名 (字段1名,字段2名) VALUES(值1,值2),(值1,值2);

插入的值的书写序要和指定的字段顺序一致;

如果指定的时部分字段,只需要给指定的字段传入值,没有指定的字段自动设置为null。

1.10.2 修改数据

UPDATE 表名 SET 字段名=值,字段名=值 [WHERE 条件];

1.10.3 删除数据

DELETE FROM 表名 [WHERE 条件];

1.11 约束(必须掌握)

1.11.1 主键约束

1.11.1.1 概念

主键 : 表示数据唯一性的字段称为主键

约束 : 创建表时,给表字段添加的限制条件

主键约束 : 限制主键的值唯一且非空

1.11.1.2 特点

主键字段,尽量不使用业务数据

应使用无意义数据作为主键

1.11.1.3 语法

CREATE TABLE 表名(

列名 数据类型 PRIMARY KEY,

......

);

1.11.1.4 自增主键

CREATE TABLE 表名(

列名 整数类型 PRIMARY KEY AUTO_INCREMENT,

......

);

1.11.2 非空约束

1.11.2.1 概念

保证列中所有的数值不能有null值

1.11.2.2 语法

CREATE TABLE 表名(

列名 数据类型 NOT NULL,

......

);

1.11.3 唯一约束

1.11.3.1 概念

唯一:唯一性,可以为空,但是只能有一个

1.11.3.2 语法

CREATE TABLE 表名(

列名 数据类型 UNIQUE,

......

);

1.11.4 检查约束

1.11.4.1 概念

检查:对该列数据的范围,格式的限制

1.11.4.2 语法

CREATE TABLE 表名(

......,

CHECK (字段条件表达式)

);

1.11.5 外键约束

1.11.5.1 概念

约束一个字段的取值,只能从指定的主键字段中取值

1.11.5.2 特点

取消被引用的主键,必须先取消外键

被引用的主键数据,不能删除,必须先删除子数据,或修改子数据

删除主表,必须先取消外键引用,或先删除子表

外键会降低效率

高压力系统中,一般不添加外键约束

1.11.5.3 语法

CREATE TABLE 表名(

......,

FOREIGN KEY(外键列名) REFERENCES 表名(主键列名)

);

1.12 数据库TCL语言

1.12.1 事务概述

事务由一组sql语句组成,所有sql语句执行成功,事务整体成功,任一条sql语句失败,整体事务失败,数据恢复到事务之前的状态

1.12.2 特点

原子性:数据操作的最小单元是事务,而不是SQL语句

一致性:保证数据的状态操作前和操作后保持一致

隔离性: 多个事务同时操作相同数据库的同一个数据时,一个事务的执行不受另外一个事务的干扰

 持久性:指一个事务一旦被提交,它对数据库中数据的改变就是永久性的,接下来即使数据库发生故障也不应该对其有任何影响

1.12.3 事务操作

不主动开启事务,每一条SQL都是一条书屋,执行之后自动提交事务

 开启事务(START TRANSACTION;或者是BEGIN;):数据增删改操作,不直接修改数据表,而是在日志文件中记录修改

 提交事务(COMMIT;):将日志中记录的修改操作,永久保存到数据表,日志文件清空

 回滚事务(ROLLBACK;):日志文件清空

1.12.4 事务并发问题

脏读;

幻读;

不可重复读。

1.12.5 事务隔离界别

读未提交:READ UNCOMMITTED

读已提交:READ COMMITTED

可重复读:REPEATABLE READ

序列化:SERIALIZABLE

1.12.6 设置隔离级别

查看隔离界别;

设置隔离级别为读未提交;

设置隔离级别为读已提交;

设置隔离级别为可重复读;

设置隔离级别为序列化

二、JDBC

2.1 概述

2.1.1 数据库的持久化

持久化(persistence):把数据保存到可掉电式存储设备中以供之后使用。大多数情况下,特别是企业级应用,数据持久化意味着将内存中的数据保存到硬盘上加以”固化”,而持久化的实现过程大多通过各种关系数据库来完成

2.1.2 JDBC介绍

JDBC为访问不同的数据库提供了一种统一的途径,为开发者屏蔽了一些细节问题

2.2.3 JDBC开发流程

2.2 使用

2.2.1 注册驱动

2.2.2 获取数据库连接

2.2.2.1 指定URL

String url = "jdbc:mysql://localhost:3306/数据库名?useUnicode=true&characterEncoding=utf8";

2.2.2.2 指定用户名

String user = "root";

2.2.2.3 指定密码

String pwd = "root";

2.2.2.4 调用获取连接方法

Connection conn = DriverManager.getConnection(url, user, pwd);

2.2.3 获取传输器

定义SQL(使用SQL骨架)

executeQuery()——返回结果集

executeUpdate()——返回整数

2.2.4 处理结果集

next()

getXxx(String columnName)

2.2.5 资源释放

colse()

2.2.6 JDBC的事务处理

2.2.6.1 开启手动提交事务

setAutoCommit(false);

2.2.6.2 提交事务

Connection连接对象.commit();

2.2.6.3 回滚事务

Connection连接对象.rollback();

三、Spring

3.1 Maven

3.2 Spring简介

3.2.1 概念

  • Spring是分层的 Java SE/EE应用 full-stack 轻量级开源框架,以IOC(Inverse Of Control:反转控制)和AOP(Aspect Oriented Programming:面向切面编程)为内核。
  • 提供了展现层 SpringMVC持久层 Spring JDBCTemplate 以及业务层事务管理等众多的企业级应用技术,还能整合开源世界众多著名的第三方框架和类库,逐渐成为使用最多的Java EE 企业应用开源框架。

3.2.2 优势

  • 方便解耦,简化开发
    通过 Spring 提供的 IoC容器,可以将对象间的依赖关系交由 Spring 进行控制,避免硬编码所造成的过度耦合。

    用户也不必再为单例模式类、属性文件解析等这些很底层的需求编写代码,可以更专注于上层的应用。

  • AOP 编程的支持
    通过 Spring的 AOP 功能,方便进行面向切面编程,许多不容易用传统 OOP 实现的功能可以通过 AOP 轻松实现。

  • 声明式事务的支持
    可以将我们从单调烦闷的事务管理代码中解脱出来,通过声明式方式灵活的进行事务管理,提高开发效率和质量。

  • 方便程序的测试
    可以用非容器依赖的编程方式进行几乎所有的测试工作,测试不再是昂贵的操作,而是随手可做的事情。

  • 方便集成各种优秀框架
    Spring对各种优秀框架(Struts、Hibernate、Hessian、Quartz等)的支持。

  • 降低 JavaEE API 的使用难度
    Spring对 JavaEE API(如 JDBC、JavaMail、远程调用等)进行了薄薄的封装层,使这些API 的使用难度大为降低。

  • Java 源码是经典学习范例
    Spring的源代码设计精妙、结构清晰、匠心独用,处处体现着大师对Java 设计模式灵活运用以及对 Java技术的高深造诣。它的源代码无意是 Java 技术的最佳实践的范例。

3.3 Spring Boot简介

3.3.1 概念

SpringBoot提供了一种快速使用Spring的方式,基于约定优于配置的思想,可以让开发人员不必在配置与逻辑业务之间进行思维的切换,全身心的投入到逻辑业务的代码编写中,从而大大提高了开发的效率,一定程度上缩短了项目周期。2014 年 4 月,Spring Boot 1.0.0 发布。Spring的顶级项目之一(https://spring.io)。

3.3.2 功能

自动配置;

起步依赖;

辅助功能

3.4 IOC

3.4.1 概念

  • Inversion of Control,控制反转。
  • IOC主要是一种设计思想。在应用程序中,原本由程序主动去new依赖对象,变成了由IOC容器来控制对象的创建。
  • 所以,所谓的控制反转,控制指的是IOC容器控制了对象的创建,反转指的是程序依赖IOC容器来注入对象。

3.4.2 常用注解

@Component

@Controller

@Service

@Repository

3.5 DI

3.5.1 概念

依赖注入(Dependency Injection):它是 Spring 框架核心 IOC 的具体实现。组件之间依赖关系由容器在运行期决定,形象的说,即由容器动态的将某个依赖关系注入到组件之中。

3.5.2 常用注解

@Value

@Autowired

@ConfigurationProperties

3.6 HikariCP

3.6.1 概念

3.6.2 作用

3.6.3 使用方式

3.7 JDBC Template

3.7.1 作用

3.7.2 使用方式

四、MyBatis

4.1 概念

4.2 Spring Boot整合MyBatis

① 添加依赖

② 配置数据源

4.3 注解方式

4.3.1 编写实体类

类名

属性名

属性类型

get和set

4.3.2 定义接口

接口名

4.3.3 定义方法

方法名

返回值

方法参数

4.3.4 绑定SQL

@Select

@Update

@Insert

@Delete

4.3.5 进行测试

4.4 XML方式开发

4.4.1 编写实体类

4.4.2 定义接口

4.4.3 定义SQL

4.4.3.1 Select标签

id要和绑定接口方法名一致;

resultType为查询要封装的实体类路径

4.4.3.2 Update标签

id要和绑定接口方法名一致

4.4.4 进行测试

4.5 #{}占位符

基本类型:参数名可以任意起

自定义类型:参数名要和映射的实体类一致

Map类型:参数名要和key的名字相同

4.6 resultMap

4.6.1 id属性

4.6.2 type属性

4.6.3 id标签

column属性

property属性

4.6.4 result标签

column属性

property属性

4.6.5 级联用法

一对一 association(proerty、javaType)

一对多 collection(property、ofType)

4.6.6 动态SQL

if标签

where标签

set标签

foreach标签

sql标签

上篇文章:MySQL的安装—>Mariadb的安装(day21)-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/Z0412_J0103/article/details/141678370下篇文章:

这篇关于学习笔记 | 一文搞懂MySQL体系架构!!!(day22)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1132701

相关文章

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

mybatis的整体架构

mybatis的整体架构分为三层: 1.基础支持层 该层包括:数据源模块、事务管理模块、缓存模块、Binding模块、反射模块、类型转换模块、日志模块、资源加载模块、解析器模块 2.核心处理层 该层包括:配置解析、参数映射、SQL解析、SQL执行、结果集映射、插件 3.接口层 该层包括:SqlSession 基础支持层 该层保护mybatis的基础模块,它们为核心处理层提供了良好的支撑。

SQL中的外键约束

外键约束用于表示两张表中的指标连接关系。外键约束的作用主要有以下三点: 1.确保子表中的某个字段(外键)只能引用父表中的有效记录2.主表中的列被删除时,子表中的关联列也会被删除3.主表中的列更新时,子表中的关联元素也会被更新 子表中的元素指向主表 以下是一个外键约束的实例展示

基于MySQL Binlog的Elasticsearch数据同步实践

一、为什么要做 随着马蜂窝的逐渐发展,我们的业务数据越来越多,单纯使用 MySQL 已经不能满足我们的数据查询需求,例如对于商品、订单等数据的多维度检索。 使用 Elasticsearch 存储业务数据可以很好的解决我们业务中的搜索需求。而数据进行异构存储后,随之而来的就是数据同步的问题。 二、现有方法及问题 对于数据同步,我们目前的解决方案是建立数据中间表。把需要检索的业务数据,统一放到一张M

百度/小米/滴滴/京东,中台架构比较

小米中台建设实践 01 小米的三大中台建设:业务+数据+技术 业务中台--从业务说起 在中台建设中,需要规范化的服务接口、一致整合化的数据、容器化的技术组件以及弹性的基础设施。并结合业务情况,判定是否真的需要中台。 小米参考了业界优秀的案例包括移动中台、数据中台、业务中台、技术中台等,再结合其业务发展历程及业务现状,整理了中台架构的核心方法论,一是企业如何共享服务,二是如何为业务提供便利。

如何去写一手好SQL

MySQL性能 最大数据量 抛开数据量和并发数,谈性能都是耍流氓。MySQL没有限制单表最大记录数,它取决于操作系统对文件大小的限制。 《阿里巴巴Java开发手册》提出单表行数超过500万行或者单表容量超过2GB,才推荐分库分表。性能由综合因素决定,抛开业务复杂度,影响程度依次是硬件配置、MySQL配置、数据表设计、索引优化。500万这个值仅供参考,并非铁律。 博主曾经操作过超过4亿行数据

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

性能分析之MySQL索引实战案例

文章目录 一、前言二、准备三、MySQL索引优化四、MySQL 索引知识回顾五、总结 一、前言 在上一讲性能工具之 JProfiler 简单登录案例分析实战中已经发现SQL没有建立索引问题,本文将一起从代码层去分析为什么没有建立索引? 开源ERP项目地址:https://gitee.com/jishenghua/JSH_ERP 二、准备 打开IDEA找到登录请求资源路径位置