一、分组查询

使用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的更多相关文章

  1. oracle 基础SQL语句 多表查询 子查询 分页查询 合并查询 分组查询 group by having order by

    select语句学习 . 创建表 create table user(user varchar2(20), id int); . 查看执行某条命令花费的时间 set timing on: . 查看表的 ...

  2. 【数据库】SQL经典面试题 - 数据库查询 - 子查询应用二

    上节课我们通过子查询,完成了查询的最高分学生的需求,今天我们来学习子查询的分类,以及通过子查询来完成工作中经常遇到一些个性化需求. 子查询概念: 一个SELECT语句嵌套在另一个SELECT语句中,子 ...

  3. 【知识库】-数据库_MySQL之基本数据查询:子查询、分组查询、模糊查询

    简书作者:seay 文章出处: 关系数据库SQL之基本数据查询:子查询.分组查询.模糊查询 回顾:[知识库]-数据库_MySQL常用SQL语句语法大全示例 Learn [已经过测试校验] 一.简单查询 ...

  4. springdata 查询思路:基本的单表查询方法(id,sort) ---->较复杂的单表查询(注解方式,原生sql)--->实现继承类---->复杂的多表联合查询 onetomany

    springdata 查询思路:基本的单表查询方法(id,sort) ---->较复杂的单表查询(注解方式,原生sql)--->实现继承类---->复杂的多表联合查询 onetoma ...

  5. ylb: SQL表的高级查询-子查询

    ylbtech-SQL Server: SQL Server- SQL表的高级查询-子查询 SQL Server 表的高级查询-子查询. 1,ylb:表的高级查询-子查询返回顶部 --======== ...

  6. Python-select 关键字 多表查询 子查询

    sql 最核心的查询语句!!!! 增删改 单表查询 select语句的完整写法 关键字的书写顺序 执行顺序 多表查询 笛卡尔积 内连接 左外连接 右外连接 全外连接 通过合并左外连接和右外连接 子查询 ...

  7. MYSQL 查询方法 统计查询 链接查询 子查询

    mysql表格查询方法: 查询: 1.简单查询 select * from Info --查所有数据select Code,Name from Info --查指定列的数据select Code as ...

  8. MySQL的查询,子查询,联结查询,联合查询

    MySQL的查询,子查询,联结查询,联合查询 一.mysql查询的五种子句where(条件查询).having(筛选).group by(分组).order by(排序).limit(限制结果数) 二 ...

  9. Oracle的查询-子查询

    --子查询 --子查询返回一个值 --查询出工资和scott一样的员工信息 select * from emp where sal in (select sal from emp where enam ...

随机推荐

  1. Web前端开发工具总结

    前端开发工具: web前端开发乃及其它的相关开发, 推荐sublime text, webstorm(jetbrains公司系列产品)这两个的原因在于,有个技术叫emmet, http://docs. ...

  2. CSS基础教程 -- 媒体查询屏幕适配

    响应式布局 Media Query 的使用方法 在上例中, 我们使用Media Queries来根据3种不同尺寸的窗口使用3种不同的样式.通过不同的媒体类型和条件定义样式表规则,媒体查询让CSS可以更 ...

  3. Flex Viewer (二)——体系结构

    一.概述 在上一篇文章<深入浅出Flex Viewer (一)——概述>中,笔者对Flex Viewer用于构建以地图为中心的富客户端(RIA)应用的原型的功能和价值做了简要地介绍.在本文 ...

  4. userprofile同步用户失败的原因和解决方案

    userprofile同步账号进行出现同步不到用户.有个时候同步成功了但是为0个用户.有个时候提示同步失败或拒绝等错误.如何查看同步服务同步的结果.其实明白sharepoint2010同步用户的原理都 ...

  5. Snort - manual 笔记(四)

    1.7 Basic Output Snort可以做很多任务, 并且在任务完成后输出很多有用的统计信息. 一些不用说明就可以看懂, 其他的总结在这里, 不过只是一些基本的 1.7.1 Timing St ...

  6. 转载:kafka参数详解

    原文:http://kafka.apache.org/documentation.html ############################# System ################# ...

  7. Java Android HTTP实现总结

    Java Android HTTP实现总结 Http(Hypertext Transfer Protocol)超文本传输协议,是一个基于请求/响应模式的无状态的协议,Http1.1版给出了持续连接的机 ...

  8. 安卓+servlet+MySql 查询+插入(汉字乱码解决)

    问题: 安卓程序,通过servlet连接MySQL数据库,并实现查询和插入(修改,删除类似). 其中遇到的最大的问题是:汉字乱码问题(查询条件有汉字乱码.servlet的汉字到数据乱码.安卓通过ser ...

  9. ORACLE 10升级到10.2.0.5 Patch Set遇到的内核参数检测失败问题

    在测试ORACLE 10.2.0.4升级到10.2.0.5 Patch Set的过程中,遇到一个内核参数检查失败的问题,具体错误信息如下所示   实验环境: 操作系统:Oracle Linux Ser ...

  10. Thrift 跨服务开发框架

    Thrift概述 Thrift是一个软件框架,用来进行可扩展且跨语言的服务的开发.它结合了功能强大的软件堆栈和代码生成引擎,以构建在 C++, Java, Python, PHP,Ruby, Erla ...