29 “select *“ 或者 “select field1, field2“ 的实现

编程入门 行业动态 更新时间:2024-10-17 00:24:42

29 “<a href=https://www.elefans.com/category/jswz/34/1770575.html style=select *“ 或者 “select field1, field2“ 的实现"/>

29 “select *“ 或者 “select field1, field2“ 的实现

前言

这里我们来探究一下 “select *” 或者 “select 字段列表“ 的相关实现 

当然 这一部分在 “mysql union” 里面有具体的体现, 只是 可能没有那么细致

这里 来概览一下 这里的整个流程

 

 

select * from tz_test;

setup_wild 的地方是处理 “select *” 的地方 

 

外层迭代的是 table 的所有的字段, 这里迭代的是 “id”, “field1”, “field2”

然后这里 evalutate 的貌似有点问题, 但是 实际是迭代了 这三个字段

 

 

select id, field1, field2, field1 from tz_test; 

这部分的处理皮是在 setup_fields 中处理的, 然后 field_list 中即为 各个选择列

然后 在 Item_field.fix_fields 中是根据给定的 符号引用, 获取到真实的给定的 Table 的 Field 以及相关信息 

 

比如, 这里拿到的是 id 对应的 Field, 这里是关联到 Item_field 的属性上面 

 

select *, field1 from tz_test;

这个就是 上面两种情况的结合

“select *” 基于 setup_wild 来 apply 字段列表 

“select 字段列表” 基于 setup_fields 来 apply 字段列表 

 

“select *” 会选择 tz_test 表的 “id”, “field1”, “field2” 三个字段 

 

 “select field1” 会选择 tz_test 表的 “field1” 一个字段 

 

 

数据从 rec 转换到 mysql_rec

这里的处理是将具体的 rec 中的给定的字段复制到 mysql_rec 中存储 

这部分数据会存储到 table->record[0], 然后 后面用于 迭代输出

 

外层是遍历字段, 遍历完字段之后 需要的字段就已经转换到了 mysql_rec 中 

 

mysql_rec 中的顺序和 select 中的顺序无关 

rec 的数据部分结构如下 

 

mysql_rec 的结构如下, prebuilt->mysql_template[i] 中存储的是响应的字段的元数据  

 

 

字段列表的输出

遍历符合条件的记录列表, 然后 循环选择列 输出

其他的信息不多赘述, 其中 两个字段列 field1

 

 

完 

 

 

 

更多推荐

29 “select *“ 或者 “select field1, field2“ 的实现

本文发布于:2023-12-06 20:59:33,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1668899.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:select

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!