Database
老马历写记
这个作者很懒,什么都没留下…
展开
-
谈谈企业应用如何合理使用数据库,需要注意哪些事项?
企业应用(ERP、进销存、财务系统等)应该如何合理使用数据库,注意哪些事项?一句话概括:安全第一 兼顾效率。决策者应该把数据备份、应急恢复放在首位,然后才考虑sql优化、开发人员如何统一处理事务、如何统一处理数据并发控制等事项。原创 2010-10-07 19:56:00 · 1424 阅读 · 0 评论 -
Mysql 视图用途、使用场景、性能问题及使用注意事项
Mysql视图即是虚拟表,也称为派生表,因为它们的内容都派生自其它表的查询结果。虽然视图看起来感觉和基本表一样,但是它们部署基本表。基本表的内容是持久的,而视图的内容是在使用过程中动态产生的。本文讲述了视图的根本用途:简化sql查询、提升开发效率;视图常见使用场景;视图性能问题;视图merge和TEMPTABLE算法;视图使用注意事项。原创 2018-12-07 10:53:37 · 19737 阅读 · 0 评论 -
Mysql数据库 AUTO_INCREMENT 自增序列号 跳号处理
Mysql数据库产生序列号通常使用big int类型,并设置AUTO_INCREMENT为true,这样每次insert记录的时候,序列号会自动递增。该方式当insert执行完事务发生回滚时会产生跳号,如果项目有要求,就需要处理。本文讨论自增序列号发生跳号,如何处理。原创 2018-12-20 13:59:41 · 5297 阅读 · 0 评论 -
Mysql列操作 增加列、删除列、修改列、调整列顺序 sql hacks
之前在win7下用sqlyog客户端操作mysql数据库时有个功能“reorder column”(列顺序调整)在表结构定义时被经常用到,后来在mac上使用navicat客户端(可能版本不对)居然没找到类似功能,所以只好写sql语句来实现,顺便总结下mysql 列操作相关的sql语法。原创 2018-12-25 13:42:05 · 3406 阅读 · 0 评论 -
mysql 根据出生日期计算年龄、日期格式化等常见日期处理相关函数使用汇总
本文分两部分,第一部分为Mysql 参考手册列举的日期、时间函数说明,如常见的:日期格式化、日期加减、日期截取。第二部分为根据项目实践谈谈常用的Mysql日期、时间函数使用案例,如:查询条件开始--截止日期,根据出生日期计算年龄,根据当前时间戳自动更新等。原创 2019-01-21 22:25:57 · 6246 阅读 · 0 评论 -
mysql set @rownum 变量 实现字段递增赋值
本文讲述Mysql数据库如何实现字段递增赋值,解决门店重新连续编号问题。set @rownum=10000;update sale_zd_shops SET shop_no = (select @rownum := @rownum +1 as nid);原创 2019-02-02 22:24:10 · 3076 阅读 · 0 评论 -
mysql null值比较及排序注意事项
使用is null或is not null进行null值判断,有时需要使用coalesce函数和ifnull函数现将null值转换为空字符串或0在进行比较运算。对字段进行排序,asc情况下null值排在最前方,desc时null值排在最后方。原创 2019-02-07 22:49:19 · 890 阅读 · 0 评论 -
Mysql 根据出生日期计算年龄 判断起始日期是否在某个有效时间段内等日期Hack汇总
根据以往的项目经验,本文总结并汇总了一些Mysql日期处理Hack。1、根据出生日期计算年龄2、查询某个时间段内的订单列表3、判断起始日期是否在某个有效时间段内4、计算用户每个月的登录天数原创 2019-02-18 08:58:58 · 1208 阅读 · 0 评论 -
mysql 行锁模拟、锁查看及排除
mysql行锁有共享锁(用于读取记录)和互斥排他锁(用于更新、删除记录)。本文讨论如何模拟普通行锁、行死锁,锁查看及排除。原创 2019-02-25 19:28:01 · 5822 阅读 · 0 评论 -
mysql 单表、多表删除的两种关联删除方式
mysql 单表、多表删除的两种关联删除方式: delete t1 from t1,t2 where ..., delete from t1 using t1, t2 where ...以及表别名使用。原创 2019-04-11 08:51:42 · 2186 阅读 · 0 评论 -
谈谈企业信息化 数据库应用中的SQL进攻型(积极型)编程
何为数据库SQL“进攻型”编程或积极性编程?通常指先处理大概率发生事件,然后再处理小概率异常事件。我们以企业进销存软件销售模块中常见的销售订单审核为例,谈谈SQL“进攻型”编程和SQL“防御型”编程的差异。对于中小企业信息化开发来说,本来开发团队人员就少,因此建议使用SQL“进攻型”,提升团队开发效率、代码质量。原创 2019-04-08 10:26:27 · 302 阅读 · 0 评论 -
从一段代码重构谈谈数据库应用中通过java运算减少sql的重要性
本文旨在讨论数据库应用中通过编程语言(Java、Python等)替代SQL的重要性,即SQL只负责简单的增、删、改、查操作,业务逻辑运算都由编程语言实现。我们通过一个在Code Review时碰到的真实场景谈谈编程语言和SQL各司其职的重要性。比如,用编程语言替代存储过程,用一个大查询+编程语言加工处理来替代多个小查询。原创 2019-04-10 09:37:31 · 248 阅读 · 0 评论 -
mysql case when then end 和 if判断 常见使用方法
mysql有两个常用的流程控制运算符:case和if,当条件1时输出结果1,当条件2时输出结果n等待,if是简化的case,只有满足条件和不满足条件2种情况。流程控制运算符通常用于字段转换输出(整型转换成有意义的文本描述),根据条件切换取数来源,where动态条件等。原创 2019-04-15 11:09:50 · 14698 阅读 · 0 评论 -
mysql 有条件地计算行数 count
count是sql的一个标准行统计函数,在实际应用中很是普遍,还有另外一种情况也经常会被用到:有条件地统计行数。除此之外,count统计时会跳过null值,部分count可用sum求和代替。原创 2019-05-26 07:17:34 · 2850 阅读 · 0 评论 -
mysql 左联left join解析及使用指南
left join在数据库编程应用中使用频率较高,而且合理使用left join有时会大大提高sql性能,降低编程复杂度。left join通常用于行记录信息补全,将not in子查询转换为一个大查询,将多个case查询转换为一个查询等。本文将讨论left join语法,left join 简单过滤、筛选机制,left join应用场景。原创 2019-05-17 10:56:35 · 4018 阅读 · 0 评论 -
Mysql saas系统如何计算租户 数据存储空间大小、数据表记录数计算存储空间 探讨
通过Mysql系统表,information_schema数据库tables数据表的DATA_LENGTH, INDEX_LENGTH, TABLE_ROWS字段来估算SAAS系统租户数据存储空间。原创 2019-05-30 09:02:41 · 1017 阅读 · 0 评论 -
Mysql if判断 类型隐形转换注意事项
Mysql if(条件表达式, 值表达式1,值表达式2)判断时,如果条件表达式是普通字符串时,mysql会先进行隐性类型转换,将字符串转成float,然后根据float值,0为false,非0则为true。因此在进行if判断时,我们应尽量避免隐性转换,以免发生不可预知错误。原创 2019-06-26 08:49:08 · 659 阅读 · 0 评论 -
MySql FIND_IN_SET, SUBSTRING_INDEX, REGEXP正则匹配等字符串替换、截取函数应用
Mysql数据库提供了比较丰富的字符串函数,如上文“谈谈Mysql 字符串连接 CONCAT CONCAT_WS GROUP_CONCAT区别及使用场景”中提到的字符串连接函数,本文继续讲述Mysql剩余常用字符串函数的使用注意事项及使用场景:字符串长度char_length,length; 字符串查找:positon,locate,instr; 字符串截取: substr, substring, substring_index等.原创 2018-12-08 12:25:04 · 5693 阅读 · 0 评论 -
Mysql Stored Routines 自定义函数实现 腾讯地图gps两点间距离计算
Mysql Stored Routines,有存储过程(Procedures)和函数(Functions),在实际项目使用中用的比较多,是传统企业信息系统的最爱,比如很多分析报表几乎都依赖存储过程实现。本文描述了存储过程和函数的使用场景,一个根据经纬度坐标计算两点距离的函数demo和存储过程及函数使用注意事项。原创 2018-12-05 10:22:24 · 812 阅读 · 0 评论 -
Psql 常用命令
<br />连接相关:<br />psql testdb,系统登录用户,本地数据库,连接testdb数据库<br />psql -U testuser testdb,用户testuser,连接本地数据库testdb;<br />psql -U testuser -h 172.28.18.51 testdb,用户testuser,连接远程testdb数据库;<br /> <br />列举数据库:/l<br />选择数据库:/c 数据库名<br />显示表结构信息:/d 表名<br />退出psgl:/q<b原创 2010-10-18 19:44:00 · 7905 阅读 · 1 评论 -
Sql Hacks 阅读感悟——SQL基础
<br />SQL基础:《SQL HACKS》第一章,总共列举了6个tips,在命令中运行SQL、管道输入SQL等,下述为我对这6个tips的评析。<br />1、在命令中运行SQL<br />由于现在数据库软件都有强大的客户端管理工具,因此程序员完全可以利用客户端UI快速、方便的处理绝大多数sql操作,如postgresql的pgadmin(俗称大象)。但是在这3种情形下,我认为在命令中运行sql效率更高。<br />1)操作系统不能运行数据库客户端工具;<br />2)客户端没有的功能,如sybase数原创 2011-01-14 21:52:00 · 1129 阅读 · 0 评论 -
Sql Hacks 阅读感悟——总纲
<br />《SQL HACKS》100个业界最尖端的技巧和工具是老外写的一本Sql秘笈。个人觉得其100个话题都比较独立、操作性较强并且比较实用,特来与大家分享。本文只是Sql Hacks阅读感悟系列的开篇,命名为总纲,之后我会为sql hacks的每一章作一评析及注意点讲解。<br /> <br />本系列有1个约束:基于postgresql 数据库。<br /> <br />作为Sql Hacks阅读感悟系列的开篇,本文应对《SQL HACKS》核心内容、如何使用以及作者写这本书的目标作一简单介绍。<原创 2011-01-13 20:34:00 · 720 阅读 · 0 评论 -
Sql Hacks 阅读感悟——连接、联合和视图
<br />SQL基础:《SQL HACKS》第2章——连接、联合和视图,总共列举了8个tips,不破坏现有查询的修改模式、过滤行和列等,下述为我对这8个tips的评析。<br />1、不破坏现有查询修改模式<br />情景描述:要对设备登记表增加一个办公室字段,但是却要保留以前的查询语句。<br />解决方案:新建设备登记新表,然后创建与原有设备登记表结构一样的视图,则对该视图的查询操作就是对原有设备登记表的查询操作。<br />评析:合理使用视图会有意外的收获,尤其是表结构发生更改后要保留遗留sql预热原创 2011-01-27 21:46:00 · 925 阅读 · 0 评论 -
Sql Hacks 阅读感悟——文本处理
<br />SQL基础:《SQL HACKS》第3章——文本处理,总共列举了4个tips,不用Like搜索关键词、跨列搜索关键字等,下述为我对这4个tips的评析。<br />1、不用Like搜索关键词<br />情景描述:字符串模糊查找通常都会使用like。<br />解决方案:使用数据库支持的全文检索功能。<br />评析:一般应用我们使用like进行字符串模糊匹配完全可以满足功能、性能需求,但是需要注意like使用方式(通配符在前的like条件是不会使用索引的);对于特殊的应用,如知识库等则应使用数据原创 2011-01-28 22:33:00 · 896 阅读 · 0 评论 -
Sql Hacks 阅读感悟——日期处理
<br />SQL基础:《SQL HACKS》第4章——日期处理,总共列举了5个tips,将字符串转换为日期、发现数据中的趋势、基于任何日期条件的报告等,下述为我对这5个tips的评析。<br />1、将字符串转换为日期<br />2、发现数据中的趋势<br />3、基于任何条件的报告<br />4、生成季度报告<br />5、月份的第二个星期二<br /> <br />本次评析,我把这5个tips都归在一起,原因是作者讲述的日期处理,其实就是sql 的日期、时间函数灵活运用。如发现数据中的趋势无非就是周期原创 2011-01-29 22:13:00 · 789 阅读 · 0 评论 -
Sql Hacks 阅读感悟——联机应用
<br />SQL基础:《SQL HACKS》第6章——联机应用,总共列举了8个tips,将WEB页面复制到表中、使用SVG图像化地展示数据和将导航特性添加到Web应用上等,下述为我对这8个tips的评析。<br />#41 将web页面复制到表中<br />场景描述及解决方案:作者利用xslt技术将特定格式的web页面提取到数据表中。<br />评析:个人认为,现在从web页面提取内容没必要搞的那么复杂,借助excel通用工具,简单的复制、粘贴web页面到excel表单,继续加工处理,可以满足绝大多数数据原创 2011-02-15 22:02:00 · 901 阅读 · 0 评论 -
Sql Hacks 阅读感悟——数值处理
<br />SQL基础:《SQL HACKS》第5章——数值处理,总共列举了17个tips,计算结果集的乘积、计算累加和、包含Join遗忘的行等,下述为我对这17个tips的评析。<br />#24 计算结果集的乘积<br />情景描述:计算多列的乘积<br />解决方案:通过数学手段,将乘积转换为对数加法运算,log(a*b*c) = log(a)+log(b)+log(c)<br />评析:sql中数值处理,很多都是基于数学手段,如刚才的指数函数、对数函数,后续tips中提到的中位数、gps定位距离计算原创 2011-02-14 18:28:00 · 1335 阅读 · 0 评论 -
Spring JdbcTemplate如何实现存储过程有无返回值统一调用
本文介绍JdbcTemplate调用数据库存储过程的几种常见用法及一个自定义封装函数:execProc,通过调用execProc可实现只需要少量代码即可完成JdbcTemplate对存储过程的调用。 环境:mysql5.6,jdk1.8,spring3.2.5。 一、数据库中创建存储过程(函数) 1、proc_jdbc_student_add,新增一条学生记录,无返回值C...原创 2018-06-27 19:33:19 · 2658 阅读 · 0 评论 -
谈谈企业信息系统tag标签数据库设计及基于多选组件bootstrap-select的实现
一、摘要Tag标签类似于分类,可以用于标记、区分事物,但又不同于分类,通常分类是单一所属,而Tag往往是多个。如纯净水596ml它属于纯净水分类,可以标记:596ml、纯净水、扫码有奖等tag。本文讨论限于企业信息系统中的tag标签应用,涉及2部分内容:tag标签数据库设计,前端页面如何基于多选组件bootstrap-select实现tag编辑。二、Tag实现通常来说Tag有2种实现方式:逻...原创 2018-10-25 20:50:55 · 1464 阅读 · 0 评论 -
mysql 利用information_schema库COLUMNS表查看哪些表含有指定字段
通常情况下,我们可以通过:1)show columns from 表名;2)describe 表名;3)show create table 表名;等命令查看指定表包含哪些字段信息,本文讨论如何查看哪些数据表包含指定字段,显然上述命令无法实现。Mysql所有数据表的字段(COLUMN)信息都保存在information_schema.COLUMNS表中,其定义如下:CREATE TEMP...原创 2018-10-31 10:27:20 · 6542 阅读 · 0 评论 -
Mysql数据库如何查看某张表table被哪些存储过程procedure使用过
一、摘要由于代码重构,修改了多张表结构,java后台代码做相应修改处理,开发人员内测没问题提交业务部门测试时发现,新客户取不到产品价格,原因是存储过程调用的还是就的数据表。为此,需要先找出哪些存储过程使用到了这些表,然后修改。那么问题来了,mysql数据库如何查看哪些存储过程使用了这些数据表呢?二、mysql数据库存储过程信息查看1、show 命令1) SHOW STATUS查看存储过程...原创 2018-10-27 13:01:22 · 7538 阅读 · 0 评论 -
jdbc mysql设置rewriteBatchedStatements参数实现高性能批量处理 executeBatch返回值问题
一、摘要利用jdbc预处理PreparedStatement.executeBatch可实现sql批处理,但是数据库层面是否真正实现批处理,不同数据库表现不一。以mysql为例,只有url设置了rewriteBatchedStatements=true参数,mysql驱动才会真正执行sql批处理,才可以显著提高性能。但是一旦设置rewriteBatchedStatements=true后,Pre...原创 2018-10-27 17:29:59 · 6538 阅读 · 0 评论 -
谈谈企业信息系统数据库设计是使用id主键还是uuid逻辑主键或业务主键
谈谈企业信息系统数据库设计是使用id主键还是uuid逻辑主键或业务主键原创 2018-11-02 08:50:44 · 6520 阅读 · 0 评论 -
谈谈Mysql 字符串连接 CONCAT CONCAT_WS GROUP_CONCAT区别及使用场景
Mysql数据库中字符串连接有3个常用函数:CONCAT、CONCAT_WS和GROUP_CONCAT,其中CONCAT、CONCAT_WS类似,而GROUP_CONCAT顾名思义是一个集合操作函数,本文谈谈三者区别及使用场景,同时分享一个Demo,用GROUP_CONCAT如何实现将细表物料名称汇总到主表物料详情。原创 2018-12-04 11:21:10 · 504 阅读 · 0 评论 -
谈谈mysql update语句 set顺序问题、列交换sql实现及多表更新注意事项
绝大多数数据库,在执行sql update语句时,update t set a = b, b=a 便可实现ab列值互换,赋值表达式右侧的值取的都是原始值。mysql则是例外,其单表更新是自左到右依次完成,即先完成a=b,然后在完成b=a(此时a=b),所以执行结果变成ab列都是b,然后多表更新则又不尊从该更新法则。本文讨论如何用sql实现类似编程语言引入tmp变量从而实现变量互换及mysql多表更新注意事项。原创 2018-11-27 09:43:06 · 4751 阅读 · 1 评论 -
mysql 常见技巧hack汇总
mysql技巧汇总,包括运维和开发部分,如:如何查看配置文件位置,查看数据文件存储路径等。原创 2019-09-04 13:42:31 · 412 阅读 · 0 评论