/*
* 1、内连接查询
* inner join
* 取2个表的交集
*/
select * from t1
inner join t2
on t1.lid = t2.lid
/*
* 2、左外连接查询
* left outer join 或简写 left join
* 以左表数据量为基准,右表未匹配的字段,用NULL代替
*/
select * from t1
left join t2
on t1.lid = t2.lid
/*
* 3、右外连接联查询
* right outer join 或简写 right join
* 已右表数据量为基准,左表未匹配的字段,用NULL代替
*/
select * from t1
right join t2
on t1.lid = t2.lid
/*
* 4、全外连接查询
* full outer join 或简写 full join
* 已右表数据量为基准,左表未匹配的字段,用NULL代替
* 注意:Mysql不支持,使用 uion 代替
*/
select * from t1
right join t2
on t1.lid = t2.lid
/*
* 5、交叉查询
* cross join
* N x M 的结果返回
*/
select * from t1
cross join t2
结果集操作
/*
* 1、合并
* union
* 对两个结果集进行并集操作,不包括重复行,同时进行默认规则的排序
*/
select t1.id,t1.name from t1
union
select t2.id,t1.name from t2
/*
* 2、合并全部
* union all
* 对两个结果集进行并集操作,包括重复行,不进行排序
*/
select t1.id,t1.name from t1
union all
select t2.id,t1.name from t2
/*
* 3、求交集
* intersect
* 对两个结果集进行交集操作,不包括重复行,同时进行默认规则的排序
* 注意:Mysql 不支持
*/
select t1.id,t1.name from t1
intersect
select t2.id,t1.name from t2
/*
* 4、求差集
* minus
* 对两个结果集进行差操作,不包括重复行,同时进行默认规则的排序
* 注意:Mysql 不支持
*/
select t1.id,t1.name from t1
minus
select t2.id,t1.name from t2
一、数据库基础知识
1.1 什么是ORM?
对象-关系映射(Object-Relational Mapping,简称ORM),ORM框架主要的作用就是把数据库中的关系数据映射称为程序中的对象,也就是说你操作数据库不用直接写SQL,而是直接操作对象就可以。
Java中主流的ORM框架有:Hibernate、Mybatis、iBatis等。
Node中主流的ORM框架有:Sequelize、TypeORM、LoopBack、Mongoose、Waterline等。
1.2 关系数据库都有哪些关系?
两个对象A和B之间只有哪些可能存在的关系?
1:1
1个A对应1个B(一夫一妻)。有2张表,A表中有一个外键关联B表;1:N
1个A对应多个B(一夫多妻)。有2张表,B表中有一个外键关联A表;M:N
1个A对应多个B,一个B也可能对应多个A(多夫多妻)。有3张表,C表中有2个外键,分别关联A表、B表;1.3 关系数据库都有哪些查询?
单表查询
关联查询
结果集操作
二、Sequelize 使用心得
2.1 Sequelize 的ORM特性
考虑到对代码的侵入性和以后的扩展性,我在使用 Sequelize 的时候,仅用了它的(库 -> 对象)这一层。
2.2 Sequelize 的高级特性
beforeCreate
afterCreate
等,可以作为全局拦截处理1:1
、1:N
、1:M
等2.3 Sequelize 脚本片段
安装
建立连接
测试连接
Model生成表
表生成Model
基本的增删改查(CRUD)
where 条件
更多
where
关键词order排序
事务
什么时候用到事务?比如:你删除一个Link,连同Link的所有记录一起删掉。删除Link和删除LinkLog,这2步要不同时成功,要不同时失败,不存在一个删除,一个保留的情况,这时候就得用到事务。
关联关系 belongsTo 1:1
关联关系 hasMany 1:N
关联关系 belongsToMany M:N
三、文档相关
3.1 API相关文档
3.2 Model所有查询API