06-分页查询、联合查询


1. 分页查询

应用场景:当要显示的数据,一页显示不全,需要分页提交sql请求

语法:

SELECT 查询列表
FROMJOIN TYPE2
ON 连接条件
WHERE 筛选条件
GROUP BY 分组字段
HAVING 分组后的筛选
ORDER BY 排序后的字段
LIMIT offset,size

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

offset是可选的,默认为0

#案例1:查询前五条员工信息
SELECT * FROM employees LIMIT 0,5
SELECT * FROM employees LIMIT 5
#案例2:有奖金的员工信息,并且工资较高的前十名显示出来
SELECT *
FROM employees
WHERE commission_pct IS NOT NULL
ORDER BY salary DESC
LIMIT 10;

特点:

  • 起始条目索引从0开始
  • limit子句放在查询语句的最后
  • 公式:select * from 表 limit (page-1)*sizePerPage, sizePerPage
    假如:
    每页显示条目数sizePerPage
    要显示的页数 page

2. 联合查询

应用场景:要查询的结果来自多个表,且多个表没有直接的连接关系,但查询的信息一致时

语法:

select 字段|常量|表达式|函数 【from 表】 【where 条件】 union 【all】
select 字段|常量|表达式|函数 【from 表】 【where 条件】 union 【all】
select 字段|常量|表达式|函数 【from 表】 【where 条件】 union  【all】
.....
select 字段|常量|表达式|函数 【from 表】 【where 条件】

案例:

#1.查询部门编号>90或者邮箱中包含a的员工信息
#当查询结果来自一个表时,可以用之前的方法,也可以用联合查询
SELECT *
FROM employees
WHERE email LIKE '%a%'
OR department_id > 90;

SELECT *
FROM employees
WHERE email LIKE '%a%'
UNION
SELECT *
FROM employees
WHERE department_id > 90;
#当查询结果来自多个表时:
#查询中国用户中男性的信息以及外国用户中男性的信息
SELECT id,cname,csex FROM T_CA WHERE csex='男'
UNION
SELECT t_id,tName,tGender FROM T_UA WHERE tGender='male'

特点:

1、多条查询语句的查询的列数必须是一致的

2、多条查询语句的查询的列的类型几乎相同

3、union代表去重,union all代表不去重

3. 查询相关测试题讲解

已知表stuinfo:id 学号、name 姓名、email 邮箱:john@126.com,gradeID 年级编号,sex 性别:男 女 age 年龄

表grade:id 年级编号、gradeName 年级名称

# 查询所有学员的邮箱的用户名(注:邮箱中@前面的字符)
SELECT SUBSTR(email, 1, instr('@')-1) 用户名
FROM stuinfo
# 查询男生和女生的个数
SELECT COUNT(*) 个数,sex
FROM stuinfo
GROUP BY sex;
# 查询年龄大于18岁的所有学生的姓名和年级名称
SELECT name, gradeName 
FROM stuinfo s
JOIN grade g
ON s.gradeID=g.id
WHERE s.age > 18;
# 查询哪个年级的学生的最小年龄大于20岁1)查询每个年级的学生的最小年龄
SELECT MIN(age)
FROM stuinfo
GROUP BY gradeID;

(2)在(1)结果集中查找>20的年级编号
SELECT gradeID
FROM stuinfo
GROUP BY gradeID;
HAVING MIN(age)>20;

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值