08章 分组查询、子查询、原生SQL
一、分组查询
使用group by关键字对数据分组,使用having关键字对分组数据设定约束条件,从而完成对数据分组和统计
1.1 聚合函数:常被用来实现数据统计功能
① count() 统计记录条数
② sum() 求和
③ min() 求最小值
④ max() 求最大值
⑤ avg() 求平均值
例子:查询所有员工的平均工号
注:select语句查询出来只有一个值,因此不能用list(),list投影出来的是一个集合。在这里提供uniqueResult()方法
/*
* 分组查询 所有员工的平均工号
*/ @Test
public void avgTest(){
Query query=session.createQuery("select avg(empId) from Emp");
Object count=query.uniqueResult();
System.out.println(count);
}
输出结果:

二、子查询
子查询语句应用于HQL查询语句的where子句中。
子查询关键字:
all:子查询语句返回的所有记录
any:子查询语句返回的任意一条记录
some:和“any”意思相同
in:与“=any”意思相同
exists:子查询语句至少返回一条记录
例子:查询所有员工工资都小于2000的部门
/*
* 子查询 查询所有员工工资都小于2000的部门
*/ @Test
public void childTest(){
List<Dept> list=session.createQuery("from Dept d where 2000>all(select e.sal from d.emps e) and d.emps.size>0").list();
for (Dept dept : list) {
System.out.println(dept.getDeptName());
}
}
输出结果:

三、原生SQL查询和命名查询
注:对于原生SQL查询方式,使用Session的createSQLQuery()方法来创建SQLQuery对象,createSQLQuery()方法的参数是底层数据库的sql语句,SQLQuery接口继承了Query接口。该语句不能返回强类型的Dept对象,需使用addEntity()封装到一个Dept实体类
例子:查询部门名称
/*
* 原生sql
*/ @Test
public void sqlTest(){
SQLQuery query=session.createSQLQuery("select * from dept1").addEntity(Dept.class);
List<Dept> list=query.list();
for (Dept dept : list) {
System.out.println(dept.getDeptName());
}
}
输出结果:

命名查询:在映射文件中定义字符串形式的查询语句
将SQL语句配置到一个文件
如图所示:

08章 分组查询、子查询、原生SQL的更多相关文章
- oracle 基础SQL语句 多表查询 子查询 分页查询 合并查询 分组查询 group by having order by
select语句学习 . 创建表 create table user(user varchar2(20), id int); . 查看执行某条命令花费的时间 set timing on: . 查看表的 ...
- 【数据库】SQL经典面试题 - 数据库查询 - 子查询应用二
上节课我们通过子查询,完成了查询的最高分学生的需求,今天我们来学习子查询的分类,以及通过子查询来完成工作中经常遇到一些个性化需求. 子查询概念: 一个SELECT语句嵌套在另一个SELECT语句中,子 ...
- 【知识库】-数据库_MySQL之基本数据查询:子查询、分组查询、模糊查询
简书作者:seay 文章出处: 关系数据库SQL之基本数据查询:子查询.分组查询.模糊查询 回顾:[知识库]-数据库_MySQL常用SQL语句语法大全示例 Learn [已经过测试校验] 一.简单查询 ...
- springdata 查询思路:基本的单表查询方法(id,sort) ---->较复杂的单表查询(注解方式,原生sql)--->实现继承类---->复杂的多表联合查询 onetomany
springdata 查询思路:基本的单表查询方法(id,sort) ---->较复杂的单表查询(注解方式,原生sql)--->实现继承类---->复杂的多表联合查询 onetoma ...
- ylb: SQL表的高级查询-子查询
ylbtech-SQL Server: SQL Server- SQL表的高级查询-子查询 SQL Server 表的高级查询-子查询. 1,ylb:表的高级查询-子查询返回顶部 --======== ...
- Python-select 关键字 多表查询 子查询
sql 最核心的查询语句!!!! 增删改 单表查询 select语句的完整写法 关键字的书写顺序 执行顺序 多表查询 笛卡尔积 内连接 左外连接 右外连接 全外连接 通过合并左外连接和右外连接 子查询 ...
- MYSQL 查询方法 统计查询 链接查询 子查询
mysql表格查询方法: 查询: 1.简单查询 select * from Info --查所有数据select Code,Name from Info --查指定列的数据select Code as ...
- MySQL的查询,子查询,联结查询,联合查询
MySQL的查询,子查询,联结查询,联合查询 一.mysql查询的五种子句where(条件查询).having(筛选).group by(分组).order by(排序).limit(限制结果数) 二 ...
- Oracle的查询-子查询
--子查询 --子查询返回一个值 --查询出工资和scott一样的员工信息 select * from emp where sal in (select sal from emp where enam ...
随机推荐
- 自我反思--table的简单数据分页
自我反思 几天没有写工作总结了,整个人都变得懒散了.公司的工作也确实是不紧张,对于我这种自制力不强的人简直是...(想不到词了),完全放了风了... 每天逛逛淘宝,买些乱七八糟其实并没有什么用 ...
- SAP 使用较频繁的日期时间处理函数总结
在ABAP实际开发中,经常需要用到一些日期时间处理函数,个人感觉经常使用到的函数进行一下汇总 1. 根据工厂日历 计划交货日期 和 收货处理时间 来计算 销售计划中计划完工日期,其他类似日期计算等 ...
- SharePoint 2013 日历视图兼容性问题
在IE11上访问SharePoint 2013 calendar视图,发现加入兼容性视图以后访问,正常,如下图: 不加入兼容性视图IE11访问,出现兼容性问题,如下图: 因为有些环境有问题,有些环境没 ...
- 使用Reaver对WPS加密网络进行暴力破解
WPS状态探测 探测开启了WPS功能的AP,WPS Locked状态为NO的表示开启了WPS功能. wash -i wlan0mon PIN码获取 reaver -i wlan0mon -b MAC地 ...
- AppCompatActivity实现全屏的问题
前言:我的 Activity 是继承 BaseActivity , 而 BaseActivity 继承 AppCompatActivity . BaseActivity 的继承 /** * 应用程序的 ...
- AndroidAnnotations简单示例
@EActivity(R.layout.activity_main) public class MainActivity extends Activity { @ViewById(R.id.textV ...
- Android 手机卫士--构建服务端json、请求网络数据
本文地址:http://www.cnblogs.com/wuyudong/p/5900384.html,转载请注明源地址. 数据的传递 客户端:发送http请求 http://www.oxx.com/ ...
- git之二
1.什么是版本库? 版本库又名仓库,英文名repository,你可以简单理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改.删除,Git都能跟踪,以便任何时刻都可以追踪历史 ...
- 解决easy ui 1.4datebox控件不能清空的问题
用easy ui遇到这个问题,在网上找到了解决方案,不过是1.3.6版本的.现提供1.4版本的修改的具体位置和代码. 我们用的是这个 修改位置:12739行,添加代码: , { text: funct ...
- [20140722] forwarded和forwarding记录
背景: 今天被人文集forwarded和forwarding记录的事情. 简单介绍: 当堆表跟新某一个列的时候发现,不够放了,那么就在那行记录上标记forwarding,并把数据放到另外一个page, ...