随笔分类 -  mysql

摘要:问题: 假设某个表有一个联合索引(c1,c2,c3,c4)以下只能使用该联合索引的c1,c2,c3部分 A where c1=x and c2=x and c4>x and c3=x B where c1=x and c2=x and c4=x order by c3 C where c1=x an 阅读全文
posted @ 2018-01-15 15:03 平凡希 阅读(22149) 评论(3) 推荐(4) 编辑
摘要:一、mysql查询的五种子句 where子句(条件查询):按照“条件表达式”指定的条件进行查询。 group by子句(分组):按照“属性名”指定的字段进行分组。group by子句通常和count()、sum()等聚合函数一起使用。 having子句(筛选):有group by才能having子句 阅读全文
posted @ 2017-08-31 15:23 平凡希 阅读(80705) 评论(5) 推荐(16) 编辑
摘要:一、什么是存储引擎 存储引擎说白了就是如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术的实现方法。因为在关系数据库中数据的存储是以表的形式存储的,所以存储引擎也可以称为表类型(即存储和操作此表的类型)。 在Oracle 和SQL Server等数据库中只有一种存储引擎,所有数据存储管 阅读全文
posted @ 2017-08-23 14:37 平凡希 阅读(1910) 评论(1) 推荐(4) 编辑
摘要:一、exists的使用 exists对外表用loop逐条查询,每次查询都会查看exists的条件语句,当exists里的条件语句能够返回记录行时(无论记录行是的多少,只要能返回),条件就为真,返回当前loop到的这条记录,反之如果exists里的条件语句不能返回记录行,则当前loop到的这条记录被丢 阅读全文
posted @ 2017-08-17 15:40 平凡希 阅读(2101) 评论(1) 推荐(1) 编辑
摘要:一、索引的本质 MySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构。提取句子主干,就可以得到索引的本质:索引是数据结构。 我们知道,数据库查询是数据库的最主要功能之一。我们都希望查询数据的速度能尽可能的快,因此数据库系统的设计者会从查询算法的角度进行优化。最基本的 阅读全文
posted @ 2017-08-14 15:47 平凡希 阅读(1462) 评论(0) 推荐(1) 编辑
摘要:一、行转列 即将原本同一列下多行的不同内容作为多个字段,输出对应内容。 建表语句 插入数据 查询数据表中的内容(即转换前的结果) 先来看一下转换后的结果: 可以看出,这里行转列是将原来的subject字段的多行内容选出来,作为结果集中的不同列,并根据userid进行分组显示对应的score。 1、使 阅读全文
posted @ 2017-07-18 15:59 平凡希 阅读(199337) 评论(7) 推荐(42) 编辑
摘要:一、索引的本质 MySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构。提取句子主干,就可以得到索引的本质:索引是数据结构。 我们知道,数据库查询是数据库的最主要功能之一。我们都希望查询数据的速度能尽可能的快,因此数据库系统的设计者会从查询算法的角度进行优化。最基本的 阅读全文
posted @ 2017-06-14 14:34 平凡希 阅读(6168) 评论(1) 推荐(4) 编辑
摘要:一、零铺垫 在介绍B树之前,先来看另一棵神奇的树——二叉排序树(Binary Sort Tree),首先它是一棵树,“二叉”这个描述已经很明显了,就是树上的一根树枝开两个叉,于是递归下来就是二叉树了(下图所示),而这棵树上的节点是已经排好序的,具体的排序规则如下: 若左子树不空,则左子树上所有节点的 阅读全文
posted @ 2017-05-22 16:08 平凡希 阅读(10793) 评论(7) 推荐(9) 编辑
摘要:前言:关于多级别菜单栏或者权限系统中部门上下级的树形遍历,oracle中有connect by来实现,mysql没有这样的便捷途径,所以MySQL遍历数据表是我们经常会遇到的头痛问题,下面通过存储过程来实现。 1、建立测试表和数据: 2、用临时表和递归过程实现树的遍历(mysql的UDF不能递归调用 阅读全文
posted @ 2017-03-05 20:50 平凡希 阅读(11724) 评论(0) 推荐(0) 编辑
摘要:一、存储过程基本用法 1、创建存储过程 MySQL中,创建存储过程的基本形式如下: 其中参数列表的形式如下: 其中in表示输入参数,out表示输出参数,inout表示既可以输入也可以输出;param_name表示参数名称;type表示参数的类型,该类型可以是MYSQL数据库中的任意类型。 例子:下面 阅读全文
posted @ 2017-03-01 13:31 平凡希 阅读(17816) 评论(1) 推荐(3) 编辑
摘要:1、整型 取值范围如果加了unsigned,则最大值翻倍,如tinyint unsigned的取值范围为(0~256)。 2、浮点型(float和double) 设一个字段定义为float(5,3),如果插入一个数123.45678,实际数据库里存的是123.457,但总个数还以实际为准,即6位。 阅读全文
posted @ 2016-12-15 16:45 平凡希 阅读(1539) 评论(1) 推荐(2) 编辑
摘要:对于任何DBMS,索引都是进行优化的最主要的因素。对于少量的数据,没有合适的索引影响不是很大,但是,当随着数据量的增加,性能会急剧下降。如果对多列进行索引(组合索引),列的顺序非常重要,MySQL仅能对索引最左边的前缀进行有效的查找。 例如:假设存在组合索引idx(c1,c2),查询语句select 阅读全文
posted @ 2016-10-10 15:45 平凡希 阅读(1859) 评论(1) 推荐(2) 编辑
摘要:1、创建表: 2、初始数据: 3、向下递归: 利用find_in_set()函数和group_concat()函数实现递归查询: 4、调用方式: 查询id为"4"下面的所有节点 5、向上递归: 6、调用方式: 查询id为"7"的节点的所有上级节点: 阅读全文
posted @ 2016-10-09 16:34 平凡希 阅读(91634) 评论(4) 推荐(10) 编辑
摘要:首先举个例子来说: 有个文章表里面有个type字段,它存储的是文章类型,有 1头条、2推荐、3热点、4图文等等 。现在有篇文章他既是头条,又是热点,还是图文,type中以 1,3,4 的格式存储。那我们如何用sql查找所有type中有4的图文类型的文章呢?? 这就要我们的 find_in_set 出 阅读全文
posted @ 2016-09-21 00:51 平凡希 阅读(262555) 评论(15) 推荐(34) 编辑
摘要:explain显示了mysql如何使用索引来处理select语句以及连接表。可以帮助选择更好的索引和写出更优化的查询语句。使用方法,在select语句前加上explain就可以了,如: 创建测试表: 插入测试数据: 创建索引用来测试 explain介绍 先从一个最简单的查询开始: explain输出 阅读全文
posted @ 2016-07-20 13:52 平凡希 阅读(4555) 评论(2) 推荐(2) 编辑