9-24 钟申义 日志

9-24 钟申义 日志

子查询

子查询就是把一个sql语句的查询结果作为另一个sql语句的查询条件
实例
select * from lfemp where salary>(select salary from lfemp where ename='tom');

多表查询(跨表查询)

内连接
inner join…on…
实例

​ select ename,dname from lfemp inner join lfdept on deptId=did;
​ 问题:无法查询出没有部门的员工,也无法查询出没有员工的部门

其他写法问题
select ename as 姓名,dname as 部门名称 from lfemp,lfdept;
问题:发生错误,笛卡尔积

​ select ename as 姓名,dname as 部门名称 from lfemp,lfdept where deptId=did;

问题:多表查询避免产生笛卡尔积,给查询添加条件(外键),但是无法查询出没有部门的员工,也无法查询出没有员工的部门
左外连接
left outer join …..on….
查询左侧表中的所有数据
实例
select ename,dname from lfemp left outer join lfdept on deptId=did;
右外连接
right outer join…on
查询右侧表中的所有数据
实例
select ename,dname from lfemp right outer join lfdept on deptId=did;
全连接
union 合并相同的项
(select ename,dname from lfemp left outer join lfdept on deptId=did)
union
(select ename,dname from lfemp right join lfdept on deptId=did);
union all 不合并相同的项
(select ename,dname from lfemp left outer join lfdept on deptId=did)
union all
(select ename,dname from lfemp right join lfdept on deptId=did);
注意:mysql不支持 full join ..on..

promise

什么是promise?
Promise是一个构造函数,它跟JS中的Date、Array等构造函数类似,都是使用new操作符实例化之后就可以通过传参和调用方法的形式来完成某些特定的功能。Promise是专门用来实现多个异步函数,必须先后顺序执行的技术
使用Promise
第一步:将异步函数使用new Promise包裹,并返回该new Promise,同时与下一项任务相连

return new Promise((resolve, reject)=>{
// 如果正确,就继续调用resolve()
// 否则,就调用reject("错误提示")
})

第二步:在new Promise() 内的异步任务内部,设置前一项任务需要决定何时调用的函数,只要前一项任务内部调用了这个函数,就会通知下一项任务开始执行

Promise 实例具有then方法,then方法的第一个参数是resolve(成功)的回调,第二个参数(可选)是reject(失败)的回调

catch方法和then的第二个参数一样,用来指定reject时的回调

第三步:调用前一项任务,然后调用 .then() 连接下一项任务

多个函数需要连续调用,每个函数,都要返回Promise对象,才能连续用then调用

心得

今天状态还行!

标签

评论