随笔分类 - MySQL
摘要:层级的业务数据在系统中很常见,如组织机构、商品品类等。 如果要获取层级数据的全路径,除了缓存起来,就是递归访问的方式了: 1. 将层级数据缓存在redis中,用redis递归获取层级结构。此方法效率高。 1. 在MySQL中做递归遍历,(Oracle有递归的语法支持,而MySQL并没有),需要自己写
阅读全文
摘要:整数类型,tinyint、smallint、mediumint、int、bigint 如果需要保存整数(不含小数),可以选择tinyint、smallint、mediumint、int、bigint,它们的范围如下图: 另外,一些小知识: 整形的计算是使用64位的bigint进行计算的 如果为整形指
阅读全文
摘要:安装mysql 查询yum服务器上可用的关于mysql的安装包: 安装: 查询是否安装好: 启动服务: 登录 设置root用户的密码: 根据设置的密码登录: 创建新的用户 ,允许远程登录,并授予权限: 如果登录权限有问题,可以用安全模式登录并设置好权限: 然后就可以通过SQL修改mysql.user
阅读全文
摘要:悲观锁 悲观锁,就是一种悲观心态的锁,每次访问数据时都会锁定数据: 乐观锁 乐观锁,就是一种乐观心态的锁,每次访问数据时并不锁定数据,期待数据并没作修改,如果数据没被修改则作具体的业务 应用程序上使用乐观锁的思想 MySQL的MVCC实现 多版本并发控制, ,`Multi Version Concu
阅读全文
摘要:起源 在公司优化SQL遇到一个索引的问题,晚上回家想继续验证,无奈没有较多数据的表,于是,想造一些随机的数据,用于验证。 于是 于是动手写。由于自己不是MySQL能手,写得也不好。最后,插入的速度也不快,我使用的是MySQL的InnoDB引擎,电脑跑了差不多一通宵才插入100W数据(为自己的程序汗颜
阅读全文
摘要:Oracle的Sequence用爽了,发现MySQL没有Sequence,那么,自己写一个呗。 > 最简单的实现 先建一个表存储当前值: 获取当前值的函数: 获取下一个值: 写一个多线程程序测试下并发: import java.sql.Connection; import java.sql.Driv
阅读全文
摘要:JDBC连接MySQL 虽然在项目中通常用ORM的框架实现持久化。但经常因测试某些技术的需要,要写一个完整的JDBC查询数据库。写一个在这儿备份。 首先引入驱动包: <dependencies> <dependency> <groupId>mysql</groupId> <artifactId>my
阅读全文
摘要:> 参考的优秀文章 优化LIMIT分页--《高性能MySQL》(电子工业出版社) > 场景描述 遇到一个场景:查询排序后的结果集较大,我们采用分页显示,每页显示20条记录,但是查询效率还是不尽理想。 结果,采用以下两个手段优化效率: 1、对排序的字段加上索引(普通索引,即BTREE),加了索引后,普
阅读全文
摘要:> 参考的优秀文章 FIND_IN_SET(str,strlist) > 简单的例子 这个函数的功能是,在第二个参数中寻找第一个参数,并返回第一个参数所在的位置,不存在则返回0。其中,第二个参数是以“,”分隔的字符串。 > 可替换分隔字符串的部分使用功能 有时候,我们获取了“2,3,4”字符串,我们
阅读全文
摘要:> 参考的优秀文章 GROUP_CONCAT(expr) > 简单的例子 此函数的功能,是拼接group分组多行的数据为一行,并可以指定去重、排序、分隔符。 例子: select t.name, group_concat(distinct t.role order by t.sort asc sep
阅读全文
摘要:SQL的查询语句中,常使用到内连接、外连接,以及连接的基础--笛卡尔积运算。 在简单的SQL中,也许我们还分辨清楚数据如何连接,一旦查询复杂了,脑子也犯浆糊了,迷迷糊糊的。 本文,简单以数据形式记录连接的数据结果,在迷糊时可翻阅。 以MySQL运行。 > 原始的表 > 笛卡尔积 > 内连接 例3.4
阅读全文
摘要:平常,复制、备份表,一般都直接操作IDE完成。但有时,一些初始化数据的脚本,在操作数据前,最好备份下操作表的结构、数据,不至于出错了被置于为难的境地。 所以复制表结构、表数据的语句就派上用场。 > 复制表结构、表数据 > 复制表结构 如果只想复制表结构,就加个过滤数据的条件嘛(>_<)
阅读全文
摘要:>参考de优秀文章 写MySQL存储过程实现动态执行SQL Dynamic cursor in stored procedure MySQL通过视图(或临时表)实现动态SQL(游标)。 因在实现中,需要通过DDL语句创建视图(或临时表)、删除视图(或临时表),故,只适合在一些一次性的脚本中使用,比如
阅读全文
摘要:前补0的格式化方式在业务系统中经常使用,记录下此api。 Java: MySQL:
阅读全文
摘要:时间差函数(TIMESTAMPDIFF、DATEDIFF) 需要用MySQL计算时间差,使用TIMESTAMPDIFF、DATEDIFF,记录一下实验结果 关于TIMESTAMPDIFF描述,见http://dev.mysql.com/doc/refman/5.1/en/date-and-time-
阅读全文
摘要:如何通过MySQL在某个数据区间获取随机数? MySQL本身提供一个叫rand的函数,返回的v范围为0 <= v < 1.0。 介绍此函数的MySQL文档也介绍道,可以通过此计算公式FLOOR(i + RAND() * (j – i)),获取i <= v < j的随机数字v。 附文档链接:http:
阅读全文
摘要:有一个表示地区的表,表结构与数据大概如下表。 现为了查询方便,需要加一列PARENT_NAME,用以表示上级地区的名称(虽然不符合第三范式,传递依赖,但有时为了业务上的可行性、便利性,可以按实际情况考虑) 附,表的DDL、DML: -- -- Table structure for `t_area`
阅读全文
摘要:突然发现,把基础给忘了,AND的优先级大于OR,试验如下: Oracle 附,Oracle文档: http://docs.oracle.com/cd/E17952_01/refman-5.1-en/operator-precedence.html MySQL
阅读全文