一、一张表查询

  查询一张表在上一章节说过了,查询全部使用*,具体的就写字段名 

'SELECT * FROM company' //查询所有使用*
'SELECT * FROM company WHERE id=?', //查询唯一标识id=x的所有字段
'SELECT name,other FROM company WHERE id=?', //查询唯一标识id下的company表里面的name和other字段

 二、多表关联

  这里我建立了三个表

  表一 company:

    

  表二school:

  

  表三student:

  

  表连接方式:

    1、inner join          也叫等值连接,只有满足条件才会显示数据,否则为空

          在userSql.js新建newSql对象,属性innerList

       首先查询表里面所有数据    

newSql:{
detail:'SELECT * FROM student WHERE id=?',
innerList: 'SELECT * FROM company c inner join school s on c.id=s.company_id'// c和s分别是两个表的别名,可以不写。 on 后面是需要满足的条件
}

  这样查询出来的是表company的id等于表school的company_id的所有值,显示的是后面表school的字段和值,如果前面表company有字段和school表的字段重复,会发生覆盖行为,如果表company有表school不存在的字段,那么也会显示。列表长度为右表的长度

  如果on后面的c.id与s.company_id值不相等,那么显示的数据就是空

  

  注意:   如果想要显示两表的所有字段需要使用nestTables属性     这里left ,right ,inner cross, union都是一样的

    在userSql.js中

newSql:{
all:{sql:'SELECT * FROM company c inner join school s on c.id=s.company_id where c.id=?',nestTables:true}
} // where 是选择表company的id的确定值,去掉为全部

  这样显示的是全部值,并且格式不符合我们写作习惯

    

      这里把表company和school的字段值分表列了出来,要想写在一个json里面需要改变nestTables的值,当改为'_'隔离符的时候,就可以把所有数据写在一个json里面了

    

       2、left join       取左边表的所有记录 匹配右边表的记录,右表字段覆盖左表相同的字段,如果左表存在右表不存在的字段,依然显示。  列表长度为左表的长度。

      如果on 后面的c.id与s.id 不相等,那么左边表company的所有数据会显示出来,右边表为空

    在newSql中

leftList: 'SELECT * FROM company c left join school s on c.id=s.id'

  3、right join      与left join 正好相反, 不相等时候会把右边表数据显示出来,左边表的数据为空

        在newSql中

rightList: 'SELECT * FROM company c right join school s on c.id=s.id',

  4、cross  join

     交叉连接,得到的结果是两个表的乘积; 效果和 inner join 一样

  5、union  (可以理解为或or的意思)

unionList: 'SELECT * FROM company c left join school s on c.id=s.id union SELECT * FROM company c right join school s on c.id=s.id'

  union可以看做是or  如果left join和right join都相等,就都展示出来,如果left join不相等就左连接的第一个表的数据显示,第二张表的为空, right join 右连接的不相等第二张表显示,第一张表不显示。 显示的数据是左连接的返回值和右连接返回值之和。

更多表连接只需要在前面基础上加连接方式和条件      例如:

 moreList: 'SELECT * FROM company c left join school s  on c.id=s.company_id left join student t on s.id=t.school_id'

  

