[亲测]Oracle查询--单表查询,连接查询(一)
ORACLE查询(单表查询,连接查询)
一、单表查询
(一)简单条件查询
1. 查询水表编号为 30408 的业主记录 ( 精确查询 )
select * from t_owners where watermeter= 30408;
结果:
2. 查询业主名称包含“刘”的业主记录 (模糊查询)
select * from t_owners where name like '%刘%';
结果:
3. 查询业主名称包含“刘”的并且门牌号包含5 的业主记录(and 运算符 )
select * from t_owners where name like '%刘%' and housenumber like '%5%';
结果:
4. 查询业主名称包含“刘”的或者门牌号包含5 的业主记录(or 运算符)
select * from t_owners where name like '%刘%' or housenumber like '%5%' ;
结果:
5. 查询业主名称包含“刘”的或者门牌号包含5的业主记录,并且地址编号为 3 的记录(and 和 or 运算符混合使用)
select * from t_owners where (name like '%刘%' or housenumber like '%5%') and addressid like '%3%';
结果:
6. 查询台账记录中用水字数大于等于10000 ,并且小于等于20000 的记录( 范围查询 )
--方式一
select * from t_account where usenum between 10000 and 20000;
--方式二
select * from t_account where usenum >= 10000 and usenum <= 20000;
结果:
7. 查询T_PRICETABLE 表中 MAXNUM为空的记录(空值查询 )
select * from t_pricetable where maxnum is null;
结果:
8. 查询T_PRICETABLE 表中 MAXNUM不为空的记录(非空查询 )
select * from t_pricetable where maxnum is not null;
结果:
(二)去掉重复记录
需求:查询业主表中的地址ID,不重复显示
--方式一
select distinct addressid from t_owners;
--方式二
select distinct(addressid) from t_owners;
结果:
(三)排序查询
1.升序排序
需求:对 T_ACCOUNT 表按使用量进行升序排序
select * from t_account order by usenum asc;
结果:
2.降序排序
需求:对 T_ACCOUNT 表按使用量进行降序排序
select * from t_account order by usenum desc;
结果:
(四)伪列只能用来查,不能做增删改操作
1 .ROWID :物理文件上唯一区别这条记录的唯一标识
查询 T_AREA 表的 ROWID 值和 T_AREA的值
select rowid , t.* from t_area t;
结果:
用 ROWID 作为查询条件
select rowid ,t.* from t_area t where rowid = 'AAADW+AAFAAAADcAAA';
结果:
2.ROWNUM 为结果集中每一行标识一个行号
查询 T_AREA 表的 ROWNUM 值和 T_AREA的值
select rownum ,t.* from t_area t ;
结果:
(五)聚合统计
1 . 聚合函数
1 统计2012 年所有用户的用水量总和
select sum(usenum) from t_account where year = '2012';
结果:
2 统计2012 年所有用水量(字数)的平均值
select avg(usenum) from t_account where year = '2012';
结果:
3 统计2012 年最高用水量(字数)
select max(usenum) from t_account where year = '2012';
结果:
4 统计2012 年最低用水量(字数)
select min(usenum) from t_account where year = '2012';
结果:
5 统计业主类型ID 为 1 的业主数量
select count(month) from t_account where ownertype = 1;
结果:
2.分组聚合 Group by
按区域分组统计2012 年水费合计数
select areaid , sum(areaid) from t_account where year = '2012' group by areaid;
结果:
3 .分组后条件查询 having
查询 2012 年水费合计大于 169000 的区域及水费合计
select areaid , sum(money) from t_account where year = '2012' group by areaid having sum(money) > 169000;
结果:
二、连接查询
(一)多表内连接查询
1. 查询显示业主编号,业主名称,业主类型名称
select os.id , os.name , oe.name from t_ownertype oe , t_owners os where os.ownertypeid = oe.id;
结果:
2 .查询显示业主编号,业主名称、地址和业主类型
select os.id , os.name , ad.name, oe.name from t_ownertype oe , t_owners os , t_address ad where os.ownertypeid = oe.id and os.addressid = ad.id;
结果:
3. 查询显示业主编号、业主名称、地址、所属区域、业主类型
select os.id , os.name , ad.name , ar.name , oe.name from t_ownertype oe , t_owners os , t_area ar , t_address adwhere os.ownertypeid = oe.id and os.addressid = ad.id and ad.areaid = ar.id;
结果:
4. 查询显示业主编号、业主名称、地址、所属区域、收费员、业主类型
select os.id , os.name , ad.name ,ar.name , op.name ,oe.name from t_ownertype oe , t_owners os , t_area ar , t_address ad ,t_operator op where os.ownertypeid = oe.id and os.addressid = ad.id and ad.areaid = ar.id and ad.operatorid = op.id;
结果:
(二)左外连接查询
1 .查询业主的账务记录,显示业主编号、名称、年、月、金额。如果此业主没有账务记录也要列出姓名
-- MySQL
select os.id , os.name , ac.year , ac.month,ac.money from t_owners os left join t_account ac on os.id = ac.owneruuid;
-- Oracle
select os.id ,os.name , ac.year , ac.month , ac.money from t_owners os , t_account ac where os.id = ac.owneruuid(+);
结果:
(三)右外连接查询
1 . 查询业主的账务记录,显示业主编号、名称、年、月、金额。如果账务记录没有对应的业主信息,也要列出记录
-- MySQL
select os.id , os.name ,ac.year , ac.month , ac.moneyfrom t_owners os right join t_account ac on os.id = ac.owneruuid;-- Oracle
select os.id ,os.name , ac.year , ac.month , ac.moneyfrom t_owners os, t_account ac where os.id(+) = ac.owneruuid;
结果:
以下推荐个人文章
[亲测]Oracle数据库安装与配置
[亲测]Oracle数据库操作
[亲测]Oracle表的创建、修改与删除
[亲测]Oracle数据库约束
[亲测]Oracle数据增删改
[亲测]Oracle查询–单表查询,连接查询(一)
[亲测]Oracle查询–子查询,分页查询(二)
[亲测]Oracle查询–单行函数–PL/SQL,分析函数,集合运算(三)
Oracle执行计划Explain Plan 如何使用
[亲测]数据库优化
[亲测]Oracle查询--单表查询,连接查询(一)相关推荐
- Oracle单表内连接查询
源数据如下: 根据Col3值,把Co1和Co2映射并去空查询,预期结果如下: 思路分析: 使用单表内连接+where条件判断非空即可 查询SQL: SELECT t1.col1,t2.col2 FRO ...
- Mysql中父子查询 单表根据id查询parentId
字段不做特殊声明,下面上方法 //创建一个方法 名字为 getParentIdListCREATE FUNCTION `getParentIdList`(roleId BIGINT) // 参数可以根 ...
- SQL查询单表数据(一)
[SQL从一点一滴分析系列文章]为实际开发中的点点滴滴的总结,从最最简单的SQL 查询 到 综合分析查询 在分析 SQL 时,也会同时分析 mybatis .Hibernate 中的相关操作 点击查看 ...
- SQL查询单表数据之组合(三)
[SQL从一点一滴分析系列文章]为实际开发中的点点滴滴的总结,从最最简单的SQL 查询 到 综合分析查询 在分析 SQL 时,也会同时分析 mybatis .Hibernate 中的相关操作 点击查看 ...
- mysql查询单表的销售额_MYsql数据库单表百万数据量查询
最近总在意自己的网页刷新数据的速度,mysql5.7和mysql8.0单表数据库导入百万甚至千万数据的时候,会不会卡死,会不会慢? 因此编写测试用例,通过Navicat Premium来查询单表的时间 ...
- MYSQL 单表一对多查询,将多条记录合并成一条记录
MYSQL 单表一对多查询,将多条记录合并成一条记录 一.描述: 在MySQL 5.6环境下,应工作需求:将一个表中多条某个相同字段的其他字段合并(不太会表达,有点绕,直接上图) 想要达到的效果: 实 ...
- SQL数据查询——单表查询(二)
集合查询+单表查询相关实例 集合查询 1.UNION 2.INTERSECT 3.EXCEPT 相关实例 实例1 实例2 集合查询 SQL SERVER集合操作主要包括 并操作 UNION 交操作 I ...
- mysql 一对多 右表多条记录合并_MYSQL 单表一对多查询,将多条记录合并成一条记录...
一.描述: 在MySQL 5.6环境下,应工作需求:将一个表中多条某个相同字段的其他字段合并(不太会表达,有点绕,直接上图) 想要达到的效果: 实现SQL语句: SELECT a.books, GRO ...
- 怎么提高大表和小表的连接查询效率?
怎么提高大表和小表的连接查询效率? 我想到会不会和大表和小表的前后顺序有关系. 小表优先能极大减少比对次数 效率更好 例子: a表10条记录 b表10000条记录 连接条件是a.id = b.id 假 ...
最新文章
- 人脸识别技术及其应用领域
- h5 iframe显示不全_H5 唤醒APP小记
- VS2010 error C299: “Font”:“struct”类型重定义
- linux中如何统计目录中的文件,[Linux目录文件]在Linux中统计目录内文件
- OpenHarmony3.0 编译烧录
- 在频域上,随机接入前导占用()个资源块对应的带宽
- Android AIDL实例解析
- Go语言编程快速入门
- transformer 翻译模型
- cadence从原理图导出器件库_一种cadence中原理图替换元器件库的方法与流程
- Unity-ShaderLab 逆向还原《原神》角色卡通渲染思路与实现(保姆级教学)-1
- 华为服务器清除系统密码,华为服务器重置密码
- no identity-based policy allows the cloudformation:CreateStack action
- 360浏览器插件管理
- java学习总结(16.05.25)eclipse的查找和替换功能 Ctrl+F
- 玩转iOS开发:iOS 10 新特性《Siri Kit》
- 数据科学太难?这些陷阱请避开,正能量很重要!
- 【分享】参加一个0元小白理财训练营开营第1天的学习笔记
- 数据结构——二叉树的实现
- 如何修复Microsoft Excel不响应错误