• MySqL速成教程笔记系列九


    union的用法

    例子:查询工作岗位是MANAGER和SALESMAN的员工

    方法一:select ename,job from emp where job=‘MANAGER’ or job=‘SALESMAN’;
    在这里插入图片描述
    方法二:select ename,job from emp where job in(‘MANAGER’,‘SALESMAN’);
    在这里插入图片描述
    方法三:select ename,job from emp where job=‘MANAGER’ union select ename,job from emp where job=‘SALESMAN’;
    在这里插入图片描述
    union的效率会更高一些。对于表的连接来说,每连接一次新表,则匹配的次数满足笛卡尔积。但是union可以减少匹配的次数,在减少匹配次数的情况下,还可以完成两个结果集的拼接。

    比如说 a 连接 b 连接 c
    a,b,c表均有10条记录,那么不用union就需要进行101010=1000次
    而如果使用了union,则a连接b,进行10*10=100次连接;a连接c,也进行100次连接,所以最后只需要200次连接。

    union的注意事项:
    (1)union在进行结果集合并时,要求两个结果集的列数相同。
    例子:
    select ename,job from emp where job=‘MANAGER’ union select ename from emp where job=‘SALESMAN’;
    在这里插入图片描述
    (2)select ename,job from emp where job=‘MANAGER’ union select ename,sal from emp where job=‘SALESMAN’;
    在这里插入图片描述
    很明显这句话有问题,因为图中的job竟然出现了数字,不过在mysql中并不会报错,而Oracle的语法更加严格会报错。
    所以,结果集合合并时列和列的数据类型应该也相同。

    limit的用法

    limit将查询结果集的一部分取出来,通常使用在分页查询中。

    完整用法:limit startIndex,length;//起始下标,长度

    缺省用法:limit 5; 取前五

    例子:
    (1)按照薪资降序,取出排名在前5名的员工。
    select ename,sal from emp order by sal desc limit 5;
    在这里插入图片描述
    注意:mysql中limit在order by之后执行

    (2)取出工资排名在3-5名的员工
    select ename,sal from emp order by sal desc limit 2,3;
    在这里插入图片描述
    这里limit后面为什么是2,3呢?
    2:下标从0开始 0 1 2 3 4 5
    很明显第三名是开始下标为2的
    3:长度为3。
    取下标为2,3,4的员工,对应3-5名。

    分页

    每页显示3条记录
    第一页: limit 0,3 第0,1,2页
    第二页:limit 3,3 第3,4,5页
    第三页:limit 6,3 第6,7,8页
    第四页:limit 9,3 第9,10,11页

    每页显示pageSize条记录
    第pageNo页:limit (pageNo-1)*pageSize,pageSize

  • 相关阅读:
    【Linux学习】用户身份与文件权限
    ES6新特性
    java 集合.Collection接口详解
    【东软实训Day3】Servlet
    逆势涨薪3k!新媒体运营毅然转行测试,我的入行秘籍是什么?
    Kotlin 协程之线程池探索之旅(与Java线程池PK)
    图像处理之同态滤波实现灰度图像增强
    C++——模板
    GET请求或者POST请求的特点和业务中的应用场景
    koa框架(二) mvc 模式及实现一个koa框架的web服务
  • 原文地址:https://blog.csdn.net/weixin_54248223/article/details/127558171