![](https://img-blog.csdnimg.cn/20190918135101160.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
数据库系列(mysql、jdbc)
文章平均质量分 66
mysql、jdbc
JH灰色
☠
展开
-
【mysql是怎样运行的】-B+树索引深入理解
各个数据页可以组成一个,而每个数据页中的记录会按照主键值从小到大的顺序组成一个。原创 2023-04-12 07:59:21 · 768 阅读 · 1 评论 -
【mysql是怎样运行的】-InnoDB数据页结构
页a、页b、页c…页n这些页可以不在物理结构上相连,只要通过双向链表相关联即可。每个数据页中的记录会按照主键值从小到大的顺序组成一个单向链表,每个数据页都会为存储在它里边的记录生成一个页目录,在通过主键查找某条记录的时候可以在页目录中使用二分法快速定位到对应的槽,然后再遍历该槽对应的分组中的记录即可快速找到指定的记录。原创 2023-03-04 22:26:38 · 651 阅读 · 0 评论 -
【mysql是怎样运行的】-InnoDB行格式
Innodb行格式原创 2023-03-04 18:40:46 · 1125 阅读 · 3 评论 -
【mysql是怎样运行的】-客户端与服务器连接
mysql服务器与客户端连接方式原创 2022-11-27 17:11:20 · 761 阅读 · 0 评论 -
mysql通关面试宝典
文章目录1.mysql事务的常见异常和隔离级别2.mysql的B树索引,B+树索引,哈希索引原理。2.mysql的引擎3.mysql中为什么用B+树4.讲一讲索引,最左匹配原则(最佳左前缀)5.什么是SQL注入,怎么预防6.你对mysql了解有多少(讲了innodb、myiasm两个引擎的区别,隔离级别,索引,使用B+树的优势,最左匹配原则,MVCC)7.怎么对sql进行分析(explain和show profile)7.1 explain的字段7.2 show profile9.数据库全局锁10.索引优化原创 2021-11-07 21:49:01 · 2936 阅读 · 1 评论 -
MySQL锁机制
文章目录1、锁的分类2、表锁 (MyIsam)3、行锁(InnoDB)锁机制 :解决因资源共享 而造成的并发问题。示例:买最后一件衣服XA: X 买 : X加锁 ->试衣服…下单…付款…打包 ->X解锁B: X 买:发现X已被加锁,等待X解锁, X已售空1、锁的分类操作类型:a.读锁(共享锁): 对同一个数据(衣服),多个读操作可以同时进行,互不干扰。b.写锁(互斥锁): 如果当前写操作没有完毕(买衣服的一系列操作),则无法进行其他的读操作、写操作操作范围:原创 2021-11-07 20:55:08 · 207 阅读 · 0 评论 -
【sql】分析海量数据
文章目录1、模拟海量数据2、分析海量数据1、模拟海量数据1、建表:create database testdata ;use testdatacreate table dept( dno int(5) primary key default 0, dname varchar(20) not null default '', loc varchar(30) default '')engine=innodb default charset=utf8;create tabl原创 2021-11-07 16:53:37 · 202 阅读 · 0 评论 -
SQL排查--慢查询日志
文章目录1、慢查询日志的开启2、慢查询阈值的开启3、示例慢查询日志:MySQL提供的日志记录,用于记录MySQL中响应时间超过阀值的SQL语句 (long_query_time默认10秒)慢查询日志默认是关闭的;建议:开发调优时打开,而 最终部署时关闭。1、慢查询日志的开启1、检查是否开启了 慢查询日志 : show variables like ‘%slow_query_log%’ ;2、临时开启:mysql已关闭就关闭了set global slow_query_log = 1 ;原创 2021-11-07 16:50:16 · 2778 阅读 · 0 评论 -
其他SQL优化方法(抛开索引优化)
文章目录1、exist 和 in选择2、order by 优化1、exist 和 in选择这里没有考虑索引,只看效率: 如果主查询的数据集大,则使用In , 效率高。 如果子查询的数据集大,则使用exist, 效率高。select ..from table where exist (子查询);-- 括号内是子查询select ..from table where 字段 in (子查询);exist语法: 将主查询的结果,放到子查询结果中进行条件校验(看子查询是否有数据,如果有数据 则校原创 2021-11-07 16:43:33 · 451 阅读 · 0 评论 -
【sql优化】避免索引失效的原则
文章目录1、复合索引:a.复合索引,不要跨列或无序使用(最佳左前缀)先a,再b再c ,(a,b,c)b.复合索引,尽量使用全索引匹配 (a,b,c)2、不要在索引上进行任何操作(计算、函数、类型转换),否则索引失效select ..where A.x = .. ; --假设A.x是索引 不要:select ..where A.x*3 = .. ;-- 不然索引失效 explain select * from book where authorid = 1 and typeid =原创 2021-11-07 16:39:12 · 559 阅读 · 1 评论 -
【sql优化案例】索引优化
文章目录引入案例1、单表优化案例1、加索引优化2、根据SQL实际解析的顺序,调整索引的顺序3、再次调整索引顺序2、双表优化案例3、三表优化案例引入案例create table test01 ( a1 int(4) not NULL, a2 int(4) not NULL, a3 int(4) not NULL, a4 int(4) not NULL);alter table test01 add index idx_a1_a2_a3_a4(a1,a2,a3,a4);①explai原创 2021-11-07 16:32:42 · 459 阅读 · 0 评论 -
【SQL性能问题】explain系列
文章目录explain1、explain之id、table2、explain之select_type 查询类型3、explain之type 索引类型4、explain之possible_keys、key5、explain之key_len6、explain之ref、rows7、explain之Extraexplaina.分析SQL的执行计划(人为优化) : explain ,可以模拟SQL优化器执行SQL语句,从而让开发人员 知道自己编写的SQL状况b.MySQL查询优化其会干扰我们的优化(系统优原创 2021-11-07 12:35:07 · 224 阅读 · 0 评论 -
【SQL-索引介绍】
文章目录1、SQL编写和SQL解析2、主要优化索引1、索引介绍及优劣2、索引结构(B+树)3、索引分类4、索引创建、删除、查看(DDL表结构层面操作,会自动提交commit)刚开始时,SQL的数据量还非常少,开发人员更注重功能的实现,到后期的数据量越来越大,SQL语句的性能就会出现影响,比如出现如下的情况:性能低,执行时间和等待时间偏长,还有引发的索引失效等问题。1、SQL编写和SQL解析编写过程:select distinct…from…join…on…where…group by…having…原创 2021-11-07 10:44:52 · 174 阅读 · 0 评论 -
【mysql-存储过程】
文章目录一、创建语法二、调用语法1.空参列表2.创建带in模式参数的存储过程3.创建out 模式参数的存储过程4.创建带inout模式参数的存储过程三、删除存储过程四、查看存储过程的信息存储过程和函数存储过程和函数:类似于java中的方法好处:1、提高代码的重用性2、简化操作存储过程含义:一组预先编译好的SQL语句的集合,理解成批处理语句1、提高代码的重用性2、简化操作3、减少了编译次数并且减少了和数据库服务器的连接次数,提高了效率一、创建语法CREATE PROCEDURE 存原创 2021-11-06 23:17:09 · 277 阅读 · 0 评论 -
【mysql-函数】
文章目录1. 函数1.1 创建语法1.2 调用语法1. 函数含义:一组预先编译好的SQL语句的集合,理解成批处理语句1、提高代码的重用性2、简化操作3、减少了编译次数并且减少了和数据库服务器的连接次数,提高了效率区别:存储过程:可以有0个返回,也可以有多个返回,适合做批量插入、批量更新函数:有且仅有1 个返回,适合做处理数据后返回一个结果1.1 创建语法CREATE FUNCTION 函数名(参数列表) RETURNS 返回类型BEGIN 函数体END注意:1.参数列表 包含原创 2021-11-06 23:09:08 · 102 阅读 · 0 评论 -
【mysql-变量】
文章目录变量1. 系统变量1.1 全局变量1.2 会话变量2. 自定义变量2.1 用户变量2.2 局部变量2.3 用户变量和局部变量的对比变量系统变量: 全局变量 会话变量自定义变量: 用户变量 局部变量1. 系统变量说明:变量由系统定义,不是用户定义,属于服务器层面注意:全局变量需要添加global关键字,会话变量需要添加session关键字,如果不写,默认会话级别使用步骤:1、查看所有系统变量show global|【session】variables;2、查看满足条件的原创 2021-11-06 22:58:21 · 121 阅读 · 0 评论 -
【mysql-流程控制结构】
文章目录1. 分支结构1.1 if 函数1.2 case 结构1.3 if 结构2. 循环结构2.1 while2.2 loop2.3 repeat流程控制结构顺序、分支、循环1. 分支结构1.1 if 函数语法:if(条件,值1,值2) 功能:实现双分支 应用在begin end中或外面1.2 case 结构语法:情况1:类似于switchcase 变量或表达式when 值1 then 语句1;when 值2 then 语句2;...else 语句n;end 情况2:ca原创 2021-11-06 22:43:30 · 98 阅读 · 0 评论 -
【mysql-事务和视图】
文章目录1. 事务2. 视图2.1 创建视图2.2 视图的修改2.3 删除视图2.4 查看视图2.5 视图的更新(DML)1. 事务Transaction Control Language 事务控制语言事务:一个或一组sql语句组成一个执行单元,这个执行单元要么全部执行,要么全部不执行。案例:转账张三丰 1000郭襄 1000update 表 set 张三丰的余额=500 where name='张三丰'意外update 表 set 郭襄的余额=1500 where name原创 2021-11-06 22:23:46 · 115 阅读 · 0 评论 -
【mysql-常见约束】
文章目录1. 常见约束2. 创建表时添加约束3. 修改表时添加约束1. 常见约束含义:一种限制,用于限制表中的数据,为了保证表中的数据的准确和可靠性分类:六大约束NOT NULL:非空,用于保证该字段的值不能为空比如姓名、学号等DEFAULT:默认,用于保证该字段有默认值比如性别PRIMARY KEY:主键,用于保证该字段的值具有唯一性,并且非空比如学号、员工编号等UNIQUE:唯一,用于保证该字段的值具有唯一性,可以为空比如座位号CHECK:检查约束【mysql中不支持】比如年龄原创 2021-11-06 21:54:55 · 217 阅读 · 0 评论 -
【MySQL-库表管理】
文章目录一、库的管理1、库的创建2、库的修改3、库的删除二、表的管理1.表的创建2.表的修改3.表的删除4.表的复制数据定义语言库和表的管理一、库的管理创建、修改、删除二、表的管理创建、修改、删除创建: create修改: alter删除: drop·一、库的管理1、库的创建语法: create database [if not exists]库名;#案例:创建库BooksCREATE DATABASE IF NOT EXISTS books ;2、库的修改REN原创 2021-11-06 20:14:16 · 308 阅读 · 0 评论 -
【mysql-数据类型】
文章目录1. 常见的数据类型2. 数值型2.1 整型2.2 小数3. 字符型4. 日期型1. 常见的数据类型数值型:整型小数:定点数浮点数字符型:较短的文本:char、varchar较长的文本:text、blob(较长的二进制数据)日期型:2. 数值型2.1 整型分类:tinyint、smallint、mediumint、int/integer、bigint1 2 3 4 8特点:① 如果不设置无符号还是有符号,默认是有符号,如果想设置无符号(大于0的整数),需要原创 2021-11-03 23:05:26 · 299 阅读 · 0 评论 -
【mysql-DML】01. insert + update + delete
文章目录1. insert 插入语句1.1 方式一:经典的插入1.2 方式二 set1.3 两种方式大pk2. update修改语句2.1 修改单表2.2 修改多表3. delete删除语句3.1 delete3.2 truncate语句3.3 delete pk truncate#DML语言数据操作语言:插入:insert修改:update删除:delete1. insert 插入语句1.1 方式一:经典的插入语法:insert into 表名(列名,...) values(值1,.原创 2021-10-07 22:21:58 · 111 阅读 · 0 评论 -
【mysql-DQL】07.分页查询+联合查询
应用场景:当要显示的数据,一页显示不全,需要分页提交sql请求语法: select 查询列表 from 表 【join type join 表2 on 连接条件 where 筛选条件 group by 分组字段 having 分组后的筛选 order by 排序的字段】 limit 【offset,】size; offset要显示条目的起始索引(起始索引从0开始) size 要显示的条目个数特点: ①limit语句放在查询语句的最后 ②公式 要显示的页数 page,每页的原创 2021-10-07 21:55:38 · 134 阅读 · 0 评论 -
【mysql-DQL】06.子查询
文章目录1、where或having后面2. select后面3. from后面4. exists后面(相关子查询)含义:出现在其他语句中的select语句,称为子查询或内查询外部的查询语句,称为主查询或外查询分类:1.按子查询出现的位置: select后面: 仅仅支持标量子查询 from后面: 支持表子查询 where或having后面:★ 标量子查询(单行) √ 列子查询 (多行) √ 行子查询 exists后面(相关子查询) 表子查询原创 2021-10-07 21:53:09 · 84 阅读 · 0 评论 -
【mysql-DQL】05.sql99连接(join)
文章目录1. sql99连接1.1 内连接1.2 外连接1. sql99连接语法: select 查询列表 from 表1 别名 【连接类型】 join 表2 别名 on 连接条件 【where 筛选条件】 【group by 分组】 【having 筛选条件】 【order by 排序列表】 分类:内连接(★):inner外连接 左外(★):left 【outer】 右外(★):right 【outer】 全外:full【outer】交叉连接:cross 1.1原创 2021-10-07 21:29:17 · 97 阅读 · 0 评论 -
【mysql-DQL】04.排序查询+分组查询+sql92连接查询
文章目录1. 排序查询2. 分组查询3. 连接查询1. 排序查询语法:select 查询列表from 表名【where 筛选条件】order by 排序的字段或表达式;特点:1、asc代表的是升序,可以省略desc代表的是降序2、order by子句可以支持 单个字段、别名、表达式、函数、多个字段3、order by子句在查询语句的最后面,除了limit子句#1、按单个字段排序SELECT * FROM employees ORDER BY salary DESC;#2原创 2021-10-07 20:45:11 · 145 阅读 · 0 评论 -
【mysql-DQL】03.函数
文章目录1. 单行函数1.1 字符函数1.2 数学函数1.3 日期函数1.4 其他函数1.5 流程控制函数2. 分组函数函数概念:类似于java的方法,将一组逻辑语句封装在方法体中,对外暴露方法名好处:1、隐藏了实现细节 2、提高代码的重用性调用:select 函数名(实参列表) 【from 表】;特点:①叫什么(函数名)②干什么(函数功能)分类:1、单行函数如 concat、length、ifnull等2、分组函数功能:做统计使用,又称为统计函数、聚合函数、组函数1. 单行函数原创 2021-10-07 19:09:44 · 155 阅读 · 0 评论 -
【mysql-DQL】02.基础查询+条件查询
文章目录1.基础查询2. 条件查询2.1 按条件表达式筛选2.2 按逻辑表达式筛选2.3 模糊查询1.基础查询语法:select 查询列表 from 表名;类似于:System.out.println(打印东西);特点:1、查询列表可以是:表中的字段、常量值、表达式、函数2、查询的结果是一个虚拟的表格USE myemployees;#1.查询表中的单个字段SELECT last_name FROM employees;#2.查询表中的多个字段SELECT last_name,原创 2021-10-07 16:32:06 · 463 阅读 · 0 评论 -
【mysql】01.基本概念
文章目录1.基本概念1.基本概念1、DB:数据库,保存一组有组织的数据的容器2、DBMS:数据库管理系统,又称为数据库软件(产品),用于管理DB中的数据,常见的DBMS包括 MySQL、 Oracle、 DB2、 SqlServer等3、SQL:结构化查询语言,用于和DBMS通信的语言DQL:select语句;DML(Data Manipulation Language):数据操纵语句,用于添加、删除、修改、查询数据库记录,并检查数据完整性;DDL(Data Definition Lang原创 2021-10-07 14:15:19 · 97 阅读 · 0 评论 -
JDBC: 事务 行级锁/悲观锁
行级锁/悲观锁:某一行或多行被锁住,本事务中数据不能动,下一个事务只能排队等候上一个事务结束,再动数据。//行级锁:在sql语句后面加for updateString sql=“select ename,job,sal from emp1 where job= ? for update”;(1)行级锁程序package com.jdbc;import com.jdbc.utils.DBU...原创 2019-12-01 20:11:10 · 302 阅读 · 0 评论 -
JDBC: 简化JDBC语句,封装DBUtil简单库
(1)为了简化JDBC编程六步,封装一个DBUti库,以后直接调用。这个程序用到了静态代码块:在类加载时执行,且只执行一次package com.jdbc.utils;import java.sql.*;/** * JDBC工具类,简化JDBC编程 * 封装库 * */public class DBUtil { /** * 工具类中的构造方法都是私有的。 ...原创 2019-12-01 19:46:08 · 281 阅读 · 0 评论 -
JDBC : 事务机制
(1)这个程序执行任意一条DML语句,则自动提交一次。违背事务机制:同时发生,同时失败package com.jdbc;import java.sql.*;/***JDBC事务机制: * 1.JDBC中的事务是自动提交的,什么是自动提交? * --只要执行任意一条DML语句,则自动提交一次,这是JDBC默认的事务行为。 * --但是在实际的业务逻辑中,通常都是N条DML语句共同联...原创 2019-12-01 19:35:52 · 208 阅读 · 0 评论 -
JDBC: PreparedStatement和Statement的区别
文章目录1.JDBC设计用户登录2.PreparedStatement和Statemen区别3.PreparedStatement对数据库进行insert、delete、update操作PreparedStatement注意:(1)sql语句要给占位符?传值(第1个问号下标是1,第2个问号下标是2,JDBC所有下标从1开始。)(2)PreparedStatement与Statement的第四...原创 2019-12-01 19:00:03 · 259 阅读 · 0 评论 -
JDBC处理查询结果集(select)
第五步:处理查询结果集(遍历结果集)只有在select语句时才会处理,增删改(insert、delete、update)没有第五步三种遍历结果集方式:第一方式: 数字1,2,3代表每行的第1,2,3列,循环输出每行;String empno = rs.getString(1);String ename = rs.getString(2);String sal = rs.getStrin...原创 2019-12-01 17:26:21 · 1844 阅读 · 0 评论 -
JDBC注册驱动的第二种方法和使用配置文件properties
(1)DriverManager.registerDriver(new com.mysql.cj.jdbc.Driver()) —> 反射注册Class.forName(“com.mysql.cj.jdbc.Driver”)package com.jdbc;import java.sql.*;public class JDBCTest03 { public static vo...原创 2019-12-01 17:08:58 · 434 阅读 · 0 评论 -
JDBC编程六步
JDBC编程六步(需要背会)第一步:注册驱动(作用:告诉Java程序,即将要连接的是哪个品牌的数据库)第二步:获取连接(表示JVM的进程和数据库进程之间的通道打开了,这属于进程之间的通信,重量级的,使用完之后一定要关闭通道。)第三步:获取数据库操作对象(专门执行sql语句的对象)第四步:执行SQL语句(DQL DML…)第五步:处理查询结果集(只有当第四步执行的是select语句的时候,...原创 2019-12-01 16:53:24 · 253 阅读 · 0 评论 -
JDBC原理
文章目录1.面向接口编程2.模拟JDBC本质(1)JDBC接口:(2) 3个数据库实现类(实现者)(3)java程序员(调用者)1.面向接口编程解耦合:降低程序的耦合度,提高程序的扩展力多态机制就是典型的面向接口编程Animal a = new Cat;Animal a = new Dog();2.模拟JDBC本质(1)JDBC接口:** * sun公司制定的接口 */pu...原创 2019-12-01 15:50:44 · 168 阅读 · 0 评论 -
MySQL学习(第3天课程)
MySQL第2天课程文章目录1. 约束(not null、unique、primary key、 foreign key)1.1 非空约束 (not null)1.2 唯一约束(unique)1.3 主键约束(primary key)1.4 外键约束(foreign key)2. 事务(TCL)3. 索引(原理面试问)4. 视图(view)5. 范式(重点内容,面试经常问)1. 约束(not...原创 2019-11-19 20:38:02 · 297 阅读 · 0 评论 -
MySQL学习(第2天课程)
文章目录1. 查询(第1天课程也有)1.1 连接查询(内连接、外连接)1.2 子查询2. union、limit3. 表3.1 创建表(create table)3.2 insert语句插入数据3.3 delete删除数据3.4 update修改数据1. 查询(第1天课程也有)语法格式(执行顺序):limit是sql语句最后执行的一个环节:select 5…from 1… w...原创 2019-11-18 17:37:57 · 354 阅读 · 0 评论 -
MySQL学习(第1天课程):一张表(table)的select(查询DQL)语句
文章目录简介SQL语句(select)简介1、sql、DB、DBMS分别是什么,sql的分类?DB:DataBase(数据库,数据库实际上在硬盘上以文件的形式存在)DBMS:DataBase Management System(数据库管理系统,常见的有:MySQL Oracle DB2 Sybase SqlServer…)SQL:结构化查询语言,是一门标准通用的语言。标准的sql适...原创 2019-11-16 15:53:51 · 688 阅读 · 0 评论