10.1项目类别

对我们来说,单词物品意味着不仅仅是某东西;它是一个技术术语,在我们的源代码的上下文中具有精确定义。物品是一堂课。每个实例物品班级有:

  • SQL语言中的模拟

  • 一个值

  • 数据类型描述符

所有下面的SQLThingamabobs.是模拟的物品类:

  • 文字

  • 列参考文献

  • 会话或全局变量

  • 程序变量

  • 参数

  • SQL函数(由于SQL函数具有数据类型和返回值,而不是惊喜。

在里面功能类别包括诸如的运营商+||,因为运算符仅是返回值的函数。我们还包括诸如=喜欢,这是返回布尔值的操作符。考虑以下陈述:

从T列2 = @X的T中选择Upper(Column1);

对于此语句,MySQL需要存储Select List的项目列表('第1列'参考和上函数),以及Where子句的项目列表('第2列'列参考和'@x'变量以及'='运算符)。

术语:MySQL程序中的项目实例大致对应于“站点”,根据Standard_sql定义是“一个包含指定数据类型值的实例”的地方,您将经常看到的另一个词MySQL代码是“字段”,这意味着列引用,item_field子类通常是针对表中的行和列的交叉处的列值。

mysql的项目类是在... / sql / item.h中定义的,它的子类是在... / sql / item * .h中定义的(Item.h,item_cmpfunc.h,item_func.h,item_geofunc.h,item_row.h,item_strfunc.h,item_subselect.h,item_sum.h,item_timefunc.h)。页面宽度限制阻止我们显示整个树,但这些是主要项目子类和子类的子类:

item_ident(item_idement,item_ref)item_null item_num(item_int,item_real)item_param item_string(item_static_string_func,item_datetime,item_ementy_string)item_hex_string(item_bin_string)item_result_field(所有“item_func.h”“item_subselect.h”“item_sub.h”类)item_copy_string item_cache(item_cache_int,item_cache_real,item_cache_str,item_cache_row)item_type_holder item_row

没有正式的子类分类,但主要的区别是通过使用(字段,参数,函数)和数据类型(num,字符串)。

那么,MySQL如何使用物品?您发现几乎每个.cc中的/ sql目录中的每个.cc程序都会使用项目类及其子类,因此此程序列表仅部分且非常一般:

sql_parse.cc:在add_field_to_list()item_sum.cc中制作新项目创建LEX可能使用的项目item_subselect.cc:子查询是另一种类型的函数mysqld.cc:当main()结束时,它使用special_up()for items opt_range.cc:使用字段,比较条件和值子类过程。CC:注意过程*具有指向物品列表协议的指针:使用send_fields()将项目值传递给用户sys_var.cc:系统变量具有Item关联,它具有sql_base.cc:特定于find_field_in_table()的线程特定项搜索者sql_class.cc:查看cleanup_after_query()sql_delete.cc:这个(如sql_insert.cc等)的字段引用sql_error.cc:sql_error.cc的众多例子之一是sql_lex.cc的使用示例之一:注意“添加... to_list“函数sql_select.cc:使用项目的最大程序,显然是Udf_example.cc:这个程序中的评论很广泛

每当需要对站点进行分配、比较、聚合、接受、发送或验证的SQL操作时,您就会发现MySQL对Item及其子类的使用。