
mysql
mysql 学习笔记
ljt-tiger
不积跬步,无以至千里。知识认知体系搭建过程:场景 --》需求 --》解决方案 --》应用 --》原理
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
原生JDBC查询数据
原生JDBC查询数据首先在pom.xml 中引入驱动包 <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.21</version> </dependency>步骤原创 2021-10-24 12:31:13 · 677 阅读 · 0 评论 -
mysql事务
事务特性事务的定义执行过程中的一个逻辑单位,由一个有限的数据库操作序列构成四大特性原子性(Atomicity)对数据库的一系列的操作,要么都是成功,要么都是失败,不可能出现部分成功或者部分失败的情况。以转账的场景为例,一个账户的余额减少,对应一个账户的增加,这两个一定是同时成功或者同时失败的隔离性(Isolation)数据库的完整性约束没有被破坏,事务执行的前后都是合法的数据状态。比如主键必须是唯一的,字段长度符合要求持久性(Durability)在数据库里面会有很多的事务同时原创 2021-07-27 21:59:59 · 122 阅读 · 0 评论 -
mysql通过delete 操作删除表数据,为什么表空间的数据文件大小不变
表空间对于运行很长时间的数据库来说,往往会出现表占用存储空间过大的问题,可是将许多没用的表删除之后,表文件的大小并没有改变,想解决这个问题,就需要了解 InnoDB 如何回收表空间的。对于一张表来说,占用空间重要分为两部分,表结构和表数据。通常来说,表结构定义占用的空间很小。所以空间的问题主要和表数据有关。在 MySQL 8.0 前,表结构存储在以 .frm 为后缀的文件里。在 8.0,允许将表结构定义在系统数据表中。表数据的存放可以将表数据存在共享表空间,或者单独的文件中,通过 innodb_fi原创 2021-07-24 11:36:18 · 1089 阅读 · 0 评论 -
mysql数据存储结构分析
二分查找算法折半查找考虑用有序数组作为索引的数据结构有序数组的等值查询和比较查询效率非常高,但是更新数据时可能要挪动大量的数据(index),所以只适合存储静态的数据为了支持频繁的修改,比如插入数据,我们需要采用链表。链表的话,如果是单链表,它的查找效率还是不够高…二叉查找树BST(Binary Search Tree) BTREE特点:左子树所有的节点都小于父节点,右子树所有的节点都大于父节点。投影到平面以后,就是一个有序的线性表左子树节点 < 父节点右子树节点 >原创 2021-07-22 22:09:39 · 938 阅读 · 0 评论 -
mysql索引的本质
索引的本质索引基本概念:是数据库管理系统(DBMS)中一个排序的数据结构,以协助快速查询、更新数据库表中数据。理解要点:首先数据是以文件的形式存放在磁盘上面的,每一行数据都有它的磁盘地址。如果没有索引的话,要从 500 万行数据里面检索一条数据,只能依次遍历这张表的全部数据(全盘扫描),直到找到这条数据。但是有了索引之后,只需要在索引里面去检索这条数据就行了,因为它是一种特殊的专门用来快速检索的数据结构,我们找到数据存放的磁盘地址以后,就可以拿到数据了。索引类型与创建唯一索引(Unique):键原创 2021-07-22 21:28:16 · 230 阅读 · 0 评论 -
mysql存储引擎
存储引擎存储引擎(表类型)详情请看官方介绍https://dev.mysql.com/doc/refman/5.7/en/innodb-storage-engine.html查看所有存储引擎show engines;SELECT * FROM INFORMATION_SCHEMA.ENGINES;-- 查看数据库(tiger_db)中存在表的储存引擎show table status from `tiger_db`;插件式的存储引擎,修改存储引擎ALTER TABLE t原创 2021-07-10 10:47:02 · 144 阅读 · 0 评论 -
mysql执行流程
执行流程大概分成7个步骤客户端发sql请求查询缓存很鸡肋,高版本中已经废弃解析器Parser:对语句基于 SQL 语法进行词法和语法分析和语义的解析词法解析:把一个完整的 SQL 语句打碎成一个个的单词语法解析:语法分析会对 SQL 做一些语法检查,比如单引号有没有闭合,然后根据 MySQL 定义的语法规则,根据 SQL 语句生成一个数据结构。这个数据结构我们把它叫做解析树(select_lex)任何数据库的中间件,比如 Mycat,Sharding-JDBC(用到了 Druid Par原创 2021-07-10 10:44:36 · 192 阅读 · 0 评论 -
mysql发展简史
发展历史时间里程碑1996 年MySQL 1.0 发布。它的历史可以追溯到 1979 年,作者 Monty 用 BASIC 设计的一个报表工具1996 年10 月 3.11.1 发布。MySQL 没有 2.x 版本2000 年ISAM 升级成 MyISAM 引擎。MySQL 开源2003 年MySQL 4.0 发布,集成 InnoDB 存储引擎2005 年MySQL 5.0 版本发布,提供了视图、存储过程等功能2008 年MySQL AB 公司原创 2021-07-10 10:43:29 · 2579 阅读 · 0 评论 -
主业务与RPC事务传播
主业务逻辑中有N个sql,中间进行了RPC,正常来说,主业务中某条sql出异常,所有数据全部回滚,但现在出现RPC中执行的sql不会自动回滚解决方案?原创 2021-05-20 14:48:19 · 625 阅读 · 0 评论 -
linux安装mysql
方式一 docker安装创建挂载目录# 数据目录mkdir -p /usr/local/docker/mysql/data# 日志目录mkdir -p /opt/docker/mysql/logs# 配置文件,需要事先将配置文件放到 my.cnf 中mkdir -p /usr/local/docker/mysql/conf/my.cnf运行mysql5.7镜像docker run -it --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWO原创 2021-03-28 10:23:31 · 212 阅读 · 1 评论 -
给定起止时间跨年计算周次(oracle函数)
CREATE OR REPLACE FUNCTION get_weekly_times(i_ksrq IN DATE, i_jsrq IN DATE) RETURN NUMBER DETERMINISTIC IS /** * 给定起止日期,获取周数(支持跨年) * 每一周:周一到周日 * * 给函数加上determninistic,在SQL执行期间,对于相同的输入参数,函...原创 2019-12-06 10:16:16 · 1225 阅读 · 0 评论 -
${} 与 #{} 的区别
#{}是预编译处理,$ {}是字符串替换(当做占位符来用)。mybatis在处理#{}时,会将sql中的#{}替换为?号,调用PreparedStatement的set方法来赋值;mybatis在处理 $ {} 时,就是把 ${} 替换成变量的值。使用 #{} 可以有效的防止SQL注入,提高系统安全性。SQL注入是发生在编译的过程中,因为恶意注入了某些特殊字符,最后被编译成了恶意的执行...原创 2019-09-11 21:18:38 · 915 阅读 · 0 评论 -
从一张表中提取信息填充入临时表
<span style="color:#ffffff">insert into t_temp(id,name,card_no) select replace(UUID(),"-","") as id,real_name as name, id_card_no as card_no from t_member where real_name is not null and id_car...原创 2018-07-09 17:48:57 · 471 阅读 · 0 评论 -
window系统下,如何在命令行进入mysql数据库
1、首先进入mysql的安装目录下的bin目录,例如我的是【C:\WINDOWS\System32\cmd.exe】2、接着输入cmd,回车、、3、在命令行中输入命令【mysql.exe -hlocalhost -uroot -p123456】回车,其中【-h主机名 -u用户 -p密码】 4、成功进入界面5、show databases; 查看所有数据库...原创 2018-05-13 13:23:55 · 15483 阅读 · 0 评论 -
MySQL与操作时间有关的函数
149201712291、当前日期:SEELCT CURDATE() AS 当前日期;2、当前时间:SEELCT CURTIME() AS 当前时间;3、当前日期 + 时间:SEELCT NOW() AS 当前日期add时间;4、函数表达式【SELECT DATE_ADD(date,INTERVAL expr unit);】举例,其余看英文意思自己理解 1)、当前天数 +原创 2017-12-29 15:55:27 · 297 阅读 · 0 评论 -
MySQL索引类型总结和使用技巧以及注意事项
--- 索引作用 ---在索引列上,除了上面提到的有序查找之外,数据库利用各种各样的快速定位技术,能够大大提高查询效率。特别是当数据量非常大,查询涉及多个表时,使用索引往往能使查询速度加快成千上万倍。例如,有3个未索引的表t1、t2、t3,分别只包含列c1、c2、c3,每个表分别含有1000行数据组成,指为1~1000的数值,查找对应值相等行的查询如下所示。SELECT c1,c2,c转载 2017-12-21 16:28:18 · 322 阅读 · 0 评论 -
使用MySQL数据库时遇到的问题
149201712211、有时候使用脚本迁移数据时会碰到乱码的问题,即使将表字符集设置成utf8也无济于事,这个时候在执行sql之前加一句set names utf8即可。2、...原创 2017-12-21 10:21:37 · 812 阅读 · 0 评论 -
spring获取数据库连接对象
12020171030spring配置数据源的代码示例原创 2017-10-30 10:23:35 · 5583 阅读 · 0 评论 -
JDBCUtil
11920171029package com.tiger.utils;import java.io.*;import java.sql.*;import java.util.Properties;/** * MyJDBCUtil * @author tiger * @date 2017年10月29日 */public class JDBCUtil {原创 2017-10-29 11:27:07 · 339 阅读 · 0 评论 -
数据连接池(数据源)的配置方法
08120170920081201709201、为什么需要连接池?因为打开和关闭Connection需要耗费时间和内存开销2、连接池常见种类: 1)、dbcp(tomcat容器内部支持,tomcat-dbcp.jar已经存在,不需要手工导入) 2)、druid(阿里)[需要导入druid-1.1.3.jar包] 3)、cp30(开源)3、配原创 2017-09-21 09:02:24 · 537 阅读 · 0 评论 -
数据库笔记群集
07920170915------------------------------------------DDL-------------------------------------------1、DDL(Data Definition language):定义对数据库对象(库,表,列,索引)[1、create,2、drop,3、alter,4、rename]1)、显示数据原创 2017-09-18 08:50:31 · 528 阅读 · 1 评论 -
数据库命名规范的几点参考建议
-- 1、表示时间字段:data作为尾缀标识[例如login_data:表示登陆时间]-- 2、表示次数字段:count作为尾缀标识[例如login_count:表示登陆次数]-- 3、表示链接字段:url作为尾缀标识[例如img_count:表示图片链接地址、source_url:表示引用文章出处链接地址]-- 4、表示布尔字段:is、has、can作为前缀[例如isIn...原创 2017-09-03 10:33:29 · 744 阅读 · 2 评论