上节注意:sqlite的C API允许创建自定义的聚合和函数。
GROUP BY的使用:
聚合主要是分组,既能计算整个结果集的组合值,也能把结果集分成多个组,对每个组单独应用聚合,并计算每个组的聚合值。如果是要计算每个type_id 组的数目:
这种办法可以获得一次性的结果,但是如果要获得单次的结果,可以这样写:select count(*) from foods where type_id = x,x是整数之类。
多表连接:
将两个表中id相同情况下匹配的name 输出;
在这里,有着主键和外键的应用。其实,一个表的主键如果在另一个表的字段中出现,那么他就是另一个表的外键。这种关系可用来进行表的连接。
内连接:
交叉连接:
尽量不使用交叉连接。
外连接之
左外连接:
左外连接操作sql命令中的左表,上列中foods是左表。本操作,试图将foods中的行与foods_epispdes中行进行连接关系的匹配,匹配的行都包含在结果集中。但是,问题是,foods中没有和foods_episodes匹配的行还是会显示,但是foods_episodes将会把null值进行填充来显示。
右外连接:
基本和左外连接是一样的,没有什么区别。唯一不同就是,通俗的讲就是右表的显示会多,左表进行填充。
全外连接:
和复合查询有关。
自然连接;
自然连接通过相同的字段将两个表连接起来,不用添加连接条件就可获得内连接的结果。
显示形式的连接;
内连接:
左外连接:
注意上面无法匹配的部分,是以null值填充的。
交叉连接:
注意上表的各个部分的不同之处。
总结其显示语法形式如下:
select * from left_table join_typejoin right_table on join_condition;
其实,只要记得满足sql92也就基本没有什么问题了。
原文链接:https://www.f2er.com/sqlite/201801.html