node mysql+node+express 表查询及接口建立(6)
一、一张表查询
查询一张表在上一章节说过了,查询全部使用*,具体的就写字段名
'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)的更多相关文章
- Vc数据库编程基础MySql数据库的表查询功能
Vc数据库编程基础MySql数据库的表查询功能 一丶简介 不管是任何数据库.都会有查询功能.而且是很重要的功能.上一讲知识简单的讲解了表的查询所有. 那么这次我们需要掌握的则是. 1.使用select ...
- MySQL之多表查询一 介绍 二 多表连接查询 三 符合条件连接查询 四 子查询 五 综合练习
MySQL之多表查询 阅读目录 一 介绍 二 多表连接查询 三 符合条件连接查询 四 子查询 五 综合练习 一 介绍 本节主题 多表连接查询 复合条件连接查询 子查询 首先说一下,我们写项目一般都会建 ...
- MySQL之单表查询 一 单表查询的语法 二 关键字的执行优先级(重点) 三 简单查询 四 WHERE约束 五 分组查询:GROUP BY 六 HAVING过滤 七 查询排序:ORDER BY 八 限制查询的记录数:LIMIT 九 使用正则表达式查询
MySQL之单表查询 阅读目录 一 单表查询的语法 二 关键字的执行优先级(重点) 三 简单查询 四 WHERE约束 五 分组查询:GROUP BY 六 HAVING过滤 七 查询排序:ORDER B ...
- day15(mysql 的多表查询,事务)
mysql之多表查询 1.合并结果集 作用:合并结果集就是把两个select语句查询的结果连接到一起! /*创建表t1*/ CREATE TABLE t1( a INT PRIMARY KEY , b ...
- mysql数据库优化课程---11、mysql普通多表查询
mysql数据库优化课程---11.mysql普通多表查询 一.总结 一句话总结:select user.username,user.age,class.name,class.ctime from u ...
- Mariadb/MySQL数据库单表查询基本操作及DML语句
Mariadb/MySQL数据库单表查询基本操作及DML语句 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一数据库及表相关概述 1>.数据库操作 创建数据库: CREATE ...
- day 39 MySQL之多表查询
MySQL之多表查询 阅读目录 一 介绍 二 多表连接查询 三 符合条件连接查询 四 子查询 五 综合练习 一 介绍 本节主题 多表连接查询 复合条件连接查询 子查询 首先说一下,我们写项目一般都 ...
- day 38 MySQL之单表查询
MySQL之单表查询 阅读目录 一 单表查询的语法 二 关键字的执行优先级(重点) 三 简单查询 四 WHERE约束 五 分组查询:GROUP BY 六 HAVING过滤 七 查询排序:ORDER ...
- MySQL的联表查询
MySQL的联表查询 首选:分析查询的字段来自哪些表 进而:确定交集 然后:确定判断的条件 比如:从student表 和 result表 查学号.考试名称.学时.考试日期.考试成绩 表1: 学号 考试 ...
随机推荐
- 钢铁B2B电商案例:供应链金融如何解决供应链金融痛点
一.区块链是什么 区块链是一种按照时间顺序将数据块以特定的顺序相连的方式组合成的链式数据结构,其上存储了系统诞生以来所有交易的记录.区块链上的数据由全网节点共同维护并共同存储,同时以密码学方式保证区块 ...
- Spring Cloud Alibaba(三)Sentinel之熔断降级
本项目演示如何使用 Sentinel 完成 Spring Cloud 应用的熔断降级调用. Sentinel 是阿里巴巴开源的分布式系统的流量防卫组件,Sentinel 把流量作为切入点,从流量控制, ...
- Beetlex服务框架之Webapi版本访问控制
在应用服务中API更新是很普遍的事情,为了服务良好地运作很多时候需要新旧版本同时兼容:为了应对这一系列的需求FastHttpApi在新版中强化了Url重写机制来支持API访问版本控制,由原来固定的重写 ...
- Yii ActiveRecord用法记录备忘
ActiveRecord 使用方法 Example1 in查询 $criteria = new CDbCriteria(); $criteria->select = $select; $crit ...
- 设计模式(十六)Mediator模式
在实际的工作小组的交流过程是,组员向仲裁者报告,仲裁者向组员下达指示,组员之间不再互相询问和指示.Mediator模式是指,当发生麻烦事情的时候,通知仲裁者:当发生涉及全体组员的事情时,也通知仲裁者. ...
- NetworkManager网络通讯_networkReader/Writer(六)
unet客户端和服务端进行消息发送时可以采用上一节中方法,也可以直接用networkReader/Writer类进行发送 (一)服务端/客户端注册消息 ; m_Server.RegisterHandl ...
- 数据后台管理(五)AOP日志
为了增加数据的安全性,在数据管理的过程中,我们需要将操作者访问时间,操作者的名称,访问的IP,访问资源的URL,执行时长,访问方法记录下来存储到数据库中,并可以通过页面查看. 1.将日志信息存储到数据 ...
- ORM之多表操作
一.创建模型 from django.db import models # Create your models here. class Book(models.Model): nid = model ...
- Leetcode算法【34在排序数组中查找元素】
在之前ARTS打卡中,我每次都把算法.英文文档.技巧都写在一个文章里,这样对我的帮助是挺大的,但是可能给读者来说,一下子有这么多的输入,还是需要长时间的消化. 那我现在改变下方式,将每一个模块细分化, ...
- 使用Bind提供域名解析服务(反向解析)
小知识: 一般来讲域名比IP地址更加的有含义.也更容易记住,所以通常用户更习惯输入域名来访问网络中的资源,但是计算机主机在互联网中只能通过IP识别对方主机,那么就需要DNS域名解析服务了. DNS域名 ...