一、一张表查询

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

'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. .NET Core3.0 日志 logging

    多年的经验,日志记录是软件开发的重要组成部分.没有日志记录机制的系统不是完善的系统.在开发阶段可以通过debug附件进程进行交互调试,可以检测到一些问题,但是在上线之后,日志的记录起到至关重要的作用. ...

  2. Python语法入门02

    引子 上一篇我们主要了解到了python这门编程语言,今天来说一下关于用户交互,数据类型和运算符方面的学习内容 用户交互 什么是用户交互? 用户交互就是人往计算机里输入数据(input),计算机输出结 ...

  3. Spring Boot集成JSON Web Token(JWT)

    一:认证 在了解JWT之前先来回顾一下传统session认证和基于token认证. 1.1 传统session认证 http协议是一种无状态协议,即浏览器发送请求到服务器,服务器是不知道这个请求是哪个 ...

  4. Mustache 入门教程

    Mustache 简介: Mustache 是一个轻逻辑模板解析引擎,它的优势在于可以应用在 Javascript.PHP.Python.Perl 等多种编程语言中. Mustache 语法: Mus ...

  5. 数据存储之关系型数据库存储---MySQL存储

    MySQL的存储 利用PyMySQL连接MySQL 连接数据库 import pymysql # 连接MySQL MySQL在本地运行 用户名为root 密码为123456 默认端口3306 db = ...

  6. ABAP中时间戳的处理

    UTC(UTC, Universal Time Coordinated,通用协调时)时间戳,分为长时间戳和段时间戳,其中长时间戳餐开始的系统的数据元素TIMESTAMPL,类型为DEC(21,7):而 ...

  7. js 面试题解析(一)

    1.call和apply的区别. 当需要传的参数是一个数组时,使用apply更加方便;而使用call时需要将数组展开,将数组中的每一项单独传入. 当需要传入的参数大于3个时,call的性能要略优于ap ...

  8. 学习笔记28_MVC异步请求

    *微软的MVC异步请求 使用一下方式,就能生成完整的<from>标签,以及对应的表单元素,提交时能达到异步提交的效果 <%using(Ajax.BeginForm( "Co ...

  9. Java 实现一个 能够 进行简单的增删改查的 超市管理系统

    1. 首先编写一个 Fruitltem 的商品类, 描述 商品的基本信息. 代码如下: 保证详细, 运行的起来, 有什么 问题也可以评论留言. /* * 自定义类, 描述商品信息 * * 商品的属性: ...

  10. Flex简记

    display的flex属性的使用对象分为1.容器即包含有元素的元素,2.项目,即某一个元素.就容器而言,flex可以实现换行(flex-wrap),改变容器内元素的排列方向(flex-directi ...