学习笔记 | 一文搞懂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

相关文章

一文带你理解Python中import机制与importlib的妙用

《一文带你理解Python中import机制与importlib的妙用》在Python编程的世界里,import语句是开发者最常用的工具之一,它就像一把钥匙,打开了通往各种功能和库的大门,下面就跟随小... 目录一、python import机制概述1.1 import语句的基本用法1.2 模块缓存机制1.

Mysql DATETIME 毫秒坑的解决

《MysqlDATETIME毫秒坑的解决》本文主要介绍了MysqlDATETIME毫秒坑的解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着... 今天写代码突发一个诡异的 bug,代码逻辑大概如下。1. 新增退款单记录boolean save = s

mysql-8.0.30压缩包版安装和配置MySQL环境过程

《mysql-8.0.30压缩包版安装和配置MySQL环境过程》该文章介绍了如何在Windows系统中下载、安装和配置MySQL数据库,包括下载地址、解压文件、创建和配置my.ini文件、设置环境变量... 目录压缩包安装配置下载配置环境变量下载和初始化总结压缩包安装配置下载下载地址:https://d

MySQL中的锁和MVCC机制解读

《MySQL中的锁和MVCC机制解读》MySQL事务、锁和MVCC机制是确保数据库操作原子性、一致性和隔离性的关键,事务必须遵循ACID原则,锁的类型包括表级锁、行级锁和意向锁,MVCC通过非锁定读和... 目录mysql的锁和MVCC机制事务的概念与ACID特性锁的类型及其工作机制锁的粒度与性能影响多版本

MYSQL行列转置方式

《MYSQL行列转置方式》本文介绍了如何使用MySQL和Navicat进行列转行操作,首先,创建了一个名为`grade`的表,并插入多条数据,然后,通过修改查询SQL语句,使用`CASE`和`IF`函... 目录mysql行列转置开始列转行之前的准备下面开始步入正题总结MYSQL行列转置环境准备:mysq

MySQL不使用子查询的原因及优化案例

《MySQL不使用子查询的原因及优化案例》对于mysql,不推荐使用子查询,效率太差,执行子查询时,MYSQL需要创建临时表,查询完毕后再删除这些临时表,所以,子查询的速度会受到一定的影响,本文给大家... 目录不推荐使用子查询和JOIN的原因解决方案优化案例案例1:查询所有有库存的商品信息案例2:使用EX

Linux(Centos7)安装Mysql/Redis/MinIO方式

《Linux(Centos7)安装Mysql/Redis/MinIO方式》文章总结:介绍了如何安装MySQL和Redis,以及如何配置它们为开机自启,还详细讲解了如何安装MinIO,包括配置Syste... 目录安装mysql安装Redis安装MinIO总结安装Mysql安装Redis搜索Red

Mysql8.0修改配置文件my.ini的坑及解决

《Mysql8.0修改配置文件my.ini的坑及解决》使用记事本直接编辑my.ini文件保存后,可能会导致MySQL无法启动,因为MySQL会以ANSI编码读取该文件,解决方法是使用Notepad++... 目录Myhttp://www.chinasem.cnsql8.0修改配置文件my.ini的坑出现的问题

MySQL8.0找不到my.ini如何解决

《MySQL8.0找不到my.ini如何解决》在配置MySQL主从复制时,发现找不到my.ini配置文件,通过检查路径和打开隐藏文件夹,最终在C:ProgramDataMySQLMySQLSer... 目录问题描述解决方法总结问题描述今天在配置mysql主从复制的时候发现,找不到my.ini这个配置文件。

MySQL中my.ini文件的基础配置和优化配置方式

《MySQL中my.ini文件的基础配置和优化配置方式》文章讨论了数据库异步同步的优化思路,包括三个主要方面:幂等性、时序和延迟,作者还分享了MySQL配置文件的优化经验,并鼓励读者提供支持... 目录mysql my.ini文件的配置和优化配置优化思路MySQL配置文件优化总结MySQL my.ini文件