JAVA-Unit03: SQL(基础查询) 、 SQL(关联查询)
Unit03: SQL(基础查询) 、 SQL(关联查询)
列别名
当SELECT子句中查询的列是一个函数
或者表达式时,那么查询出来的结果集
中对应的该字段的名字就是这个函数或者
表达式的名字。为此可以为这一列添加
别名,这样结果集中该字段就使用别名
作为该列的名字。
若希望别名区分大小写或者含有空格,那么
该别名可以使用双引号括起来。
SELECT ename,sal*12 "s al"
FROM emp AND,OR
AND优先级高于OR,可以通过括号
提高优先级。
SELECT ename,job,sal
FROM emp
WHERE sal>1000
AND job='SALESMAN'
OR job='CLERK' LIKE可以模糊匹配字符串
支持两个通配符:
%:任意个字符(-多个)
_:单一的一个字符 查看名字第二个字母是A的员工:
SELECT ename,sal,deptno
FROM emp
WHERE ename LIKE '_A%' IN(list)与NOT IN(list)
判断在列表中或者不在列表中。
常用在判断子查询的结果。 BETWEEN...AND...
判断在一个区间范围内 查看工资在1500到3000之间的员工信息
SELECT ename,sal,deptno
FROM emp
WHERE sal BETWEEN 1500 AND 3000 ANY,ALL
配合>,>=,<,<=判断使用,
判断一个列表中的内容是否满足要求
>ANY(list):大于列表之一即可(大于最小)
>ALL(list):大于列表所有(大于最大)
ANY,ALL通常用在子查询结果的判断上。 DISTINCT关键字
对结果集指定字段值重复的记录行
去除。 SELECT DISTINCT job FROM emp 对多列去重是指:这这些列的值的组合没有重复
SELECT DISTINCT job,deptno FROM emp ORDER BY子句,用于结果集排序
ORDER BY只能写在DQL的最后一个子句中
ORDER BY可以对结果集按照给定字段的值
进行升序(ASC)或降序(DESC)进行排序 查看公司的工资排名?
SELECT ename,sal
FROM emp
ORDER BY sal DESC 多字段排序是有优先级的,首先按照
第一个字段的排序规则对结果集排序,
当第一个字段有重复值时再按照第二个
字段的值排序,以此类推。
SELECT ename,deptno,sal
FROM emp
ORDER BY deptno,sal DESC 排序的字段若含有NULL值,NULL被
认作最大值。
SELECT ename,comm
FROM emp
ORDER BY comm 聚合函数
聚合函数也称为:多行函数,分组函数
聚合函数是用来统计结果集中的数据的
四个对值进行统计的函数:MAX,MIN,AVG,SUM
一个对记录数统计的函数:COUNT 统计公司工资的最大值与最小值
SELECT MAX(sal),MIN(sal)
FROM emp 公司的工资总和和平均值?
SELECT SUM(sal),AVG(sal)
FROM emp 查看公司总共多少人?
SELECT COUNT(ename)
FROM emp 聚合函数忽略NULL值。
SELECT SUM(comm),AVG(NVL(comm,0))
FROM emp SELECT NVL(comm,0) FROM emp 统计一张表记录总数常用:
SELECT COUNT(*)
FROM emp SELECT AVG(sal) FROM emp
WHERE deptno=20 分组
GROUP BY子句
GROUP BY子句可以将结果集按照指定
字段进行分组,分组原则为该字段值一
样的记录看作一组,配合聚合函数可以
进行细致的统计。 查看每个部门的平均工资?
SELECT AVG(sal),deptno
FROM emp
GROUP BY deptno 查看每个职位的平均工资与工资总和?
SELECT AVG(sal),SUM(sal),job
FROM emp
GROUP BY job GROUP BY可以按照多字段分组,分组
原则为这几个字段值的组合相同的记录
看作一组 查看同部门同职位的员工各多少人?
SELECT COUNT(*),deptno,job
FROM emp
GROUP BY deptno,job 查看部门的平均工资,前提是该部门
平均工资要高于2000
SELECT AVG(sal),deptno
FROM emp
WHERE AVG(sal)>2000
GROUP BY deptno WHERE中不能使用聚合函数作为过滤
条件,原因在于过滤时机不对。WHERE
是在第一次查询表中数据进行过滤的,
逐行过滤,将满足条件的记录查询出来。
聚合函数是建立在结果集基础上进行统计
的。这已经是在WHERE之后进行了。 HAVING子句
HAVING子句必须跟在GROUP BY子句之后,
用来对GROUP BY分组后对每一个分组进行
过滤。
HAVING可以使用聚合函数并根据结果来取舍
分组。 查看部门的平均工资,前提是该部门
平均工资要高于2000
SELECT AVG(sal),deptno
FROM emp
GROUP BY deptno
HAVING AVG(sal)>2000 查看平均工资高于2000的部门的
最高工资与最低工资分别是多少?
SELECT MAX(sal),MIN(sal),deptno
FROM emp
GROUP BY deptno
HAVING AVG(sal)>2000 查看平均工资高于2000的职位各多少人?
SELECT COUNT(*),job
FROM emp
GROUP BY job
HAVING AVG(sal)>2000 关联查询
关联查询的结果集中字段来自多张表
联合查询的结果。
关联查询的关键在于连接条件,即:
表之间数据的对应关系。 查看每个员工以及其所在部门的名称?
SELECT e.ename,e.deptno,d.dname
FROM emp e,dept d
WHERE e.deptno=d.deptno 关联查询中连接条件要与过滤条件同时
成立!
查看在NEW YORK工作的员工?
SELECT e.ename,d.dname,d.loc
FROM emp e,dept d
WHERE e.deptno=d.deptno
AND d.loc='NEW YORK' 关联查询中不添加链接条件或链接条件
无效则会出现笛卡儿积,这通常是一个
无意义的结果集。
笛卡儿积的记录数是由参与查询的表的记
录数乘积得到。 SELECT d.deptno,d.dname
FROM dept d 不满足连接条件的记录是不会被查询
出来的。
SELECT e.ename,d.dname
FROM emp e,dept d
WHERE e.deptno=d.deptno 查看KING在哪个城市工作?
SELECT e.ename,d.loc
FROM emp e,dept d
WHERE e.deptno=d.deptno
AND e.ename='KING' 关联查询中N张表关联查询,至少要有
N-1个连接条件。 内连接
内连接也是用来完成关联查询的。
SELECT e.ename,d.loc
FROM emp e JOIN dept d
ON e.deptno=d.deptno
WHERE e.ename='KING' 外连接
外连接在进行关联查询时除了可以将
满足连接条件的记录查询出来之外,也
可以将不满足连接条件的记录列出来。
外连接分为:左外连接,右外连接,全外连接
左外连接:以JOIN左侧表作为驱动表(所有记录
都会列出来),那么当驱动表中不满足
连接条件的记录来自右侧表中的字段值
为NULL。 SELECT e.ename,d.dname
FROM emp e
LEFT|RIGHT|FULL OUTER JOIN
dept d
ON e.deptno=d.deptno SELECT e.ename,d.dname
FROM emp e,dept d
WHERE e.deptno=d.deptno(+) 自连接
当前表的一条记录可以对应当前表自己的
多条记录这样的设定就是自连接。
自连接保存属性相同的数据但是之间有存在
上下级关系的树状结构数据使用。 SELECT empno,ename,mgr
FROM emp 查看每个员工的名字以及其上司的名字?
SELECT e.ename,m.ename
FROM emp e,emp m
WHERE e.mgr=m.empno 查看SMITH的上司在哪个城市工作?
JAVA-Unit03: SQL(基础查询) 、 SQL(关联查询)的更多相关文章
- [SQL基础教程] 3-4 对查询结果进行排序/ORDER BY
[SQL基础教程] 3-4 对查询结果进行排序/ORDER BY ORDER BY SELECT <列名1>,<列名2>,<列名2>... FROM ORDER B ...
- MySQL查询(关联查询)
一.mysql查询与权限 (一)数据库关联查询 **内连接查询(inner join)** 查询两个表共有的数据,交集 SELECT * FROM tb1 INNER JOIN tb2 ON 条件 所 ...
- Mongoose如何实现统计查询、关联查询
[问题]Mongoose如何实现统计查询.关联查询 发布于 4 年前 作者 a272121742 13025 次浏览 最近业务上提出一个需求,要求能做统计,我们设计的文档集,统计可能跨越的文档会 ...
- Oracle SQL——varchar2() 和 char()关联查询 存在空格
背景 表dbcontinfo 字段loanid,类型为varchar2(60) 表dbloanbal 字段loanid,类型为char(60) loanid字段实际长度为24位 问题 两张表dbloa ...
- MyBatis基础:MyBatis关联查询(4)
1. MyBatis关联查询简介 MyBatis中级联分为3中:association.collection及discriminator. ◊ association:一对一关联 ◊ collecti ...
- JAVA入门[9]-mybatis多表关联查询
概要 本节要实现的是多表关联查询的简单demo.场景是根据id查询某商品分类信息,并展示该分类下的商品列表. 一.Mysql测试数据 新建表Category(商品分类)和Product(商品),并插入 ...
- Mybatis框架基础入门(七)--关联查询
1.一对一查询 1.1 使用resultType接收查询结果 修改pojo类 public class OrderUser extends order { private String usernam ...
- Mybatis高级查询之关联查询
learn from:http://www.mybatis.org/mybatis-3/zh/sqlmap-xml.html#Result_Maps 关联查询 准备 关联结果查询(一对一) resul ...
- mysql系列九、mysql语句执行过程及运行原理(分组查询和关联查询原理)
一.背景介绍 了解一个sql语句的执行过程,了解一部分都做了什么,更有利于对sql进行优化,因为你知道它的每一个连接.where.分组.子查询是怎么运行的,都干了什么,才会知道怎么写是不合理的. 大致 ...
- (大数据工程师学习路径)第四步 SQL基础课程----SQL介绍及mysql的安装
一.数据库和SQL介绍 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库,它的产生距今已有六十多年.随着信息技术和市场的发展,数据库变得无处不在:它在电子商务.银行系统等众多领域都 ...
随机推荐
- 关于ie下消除offset 问题解决
这个问题应该是上周就发现了,所有页面都没有问题,偏偏就一个页面出现不兼容问题,而且他们用的是同一个文件.这真是一个神奇的事情.今天一来上班,我就着手解决这个问题,分析查看原来是这个元素多了一个offs ...
- L3-010. 是否完全二叉搜索树
L3-010. 是否完全二叉搜索树 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 将一系列给定数字顺序插入一个初始为空的二叉搜 ...
- 【后台测试】postman简介
◆版权声明:本文出自胖喵~的博客,转载必须注明出处. 转载请注明出处:http://www.cnblogs.com/by-dream/p/6266047.html 在接口测试的过程中,经常拿到一个接口 ...
- 网络编程的基本概念,TCP/IP协议简介
8.1.1 网络基础知识 计算机网络形式多样,内容繁杂.网络上的计算机要互相通信,必须遵循一定的协议.目前使用最广泛的网络协议是Internet上所使用的TCP/IP协议. 网络编程的目的就是指直接或 ...
- DB2导入导出数据
1.导出表数据到txt文件: export to /brcb_edp/data_public_edp/file/CCDM/file/FILE_CCDM_DR_CARD_CUST_DET.txt of ...
- Chrome浏览器优化技巧
Chrome浏览器开发者工具Network窗口下,可以查看下载各组件所需的具体时间 根据上表进行简要分析—— Stalled(阻塞) 浏览器对同一个主机域名的并发连接数有限制,因此如果当前的连接数已经 ...
- MP3格式音频文件结构解析
MP3的全称是MPEG Audio Layer3,它是一种高效的计算机音频编码方案,它以较大的压缩比将音频文件转换成较小的扩展名为.MP3的文件,基本保持原文件的音质.MP3是ISO/MPEG标准的一 ...
- pip安装tensorflow出错怎么办
随着人工智能的开发越来越多人参与,现在下载tensorflow 1.2版本也经常出错了,如下: 这时怎么办呢? 其实比较简单,可以通过pypi的网站来下载: https://pypi.python.o ...
- k近邻法( k-nearnest neighbor)
基本思想: 给定一个训练数据集,对新的输入实例,在训练数据集中找到与该实例最邻近的k个实例,这k个实例的多数属于某个类,就把该输入实例分为这个类 距离度量: 特征空间中两个实例点的距离是两个实例点相似 ...
- 国内知名的自然语言处理(NLP)团队
工业界 腾讯人工智能实验室(Tencent AI Lab) 百度自然语言处理(Baidu NLP):对外提供了百度AI开放平台,王海峰(现任百度副总裁,AI技术平台体系AIG总负责人) 微软亚洲研究院 ...