Needs About Databases
AskTOMmorow
不会理财的DBA不是一个好哲学家
展开
-
关于获取数据库表每个时间段快照的思考
需求场景:某些数据表的历史数据会做更新,客户那边做回测需要那个时间段对应的数据。 基本解决方案: 1.数据表中增加字段,记录数据的变动情况(增加数据版本字段),这种解决方案只能解决固定更新次数的数据。 2.利用触发器/CDC捕获变化后固化到固定的表,这样操作的优点是数据完整,可以直接从history表查出来,缺点是触发器会影响数据写入的效率(大批量数据变更的时候还可能引起堵塞);CDC效率比触原创 2016-09-02 18:32:39 · 1171 阅读 · 0 评论 -
【sqlserver】字段拆分
--sqlserver字段拆分--xml解法-------------select id,t into #t from (select 1 id,'aa,bb,cc' tunion allselect 2 id, 'aa,cc,dd' t) tselect * from #t/*1 aa,bb,cc2 aa,cc,dd*/select a.id,b.tfrom (s原创 2016-12-03 18:37:16 · 675 阅读 · 0 评论 -
【Mysql】sqlserver 开窗函数lead over>> mysql 等价转换
相关敏感表信息已经脱敏处理1.待转换 sqlserver SQLselecta.party_id,a.publish_date,a.rating_date,replace(replace(replace(rating,'p',''),' ',''),'i','') rating2,lead(replace(replace(replace(rating,'p',''),' ',''),'i原创 2016-12-19 20:20:32 · 1471 阅读 · 0 评论 -
【sqlserver】merge into test
--merge into test/*使用Merge关键字的好处:简洁有效局限:在SQL Server 2008之前没有Merge*/create table testsou( --源测试表id int,name varchar(10),des varchar(50))create table testtag( --目标表id int,name varchar(10),des原创 2017-01-03 16:15:43 · 343 阅读 · 0 评论 -
【sqlserver】获取指定日期的上个季度的第一天和最后一天
declare @tm datedeclare @jone dateset @tm='2016-05-02'--GETDATE()set @jone=cast(year(@tm)*10000 +(month(@tm)/3*3+1)*100 +1 as varchar(8)) /*这个季度的第一个月的第一天*/select dateadd(MONTH ,-3,@jone) 上个季度第一天,da原创 2017-01-04 20:14:30 · 4353 阅读 · 0 评论 -
【Sqlserver】【Function】实现mysql substring_index
sqlServer实现Mysql的substring_index函数step1 基本实现IF OBJECT_ID('dbo.SubstringIndex') IS NOT NULL DROP FUNCTION dbo.SubstringIndexGOCREATE FUNCTION dbo.SubstringIndex( @SourceString varchar(8000),原创 2017-01-10 16:51:01 · 2167 阅读 · 0 评论 -
【SqlServer】字符串拆分需求实现
需求:将表中每个字符串中的字符拆解出来,放到一个新表的一列中 *相关数据已经脱敏处理实现if(object_id('tempdb..#t') is not null ) drop table #tgo select ROW_NUMBER() over(order by ID desc) ID,replace(display_name_cn,':','') dname into #tfr原创 2017-01-20 16:54:53 · 236 阅读 · 0 评论 -
【SQLSERVER】output用法解析
USE njtestdbGOCREATE TABLE testbzm([ID] bigint IDENTITY(1,1) NOT NULL PRIMARY KEY,[CODE] varchar(20) NOT NULL )insert into testbzm(code) values('10010')select * from testbzm-------------------原创 2017-03-02 11:05:57 · 1894 阅读 · 0 评论 -
【SQLSERVER】sqlserver表行数,存储占用统计
--Edit By bzm 20160602--exec sp_spaceused 'equ_div' 实现select a.name 表名, a.rows 行数, ltrim(str(reservedpages * 8192 / 1024., 15, 0) + ' KB') 保留空间,--reserved ltrim(str(pages * 8192原创 2017-03-02 11:08:17 · 478 阅读 · 0 评论 -
【Mysql】实现merge into 2
前面写过一篇相关的用replace into实现的文章, (http://blog.csdn.net/asktommorow/article/details/53857136)但replace into有个缺点,会覆盖相应的数据,今天看到了一个新方法,测了一下。-----------------------INSERT INTO ON DUPLICATE KEY UPDATEdrop ta原创 2017-04-07 19:23:17 · 1131 阅读 · 0 评论 -
【数据库需求】生成指定区域内所有扩展数据
-------需求:生成指定区域内所有扩展数据--(id,id2,create_number<=num,num) DEMO:(1,1,3)->(1,1,1,3),(1,1,2,3)(1,1,3,3)if(object_id('tempdb..#a','U') is not null) drop table #a;create table #a(pk_id int not null iden原创 2017-07-10 19:58:26 · 241 阅读 · 0 评论 -
如果有人问你 SQL 注入的资料,请叫他看这份速查表
什么是 SQL 注入速查表?SQL注入速查表是可以为你提供关于不同种类 SQL注入漏洞 的详细信息的一个资源。这份速查表对于经验丰富的渗透测试人员,或者刚开始接触 Web应用安全 的初学者,都是一份很好的参考资料。关于这份 SQL 注入速查表这份 SQL 速查表最初是 2007 年时 Ferruh Mavituna 在他自己的博客上发布的。我们更新了它并将它转载 2016-11-15 17:09:00 · 681 阅读 · 0 评论 -
SQL注入解析
--SQL注入/* 概念定义:一种代码注入技术,用于攻击基于数据库的应用,基本原理是将SQL语句插入到参数位置执行。SQL 注入通过应用软件的安全漏洞(比如说用户输入的特殊字符没有被转义、或用户输入不是强类型导致意外执行)本质:用户输入作为SQL命令被执行Steps:1. APP将表格发送给用户.2. 攻击者将带有SQL注入的参数发送给WEB服务器.3. APP利用用户输入的数据构建SQ原创 2016-11-15 16:46:15 · 265 阅读 · 0 评论 -
【ORACLE/SQLSERVER/MySQL】重复行剔除需求实现
/*需求一:去除重复行(保留一行)需求二:去除指定字段重复的行(保留随机的一行)需求三:去除指定字段重复的行(保留指定规则的一行)表的情况:有主键(ID),有系统行ID(ROW_ID)方法思路:(1)按规则排序后定位处理,前提是必须有标注的标志能唯一定位到每一行;(2)中间表/临时表 处理法*/--DEMO 无主键表保留时间(dt)次新的记录,删除val1,val2字段重复的记录--原创 2016-09-14 17:11:33 · 213 阅读 · 0 评论 -
【ORACLE/SQLSERVER/MySQL】字段聚合需求实现stuff,wm_concat,group_concat
【ORACLE DEMO】create table testbzm(id int,note varchar(20));insert into testbzm values(1,'xiaobai');insert into testbzm values(1,'xiaohuan');insert into testbzm values(1,'xiaohei');insert into tes原创 2016-09-05 15:21:12 · 620 阅读 · 0 评论 -
【MySQL】字段拆分需求实现(group_concat的逆操作)
主要参考资料:http://blog.chinaunix.net/uid-411974-id-3990697.html 实现DEMO(Mysql)create table testbzm(id int,note varchar(20));insert into testbzm values(1,'xiaobai,xiaohuan,xiaohei');insert into testbzm原创 2016-09-05 17:33:14 · 2220 阅读 · 0 评论 -
【Mysql/sqlserver】定义和引用局部变量
---------- Mysql 变量SET值:set @i =100;/set @i:=100;/select @i:=101set @i =100,@j=100; -- 可多变量赋值---------- sqlserver 变量SET值:declare @i int,@j int --必须declare--set @i=100--set @j=101--不可多变量一起SETsel原创 2016-09-20 14:27:37 · 695 阅读 · 0 评论 -
Navicat 实现同步sqlserver表结构到mysql
需求: 从sqlserver数据库同步表结构到Mysql数据库考察了几个方法,感觉最简单的还是Navicat最简单,缺点就是只同步表结构,索引,约束,主键都不会同步。如果要求不导入数据,只导入结构必须加上条件。DB2DB其实蛮全面的,确定就是不能选择只同步某个表,适合整库数据迁移时使用。 各工具比对:http://www.cnblogs.com/overblue/p/5796887.html下面转载 2016-10-14 18:32:12 · 3733 阅读 · 0 评论 -
【Mysql】实现中位数计算
--需求:求一串数据的中位数,若共有偶数个数据则取中间两个数的平均值create table ta (sc int)insert into ta values(80),(90),(81),(72),(55),(60);-- 偶数条select * from ta order by na,sc-- 基本实现SELECT avg(t1.sc) as median_val FROM ( SELECT原创 2016-09-29 16:27:05 · 1335 阅读 · 0 评论 -
【sqlserver】字符串拼接实现(for xml path ,stuff)
create table testbzm (id int,val varchar(10))insert into testbzm values(1,'AAA'),(2,'BBB'),(3,'CCC')select * from testbzm /*1 AAA2 BBB3 CCC*/select * from testbzm for xml path/*<row> <id原创 2016-10-25 18:57:38 · 1188 阅读 · 0 评论 -
【Mysql】树路径,层级
-- -------------节点名只能是数字,且根节点为1,父节点出现在子节点之前才能出正确结果CREATE TABLE `treenodes` ( `id` int , -- 节点ID `nodename` varchar (60), -- 节点名称 `pid` int -- 节点父ID);INSERT INTO `treenodes` (`id`, `nodename`, `原创 2016-11-08 17:36:35 · 3224 阅读 · 2 评论 -
【sqlserver】 几种中间表实现方式比较(临时表、表变量、CTE)
/*临时表内涵:以#开头的局部临时表,以##开头的全局临时表。存储:存放在tempdb数据库(包含 局部临时表,全局临时表)。作用域: 局部临时表:对当前连接有效,只在创建它的存储过度、批处理、动态语句中有效,类似于C语言中局部变量的作用域。 全局临时表:在所有连接对它都结束引用时,会被删除,对创建者来说,断开连接就是结束引用;对非创建者,不再引用就是结束引用。最好在用完后原创 2016-10-19 17:48:29 · 3658 阅读 · 0 评论 -
【sqlserver】CTE 递归使用DEMO
--解决问题 1:递归计算职级create table testbzm (id int, --本人IDname varchar(10), --姓名position varchar(10),--职务upid int --上级ID)--插入简单测试数据insert into testbzm values(1,'Tom','Sales',4),(2,'Jim','Sales',4),(原创 2016-10-19 17:50:28 · 549 阅读 · 0 评论 -
【Sqlserver】复杂去重需求实现DEMO
use tempdbGOif(object_id('asktom','U') is not null) drop table asktom;create table asktom(id bigint not null identity(1,1) constraint pk_asktom primary key,pid varchar(10) not null,is_childp bit n原创 2017-08-03 20:58:53 · 308 阅读 · 0 评论