![](https://img-blog.csdnimg.cn/20200626084654894.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
数据库相关
数据库笔记记录
深度学习推荐算法
用技术提升美好事物发生的概率。
展开
-
数据库常见混淆点
此外,GROUP BY子句通常与聚合函数结合使用,例如MIN,MAX,AVG,SUM或COUNT等,以计算并返回每个分组的汇总信息。数据模型是数据特征的抽象,它从抽象层次上描述了系统的静态特性、动态行为和约束条件,为数据库系统的信息表示与操作提供一个框架。操作系统是DBMS的基础。原因是,IMS是IBM公司开发的两种数据库类型之一,另一种则是关系数据库,其典型代表产品为DB2。IMS数据库的基本数据结构是层次结构,即数据之间的联系表现为分层的树状结构,与关系数据库管理系统的数据逻辑组织方式不同。原创 2023-10-23 11:41:23 · 212 阅读 · 0 评论 -
MySQL中delete、truncate、drop比较
不管是InnoDB引擎还是MyISAM引擎,在执行truncate命令后都会释放磁盘空间,且会重置auto_increment为1。不管是InnoDB引擎还是MyISAM引擎,在执行drop命令后都会释放磁盘空间,并且会删除该数据表上依赖的约束、触发器、索引。执行truncate需要drop权限,最好提前备份数据库表,因为无法通过binlog回滚。truncate命令从表中删除所有行,但表结构及其列,约束,索引等保持不变。delete只删除记录,但表结构及其列,约束,索引等保持不变。原创 2023-10-23 10:25:58 · 54 阅读 · 0 评论 -
范式的理解
第一范式:字段不可分割,数据库默认支持第二范式:消除对主键的部分依赖,可以在表中加上一个与业务逻辑无关的字段作为主键,比如用自增id第三范式:消除对主键的传递依赖,可以将表拆分,减少数据冗余...原创 2021-06-23 09:52:10 · 211 阅读 · 0 评论 -
一条sql语句在mysql中如何执行的
本篇文章会分析下一个 sql 语句在 MySQL 中的执行流程,包括 sql 的查询在 MySQL 内部会怎么流转,sql 语句的更新是怎么完成的。在分析之前我会先带着你看看 MySQL 的基础架构,知道了 MySQL 由那些组件组成已经这些组件的作用是什么,可以帮助我们理解和解决这些问题。一 MySQL 基础架构分析1.1 MySQL 基本架构概览下图是 MySQL 的一个简要架构图,从下图你可以很清晰的看到用户的 SQL 语句在 MySQL 内部是如何执行的。先简单介绍一下下图涉及的一些组件原创 2020-09-03 23:24:32 · 143 阅读 · 0 评论 -
事务隔离级别(图文详解)
事务隔离级别(图文详解)什么是事务?事务的特性(ACID)并发事务带来的问题事务隔离级别实际情况演示脏读(读未提交)避免脏读(读已提交)不可重复读可重复读防止幻读(可重复读)参考事务隔离级别(图文详解)什么是事务?事务是逻辑上的一组操作,要么都执行,要么都不执行。事务最经典也经常被拿出来说例子就是转账了。假如小明要给小红转账1000元,这个转账会涉及到两个关键操作就是:将小明的余额减少1000元,将小红的余额增加1000元。万一在这两个操作之间突然出现错误比如.原创 2020-09-03 23:09:05 · 171 阅读 · 0 评论 -
关于数据库存储时间的一点思考
我们平时开发中不可避免的就是要存储时间,比如我们要记录操作表中这条记录的时间、记录转账的交易时间、记录出发时间等等。你会发现这个时间这个东西与我们开发的联系还是非常紧密的,用的好与不好会给我们的业务甚至功能带来很大的影响。所以,我们有必要重新出发,好好认识一下这个东西。这是一篇短小精悍的文章,仔细阅读一定能学到不少东西!1.切记不要用字符串存储日期我记得我在大学的时候就这样干过,而且现在很多对数据库不太了解的新手也会这样干,可见,这种存储日期的方式的优点还是有的,就是简单直白,容易上手。但是,这是不原创 2020-09-03 22:37:44 · 309 阅读 · 0 评论 -
Sql经典练习题
use fuxi;CREATE TABLE STUDENT( SNO VARCHAR(3) NOT NULL, SNAME VARCHAR(4) NOT NULL, SSEX VARCHAR(2) NOT NULL, SBIRTHDAY DATETIME, CLASS VARCHAR(5));CREATE TABLE COURSE( CNO VARCHAR(5) NOT NULL, CNAME VARCHAR(10) NO原创 2020-07-06 12:35:29 · 181 阅读 · 13 评论 -
9个常见的Redis面试题
1. Redis有哪些数据结构?字符串String、字典Hash、列表List、集合Set、有序集合SortedSet。如果你是Redis中高级用户,还需要加上下面几种数据结构HyperLogLog、Geo、Pub/Sub。如果你说还玩过Redis Module,像BloomFilter,RedisSearch,Redis-ML,面试官得眼睛就开始发亮了。2. 使用过Redis分布式锁么,它是什么回事?先拿setnx来争抢锁,抢到之后,再用expire给锁加一个过期时间防止锁忘记了释放。这时候对原创 2020-07-03 21:07:16 · 597 阅读 · 0 评论 -
数据库原理
一、事务概念事务指的是满足 ACID 特性的一组操作,可以通过 Commit 提交一个事务,也可以使用 Rollback 进行回滚。ACID1. 原子性(Atomicity)事务被视为不可分割的最小单元,事务的所有操作要么全部提交成功,要么全部失败回滚。回滚可以用回滚日志来实现,回滚日志记录着事务所执行的修改操作,在回滚时反向执行这些修改操作即可。2. 一致性(Consistency)数据库在事务执行前后都保持一致性状态。在一致性状态下,所有事务对一个数据的读取结果都是相同的。3. 隔离原创 2020-07-03 19:32:37 · 7669 阅读 · 1 评论 -
Redis
一、概述Redis 是速度非常快的非关系型(NoSQL)内存键值数据库,可以存储键和五种不同类型的值之间的映射。键的类型只能为字符串,值支持五种数据类型:字符串、列表、集合、散列表、有序集合。Redis 支持很多特性,例如将内存中的数据持久化到硬盘中,使用复制来扩展读性能,使用分片来扩展写性能。二、数据类型数据类型可以存储的值操作STRING字符串、整数或者浮点数对整个字符串或者字符串的其中一部分执行操作 对整数和浮点数执行自增或者自减操作LIST列表从两端压入原创 2020-07-02 22:29:38 · 102 阅读 · 0 评论 -
MySQL基础
一、索引B+ Tree 原理1. 数据结构B Tree 指的是 Balance Tree,也就是平衡树。平衡树是一颗查找树,并且所有叶子节点位于同一层。B+ Tree 是基于 B Tree 和叶子节点顺序访问指针进行实现,它具有 B Tree 的平衡性,并且通过顺序访问指针来提高区间查询的性能。在 B+ Tree 中,一个节点中的 key 从左到右非递减排列,如果某个指针的左右相邻 key 分别是 keyi 和 keyi+1,且不为 null,则该指针指向节点的所有 key 大于等于 keyi 且原创 2020-06-30 11:55:52 · 276 阅读 · 0 评论 -
SQL基础
一、基础模式定义了数据如何存储、存储什么样的数据以及数据如何分解等信息,数据库和表都有模式。主键的值不允许修改,也不允许复用(不能使用已经删除的主键值赋给新数据行的主键)。SQL(Structured Query Language),标准 SQL 由 ANSI 标准委员会管理,从而称为 ANSI SQL。各个 DBMS 都有自己的实现,如 PL/SQL、Transact-SQL 等。SQL 语句不区分大小写,但是数据库表名、列名和值是否区分依赖于具体的 DBMS 以及配置。SQL 支持以下三种注释原创 2020-06-30 11:54:36 · 173 阅读 · 0 评论 -
数据库索引
索引机制前言:数据库和数据库索引这两个东西是在服务器端开发领域应用最为广泛的两个概念,熟练使用数据库和数据库索引是后端开发人员在行业内生存的必备技能。数据库索引是用来提高数据库表的数据查询速度的。一个最优的索引能够轻易的将查询性能提高好几个数量级。索引定义数据库索引:对数据库表中要查询的字段建立索引其实就是把该字段按照一定的方式排序的结构。索引的作用能够大大的提高数据的查询检索速度通过创建唯一性索引可以保证数据库中每一行的唯一性可以加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有原创 2020-06-26 12:57:50 · 470 阅读 · 0 评论 -
MySQL中B+树索引和哈希索引的区别
在MySQL里常用的索引数据结构有B+树索引和哈希索引两种,我们来看下这两种索引数据结构的区别及其不同的应用建议。二者区别备注:先说下,在MySQL文档里,实际上是把B+树索引写成了BTREE,例如像下面这样的写法:CREATE TABLE t(aid int unsigned not null auto_increment,userid int unsigned not null default 0,username varchar(20) not null default ‘’,deta原创 2020-06-26 12:31:41 · 201 阅读 · 1 评论 -
SQL基础
参考文档: SQL 教程SQL简介SQL 是用于访问和处理数据库的标准的计算机语言。什么是 SQLSQL 指结构化查询语言SQL 使我们有能力访问数据库SQL 是一种 ANSI 的标准计算机语言注:ANSI,美国国家标准化组织DBMS - 数据库管理系统(Database Management System)数据库管理系统是一种可以访问数据库中数据的计算机程序。DBMS 使我们有能力在数据库中提取、修改或者存贮信息。不同的 DBMS 提供不同的函数供查询、提交以及修改数据。R.原创 2020-06-26 09:10:27 · 2519 阅读 · 16 评论 -
Redis与缓存
Redis简介什么是RedisRedis(Remote Dictionary Server) 是一个使用 C 语言编写的,开源的(BSD许可)高性能非关系型(NoSQL)的键值对数据库。Redis 可以存储键和五种不同类型的值之间的映射。键的类型只能为字符串,值支持五种数据类型:字符串、列表、集合、散列表、有序集合。与传统数据库不同的是, Redis 的数据是存在内存中的,所以读写速度非常快,因此 redis 被广泛应用于缓存方向,每秒可以处理超过 10万次读写操作,是已知性能最快的Key-Valu原创 2020-06-26 09:09:05 · 3032 阅读 · 6 评论 -
MySQL
数据库基础数据库的优势数据保存在内存:优点:存取速度快缺点:数据不能永久保存数据保存在文件:优点:数据永久保存缺点:1)速度比内存操作慢,频繁的IO操作。2)查询数据不方便数据保存在数据库:数据永久保存使用SQL语句,查询方便效率高。管理数据方便三大范式第一范式:每个列都不可以再拆分。第二范式:在第一范式的基础上,非主键列完全依赖于主键,而不能是依赖于主键的一部分。第三范式:在第二范式的基础上,非主键列只依赖于主键,不依赖于其他非主键。在设计数据库结构的时候,要尽量遵原创 2020-06-26 09:08:05 · 272 阅读 · 0 评论 -
数据库系统原理
参考文档:https://cyc2018.github.io/CS-Notes/#/notes/数据库系统原理事务概念事务指的是满足 ACID 特性的一组操作,可以通过 Commit 提交一个事务,也可以使用 Rollback 进行回滚。ACID特性1. 原子性(Atomicity)事务被视为不可分割的最小单元,事务的所有操作要么全部提交成功,要么全部失败回滚。回滚可以用回滚日志(Undo Log)来实现,回滚日志记录着事务所执行的修改操作,在回滚时反向执行这些修改操作即可。2. 一致.原创 2020-06-26 09:07:04 · 227 阅读 · 0 评论 -
由 B-/B+树分析 MySQL索引
B-树B-树,这里的 B 表示 balance( 平衡的意思),B-树是一种多路自平衡的搜索树它类似普通的平衡二叉树,不同的一点是B-树允许每个节点有更多的子节点。下图是 B-树的简化图.B-树有如下特点:所有键值分布在整颗树中;任何一个关键字出现且只出现在一个结点中;搜索有可能在非叶子结点结束;在关键字全集内做一次查找,性能逼近二分查找;B+ 树B+树是B-树的变体,也是一种多路搜索树, 它与 B- 树的不同之处在于:所有关键字存储在叶子节点出现,内部节点(非叶子节点并不存储真原创 2020-06-25 19:39:39 · 106 阅读 · 0 评论 -
BTree和B+Tree详解
B+树索引是B+树在数据库中的一种实现,是最常见也是数据库中使用最为频繁的一种索引。B+树中的B代表平衡(balance),而不是二叉(binary),因为B+树是从最早的平衡二叉树演化而来的。在讲B+树之前必须先了解二叉查找树、平衡二叉树(AVLTree)和平衡多路查找树(B-Tree),B+树即由这些树逐步优化而来。二叉查找树二叉树具有以下性质:左子树的键值小于根的键值,右子树的键值大于根的键值。如下图所示就是一棵二叉查找树,对该二叉树的节点进行查找发现深度为1的节点的查找次数为1,深度为2原创 2020-06-25 19:23:55 · 989 阅读 · 27 评论 -
数据库索引使用方式
数据库基础知识复习:W3school使用索引是提高数据库查询效率的主要方式,下面从索引结构,索引类型,索引操作,命中索引几个方面来介绍索引。一、索引结构mysql5.5以上的默认存储引擎innodb,只显式支持BTree( 事实上从数据结构上来讲是B+树,mysql称之为BTree)索引,对于频繁访问的表,innodb会建立自适应hash索引,即在B树索引基础上建立hash索引,可以显著提高查找效率,用户是无法自己指定的,除此之外还有Hash索引和全文索引(fullText索引)。BTree索引原创 2020-06-24 23:59:28 · 297 阅读 · 0 评论 -
联合索引的最左前缀匹配原则
目录联合索引最左前缀匹配原则最左匹配原则的成因联合索引所谓的联合索引就是指,由两个或以上的字段共同构成一个索引。本文测试用例的数据表结构如下,一张简简单单的学生信息表 tb_student,仅包含四个字段(student_id、student_name、student_age、student_addr)那比如说,我们现在的业务需求经常要通过学生的年龄(student_age)和学生的家庭住址(student_addr)来同时筛选学生,如下SELECT * FROM.原创 2020-06-02 16:43:02 · 8494 阅读 · 6 评论 -
数据库索引
为什么索引能提高查询速度主键索引和非主键索引的区别先从 MySQL 的基本存储结构说起MySQL的基本存储结构是页(记录都存在页里边):MySQL的基本存储结构是页 各个数据页可以组成一个双向链表 每个数据页中的记录又可以组成一个单向链表 每个数据页都会为存储在它里边儿的记录生成一个页目录,在通过主键查找某条记录的时候可以在页目录中使用二分法快速定位到对应的槽,然后再遍历该槽对应分组中的记录即可快速找到指定的记录 以其他列(非主键)作为搜.原创 2020-06-02 16:03:36 · 251 阅读 · 0 评论 -
MySQL学习笔记
/* 启动MySQL */net start mysql /* 连接与断开服务器 */mysql -h 地址 -P 端口 -u 用户名 -p 密码 /* 跳过权限验证登录MySQL */mysqld --skip-grant-tables-- 修改root密码密码加密函数password()update mysql.user set password=password('root'); SHOW PROCESSLIST -- 显示哪些线程正在运行SHOW VARIABLES --.转载 2020-05-21 16:43:10 · 182 阅读 · 0 评论 -
Redis 使用
Redis启动管理员方式打开一个cmd窗口 使用 cd 命令切换目录到E:\cs\Redis-x64-3.0.504运行:redis-server.exe redis.windows.conf如果想方便的话,可以把 redis 的路径加到系统的环境变量里,这样就省得再输路径了,后面的那个 redis.windows.conf 可以省略,如果省略,会启用默认的。输入之后,会显示如下界面:这时候另启一个 cmd 窗口,原来的不要关闭,不然就无法访问服务端了。切换到 redi...原创 2020-06-07 09:47:44 · 318 阅读 · 1 评论 -
java开发之连接数据库JDBC
目录一、JDBC概述二、JDBC 开发1、导入驱动jar包2、注册数据库驱动程序3、获取数据库和SQL的连接对象4、执行 insert 语句获取结果集5、执行 select 语句获取结果集一、JDBC概述JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提...原创 2020-05-06 15:47:37 · 150 阅读 · 0 评论