栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java19课

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java19课

一、JDBC编程的流程:
  1. 先安装数据库驱动包
  2. 加载驱动类,注册驱动

Class.forName(“类的路径”);   //是JDk提供的专门用于类加载的方法,路径必须是全路 径“包名+类名” (该方法会抛出一个编译时异常:ClassNotFoundException)
  1. 创建数据库连接

Connection conn=DriverManager.getConnection();

有三个参数 1.url连接地址字符串 2.用户名 3.密码

url字符串的格式:

协议//IP:端口/数据库名称?参数名和参数值
  1. 写SQL语句,对数据库进行增删改查等操作

String sql="insert into user values(?,?,?,?)";

PreparedStatement ps=conn.prepareStatement(sql);(预编译SQL语句)

ps.setObject(1,"关羽");(设置SQL所需要的值)

二、mysql服务端的几大模块(一共六个组件):
  • 连接器:连接mysql服务器,进行权限验证

1、负责与客户端的通信,是半双工模式,这就意味着某一固定时刻只能由客户端向服务器请求或者服务器向客户端发送数据,而不能同时进行,其中MySQL在与客户端连接TC/IP的。

2、验证请求用户的账户和密码是否正确,如果账户和密码错误,会报错:Access denied for user 'root'@'localhost' (using password: YES)

3、如果用户的账户和密码验证通过,会在MySQL自带的权限表中查询当前用户的权限。

MySQL中存在4个控制权限的表,分别为user表,db表,tables_priv表,columns_priv表:

user表:存放用户账户信息以及全局级别(所有数据库)权限,决定了来自哪些主机的 哪些用户可以访问数据库实例

db表:存放数据库级别的权限,决定了来自哪些主机的哪些用户可以访问此数据库

tables_priv表:存放表级别的权限,决定了来自哪些主机的哪些用户可以访问数据库的 这个表

columns_priv表:存放列级别的权限,决定了来自哪些主机的哪些用户可以访问数据库 表的这个字段
  • 缓存:保存上次查询的结果,提高性能

MySQL的缓存主要的作用是为了提升查询的效率,缓存以key和value的哈希表形式存储,key是具体的SQL语句,value是结果的集合。如果无法命中缓存,就继续走到分析器的这一步,如果命中缓存就直接返回给客户端。不过需要注意的是在MySQL的8.0版本以后,缓存被官方删除掉了。之所以删除掉,是因为查询缓存的失效非常频繁,如果在一个写多读少的环境中,缓存会频繁的新增和失效
  • 分析器:词法与语法分析

分析器的主要作用是将客户端发过来的SQL语句进行分析,这将包括预处理与解析过程,在这个阶段会解析SQL语句的语义,并进行关键词和非关键词进行提取、解析,并组成一个解析树。具体的关键词包括不限定于以下:select/update/delete/or/in/where/group by/having/count/limit等。

如果分析到语法错误,会直接给客户端抛出异常:“ERROR:You have an error in your SQL syntax.”。
  • 优化器:对你的查询语句做出适当的优化

能够进入到优化器阶段表示SQL是符合MySQL的标准语义规则的并且可以执行的,此阶段主要是进行SQL语句的优化,会根据执行计划进行最优的选择,匹配合适的索引,选择最佳的执行方案。
  • 执行器:操作存储引擎,读写数据

在执行器的阶段,此时会调用存储引擎的API,API会调用存储引擎

 

存储引擎(引擎以前的名字叫做:表处理器):存储数据

三、整理CRUD的语法

Insert(增)语法:insert into 表名[字段名列表] values(值列表)

        //字段名列表可以省略,如果省略代表全字段插入

        //可以通过指定字段名列表来插入部分字段值,没有插入的字段会插入null值,但是非空字段必须插入

        //values中值列表的个数和类型必须和字段名列表要一一匹配(个数,类型)

        //自增长的主键id,可以给一个null,自动增长

Update(改)语法:update 表名 set 字段名=值(,字段名=值) where 条件

        //单列更新,多列更新

        //update可以没有where条件,但是通常情况要指定条件来防止全表更新

Delete(删)语法:delate from 表名 where 条件

        //没有where条件=删除整张表的数据

        //delete 对表结构没有影响,删除指定的数据行

        //truncate 会清空表中的所有行,但表结构及约束、索引等保持不变,自增长的主键会从头开始

        //drop 会删除表的结构和所有数据行,及其所依赖的约束、索引等

Select查询语法:select 列名列表 from 表名 where 条件 四、url字符串的格式:

组成:协议//IP:端口/数据库名称?参数名和参数值

  1. (必须有)协议部分”jdbc:mysql://”

client与server之间的通信协议是TCP/IP

传输内容的协议是jdbc:mysql://
  1. (必须有)IP:端口 “localhost:3306”

IP是服务器所在的机器的IP地址

服务端在本地可以写localhost,如果不在本地,必须写对方的IP地址

端口默认是3306
  1. (必须有)数据库名是 “test”

mysql允许一个数据库服务端创建多个数据仓库

在建立CS连接的时候必须指定具体连接的仓库名称

如果指定的仓库名称不存在,连接会失败
  1. (可选)连接参数

每一组参数都是kv结构 k=v,k是参数名,v是参数值

可以有多组,多组之间用&拼接

参数名

参数值

说明

useUnicode

true

是否采用Unicode编码集传输数据,如果不设置,默认是拉丁文,中文传输可能会乱码

characterEncoding

utf-8

使用unicode中的utf-8这个版本的字符集

useSSL

false

是否使用SSL证书进行安全验证,默认是true

serverTimezone

如果客户端所在城市与服务端所在城市的时区不一样,可能会出现时间错乱的情况,可以通过这个参数来设置服务端的时区

五、CRUD单元测试: 注意:首先要确定java注册了数据库驱动,创建数据库连接,才能进行对数据库操作 1.增:Insert语法:insert into 表名[字段名列表] values(值列表)

 

3.改:Update语法:update 表名 set 字段名=值 where 条件

 

 

4.查:Select语法:select 列名列表 from 表名 where 条件

 

 

2.删:Delete语法:delate from 表名 where 条件

 

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1013329.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号