首页 > 数据库 >数据库学习复习随笔(JDBC没保存)

数据库学习复习随笔(JDBC没保存)

时间:2023-07-22 13:45:34浏览次数:51  
标签:事务 SET 复习 -- money 数据库 JDBC 提交 随笔

数据库基础语法 SQL常用语句总结 - 知乎 (zhihu.com)

链接

table1 JION table2 ON 链接条件--不加就是自然链接

数据表的类型

逆向查看语句

SHOW

逆向查看表的结构

DESC

数据库引擎

--关于数据库引擎
/* INNODB
MYISM以前使用的
*/
 MYISAMINNODB
事物支持  
数据行锁定  
外键约束  
全文索引  
表空间大小 大2倍

MYISAM:

节约空间,快

INNODB

安全,事物,外键

在物理空间的位置

都是在一个data目录下

本质都是文件的存储

  • INNODB在数据库中只有一个*.frm文件,以及上下级的ibDATA1文件

  • MYISAM对应文件

    1. *.frm 定义文件

    2. *MYD 数据文件

    3. *.MYI 索引

设置数据库的数据集编码

CHARSET=utf-8

否则默认编码不支持中文

在my.ini中可以配置默认编码

最好在建表时就设置

分页和排序

ORDER BY ASC升序 DESC降序

分页(和瀑布流(全部显示)区分)

  • 降低数据库压力

  • 体验更好

LIMIT 起始点,页面的大小
LIMIT (N - 1)*PAGE_SIZE,PAGE_SIZE 第N页PAGE_SIZE页面大小
总页数
(总数据 + 页面大小 - 1)/页面大小

(查询表的记录)

count('字段')会忽视null值主键时最快

count(*)不会忽视null值

count(1)不会忽视null值,字段非主键时更快

MD5加密

增加算法复杂度和不可逆性,具体的值时一样的

事务

要么都成功,要么都失败

将一组SQL放在一个批次中去执行

