数据库和SpringBoot

数据库

学习数据库主要学习的是如何对数据进行增删改查操作.

SQL

Structured Query Language: 结构化查询语言, 通过此语言让程序员和数据库软件进行交流

DBMS

DataBaseManagementSystem: 数据库管理系统(数据库软件)

常见的几种DBMS:

  1. MySQL: Oracle公司产品, 08年被Sun公司收购, 09年Sun公司被Oracle收购. 开源产品 , MaraDB实际上就是MySQL的一个分支使用方式和MySQL一样. 市占率排名第一
  2. Oracle: Oracle公司产品, 闭源产品 ,性能最强 价格最贵, 市占率排名第二
  3. SQLServer: 微软公司产品, 闭源产品 , 市占率第三
  4. DB2: IBM公司产品
  5. SQLite: 轻量级数据库, 安装包几十K ,只具备最基础的增删改查功能.

如何连接数据库执行SQL语句

执行SQL语句需要先和数据库软件建立链接之后
. 从开始菜单中找到MariaDB或MySQL,然后打开找到里面的MySQL Client 打开 , 然后输入密码后回车
退出指令: exit
登录指令: mysql -uroot -p

数据库和表的概念

在MySQL数据库软件中保存数据,需要先建库,然后在库里面建表,然后把数据保存到表中

数据库和SpringBoot
一对多:有AB两张表,A表中的一条数据对应B表中的多条数据, 同时B表中的一条数据对应A表中的一条数据
数据库和SpringBoot
表和表之间如何建立关系 ,通过外键字段建立关系
一对一: 在任意表中添加一个建立关系的字段指向另外一张表的主键 .
一对多: 在多的表中添加建立关系的字段(外键) 指向另外一张表的主键 .
多对多: 需要创建一个单独的关系表,里面至少包含两个字段分别指向另外两个表的主键.

关联查询

关联查询之等值链接

格式: select * from A,B where 关联关系
查询工资高于2000的员工姓名和对应的部门名
select e.name,d.name,sal
from emp e,dept d where e.dept_id=d.id and sal>2000;

关联查询之内连接

格式: select * from A join B on 关联关系
查询工资高于2000的员工姓名和对应的部门名
select e.name,d.name,sal from emp e join dept d on e.dept_id=d.id where sal>2000;

关联查询之外连接

等值链接和内连接查询到的都是两张表的交集数据
外连接查询的是一张表的全部和另外一张表的交集数据
格式: select * from A left/right join B on 关联关系
insert into emp(name,sal) values(“灭霸”,5);
查询所有员工姓名和对应的部门名
select e.name,d.name from emp e left join dept d on e.dept_id=d.id;
查询所有部门的名称,地点和对应的员工姓名和工资
select d.name,loc,e.name,sal
from emp e right join dept d on e.dept_id=d.id;

关联查询总结:

如果需要同时查询多张表的数据使用关联查询
关联查询包括:等值链接,内连接和外连接
等值链接和内连接查询的是两个表的交集数据, 推荐使用内连接
如果需要查询一张表的全部和另外一张表的交集时 使用外连接,只需要掌握左外即可,因为表的位置可以交换

转换

一、将根据字符查询转换后结果,规则为: ‘A’转换为’男’,‘B’转换为’女’,其他字符转换为’未知’,请用一个SQL语句写出。
select case when 字段=’A’ then ‘男’ when 字段=’B’ then ‘女 ’ else ‘未知’end from 表名;

中文问题:

错误原因是客户端和MySQL之间编解码字符集不一致导致的
解决方案: 修改MySQL的解码字符集为gbk
set names gbk;

数据库和SpringBoot

执行SQL语句的对象Statement

execute(“sql”); 此方法可以执行任意SQL语句, 但建议执行DDL(数据库相关和表相关的SQL语句)
int row = executeUpdate(“sql”); 此方法用来执行增删改相关的SQL语句, 返回值表示生效的行数
ResultSet rs = executeQuery(“sql”); 此方法用来执行查询相关的SQL语句,返回值ResultSet叫做结果集对象,查询到的数据都装在此对象中

数据库连接池DBCP

DataBaseConnectionPool, 数据库连接池
作用: 将连接重用,从而提高执行效率

数据库和SpringBoot

SQL注入:

往本应该传值的地方,传递进来的SQL语句,导致原有SQL语句的逻辑发生改变, 这个过程称为SQL注入

PreparedStatement预编译的SQL执行对象

数据库常见错误

1.用户名或密码错误: 检查用户名或密码

数据库和SpringBoot
3.主键值重复了
数据库和SpringBoot
5.JDBC链接数据库时的报错: 代表没有启动MySQL服务, 在我的电脑上右键管理 找到Mysql服务右键开启即可
数据库和SpringBoot
7.参数位置超出范围, 数量和替换问号时位置不匹配
数据库和SpringBoot

Web服务软件做了那些事儿/h2>

web服务软件就是传奇老师带着写的webServer, 也就是Tomcat
负责建立底层的网络连接
根据客户端请求的静态资源路径找到对应的静态资源文件并把该文件返回给客户端
举例:http://localhost:8080/index.html
根据客户端请求的动态资源路径找到对应的Controller里面的方法并且执行
举例:http://localhost:8080/hello
Web服务软件自身不提供任何业务功能,通过Controller给工程添加具体的业务功能

