JavaWeb开发10

多表设计

一对多

关系实现:在数据库表中多的一方添加字段来关联一的一方的主键

外键约束

一对一

关系:一对一关系,多用于单表拆分,将一张表的基础字段放在一张表中,其他字段放在另一张表中,以提高操作效率

实现:在任意一方加入外键,关联另外一方的主键,并且设置外键为唯一的(UNIQUE)

多对多

实现:建立第三张中间表,中间表至少包含两个外键,分别关联两方主键

多表查询

从多张表中查询数据

  • 连接查询

    • 内连接:查询A、B交集部分数据

    • 外连接

      • 左外连接:查询左表所有数据(包括两张表交集部分数据)

      • 右外连接:查询右表所有数据(包括两张表交集部分数据)

  • 子查询

事务

一组操作的集合,它是一个不可分割的工作单位。事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求,即这些操作要么同时成功,要么同时失败

注意:默认MYSQL事务是自动提交的,也就是说,当执行一条DML语句,MYSQL会立即隐式的提交事务

事务控制

  • 开启事务:start transaction;/begin;

  • 提交事务:commit;

  • 回滚事务:rollback;

四大特性

  • 原子性:事务是不可分割的最小单元,要么全部成功,要么全部失败

  • 一致性:事务完成时,必须使所有的数据都保持一致状态

  • 隔离性:数据库系统提供的隔离机制,保证事务在不受外部并发操作影响的独立环境下运行

  • 持久性:事务一旦提交或回滚,它对数据库中的数据的改变是永久的

索引

是帮助数据库高效获取数据的数据结构

优缺点

优点

  • 提高数据查询的效率,降低数据库的IO成本

  • 通过索引列对数据进行排序,降低数据排序的成本,降低CPU消耗

缺点:

  • 索引会占用存储空间

  • 索引大大提高了查询效率,同时也降低了insert update delete的效率

结构

MYSQL数据库支持的索引很多,如 Hash B+Tree Full-Text 索引等,如果没有特别指明,都指默认的B+Tree结构组织的索引

  • B+Tree(多路平衡搜索树)

语法

  • 创建索引:create [unique] index 索引名 on 表名 (字段名,...)

  • 查看索引:show index from 表名;

  • 删除索引:drop index 索引名 on 表名;

注意:

  • 主键字段,建表时,会自动创建主键索引

  • 添加唯一约束时,数据库实际会添加唯一索引

MyBatis

一款优秀的持久层框架,用于简化JDBC的开发

JDBC

使用Java语言操作关系型数据库的一套API

  • sun公司官方定义的一套操作所有关系型数据库的规范,即接口

  • 各个数据库厂商去实现这套接口,提供数据库驱动jar包

  • 我们可以使用这套接口编程,真正执行的代码是驱动jar包中的实现类

数据库连接池

  • 是个容器,负责分配、管理数据库连接

  • 他允许应用程序重复使用一个现有的数据库连接,而不是重新建立一个

  • 释放空闲时间超过最大空闲时间的连接,来避免因为没有释放连接而引起的数据库连接遗漏

优势:

  • 资源重用

  • 提升系统响应速度

  • 避免数据库连接遗漏

标准接口:DataSource

  • 官方提供的数据库连接池接口,由第三方组织实现此接口

  • 功能:获取连接 Connection getConnection() throws SQLException;

  • 常见产品:

  • Druid(德鲁伊)

    • 是阿里巴巴开源的数据库连接池项目

    • 功能强大,性能优秀,是Java最好的数据库连接池之一

Lombok

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/919721.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

leetcode-12-整数转罗马数字

题解: 1、初始化字典: 2、 代码:

Seatunnel解决Excel中无法将数字类型转换成字符串类型以及源码打包

需求 需要实现将Excel中的数字类型的单元格像数据库中字符串类型的字段中推送 问题原因 Seatunnel在读取字段类型的时候都是使用强转的形式去获取数据的 假如说数据类型不一样的话直接强转就会报错 修改位置 org/apache/seatunnel/api/table/type/SeaTunnelRow.java org…

Keil基于ARM Compiler 5的工程迁移为ARM Compiler 6的工程

环境: keil版本为5.38,版本务必高于5.30 STM32F4的pack包版本要高于2.9 软件包下载地址:https://zhuanlan.zhihu.com/p/262507061 一、更改Keil中编译器 更改后编译,会报很多错,先不管。 二、更改头文件依赖 观察…

JeecgBoot 与分布式事务 Seata v1.7.0 集成实战

准备环境 一、创建四个数据库,如下 jeecg_order(订单数据库) jeecg_account(账户数据库) jeecg_product(商品数据库) seata(seata数据库)以上数据库脚本已存放至 jeecg…

鸿蒙动画开发07——粒子动画

1、概 述 粒子动画是在一定范围内随机生成的大量粒子产生运动而组成的动画。 动画元素是一个个粒子,这些粒子可以是圆点、图片。我们可以通过对粒子在颜色、透明度、大小、速度、加速度、自旋角度等维度变化做动画,来营造一种氛围感,比如下…

MAC创建一个自动操作,启动系统【睡眠】功能,并将绑定快捷键

目的 通过 Automator 创建一个服务来启动系统【睡眠】这个功能,并绑定快捷键。 步骤一:创建 Automator 服务 打开 Automator: ○ 在 Spotlight 中搜索 Automator,然后打开。选择服务类型: ○ 在 Automator 的启动界…

基于AIRTEST和Jmeter、Postman的自动化测试框架

