java第二十五课

Mysql 数据库
设计: 表设计成功
alter table 改表的主键,改约束关系
表:关系表,改一个表,另外一个表
表---->java 代码
增删改查(项目中需要的操作)
项目:
Create database
Create table(从测试环境到生产环境,导入)
Database 数据库,或者 table 表,在测试环境测试成功,在生产环境去使用。
数据库(设计是基本)
查询语句全称
Select 字段名称 from 表 where 条件 group by 被字段分组 order by 排序 limit 限制记录条件
限定条件的查询 where (and or)
分组: group by
排序 order by
分页: limit

操作:
(1) 打开数据库
Use 数据库
(2)显示数据库中所有的表
Show tables;
(3)条件: where
语言上:同一字段用”和”,还是或 or
(4)分组后只能使用统计函数(聚合,平均数 avg, 和 sum, count个数,max 最大值,min 最小值)
分组后分组字段是可以显示的
统计重名的人有多少个

Group by 条件需要加 having,Groupby 分组后加条件
select username,count(*) mycount from user group by
username having mycount>1;
注意:
Count(*)后面的名称是别名,意义在于让 count 函数只计算一次
后面的条件可以引用 mycount
别名取 java 的关键字
订单列表: list --Java List(尽量不要用 java 的关键字做别名变量)
尽量少用 a,b,c
在长语句中,可读性差
分组:把相同数据放在一起,低版本的 mysql 只能结合放在一起的标准字段和聚合函数进行显示。
Order by 数值排序
项目 select 查询功能
银行转帐
Update 张三的帐户 -50
Update 李四的帐户 +50
断网,没电,异常
项目中常常是多个 sql 语句的结合,mysql 是一句一执行。
凡是数据库,如何保证数据的安全,概念:事务
事务:操作不进行表操作,只是把这个表放在内存中,对内存进行操作,如果确认操作,提交事务,自动把内存数据同步更新到表中,如果断电,断网,没电,异常,事务有作用,遇到异常可以回滚,把之前内存的操作回滚恢复,表状态回
复到事务开始前。
银行: 借方(存) 贷方(取)
1000 9000
银行帐每天备份,把今天帐重新做好(回滚)
加入事务,就可以做事务回滚
Mysql 中有很多变量 autocommit 自动提交,设置为 false,相当于开启事务,不操作表
并发线程一定是两个事务之间.
增(格式,不做批增)删(批删)改查
并发的事
增发生并发(两个线程都有事务,只有提交出现问题)
开启事务,提交事务 commit,回滚事务 rollback,这里的回滚和提交有助于保护数据安全,一旦计算机异常,可以回滚保护数据安全。
线程: 就绪 运行 阻塞 死亡
尽量避免线程阻塞
重要问题:mysql 表(行锁,表锁)
Insert into 是悲观锁,只锁当前的 id 行,默认行锁.
解决 insert into 悲观锁,也就解决了并发。
Insert into 插入数据时,表中主键一定要自增,插入时不要带id。表设计定义 id 成主键自增,primary key auto_increment
Insert into 做到内存和表都是行锁,如果出现出锁,并发出现某个用户使用程序死机。
Insert into 表名(字段)values()
Values 中一定没有 id 的内容,行锁就阻塞.
删除,两个线程两个事务同时执行删除.
Delete from user where id=1;
Delete 是一个行锁。另外一个线程就会锁。
数据库的删除是假删除,第一不能解决 id 不连续,第二不能解决线程阻塞。数据库删除就变成更新的问题。
数据只要删除,任何一个线程删除,但是,某些线程阻塞,改变不了删除的条件。
更新
Update
两个线程同时更新同一条记录
Update 默认行锁
另外一个线程就阻塞
打破 update 行锁,(默认悲观锁)
思想:乐观锁
程序执行没有问题,不用锁,这条语句可以执行.update 底层自动带行锁.最精典的乐观锁 CAS 机制
内存中值:数据新值, 修改数据赋予一个新值,数据库的值旧值, 发出修改操作,把内存和数据库的值做对比,一致,允许修改,不一致就不允许修改.
在数据库中加上一个字段 version(版本)
默认 version=1, version 做计算,整型,每次修改操作完成后让版本加 1,事务先把数据在内存中,提交时再同步到表里.
现在对表加上一个字段 version
修改表,加上一个字段 add column
alter table user add column version int default 1;
每次更新数据时,查找带上 version 的版本,同时 update 修改把数据库的 version 版本再增加 1
在事务的 sql 语句中,修改数据加上一个字段的比较 version,
只有 version 版本和修改条件一致允许修改,修改时除了修改给定的值,还要把 version 版本提高一个版本.
update user set username="赵六",version=version+1 where
id=2 and version=1;wk
保证了数据的安全.
增删改操作---融合在项目中审核机制
论坛-审核, 关键操作审核机制
如果审核机制,当前数据表审核字段, 加上审核,有一个审核期限,审核不通过,不允许注册.
alter table user add column mycheck int default 1;
用户名:
增加
Is_delete 删除的判断标志
Version 乐观锁解决 update 更新的问题
addCheck 对用户注册的用户名进行审核.
还有几个点
Insert into ,update,delete 默认都是行锁
Select 默认没有行锁,表锁.
Select 加行锁
如果两个事务加上目的性 for update,就会出现线程阻塞.
Insert into 解决并发锁的问题
限定 id, id 做主键,同时 auto_increment
删除实际是假性删除
Update 只要 commit,基本造成阻塞,用乐观锁,version
项目过程中:表述,错误码
并行过程中的增删改查
批量
批量增加:一次性增加若干数据,2 条数据或者 3 条数据
insert into user(username,sex,position,age,password,is_delete)
values("赵五","男","杭州",20,"123456",0), ("赵五","男","杭州
",20,"123456",0),("赵五","男","杭州",20,"123456",0);
批量删除
Delete from user where id=1 or id=2 or id=3
缩短,在 where 后面用一个 in,把选择的数据放在集合中.
Delete from user where id in (1,2,3);
批量更新(条件更新) where 选出的数据是一堆。
Update user set age=age+1 where age>1;

java第二十五课. · b171385 · WL—code/WL仓库 - Gitee.com

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

每天免费使用ChatGPT网站

我现在开发都是用chatgpt帮我做事情了,工作效率直接翻了好几倍,剩余时间来摸鱼,嘎嘎香~ 1、 ChatGPT 注册送ChatGPT3.5 4.0,每天也能免费使用,赶紧薅 2、 csdn的C知道 csdn新功能 3、文心一言 国内百度大厂的模型 各有优缺…

leetcode27. 移除元素

题目描述 给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。 不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。 元素的顺序可以改变。你不需要考虑数组中超出…

Python 流程控制

目录 程序流程 顺序结构 分支结构 单分支 双分支 多分支 if 嵌套 循环结构 while循环 for 循环 退出循环 循环与分支嵌套 附录 程序流程 程序是由语句构成,而流程控制语句 是用来控制程序中每条语句执行顺序的语句。可以通过控制语句实现更丰富的逻辑…

深入理解VUE组件:父子组件详细说明及应用

文章目录 🍂引言🍂什么是父子组件🍂属性传递🍁父组件向子组件传递属性🌿父组件代码示例🌿子组件代码示例 🍁子组件向父组件传递属性🌿子组件代码示例🌿父组件代码示例 &a…

后端项目操作数据库增删改查-使用MyBatis配置实现数据操作

一、创建一个数据表对应的实体类 在src/main/java/包名/路径下新建pojo.entity文件夹,如com.luoyang.small.pojo.entity,并在该文件夹下新增实体类java文件:如相册Album.java 该实体类的属性应与数据表的字段对应 数据表样例如下&#xff1a…

PTA 7-192 浪漫的表白

有一个帅小伙一直暗恋一个女孩,但他还是没有勇气向她表白“我爱你”,更别说“某某某,我爱你,如果非要在这份‘爱’上加一个期限的话,那就是一万年”这类肉麻的话,生怕说了后会是“落花有意流水无情”&#…

后端返回图片流前端展示图片

根据后端返回的图片流格式,选用合适方法转换 下面以base64为例 if(res.status 200) {res.data.data.forEach((item,index) > {let Array data:image/png;base64, itemlet blob this.base64toBlob(Array)let url URL.createObjectURL(blob)this.imageList.p…

24年5月软考高项考哪些内容,考试大纲什么的?

信息系统项目管理师属于「计算机技术与软件专业技术资格(水平)考试」中的高级资格考试。 也称「软考高项」,可以「以考代评」用来评副高级职称。 一、软考备考前期准备 信息系统项目管理师考试科目包括: 《综合知识》、《案例分…

html原生echart柱状图

html原生echart柱状图 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Bar Chart Example</title><!-- Include Chart.js library --><script src"https://cdn.jsdelivr.net/npm/…

Linux的基本指令(4)

目录 20.tar指令&#xff08;重要&#xff09;&#xff1a;打包/解包&#xff0c;不打开它&#xff0c;直接看内容 21.bc指令 22.uname –r指令&#xff1a; 23.重要的几个热键[Tab],[ctrl]-c, [ctrl]-d 20.tar指令&#xff08;重要&#xff09;&#xff1a;打包/解包&#…

手机上的记事本怎么打开?安卓手机通用的记事本APP

有不少上班族发现&#xff0c;自己想要在电脑上随手记录一些工作文字内容&#xff0c;直接使用电脑上的记事本工具来编辑文字是比较便捷的。但是如果想要在手机上记录文字内容&#xff0c;就找不到手机上的记事本了。那么手机上的记事本怎么打开&#xff1f;安卓手机通用的记事…

Windows环境 dockertopdesk 部署gitlab

1.在dockertopdesk里搜索 gitlab镜像 (pull)拉取镜像 2.运行镜像到容器 mkdir gitlab gitlab/etc gitlab/log gitlab/opt docker run -id -p 3000:80 -p 9922:22 -v /root/gitlab/etc:/etc/gitlab -v /root/gitlab/log:/var/log/gitlab -v /root/gitlab/opt:/var/opt/gitla…

2023-12-2 AIGC-chatgpt4-功能-记录

摘要: 2023-12-2 AIGC-chatgpt4-功能-记录 英文: ChatGPT-4, as an evolution of OpenAIs language models, has a wide range of capabilities: Language Understanding and Generation: It can understand and generate human-like text, making it useful for conversation…

百度智能云文字识别使用问题解决合集

1.创建试用程序时需要16位的签名MD5 解决方法&#xff1a;使用Java8 201版本及以下的jdk创建签名 下载地址&#xff1a;http://www.codebaoku.com/jdk/jdk-oracle-jdk1-8.html#jdk8u201 生成签名代码&#xff1a;keytool -genkeypair -v -keystore D:\key.jks -storetype PKC…

LeetCode130. Surrounded Regions

文章目录 一、题目二、题解 一、题目 Given an m x n matrix board containing ‘X’ and ‘O’, capture all regions that are 4-directionally surrounded by ‘X’. A region is captured by flipping all O’s into X’s in that surrounded region. Example 1: Input…

EasyExcel两行表头

例子&#xff1a; 代码&#xff1a; StorageService localStorageService storageFactory.getLocalStorageService();String path "";// 文件信息String dateTime DateUtils.formatTimestampToString(new Date());String title "xxx统计";String fil…

MySQL之锁

MySQL之锁 锁是计算机在执行多线程或线程时用于并发访问同一共享资源时的同步机制&#xff0c;MySQL中的锁是在服务器层或者存储引擎层实现的&#xff0c;保证了数据访问的一致性与有效性 MySQL锁可以按模式分类为&#xff1a;乐观锁与悲观锁。 按粒度分可以分为全局锁、表级锁…

GoLong的学习之路,进阶,微服务之原理,RPC

其实我早就很想写这篇文章了&#xff0c;RPC是一切现代计算机应用中非常重要的思想。也是微服务和分布式的总体设计思想。只能说是非常中要&#xff0c;远的不说&#xff0c;就说进的这个是面试必问的。不管用的上不&#xff0c;但是就是非常重要。 文章目录 RPC的原理本地调用…

Vue渲染内容的三种方式

{{ }} 语法&#xff1a;将数据作为普通文本输出&#xff0c;不会覆盖原有的内容。 v-text 指令&#xff1a;将数据作为普通文本输出&#xff0c;会覆盖原有的内容。 v-html 指令&#xff1a;将数据作为 HTML 标签解析后输出&#xff0c;会覆盖原有的内容。 注&#xff1a;一…

flutter开发实战-ValueListenableBuilder实现局部刷新功能

flutter开发实战-ValueListenableBuilder实现局部刷新功能 在创建的新工程中&#xff0c;点击按钮更新counter后&#xff0c;通过setState可以出发本类的build方法进行更新。当我们只需要更新一小部分控件的时候&#xff0c;通过setState就不太合适了&#xff0c;这就需要进行…