- 博客(66)
- 资源 (12)
- 收藏
- 关注
原创 oracle数据库误删表恢复
闪回删除表的限制Oracle 10g开始提供了类似windows系统的回收站功能,用户在删除表的时候会不是直接删除,而是移动到回收站中,如果需要从回收站中取回原来的表,可以使用闪回删除表的特性,迅速的找回被删除的表,而不需要从备份中导入原有的表!但这个回收站功能也是有前提的,不是在任何情况下都可以使用闪回删除表特性,总结下,在10g中,下面几种场景表不能flashback删除,至于11g是否有改进,感兴趣的朋友可以参照本文的方法进行测试下!顺带说下,回收站采取fifo,先进先出的机制!例如在回收站有两张同
2022-02-14 09:36:37
310
原创 MySQL分区与分表
一、概念1.分表和分区 的作用?日常开发中我们经常会遇到大表的情况,所谓的大表是指存储了百万级乃至千万级条记录的表。这样的表过于庞大,导致数据库在查询和插入的时候耗时太长,性能低下,如果涉及联合查询的情况,性能会更加糟糕。分表和表分区的目的就是减少数据库的负担,提高数据库的效率,通常点来讲就是提高表的增删改查效率。2.什么是分表?分表是将一个大表按照一定的规则分解成多张具有独立存储空间的实体表,我们可以称为子表,每个表都对应三个文件,MYD数据文件,.MYI索引文件,.frm表结构文件。这些子表可以
2021-05-17 14:15:56
293
原创 力扣题解-569. 员工薪水中位数
SQL架构Employee 表包含所有员工。Employee 表有三列:员工Id,公司名和薪水。以下为数据:Create table If Not Exists Employee (Id int, Company varchar(255), Salary int)Truncate table Employeeinsert into Employee (Id, Company, Salary) values ('1', 'A', '2341')insert into Employee (Id,
2021-04-22 11:04:13
486
2
原创 Oracle体系结构中最核心的八个进程
PMON:其含义是Processes Monitor,是进程监视器。如果你在执行某些更新语句,未提交时进程崩溃了,这时候PMON会自动回滚该操作,无需你人工执行ROLLBACK命令。除此之外还可以干预后台进程,比如RECO异常失败了,此时PMON会重启RECO进程,如果遇到LGWR进程失败这样的严重问题,PMON会做出中止实例这个激烈的动作,用于防止数据错乱。SMON:其含义为System Monitor,理解为系统监视器,与PMON不同的是SMON关注的是系统级的操作而非单个进程,重点工作在于intan
2021-04-16 15:43:40
609
原创 MySQL 权限控制详解
All/All Privileges该权限代表全局或者全数据库对象级别的所有权限Alter该权限代表允许修改表结构的权限,但必须要求有create和insert权限配合。如果是rename表名,则要求有alter和drop原表,create和insert新表的权限Alter routine该权限代表允许修改或者删除存储过程、函数的权限Create该权限代表允许创建新的数据库和表的权限Create routine该权限代表允许创建存储过程、函数的权限Create tablespace该
2021-04-15 08:34:19
463
原创 oracle的wm_concat函数
我们可以通过wm_concat函数可以实现行转列: select s_info_windcode,rate from OptionEmbeddedBondRate where s_info_windcode = '110031.SH'目前库中的数据是如下图所示:要转换成如下图所示的数据:这时就可以通过wm_concat函数进行转换,具体sql如下:select s_info_windcode,WM_CONCAT(rate) rate from OptionEmbeddedBondRate
2021-04-14 08:51:47
10670
原创 oracle的 listagg() WITHIN GROUP () 行转列函数
select s_info_windcode, rateFROM OptionEmbeddedBondRatewhere s_info_windcode ='110031.SH'查询表中股票代码为110031.SH的数据:现在要做的是通过listagg() WITHIN GROUP () 函数,将后面的rate合并为一行:SELECT s_info_windcode, listagg (rate) WITHIN GROUP (ORDER BY rate) as rateFROM Op
2021-04-13 10:51:44
493
原创 MySQL多表连接查询原理
关系型数据库中至关重要的一点就是Join(连接)。接下来说一下连接的原理,首先介绍一下语法。连接简介先创建几张表:CREATE TABLE t1(m1 int, n1 char(1));CREATE TABLE t2(m2 int, n2 char(1));INSERT INTO t1 VALUES(1,‘a’),(2,‘b’),(3,‘c’);INSERT INTO t2 VALUES(2,‘b’),(3,‘c’),(4,‘d’);从本质上来说:连接就是把各个表中的记录取出来按照要求匹配
2021-03-31 10:15:52
772
原创 MySQL的单表访问方法探讨
对于我们来说,Mysql我们平时用的最多的就是查询功能,偶尔需要对一些语句做出优化,但是我们如果连查询是怎样执行的都不知道的话,优化也就无从谈起了。Mysql有一个称为优化器的模块,Mysql在对一条查询语句进行语法解析之后,就会将其交给优化器进行优化,优化器的结果就是生产一个所谓的执行计划。我们接下来首先要看一下Mysql是怎样执行单表查询的...
2021-03-30 14:07:14
116
原创 mysql的InnoDB的独立表空间介绍
表空间是一个抽象的概念,对于系统表空间来说,对应着文件系统中一个或者多个实际文件,对于每个独立表空间来说,对应着文件系统中一个名为表名**.ibd**的实际文件。1、回忆一些旧知识1.1 页面类型InnoDB是以页为单位管理存储空间的,我们的聚簇索引(也就是完整的页数据)和其他的二级索引都是以B+树的形式保存到表空中的,而B+树的节点也就是数据页,这个数据页的类型名为FIL_PAGE_INDEX。下面表格中则是展示的各种常用的页面类型类型名称描述FIL_PAGE_TYPE_AL
2021-03-29 14:24:25
217
原创 MySQL的数据目录介绍
数据库与文件系统的关系我们知道,InnoDB、MyISAM这样的存储引擎都是把表存储在磁盘上,而操错系统又是使用文件系统来管理磁盘,所以像InnoDB、MyISAM这样的存储引擎都是把数据存储在文件系统上,当我们想读取数据段额时候,这些存储引擎会从文件系统中把数据读出来给我们,当我们想写入数据的时候,这些存储引擎会把这些数据写回文件系统。接下来就要说下InnoDB、MyISAM两个存储引擎的数据是如何在文件系统中存储的。MySQL数据目录mysql服务器程序在启动时,会在文件系统的某个目录下家在一些
2021-03-26 14:45:56
261
原创 MySQL的B+树索引的使用
总结一下B+树索引的一些结论1、每个索引都对应一颗B+树,B+树分为好多层,最下面一层是叶子节点,其余的是内节点。所有用户记录都存储在B+树的叶子节点,所有目录项记录都存储在内节点。2、InnoDB存储引擎会自动为主键建立聚簇索引(如果没有显示指定主键或者没有生命不允许存储NULL的UNIQUE键,它会自动添加主键),聚簇索引的叶子节点包含完整的用户记录3、我们可以为感兴趣的列创建二级索引,二级索引的叶子节点由索引列及主键值组成。通过二级索引进行数据查找需要进行回表操作,再通过二级索引找到主键值后,通
2021-03-25 15:02:22
517
原创 MySQL的B+树索引详细介绍
1、在没有索引时进行数据查找select [查询列表] from 表名 where 列名 = xxx;1.1、在一个页中进行查找假设目标表中记录较少,所有记录都可以存在一个页中,在查找时可以根据搜索条件的不同分为两种情况:(1)以主键为搜索条件:可以在页目录中使用二分法快速定位到对应的槽,再遍历该槽对应的分组中的记录,即可快速找到指定的记录。(2)以其他列为搜索条件:因为没有索引,数据中并没有为非主键列建立所谓的页目录,所以无法通过二分法快速定位,这种情况下,只能从infimum记录开始依次遍历单
2021-03-24 15:54:20
342
原创 MySQL的InnoDB数据页结构
1 不同类型的页介绍页是InnoDB管理存储空间的基本单位,一个页的大小一般是16KB。InnoDB为了不同的目的设计了多种不同类型的页,例如存放表空间的头部信息的页,存放Change Buffer信息的页、存放INODE信息的页、存放undo日志信息的页等等。今天不准备说以上的页,而是说索引页,但是目前还是将其称之为数据页。2 数据页结构从上图中可以看出,一个InnoDB数据页存储空间大致被划分为7个部分,以下表格会说明一下这七个部分都存储一些什么内容名称中文名简单描述F
2021-03-23 15:19:57
244
原创 MySQL客户端与服务器连接过程
1. 客户端进程与服务器端进程间的通信方式mysql运行中的服务器程序与客户端程序实际上是一个进程,所以客户端进程向服务器进程发送请求并得到相应的过程实际上是一个进程间的通信过程,而mysql支持以下几种客户端进程与服务器端进程间的通信方式1.1 TCP/IP在真实环境中,mysql的服务器进程与客户端进程可能运行在不同的主机中,他们之间必须通过网络进行通信,mysql采用TCP作为服务器与客户端之间的网络通信协议。在网络环境下,每台计算机都有唯一的IP地址,如果某个进程需要采用TCP协议进行网络通
2021-03-22 16:22:39
730
转载 如何让自己发了疯、拼了命、石乐志的学习?
阶段性反馈机制(如何持之以恒、让自己发疯) 反馈机制是王者荣耀的核心武器,击杀野怪获得金币,击杀敌人之后的画面、音效刺激大脑,不断地努力,获得奖励是我们不断的玩这个游戏的主要原因,也是人的本能,我什么都得不到凭什么这么做?,对记得初二的时候,父亲说如果你能考全校第...
2020-12-18 16:40:18
1528
1
转载 sql练习题
使用方法:我用的数据库是 Ms SQL Server 2008 ,练习时应当自己建数据,自己先思考,切勿急躁翻答案!否则效果减半,做完这些,恭喜你,你的 SQL 就算过关了。 测试表格 --1.学生表 Student(S#,Sname,Sage,Ssex) --S# 学生编号,Sname 学生姓名,Sage 出生年月,Ssex 学生性别 --2.课程表 Course(C#,Cname,T#) --C# --课...
2020-12-09 10:57:37
198
原创 一个超级超级准的心理测试
【题目】假如你要出去旅游,要带一只小鸟,一个猴子,一条蛇,一个包。这些都要带,你准备怎么安排?【解析】这个题,可以看出很多东西。既可以看出你的身边人,也可以看出你的财富观,价值观,你与谁更亲近,你是喜欢独立,还是依赖,喜欢借力,还是喜欢亲为,你的教育方式,你的领导才能,你是浪漫主义的,还是现实主义的,你是自我中心的,还是爱心泛滥的…小鸟:你的孩子蛇:你的财富猴子:你的另一半包包:你的责任【关于小鸟】是孩子,小鸟的位置在前面、后面,还是和你一起?是在天上,还是你手上,还是笼子里,包里?是和你近
2020-11-18 16:10:23
851
2
原创 MySQL show profile
mysql> select version();-- profile默认是不打开的mysql> show profiles;Empty set (0.02 sec)-- 验证修改后的结果 mysql> show variables like "%pro%";-- 可以看到profiling 默认是OFF的。-- 开启profilemysql> set profiling=1;mysql> select * from test;+------------+-
2020-11-18 14:39:42
116
1
原创 mysql中索引的null值问题
在mysql中,对含有null值的索引列,以及is null、is not null的查询条件是否会走索引这点,网上有很多说法,为此我自己单独做了个实验:首先创建两张表,一张表所有字段默认为null,另一张表所有字段默认为not null。CREATE TABLE a_achievement ( s_id int(11) NULL, Math decimal(4,1) NULL, English decimal(4,1) NULL, Chinese float NULL );
2020-11-10 15:12:21
2650
原创 在navicat中做数据库建模
前几天,项目经理和我说要我把最近这个项目的数据表做一个关联图,我一想,这不就是数据库建模了嘛,可是公司电脑里没有power designer啊,公司电脑里还不能装外部来源的软件,这咋办,难不成要手工画图?想想就头疼,无意中就发现了navicat中居然可以做这个类似于power designer的功能:首先打开navicat for mysql,点击模型,再点击新建模型: 然后就出现了如下的一大片空白,在这个里面可以自己创建表,当然也可以将左侧数据库中的表直接拖进来,鼠标点住,一拉,表就过来了。将表拉
2020-11-05 08:46:31
3009
原创 mysql-explain之Using temporary
今天同事问到我一个问题,说某个带有join的查询语句创建视图后,查询视图时带有order by字段时,某些字段会很快,某些会稍微慢一些。drop view if exists test1;create view test1 asselect a.*,b.b_info_outstandingbalance,ifnull(b.new_count,0) new_count,ifnull(b.new_amount,0) new_amount,b.adj_term_year,b.private_percent
2020-10-28 10:37:53
2250
3
转载 python 参数前面加*的含义
过量的参数在运行时知道一个函数有什么参数,通常是不可能的。另一个情况是一个函数能操作很多对象。更有甚者,调用自身的函数变成一种api提供给可用的应用。对于这些情况,python提供了两种特别的方法来定义函数的参数,允许函数接受过量的参数,不用显式声明参数。这些“额外”的参数下一步再解释。注意args和kwargs只是python的约定。任何函数参数,你可以自己喜欢的方式命名,但是最好和python标准的惯用法一致,以便你的代码,其他的程序员也能轻松读懂...
2020-10-21 15:46:51
1109
转载 git常用命令
Git常用命令及方法大全https://blog.csdn.net/web_csdn_share/article/details/79243308 下面是我整理的常用 Git 命令清单。几个专用名词的译名如下。Workspace:工作区Index / Stage:暂存区Repository:仓库区(或本地仓库)Remote:远程仓库本地分支关联远程:git branch --set-upstream-to=origin/beta beta&nb...
2020-10-16 14:30:55
120
转载 常用的MySQL优化
常用的MySQL优化 文章目录 常用的MySQL优化前言一、mysql优化是什么?二、优化步骤1.EXPLAIN2.SQL语句中IN包含的值不应过3.SELECT语句务必指明字段名称4.如果排序字段没有用到索引,就尽量少排序5.如果限制条件中其他字段没有索引,尽量少用or6.尽量用union all代替union7.不使用O...
2020-10-09 17:23:14
75
原创 mysql为索引设置合适的长度
select count(distinct left(name,35))/count(*) from b2b_goods;通过以上sql来确定合适的索引长度b2b_goods为表名;name为设置索引的字段名称;35为设置的索引的长度;例如该name字段长度为100当上述sql的‘35’从0开始不断增加到100时,而上面的查询结果应该是从0开始逐渐趋近于1直到达到1的一条曲线,类似于下图:而当字段长度很长的时候,这时候去给索引设置长度时,索引的覆盖率达到90%以上,也就是最开始的查询结果在0
2020-10-09 15:26:01
1265
转载 Hadoop生态圈组件介绍
大数据Hadoop生态圈-组件介绍 Hadoop是目前应用最为广泛的分布式大数据处理框架,其具备可靠、高效、可伸缩等特点。 Hadoop的核心组件是HDFS、MapReduce。随着处理任务不同,各种组件相继出现,丰富Hadoop生态圈,目前生态圈结构大致如图所示: 根据服务对象和层次分为:数据来源层、数据传输层、数据存储层、资源管理层、数据计算层、任务调度层、业务模型层。接...
2020-09-23 10:55:06
692
转载 星型模型和雪花型模型比较
一、概述在多维分析的商业智能解决方案中,根据事实表和维度表的关系,又可将常见的模型分为星型模型和雪花型模型。在设计逻辑型数据的模型的时候,就应考虑数据是按照星型模型还是雪花型模型进行组织。当所有维表都直接连接到“ 事实表”上时,整个图解就像星星一样,故将该模型称为星型模型,如图 1 。星型架构是一种非正规化的结构,多维数据集的每一个维度都直接与事实表相连接,不存在渐变维度,所以数据有一定的冗余,如在地域维度表中,存在国家 A 省 B 的城市...
2020-09-23 09:20:43
151
转载 详解数据仓库和数据库的区别
一、数据仓库 什么是数据仓库? 数据仓库(Data Warehouse),可简写为DW或DWH,数据仓库,是为了企业所有级别的决策制定计划过程,提供所有类型数据类型的战略集合。它出于分析性报告和决策支持的目的而创建。为需要业务智能的企业 ,为需要指导业务流程改进、监视时间,成本,...
2020-09-22 17:33:14
211
转载 Kettle性能调优汇总
性能调优在整个工程中是非常重要的,也是非常有必要的。但有的时候我们往往都不知道如何对性能进行调优。其实性能调优主要分两个方面:一方面是硬件调优,一方面是软件调优。本章主要是介绍Kettle的性能优化及效率提升。一、Kettle调优1、 调整JVM大小进行性能优化,修改Kettle定时任务中的Kitchen或Pan或Spoon脚本。修改脚本代码片...
2020-09-15 14:24:17
188
原创 NavicatForOracle连接oracle数据库报错“Cannot load OCI DLL,87..TNS connection”
打开 Navicat for oracle客户端,点击上侧工具,弹出框内点击OCI:在右侧OCI library处点击右侧三个点 去Navicat安装路径中查找oci.dll选择打开。在右侧Sql*Plus处点击右侧三个点 去Navicat安装路径中查找sqlplus.exe选择打开。完成之后重启Navicat,再次连接数据库即可。...
2020-07-30 16:45:32
1993
原创 python 通过for循环及while循环遍历字符串中的字符
下面是代码,for循环直接循环遍历即可,while则需要iter生成迭代器再去循环。ls = input('请输入字符串:' )#for循环for j in ls: print(j)print('这是一条分割线')#while循环ite = iter(ls)while True: try: each = next(ite) except StopIteration: break print(each)下面是输出结果请输入字符
2020-07-29 13:54:15
4909
原创 python将list中的数据输出在一列
今天在看python2的教程时,看到这段,将list中的数据输出在一列,其实现方式为for item in ['e-mail','net','homework','chat']: print item, print说是在item后面加上一个逗号就可以了而我是这样尝试的,试过了之后发现不行for item in ['e-mail','net','homework','chat']: print (item,)e-mailnethomeworkchat其输出结果还是
2020-07-29 09:07:42
7165
原创 MySQL中utf8与utf8mb4的区别
一、简介MySQL在5.5.3之后增加了这个utf8mb4的编码,mb4就是most bytes 4的意思,专门用来兼容四字节的unicode。utf8mb4是utf8的超集,除了将编码改为utf8mb4外不需要做其他转换。当然,为了节省空间,一般情况下使用utf8也就够了。二、内容描述那上面说了既然utf8能够存下大部分中文汉字,那为什么还要使用utf8mb4呢? 原来mysql支持的 utf8 编码最大字符长度为 3 字节,如果遇到 4 字节的宽字符就会插入异常了。三个字节的 UTF-8 最大
2020-07-28 13:43:13
1777
原创 kettle抽取数据中文乱码
这类乱码问题很显然就是字符集的问题了,这时候就可以去数据库查看一下数据库的字符集,我这边出现问题的是MySQL数据库,而MySQL数据库的字符集一般都是utf8,所以我们可以在将数据插入到MySQL的表输出位置将数据设置为utf8编码。打开kettle,双击表输出,点击数据库连接旁的编辑,进入数据库连接编辑页面。再点击第二项:高级 在下方的空白处填入set names utf8。接下来点击选项,在下面表格中填入characterEncoding utf8 。接下来再执行插入就没有问题
2020-07-28 11:25:45
2284
原创 Python模拟双色球开奖
废话不多说,直接上代码。import timeimport randomr = []b = []num = int(input("机选几注:"))for i in range(1, num+1): #机选几注则循环几次 time.sleep(1) #每次循环后休眠一秒 blue = [x for x in range (1,17)] #蓝球取随机值 red = [y for y in range (1,34)] #红球取随机值
2020-07-24 08:58:42
2510
原创 数据库设计常用的三大范式
数据库设计的三大范式说白了就是数据库设计的最基本的三条要遵守的规矩,当然,不止这三条,还有第四范式、第五范式、巴斯-科德范式。而下面要说的着三大范式则是最基础的,如果这三个都做不到的话,那对数据处理的影响可能就比较大了。第一范式(1NF):字段不可分割,每个字段都是原子级别的;这个说起来可能就比较简单了,比如说创建一张学生表,那肯定不能把学号和学生姓名都放到一个字段里,这样的话等你用数据的时候就知道有多麻烦了。第二范式(2NF):有主键,而非主键字段依赖于主键;这个说起来也还算简单,比如说我
2020-07-21 09:10:39
1921
1
原创 MYSQL EXPLAIN结果详解
EXPLAIN不会告诉你关于触发器、存储过程的信息或用户自定义函数对查询的影响情况。EXPLAIN不考虑各种Cache(缓存)。EXPLAIN不能显示MySQL在执行查询时所作的优化工作。部分统计信息是估算的,并非精确值。 EXPALIN只能解释SELECT操作,其他操作要重写为SELECT后查看执行计划。1 idselect的识别符,这是select的查询序列号。如果有两列数据id相同,则为同一组查询,由上到下执行。如果id值不同,id值越大,优先级越高。2 select_type
2020-07-20 14:12:39
2189
原创 mysql在查询时获取自增序号
SELECT (@i:=@i+1),A.asset_code FROM (SELECT @i:=0) as i,leo_strategic_indicators A order by A.score DESC ;将(select @i:0)作为一个派生表在通过前面的@i:=@i+1进行计算 循环加一,即可得到自增序号
2020-07-15 10:45:59
1178
ads-windows-x64-18.5.0.zip
2020-07-31
ython的爬虫技术的最好的几个相关入门教程
2020-07-03
oracle数据库备份还原BAT脚本
2018-11-27
将tomcat加入到本地服务的过程
2018-07-24
mycelipse自动格式化模板
2018-07-23
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人