mysql分页查询程序_MySQL分页查询

selece 查询列表

from 表

join  type  join 表2

on  连接条件

where 筛选条件

group by 分组字段

having 分组后的筛选

order by  排序的字段

limit offset,size

注: offset 要显示条目的起始索引(起始索引从0开始)

size 要显示的条目个数

SELECT * FROM employees LIMIT 0 ,5     #如果是从 起始位置0开始的 可以不写

SELECT * FROM employees LIMIT 5

分页查询 写到最后面:   limit也是最后才执行的

select * from employees WHERE commission_pct is not null ORDER BY salary desc limit 10

公式: 要显示的页数 page  每页的条目数size  : limit  ( page-1)*size , size

select 查询列表 from 表 limit

总结:

查询列表中涉及到的所有关键字 以及执行先后顺序

书写顺序:

select 查询列表  from 表   连接类型  join 表2  on 连接条件  where 筛选条件  group by 分组列表 having 分组后的筛选 order 排序列表 limit  偏移,条目数

执行顺序:

执行from 表  然后 进行join 形成了一个笛卡尔后的大型表

on 笛卡尔表基础之上 满足条件后 形成新的 虚拟表

然后 在这个新的表上进行筛选 where

进行分组 形成一个分组后的结果集  group by

对结果集进行筛选   having

走完having 之后进行select 选出来进行查看 打印显示出来

然后进行排序

排序之后进行分页显示

总结:每一条 都会形成一个新的表格

总结SQL99 语法:

1、 内连接

语法: select 查询列表    from  表1  别名  (inner) join 表2 别名 on  连接条件

where 筛选条件  group by  分组列表    having 分组后的筛选  order by 排序列表  limit 子句

特点: 表的顺序可以调换   实现的效果就是 多表的交集部分

分类: 等值连接 非等值连接 自连接

2 、外连接:

语法:   select 查询列表    from  表1  别名  left|right|full [outer] join  表2 别名 on  连接条件

where 筛选条件  group by  分组列表    having 分组后的筛选  order by 排序列表  limit 子句

特点:

查询的结果 = 主表中所所有的行, 其中从表和它匹配的嫁给你希纳是匹配行,如果没有匹配的则显示null

left  join   right join

full  join 两边都是主表

一般用于 查询除了交集部分的剩余的不匹配的行

交叉连接:

select 查询表名 from 表1 别名  cross join 表2 表名

类似于笛卡儿积

练习题:

案例 查询最低工资的员工姓名和工资

SELECT last_name, salary from employees where salary = (

select MIN(salary) from employees

)

案例  查询平均工资最低的部门信息和该部门的平均工资

第一步: SELECT AVG( salary ), department_id FROM employees GROUP BY department_id

第二步: SELECT department_id from employees GROUP BY department_id  order by avg(salary) limit 1

整合 最后查询部门信息

SELECT * from departments

where department_id = (

SELECT department_id from employees GROUP BY department_id order BY AVG( salary ) limit 1 )

你可能感兴趣的:(mysql分页查询程序)