本文主要是介绍学习笔记 | 一文搞懂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博客https://blog.csdn.net/Z0412_J0103/article/details/141678370下篇文章:
这篇关于学习笔记 | 一文搞懂MySQL体系架构!!!(day22)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!