sqlite3是一种轻便的数据库,由DDL(Data defination language),DML(Data manipulation language),TCL(Transaction control language)。
Join主要用于DML中SELECT语句中可选参数FROM后中用于连接两个表以形成一个大的数据表。
join的几种类型
1.cross join
A cross join B,其中A有m行n列,B有mm行nn列,得到的结果是n+nn列,m*mm行。
cross join 将A的每行分别跟B的每行进行组合形成结果表的行。
2.inner join
inner join是sqlite3的默认的join,所以A inner join B可以写成A join B,但通常还要外加约束条件,否则返回结果跟cross join一样。外加约束条件有ON(如ON A.a=B.b),USING(如using a或者USING(a,b)需要注意的是a,b必须都是A和B中的列名,并且如果是using(a,b),返回结果必须满足A,B中的a,b都对应相等),注意到 ON返回的列有重复,而Using必须指明需要用的a,b。所以还有一种更简洁的方式NATURAL JOIN,可以自动匹配A,B中所有相同列名,如果值一致就返回。
3.Outer join
sqlite3中outer join 与inner join 类似,也需要ON,USING的约束条件,否则也会返回Cross join 的结果。但与inner join 不同的是如果存在不满足条件的行,将保留左边的A的行,对于右边的B的行忽略,这也就是所谓的LEFT OUTER JOIN,需要注意的是不能简写成OUTER JOIN,因为还有RIGHT OUTER 和FULL OUTER JOIN,不过后两种暂时不支持。
相关文章
- 10-09使用Python进行数据库连接与操作SQLite和MySQL【第—SQLite和MySQL】
- 10-09若依ruoyi 动态多数据源配置(多种不同类型的数据库mysql,oracle,sqlite3,sqlserver等等)
- 10-09在unity中使用内嵌数据库sqlite
- 10-09left join 多个表关联时,将表值置换
- 10-09android – 如何显示存储在数据库中的评级值为星数
- 10-09[报到] 发布个自己修改的联动下拉菜单 (无限级、数据库、初始值.)
- 10-09用BindingSource将Windows窗体控件绑定到DBNull数据库值
- 10-09Java编程中数据库中取出的值判断
- 10-09tk.mybatis 保存实体类时个别字段使用数据库的默认值
- 10-09数据库中的LEFT JOIN 个人理解