基于目前项目和团队技术升级,采用了UI自动化和接口自动化联动数据,进行相关测试活动,获得更好的测试质量和测试结果。

HarmonyOS4+NEXT星河版入门与项目实战------Button组件

文章目录 1、控件图解2、案例实现1、代码实现2、代码解释3、运行效果4、总结1、控件图解 这里我们用一张完整的图来汇整 Button 的用法格式、属性和事件,如下所示: 按钮默认类型就是胶囊类型。 2、案例实现 这里我们实现一个根据放大和缩小按钮来改变图片大小的功能。 功…

5、深入剖析PyTorch DataLoader源码

文章目录 1. 重要类2. DataSet3. DataLoader4. Python实例 参考大神B站,记录学习笔记 5、深入剖析PyTorch DataLoader源码 其他大神笔记: pytorch数据操作—dataset,dataloader,transform 1. 重要类 Data LoaderDatasetSampleRa…

D74【 python 接口自动化学习】- python 基础之HTTP

day74 http基础定义 学习日期:20241120 学习目标:http定义及实战 -- http基础介绍 学习笔记: HTTP定义 HTTP 是一个协议(服务器传输超文本到浏览器的传送协议),是基于 TCP/IP 通信协议来传递数据&…

非对称之美(贪心)

非对称之美(贪心) import java.util.*; public class Main{public static void main(String[] arg) {Scanner in new Scanner(System.in);char[] ch in.next().toCharArray(); int n ch.length; int flag 1;for(int i 1; i < n; i) {if(ch[i] ! ch[0]) {flag …

Rust derive macro(Rust #[derive])Rust派生宏

参考文章&#xff1a;附录 D&#xff1a;派生特征 trait 文章目录 Rust 中的派生宏 #[derive]基础使用示例&#xff1a;派生 Debug 派生其他常用特征示例&#xff1a;派生 Clone 和 Copy 派生宏的限制和自定义派生自定义派生宏上面代码运行时报错了&#xff0c;以下是解释 结论…

WebStorm 2022.3.2/IntelliJ IDEA 2024.3出现elementUI提示未知 HTML 标记、组件引用爆红等问题处理

WebStorm 2022.3.2/IntelliJ IDEA 2024.3出现elementUI提示未知 HTML 标记、组件引用爆红等问题处理 1. 标题识别elementUI组件爆红 这个原因是&#xff1a; 在官网说明里&#xff0c;才版本2024.1开始&#xff0c;默认启用的 Vue Language Server&#xff0c;但是在 Vue 2 项…

MySQL库和表的操作

目录 一. 查看数据库 二. 创建数据库 三. 字符集和校验规则 四. 修改和删除数据库 4.1 数据库修改 4.2 数据库删除 五. 备份与恢复 5.1 备份 5.2 还原 5.3 注意事项 5.4 查看连接情况 六. 创建表 七. 查看表结构 八. 修改表 九. …

YouQu使用手册【元素定位】

元素定位 文章目录 前言一、气泡识别二、不依赖OpenCV的图像识别方案三、动态图像识别四、背景五、sniff(嗅探器)使用六、元素操作七、框架封装八、背景【OCR识别】九、实现原理十、使用说明十一、RPC服务端部署十二、负载均衡十三、链式调用十四、背景【相对坐标定位】十五、…

基于YOLOv11的火焰实时检测系统(python+pyside6界面+系统源码+可训练的数据集+也完成的训练模型)

100多种【基于YOLOv8/v10/v11的目标检测系统】目录&#xff08;pythonpyside6界面系统源码可训练的数据集也完成的训练模型 摘要&#xff1a; 本文提出了一种基于YOLOv11算法的火灾检测系统&#xff0c;利用1852张图片&#xff08;1647张训练集&#xff0c;205张验证集&#…

【vulhub】nginx解析漏洞(nginx_parsing_vulnerability)

1. nginx解析漏洞原理 fastcgi 在处理’.php’文件时发现文件并不存在,这时 php.ini 配置文件中cgi.fix_pathinfo1 发挥作用,这项配置用于修复路径,如果当前路径不存在则采用上层路径 (1)由于 nginx.conf的配置导致 nginx把以’.php”结尾的文件交给 fastcgi 处理,为此可以构造…

谈谈Spring的常见基础概念

文章是对Spring一些基础的底层概念进行分析&#xff0c;后续再遇到这些问题的时候&#xff0c;可以采用这些步骤进行详细解释。 一.谈谈SpringIOC的理解&#xff0c;原理与实现? 总&#xff1a; 1.控制反转&#xff1a; (1)原来的对象是由使用者来进行控制&#xff0c;有了S…

Apple Vision Pro开发001-开发配置

一、Vision Pro开发硬件和软件要求 硬件要求软件要求 1、Apple Silicon Mac(M系列芯片的Mac电脑) 2、Apple vision pro-真机调试 XCode15.2及以上&#xff0c;调试开发和打包发布Unity开发者账号&&苹果开发者账号 二 、开启无线调试 1、Apple Vision Pro和Mac连接同…

沸蛇鼠标,多功能智慧AI,重新定义生产力

随着人工智能的快速发展,AI的应用落地已成为当下除大模型外竞争最为激烈的红海之一。手机、汽车、家居等产品都在AI加持下,衍生出了更多使用场景。AI鼠标便是其中一项热门产品。 云决科技作为在互联网数据领域的领军者,始终将用户需求作为首位,为用户提供全方位、高价值的AIGC…