Java教程:SQL之WHERE条件的提取与应用(一)

开课吧开课吧锤锤2021-02-22 10:34

点赞
有用
分享分享

    随着社会的发展,越来越多人,开始涌入IT行业,因为各领域各行业的发展,特别是IT业的发展,以及人才需求的扩大,有些有志之士,如大学毕业生、在职人员、自由职业者,想通过学习Java编程来谋生,无疑是一个很好的方向,但大多数人都存在着这样的问题,即零基础能否学好Java编程,要怎么学,自学Java视频教程怎么学,等等。今天就为大家带来SQL之WHERE条件的提取与应用,希望对大家的技术提升有所帮助。

开课吧广场Java教程

    问题描述

    一条SQL在数据库中是如何执行的呢?相信很多人都会对这个问题比较感兴趣。但是,感兴趣归感兴趣,你得去追呀,还臆想着她主动到你怀里来?

    一条SQL在数据库中的生命周期涵盖了SQL的词法解析、语法解析、权限检查、查询优化、SQL执行等一系列的步骤,是一个相当复杂的过程,不亚于你追她的艰苦历程,不是只言片语就说的完的。但是,大家先别紧张,上面说的那些了,今天一个也不讲,气不气?

    今天和大家一起来看一下SQL生命周期中比较有意思的一个环节

    给定一条SQL,如何提取其中的where条件?

    where条件中的每个子条件,在SQL执行的过程中有分别起着什么样的作用?

    前提准备

    正式开讲之前了,我们先来回顾一些内容

    SQL执行流程

Java

    这是MySQL数据库中SQL的执行流程,其他数据库应该类似

    关系型数据库中的数据组织

    关系型数据库中,数据组织涉及到两个最基本的结构:表与索引。表中存储的是完整数据记录,分为堆表和聚簇索引表;堆表中所有的记录无序存储,聚簇索引表中所有的记录则是按照记录主键进行排序存储。索引中存储的是完整记录的一个子集,用于加速记录的查询速度,索引的组织形式,一般均为B+树结构。

    MySQL的InnoDB采用的是聚簇索引表,数据记录和索引是一起存储的,类似如下

Java

    InnoDB二级索引(非聚簇索引)的结构与聚集索引的结构基本相同,只是叶子节点有些许差别,二级索引的叶子节点存的是索引值+主键值,而聚簇索引的叶子节点存的是索引值+完整的数据记录,所以通过二级索引查找的过程是先找到该索引值对应的聚集索引的值,然后再通过该聚簇索引值到聚簇索引树上查找对应的完整数据记录,这个过程称为回表!当然也有不需要回表的情况,这里就不展开了。

    Oracle、DB2、PostgreSQL,MySQL的MyISAM引擎,采用的是堆表形式来存储数据,索引和数据是分开存储的,类似如下

Java

    堆表结构中的聚簇索引和二级索引基本就没什么区别了,可以简单的认为聚簇索引的结构和二级索引中的唯一索引的结构是一样的其实表结构采用何种形式并不重要,因为下面讲的内容在任何表结构中均适用

    本文内容由开课吧老师青石路提供,想要学习更多教程,尽在开课吧广场Java教程频道,更多免费课程可以关注公众号“码农集散地”

有用
分享