node mysql+node+express 表查询及接口建立(6)的更多相关文章

  1. Vc数据库编程基础MySql数据库的表查询功能

    Vc数据库编程基础MySql数据库的表查询功能 一丶简介 不管是任何数据库.都会有查询功能.而且是很重要的功能.上一讲知识简单的讲解了表的查询所有. 那么这次我们需要掌握的则是. 1.使用select ...

  2. MySQL之多表查询一 介绍 二 多表连接查询 三 符合条件连接查询 四 子查询 五 综合练习

    MySQL之多表查询 阅读目录 一 介绍 二 多表连接查询 三 符合条件连接查询 四 子查询 五 综合练习 一 介绍 本节主题 多表连接查询 复合条件连接查询 子查询 首先说一下,我们写项目一般都会建 ...

  3. MySQL之单表查询 一 单表查询的语法 二 关键字的执行优先级(重点) 三 简单查询 四 WHERE约束 五 分组查询:GROUP BY 六 HAVING过滤 七 查询排序:ORDER BY 八 限制查询的记录数:LIMIT 九 使用正则表达式查询

    MySQL之单表查询 阅读目录 一 单表查询的语法 二 关键字的执行优先级(重点) 三 简单查询 四 WHERE约束 五 分组查询:GROUP BY 六 HAVING过滤 七 查询排序:ORDER B ...

  4. day15(mysql 的多表查询,事务)

    mysql之多表查询 1.合并结果集 作用:合并结果集就是把两个select语句查询的结果连接到一起! /*创建表t1*/ CREATE TABLE t1( a INT PRIMARY KEY , b ...

  5. mysql数据库优化课程---11、mysql普通多表查询

    mysql数据库优化课程---11.mysql普通多表查询 一.总结 一句话总结:select user.username,user.age,class.name,class.ctime from u ...

  6. Mariadb/MySQL数据库单表查询基本操作及DML语句

    Mariadb/MySQL数据库单表查询基本操作及DML语句 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一数据库及表相关概述 1>.数据库操作 创建数据库: CREATE ...

  7. day 39 MySQL之多表查询

    MySQL之多表查询   阅读目录 一 介绍 二 多表连接查询 三 符合条件连接查询 四 子查询 五 综合练习 一 介绍 本节主题 多表连接查询 复合条件连接查询 子查询 首先说一下,我们写项目一般都 ...

  8. day 38 MySQL之单表查询

    MySQL之单表查询   阅读目录 一 单表查询的语法 二 关键字的执行优先级(重点) 三 简单查询 四 WHERE约束 五 分组查询:GROUP BY 六 HAVING过滤 七 查询排序:ORDER ...

  9. MySQL的联表查询

    MySQL的联表查询 首选:分析查询的字段来自哪些表 进而:确定交集 然后:确定判断的条件 比如:从student表 和 result表 查学号.考试名称.学时.考试日期.考试成绩 表1: 学号 考试 ...

随机推荐

  1. js数据交互——fetch

    什么是fetch? Fetch被称为下一代Ajax技术,采用Promise方式来处理数据. 是一种简洁明了的API,比XMLHttpRequest更加简单易用.fetch是原生的(无需引入任何库和框架 ...

  2. 双系统开机引导菜单修复方法 进win7无须重启|metro引导|双系统菜单名字修改

    此文转自互联网,一部分是原创. 主要内容 1.修复双系统菜单(win7与win8双系统),进入win7不再需要重启,普通菜单样式(普通引导,非metro界面),更加简洁,实用,开机即可选择操作系统 2 ...

  3. hystrix原理

    一.hystrix 产生背景 微服务是解决复杂服务的一个方案,在功能不变的情况下,对一个复杂的单体服务分解为多个可管理的分支.每个服务作为轻量的子服务,通过RPC实现服务间的关联,将服务简单化.每个服 ...

  4. SOLID原则、设计模式适用于Python语言吗

    在阅读 clean architecture的过程中,会发现作者经常提到recompile redeploy,这些术语看起来都跟静态类型语言有关,比如Java.C++.C#.而在我经常使用的pytho ...

  5. 前端技术之:如何在控制台将JS class实例输出为JSON格式

    有一个类: class Point { constructor(x, y) { this.x = x; this.y = y; } } 如果我们在控制台中输出其实例: console.log(new ...

  6. Knative Serving 健康检查机制分析

    作者|  阿里云智能事业群技术专家牛秋霖(冬岛) 导读:从头开发一个Serverless引擎并不是一件容易的事情,今天咱们就从Knative的健康检查说起.通过健康检查这一个点来看看Serverles ...

  7. Covenant cc 用法

    新出现的cc框架,之前看hack the box有人用过,不过还是用cs比较多, 这里把之前的笔记搬运过来 ---   设置covenant git clone --recurse-submodule ...

  8. 「考试」 Or

    不得不说是一道多项式神题了. 虽然说颓代码颓的很厉害不过最终A掉了. 好好讲一讲这道题. 涉及的知识点是:高阶导数,NTT,指数型母函数,泰勒公式,以及意志力和数学推导能力. 那就开始了. 一个测试点 ...

  9. CSPS模拟 44

    状态不是很好吧 这套和前边是一套的, skyh在我旁边AK,好像开了三个对拍又在拼小人 T3 正解没调出来,暴力又忘交了qwq 当时心情都要爆炸了 T1 区间$gcd$乘区间长度的最大值 暴力是$n^ ...

  10. Python基本数据结构之集合

    一道python面试的一个小问题,说怎么使用一行代码将一个列表里的重复元素,其实这里只要将列表转换成集合就可以了. 定义 集合跟我们学的列表有点像,也是可以存一堆数据,不过它有几个独特的特点,令其在整 ...