本文章的内容会在后面文章中慢慢讲解,该文章主要给各位博友zaipin提供学习思路,也希望大家在评论区发言表述,觉得文章有不足指出也可点评,希望大家多多支持!!!
目录
一、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数据库的基本概念(day23)-CSDN博客https://blog.csdn.net/Z0412_J0103/article/details/141679002