事务原则(ACID)

  1. 原子性

    • 要么全部完成,要么全部不完成,不会结束在中间某个环节。事务在执行过程中发生错误,会被恢复(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样

  2. 一致性

    • 最终一致性(最终的值和最初的值相同)事务的数据完整性要保持一致

  3. 隔离性(锁)

    • 数据库允许多个并发事务同时对其数据进行读写和修改的能力,隔离性可以防止多个事务并发执行时由于交叉执行而导致数据的不一致。事务隔离分为不同级别,包括读未提交(Read uncommitted)、读提交(read committed)、可重复读(repeatable read)和串行化(Serializable)。

  4. 持久性

    • 事务没有提交就恢复到原装(回滚)

    • 事务处理结束后,对数据的修改就是永久的,即便系统故障也不会丢失。

mysql是默认开启事务自动提交

SET autocommit = 0 --关闭 1是开启

手动处理事务

事务开启

START TRANSACTION --标记一个事物的开始,从这个之后的sql都在一个事物之中

--提交

COMMIT

--回滚

ROLLBACK

事务结束

SET autocommit = 1 --开启事务自动提交

SAVEPOINT + 保存点名 --设置一个事务保存点用于回滚

ROLLBACK TO + 保存点名 --回滚保存点

RELEASE SAVEPOINT + 保存点名 --删除该保存点

例子

CREATE DATABASE shop CHARACTER CHARSET SET utf8 COLLATE utf8_general_ci
USE shop
CREATE TABLE account(
   `id` INT(3) NOT NULL AUTO_INCREMENT,
`name` VARCHAR(30) NOT NULL,
`money` DECIMAL(9,2) NOT NULL,
PRIMARY KEY (`id`)
)ENGINE=INNODB DEFAULT CHARSET=utf8;
INSERT INTO account(`name`,`money`)
VALUES ('A',2000.00),('B',10000.00);
SET autocommit = 0;--关闭自动提交
START TRANSACTION --开启一个事务
UPDATE account SET money=money-500 WHERE `name` = 'A' --A减五百
UPDATE account SET money=money+500 WHERE `name` = 'B' --A加五百
COMMIT--提交
FLUSH PRIVILEGES
ROLLBACK --回滚
SET autocommit = 1 --开启自动提交

 

标签:事务,SET,复习,--,money,数据库,JDBC,提交,随笔
From: https://www.cnblogs.com/qylqf/p/17573254.html

相关文章

  • 倍增思想复习
    倍增,st表复习众所周知,st表是倍增思想的一种实现罢了然后呢,倍增思想最重要应用于RMQ和LCA问题都很重要,然而我还不会背,所以拿今晚一半时间左右来复习这个。其实不用背,重在理解:st表:注意先枚举2的多少次方(不然后面长的区间靠短的两个区间拼合,短的还没处理完的话是无法做的)然后查......
  • Could not get list of tables from database. Probably a JDBC driver problem.
     在用myeclipse8.5M1反向生成代码时报错: Aninternalerroroccurredduring:"GeneratingArtifacts".Couldnotgetlistoftablesfromdatabase.ProbablyaJDBCdriverproblem.  =============================  尝试了更换工作空间、重装myeclipse、更换oracle驱动......
  • 第一篇随笔
    写在前面的话:这个博客随性而建,用于记录学习记录,说起来有点绕,比较随意,希望可以坚持下去。写一个这一月的安排:pwnable.kr上的刷题记录vulnhub上的打靶记录xv6-labs(如果还有时间的话)希望可以坚持下去......
  • 个人随笔 —— 基于 go 语言实现的轻量化 workflow 分布式引擎插件
    背景组内有很多项目都涉及复杂的任务流场景:集群创建、删除等生命周期管理k8s资源申请销毁....这些场景都有几个共同的特点:流程耗时且步骤复杂,需要几十步操作,其中包含云资源申请、脚本执行、接口调用等,且相互存在依赖关系。任务量随着业务增长而快速迭代,比如每个集群每......
  • JDBC记录
    JDBC连接配置使用JDBC:java数据库连接是一套操作所有关系型数据库的规则(接口)。各个数据库实现该接口,提供驱动jar包;使用JDBC编程,真正执行的代码是驱动jar包中的实现类。JDBC编程步骤:1.注册驱动2.获取连接3.获取数据库操作对象(专门执行sql语句的对象)4.执行sql语句5.处理查询......
  • 记jdbcTemplate使用的一个坑
    1、在使用jdbcTemplate时,语句不能使用select* ,不然可能就是这样的错误:Incorrectcolumncount:expected1,actual62、如果像这样的外层嵌套,应该去掉外层select*,语句:select*from(selectmater_score.mater_noasmaterNo,city,town,mater_score.avgasavgScor......
  • Java随笔
    2023.07.19关于java当中size和length的使用,在工作当中,没有对size和length有一个明确的概念,总是能.出来哪一个就用哪一个。1/**2*.length是数组的基本属性.3*.size()是集合的方法,集合是一个容器,用长度来形容不合适.4*.length()是字符串的方法,用于统计字符串......
  • 暑假集训随笔2 主席树/二维树状数组
    P4514上帝造题的七分钟题意维护对二维平面上的矩形区域各元素进行加法以及对矩形区域求和链接:https://www.luogu.com.cn/problem/P4514思路通过二维树状数组维护的二维前缀和利用差分实现矩形区域的区间加法与区间求和。具体而言,二维的前缀和可以仿照一维的前缀和进行定义......
  • JDBC MYSQL too many connections 解决方法
    显示最大连接数showvariableslike"max_connections";设置最大连接数:setGLOBALmax_connections=1000;查看mysql在关闭一个非交互的连接之前要等待的秒数,默认是28800s也就是一个链接sleep八个小时后才会被mysql“清理”掉。showglobalvariableslike'wait_timeout......
  • 随笔(二十五)『3个线程交替输出1-100、交替输出ABC』
    1、3个线程交替输出1-100/***需求:*3个线程交替输出1-100*/publicclassTestPrint1_100{privateIntegerstate=1;//状态值1-t1执行,2-t2执行,3-t3执行privateIntegercount=1;//循环次数初始值publicvoidprint1_100(TestPrint1_100pri......