`

cookbook学习笔记一

阅读更多

select * from scott.dept;
#检索所有行
select * from scott.emp;
#检索部分行
select * from scott.emp where deptno=10;
#查找满足条件的行
select * from scott.emp where( deptno=10 or comm is not null or sal<=2000) and deptno=20;
#检索部分列
select ename,deptno,sal from scott.emp;
#为列取有意义的名称
select sal as salary,comm as commission from scott.emp;
#在where子句中引用别名的列
select sal as salary,comm as commission from scott.emp where salary<5000;
select * from (select sal as salary,comm as commission from scott.emp) x where salary<5000;
#连接列值
select ename,job from scott.emp where deptno=10;
select ename || 'WORKS AS A '||job as msg from scott.emp where deptno=10;
#在select中使用条件逻辑
select ename,sal,case
when sal<=2000 then 'UNDRERPAID'
when sal>=400 then 'OVERPAIN'
else 'OK'
end as status
from scott.emp;
#限制返回的行数
select * from scott.emp where rownum<=5;
#从表中随机返回n条记录
select * from ( select ename,job from scott.emp order by dbms_random.value) where rownum<=5;
#查找空值
select * from scott.emp where comm is null;
#将空值转换为实际值
select coalesce(comm,0) from scott.emp;
#按模式搜索
select ename,job,deptno from scott.emp where deptno in(10,20);
select ename,job,deptno from scott.emp where deptno in(10,20) and (ename like '%I%' or job like '%ER');
#查询结果排序
#以指定的次序返回查询结果
select ename,job,sal from scott.emp where deptno=10 order by sal asc;
select ename,job,sal from scott.emp where deptno=10 order by sal desc;
#按多个字段排序
select * from scott.emp;
select empno,deptno,sal,ename,job from scott.emp order by deptno,sal desc;
#按子串排序
select ename,job from scott.emp order by substr(job,length(job)-2);
#对字母数字混合的数据排序(视图)
create view v as select ename||' in '||deptno as data from scott.emp;
select * from v;
#按deptno排序
select data from v order by replace(data,replace(translate(data,'0123456789','##########'),'#',''),'');
#按ename排序
select data from v order by replace(translate(data,'0123456789','##########'),'#','');
#处理排序空值
select ename,sal,comm from scott.emp order by 3;
select ename,sal,comm from scott.emp order by 3 desc;
#根据数据项的键排序
select ename,sal,job,comm from scott.emp order by case
when job='SALESMAN' then comm
else sal end;
select * from scott.emp;
select * from scott.dept;
#记录集的叠加(多个表的行组合在一起)
select ename as ename_and_dname, deptno from scott.emp
where deptno=10
union all
select '-------------------',null
from scott.dept where rownum=1
union all
select dname,deptno
from scott.dept;
#组合相关的行
select e.ename,d.loc
from scott.emp e,scott.dept d
where e.deptno=d.deptno and e.deptno=10;
#两个表中查找共同行
create view v1
as select ename,job,sal from scott.emp
where job='CLERK'
#并没有返回所有列
select * from v1;
#返回所有列
select empno,ename,job,sal,deptno from scott.emp
where (ename,job,sal)
in (select ename,job,sal from scott.emp
intersect select ename,job,sal from v1);
#从一个表中查找另一个表中没有的值
select deptno from scott.dept minus select deptno from scott.emp;
#在一个表中查找与其他表不匹配的记录
select d.* from scott.dept d,scott.emp e
where d.deptno=e.deptno(+)
and e.deptno is not null;
#向查询中增加联接而不影响其他联接
select e.ename,d.loc,b.received from scott.enp e,scott.dept d,scott.bonus b
where e.deptno=d.deptno
and e.empno=b.empno(+)
order by 2;
#检测两个表中是否有相同的数据
create view v2
as select * from scott.emp where deptno!=10
union all
select * from scott.emp where ename='WARD'
select * from v2;

(select empno,ename,job,mgr,hiredate,sal,comm,deptno,count(*) as cnt
from v2
group by empno,ename,job,mgr,hiredate,sal,comm,deptno
minus
select empno,ename,job,mgr,hiredate,sal,comm,deptno,count(*) as cnt
from scott.emp
group by empno,ename,job,mgr,hiredate,sal,comm,deptno)
union all
(select empno,ename,job,mgr,hiredate,sal,comm,deptno,count(*) as cnt
from scott.emp
group by empno,ename,job,mgr,hiredate,sal,comm,deptno
minus
select empno,ename,job,mgr,hiredate,sal,comm,deptno,count(*) as cnt
from v2
group by empno,ename,job,mgr,hiredate,sal,comm,deptno
)
#识别和消除笛卡儿积
select e.ename,d.loc,e.deptno from scott.emp e,scott.dept d
where e.deptno=10;
select e.ename,d.loc,e.deptno from scott.emp e,scott.dept d
where e.deptno=10 and e.deptno=d.deptno;
#新建奖金表
create table scott.emp_bonus(empno varchar(4),
receiver date,
type int);
#聚集和联接
select distinct deptno,total_sal,total_bonus
from (
select e.empno,
e.ename,
sum(distinct e.sal) over
(partition by e.deptno) as total_sal,
e.deptno,
sum(e.sal*case when eb.type=1 then .1
when eb.type=2 then .2
else .3 end) over
(partition by deptno) as total_bonus
from scott.emp e,scott.emp_bonus eb
where e.empno=eb.empno
and e.deptno=10)x
#聚集与外联接
select deptno,
sum(distinct sal) as total_sal,
sum(bonus) as total_bonus
from(
select e.empno,
e.ename,
e.sal,
e.deptno,
e.sal* case when eb.type is null then 0
when eb.type=1 then .1
when eb.type=2 then .2
else .3 end as bonus
from scott.emp e , scott.emp_bonus eb
where e.empno=eb.empno(+)
and e.deptno=10)
group by deptno;

#多从个表中返回丢失的数据
select d.deptno,d.dname,e.ename from scott.dept d,scott.emp e
where d.deptno=e.deptno(+)
union
select d.deptno,d.dname,e.ename from scott.dept d,scott.emp e
where d.deptno(+)=e.deptno


#在运算比较时使用null值
select ename,comm from scott.emp where coalesce(comm,0) < (select comm from scott.emp where ename='WARD');

分享到:
评论

相关推荐

    Jakarta Commons CookBook学习笔记

    ### Jakarta Commons CookBook 学习笔记 #### 一、Commons Lang: EqualsBuilder and HashCodeBuilder **1.1 概述** `EqualsBuilder` 和 `HashCodeBuilder` 是 Apache Commons Lang 包中提供的两个工具类,用于...

    ActionScript3.0 Cookbook 学习笔记

    这里展示了如何定义一个包,并在其中包含一个名为`ExampleApplication`的类,该类继承自`Sprite`。通过这种方式,可以创建复杂的图形和动画,同时保持代码的整洁和模块化。 ### 跟踪消息:使用`trace` 在调试代码...

    FLEX学习笔记

    《FLEX学习笔记》 FLEX,全称为Flex Builder,是由Adobe公司开发的一款基于MXML和ActionScript的开源框架,用于构建富互联网应用程序(RIA)。它允许开发者创建具有交互性、响应性和丰富用户体验的Web应用。FLEX的...

    Jakarta Commons cookbook.chm与中文版的笔记

    在阅读《Jakarta Commons Cookbook》时,你可以学习如何有效地利用这些组件来提升你的Java项目。例如,了解如何使用` FileUtils.copyFile()`方法复制文件,或通过` StringUtils.join()`将数组元素连接成字符串。此外...

    SOAPUI学习笔记(1-150页)

    网络服务是一种应用程序组件,它使用开放协议进行通信,可以独立运行并自我描述,通过通用描述、发现与集成(UDDI)可以被发现,且能被其他应用程序使用。网络服务的基础是XML,它是一种可以跨不同平台和编程语言...

    思科 Cisco IOS Cookbook 中文精简版 V1.5版

    《思科 Cisco IOS Cookbook》是一本专注于思科IOS系统配置的专业指南,旨在帮助读者快速解决网络配置中遇到的问题。该书属于O'Reilly出版社的Cookbook系列,这一系列书籍的特点是提供实用的操作指南,读者可以像使用...

    j7cc:Java 7 Concurrency Cookbook 翻译+学习笔记

    《Java 7 Concurrency Cookbook》是一本专注于...以上知识点是《Java 7 Concurrency Cookbook》中可能涉及的核心内容,通过深入学习和实践,开发者可以提升在多线程环境下的编程技能,编写出更加高效、稳定的并发程序。

    Matrix Cookbook

    《矩阵食谱》(Matrix Cookbook)是一本关于矩阵和与之相关的数学公式的实用速查手册,包含了大量关于矩阵运算、性质、近似和不等式等内容。这本书由Kaare Brandt Petersen和Michael Syskind Pedersen撰写,自2007年...

    The Matrix Cookbook.pdf

    《矩阵食谱》是一本电子形式的参考书籍,由Kaare Brandt Petersen和Michael Syskind Pedersen撰写,版本日期为2012年11月15日。这本书是矩阵相关代数和关系事实的一个汇集,内容包括矩阵的迹(Trace)、行列式...

    Python _GDAL_OGR_Cookbook.rar

    GDAL ogr在python编程中使用的基础教程,本来都是网页版的,我给打印成pdf的了,还附带了几个最近几年gdal开发者的主题演讲ppt,以及gdal学习笔记,通过这个资源你可以比较全面地了解gdal并且可以在python中快速上手...

    emacs-cookbook:Emacs实践笔记(中文)

    有时候学习了一部分相关的知识,如果长期不使用又会忘记,写这本 开源书的目标主要是做记录,以备后查。我从2012年就开始使用Emacs,时间不算太长,现在Emacs 已经成为必备的工具! 参考 主要参考: 生成整本书 ...

    python-cookbook:Jupyter笔记本中的《 Python Cookbook》中的代码

    《Python Cookbook》是一本经典的Python编程指南,由David Beazley和Brian K. Jones共同撰写。这本书涵盖了Python语言的各种实用技巧和高级用法,旨在帮助读者提升编程效率和代码质量。在Jupyter Notebook环境中,...

    python cookbook

    《Python Cookbook》这本书是为有经验的Python程序员准备的,目的是为了帮助他们深化对Python语言和现代编程范式理解。本书内容侧重于高级技术,很多材料都是针对图书馆、框架和应用程序中使用的更高级技巧。整本书...

    pandas-cookbook-code-notes_jb51.rar

    1. **数据结构**:Pandas的核心数据结构包括Series(一维数据结构)和DataFrame(二维表格型数据结构)。这两个结构都支持丰富的操作,如索引、切片、合并、重塑等。此外,Pandas还提供了Panel(三维数据结构),...

    Packt.Spark.Cookbook.1783987065

    《Spark Cookbook》是一本专注于Apache Spark技术的指南书籍,由Packt Publishing出版。书名中的数字"1783987065"可能是该书的ISBN号,用于识别图书的独特身份。这本书旨在帮助读者深入理解和应用Spark,一个强大的...

    cookbook:个人查阅手册

    学习资源 实践指南 食谱 Python环境 创建环境 # 代表创建一个python3.6的环境,我们把它命名为python36 conda create - - name python36 python = 3.6 # 查看环境 conda info - - env # 删除环境 conda remove - ...

    machine-learning-with-python-cookbook-notes:Chris Albon的.ipynb形式的机器学习与Python Cookbook(的一部分)

    机器学习与python-cookbook-notes 我的pypy笔记本/代码示例来自Chris Albon的《使用Python Cookbook进行机器学习》 用法 git clone https://github.com/f00-/machine-learning-with-python-cookbook-notes.git cd ...

Global site tag (gtag.js) - Google Analytics