SSM三大框架

Spring框架(第四阶段讲)
SpringMVC框架(第二阶段到第四阶段)
Mybatis框架(第三阶段到第四阶段)

SpringBoot框架

如果创建一个空工程,在此工程中使用SSM框架时需要添加大量的依赖和书写大量的配置文件, 通过SpringBoot框架可以更加便捷的让工程中引入各种框架, SpringBoot框架帮助我们构建工程.

如何创建SpringBoot工程

1.第一个页面中可以修改创建工程的网址
https://start.spring.io 默认
https://start.springboot.io 备用1
https://start.aliyun.com 备用2

数据库和SpringBoot
2.设置 以下内容
数据库和SpringBoot
4.点击Finishi等待下载内容
5.如何检查工程是否创建成功br> 在idea的底部 找到Build 然后看里面是否出现绿色的对勾
数据库和SpringBoot
7.检查maven是否已经改成aliyun的配置文件
8.如果已经改成aliyun的 还有错的话, 找到.m2文件夹下的repository文件夹删除 ,删除完之后再次重复第6步 刷新maven
9.在工程的static文件夹中添加index.html 页面中显示HelloSpringBoot 启动工程 通过浏览器访问http://localhost:8080 检查是否显示了此页面
10.创建controller.HelloController类 在里面添加hello方法处理/hello请求,给客户端响应一句话, 重启工程,浏览器访问http://localhost:8080/hello 测试是否成功

客户端发出请求的几种方式

通过浏览器的地址栏中发出请求
通过html页面中的超链接发出请求
通过html页面中的form表单发出请求
通过前端框架发出请求

同步请求和异步请求

同步: 指单线程依次做几件事
异步: 指多线程同时做几件事
1.同步请求: 指客户端浏览器只有一个主线程, 此线程负责页面的渲染和发出请求等操作, 如果此主线程发出请求的话则停止渲染而且会清空页面显示的内容 直到服务器响应了数据后才能再次显示, 由于主线程清空了原有显示的内容所以只能实现页面的整体刷新(整体改变)
2.异步请求: 指客户端的主线程只负责页面渲染相关操作,发请求的事儿由新的子线程操作, 这样子线程发出请求时页面不需要清空,而且可以将查询回来的数据展示在原有页面基础之上, 这样实现的效果就叫做页面的局部刷新

客户端发出请求的几种方式

通过浏览器的地址栏中发出请求 同步请求
通过html页面中的超链接发出请求 同步请求
通过html页面中的form表单发出请求 同步请求
通过前端框架发出请求 异步请求

工程中使用数据库需要做的几件事:

1.在pom.xml中添加 MySQL依赖和数据库连接池依赖,从jdbc01工程中去复制两个依赖粘贴到新工程中, 然后刷新maven(必须做)
2.把jdbc01工程中的DBUtils 复制到新工程的utils包下面

数据库和SpringBoot
2.在application.properties配置文件中书写连接数据库的信息

客户端如何发出异步请求

1.通过Axios框架发出异步请求
2.此框架就是一个普通的js文件 页面需要使用此框架时需要将此文件引入到页面中
3.从苍老师文档服务器中找到axios框架地址

Get请求和Post请求

从字面意思理解, Get是跟服务器要数据, Post是给服务器传数据
Get: 请求参数写在请求地址的后面(可见),请求参数有大小限制只能穿几k的数据(不能处理文件上传)
应用场景: 查询请求一般都会使用get, 删除也会使用get请求
Post:请求参数放在请求体里面(不可见),参数没有大小限制
应用场景: 文件上传, 带有敏感信息的请求(比如注册登录时有密码)

后端的MVC设计模式

把实现一个业务的代码划分为三部分,分别是: 页面相关(V),业务逻辑相关数据相关(M)
M:Model 数据模型, 对应的代码是数据库相关的Mapper部分
V:View 视图, 对应所有页面相关内容
C:Controller 控制器,对应的是Controller相关代码
实现一个业务的顺序: V页面相关代码->C Controller相关代码->M 数据库Mapper相关代码
排错时也是从这三部分代码中找问题
后端MVC涉及模式中的V页面相关,前端工程师将页面又划分为了MVC三部分

前后端分离

1.如果前后端不分离, 后端服务器需要两套代码来应对 手机客户端和浏览器客户端, 因为不同的客户端的需求内容是不一样的,这样后端的开发效率就会受影响.

数据库和SpringBoot

JSON

JSON是一种轻量级的数据交换格式(数据封装格式)
客户端和服务器之间需要互相传递数据,当需要传递复杂数据时需要按照特定的格式将数据进行封装,JSON就是这样一个通用格式.

服务器和客户端之间如何传递复杂数据

数据库和SpringBoot
2.在application.properties里面填写配置静态资源文件夹的信息
数据库和SpringBoot
b.查询单个对象的信息时查询结果中包含了多个结果会报以下错误
数据库和SpringBoot

来源:喝汤啵

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年11月26日
下一篇 2022年11月26日

相关推荐