首页 > 数据库 >老杜MySQL/days.02

老杜MySQL/days.02

时间:2022-09-25 15:58:14浏览次数:44  
标签:join pageSize 老杜 limit MySQL days.02 deptno 连接

1. distinct 只能出现在所有字段的前方,但是可以结合分组函数使用;

2. 笛卡尔积:两张表的连接查询不加限制,就会出现;(最终数据条数 = 两表记录条数的乘积)

  注:加了限制后,匹配的次数不会减少,还是两表记录条数乘积,只不过进行了按条件筛选;(所以应该避免表的连接次数)

3. SQL92 和SQL99语法

  • join <=> inner join,可以省略inner,内连接
  • 99和92的语法区别
    //SQL92 结构不清晰
    select
        e.ename,d.dname
    from
        emp e, dept d
    where 
        e.deptno = d.deptno
    //SQL99 把连接表的条件、筛选数据的条件划分开
    select
        e.ename,d.dname
    from
        emp e
    join 
        dept d
    on 
        e.deptno = d.deptno
    where
  • left / right join <=> left / right outer join,可以省略outer,外连接

4. union(效率更高)

  相对于表的连接来说,每连接一次新表,则匹配的次数满足笛卡尔积;

  使用注意:

    • union在进行结果合并的时候,要求两个结果集的列数相同;
    • 结果集合并时对应列和列的数据类型也必须相同;(MySQL中不报错,Oracle会)

5. limit(在order by之后执行

  作用:将查询结果集的一部分取出来,通常使用在分页查询当中;

  用法:limit startIndex, length;

    缺省用法:limit index;取前index条记录;

6. 分页:每页显示 pageSize 条记录;

  第 pageNo 页:limit (pageNo - 1)* pageSize,PageSize;

  startIndex = (pageNo - 1)* pageSize;

7. 总结执行顺序

  1. from

  2. where

  3. group by

  4. having

  5. select

  6. order by

  7. limit...

  

标签:join,pageSize,老杜,limit,MySQL,days.02,deptno,连接
From: https://www.cnblogs.com/LinxhzZ/p/16727999.html

相关文章