`
冰诺莫语
  • 浏览: 8594 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Oracle学习笔记5_简单查询

 
阅读更多

Oracle简单查询语句:

查看表结构:desc dept;

查看所有列:select * from dept;

查询指定列:select ename,sal,job,deptno from emp;

如何取消重复行:select distinct deptno,job from emp;

打开显示操作时间:set timing on;

Oracle区分大小写。

使用算术表达式:select sal*12,ename from emp;

使用别名:select sal*12 "年工资",ename from emp;

如何处理null值:使用nvl函数来处理

select sal*12+nvl(comm,0)*13 "年工资",ename,comm from emp;

如果comm是null,则变成0

如何使用连接字符串(||):select ename || 'is a' || job from emp;

where:

查询工资高于3000的员工:select ename, sal from emp where sal >3000;

查询1982.1.1后入职员工:select ename,hiredate from emp where hiredate > '1-1月-1982';

查询工资在2000-2500之间的员工:select ename,sal from emp where sal >=2000 and sal <=2500;

like模糊查询:

%:表示任意0-多个字符

_: 表示任意单个字符

查询名字以S开头:select ename ,sal from emp where ename like 'S%';

查询名字第三个字符为O的员工:select ename,sal from emp where ename like '__O%';

where中使用in:select ename,sal from emp where empno in (1,2,3);

is null:select * from emp where mgr is null;

逻辑操作符:select * from emp where (sal>500 or job='MANAGER') and ename like 'J%';

order by 分组:select * from emp order by sal desc;

别名order by分组:select ename ,(sal+nvl(comm,0))*12 "年薪" from emp order by "年薪";

Oracle复杂查询:

数据分组:-max,min,avg,sum,count

avg :select * from emp where sal > (select avg(sal) from emp);

group by:select max(sal),avg(sal),deptno from emp group by deptno;

select max(sal),avg(sal),min(sal),deptno,job from emp group by deptno,job;

select deptno,avg(sal) from emp group by deptno having(avg(sal)<2000);

分组函数只能出现在选择列表、having、order by、having中,group by,having,order by不可以换顺序。

在选择列中如果有列,表达式和分组函数,那么这些列和表达式必须有一个出现在group by中,否则出错。

多表查询:

select dname,ename,sal from emp,dept where emp.deptno=dept.deptno;

select dname,ename,sal,emp.deptno from emp,dept where emp.deptno=dept.deptno and emp.deptno=10;

select a1.ename, a1.sal,a2.grade from emp a1,salgrade a2 where a1.sal between a2.losal and a2.hisal;

select a1.ename, a1.sal,a2.dname,a1.deptno from emp a1,dept a2 where a1.deptno=a2.deptno order by a1.deptno;

自连接:

select a1.ename,a2.ename from emp a1,emp a2 where a1.mgr=a2.empno and a1.ename='FORD';

子查询:

单行子查询:只返回一行数据的子查询语句。select * from emp where deptno = (select deptno from emp where ename='SMITH');

多行子查询:返回多行数据的子查询语句。select ename,job,sal,deptno from emp where job in (select distinct job from emp where deptno=10);

多行子查询中all操作符的使用:select ename,sal,deptno from emp where sal > all(select sal from emp where deptno=30);

   效率高,等价于上句 select ename,sal,deptno from emp where sal > (select max(sal) from emp where deptno=30);

多行子查询中any操作符的使用:select ename,dept from emp where sal>any(select sal from emp where deptno=30);

   效率高,等价于上句 select ename,sal,deptno from emp where sal > (select min(sal) from emp where deptno=30);

多列子查询:查询返回多个列数据的子查询语句。select * from emp where (deptno,job)=(select deptno,job from emp where ename='SMITH');

在from子句中使用子查询:

select a2.ename,a2.sal,a2.deptno,a1.mysal from emp a2,(select deptno, avg(sal) mysal from emp group by deptno)a1 where a2.deptno=a1.deptno and a2.sal>a1.mysal;

当在from子句中使用子查询时,该子查询会被做为一个视图来对待,因此叫做内嵌视图,当在from子句中使用子查询时,必须给子查询指定别名。

Oracle的分页一共有三种方式,下面来介绍一个:

1.rownum分页

先做一个子查询:select * from emp;

2.显示rownum(oracle分配的)

select a1.* ,rownum rn from (select * from emp) a1;

3.select a1.* ,rownum rn from (select * from emp) a1 where rownum <=10;

select * from (select a1.* ,rownum rn from (select * from emp) a1 where rownum <=10) a2 where a2.rn>=6;

select * from (select a1.* ,rownum rn from (select * from emp) a1) a2 where a2.rn>=6 and a2.rn<=10;

4,几个查询变化

a.指定查询列,只需修改最里层的子查询

b.如何排序?只需修改最里层的子查询

用查询结果创建新表:

create table mytable (id,name,sal,job,deptno) as select empno,ename,sal,job,deptno from emp;

合并查询:

实际应用中,为了合并多个select语句的结果,可以使用集合操作符union,union all,intersect,minus

1.union 该操作用于取得两个结果集的并集,当使用该操作符时,会自动去掉结果集中的重复行。

select ename,sal,job from emp where sal>2500 union select ename,sal,job from emp where job='manager';

2.union all与union相似,但是它不会取消重复行,而且不会排序。

select ename,sal,job from emp where sal>2500 union all select ename,sal,job from emp where job='manager';

3.intersect取交集。

select ename,sal,job from emp where sal>2500 intersect select ename,sal,job from emp where job='manager';

4.minus 取得两个结果集的差集,它只会显示存在第一个集合中,而不存在于第二个集合中的数据。

select ename,sal,job from emp where sal>2500 minus select ename,sal,job from emp where job='manager';

创建数据库的两种方法:

1.通过oracle提供的向导工具。dbca[数据库配置助手]

2.手工步骤直接创建。

分享到:
评论

相关推荐

    Oracle学习笔记.doc

    Oracle学习笔记 以下是我这一周学习oracle整理的笔记,包括课堂的内容和自己看额外看的视频补充的一些内容,基本上囊括了所有oracle的基本知识。主要的形式是例子代码加代码解释加运行结果,我个人认为对于没有学习...

    Oracle 10g 学习笔记

    │ Oracle学习笔记.pdf │ Oracle学习笔记.wps │ 安装Oracle后myEclipse不能正常使用.txt │ 手工配置listener.ora【避免出现ORA-12514错误】.txt │ 贴子树状态存储结构.jpg │ 贴子树状态存储结构.sql │ ├─01...

    最全最通俗易懂的ORACLE学习笔记

    个人在学习ORACLE过程当中记录下来的学习笔记,通俗易懂,适合想快速了解ORACLE基本语法的朋友

    02_oracle学习笔记第一天

    oracle学习笔记。简单的学习了基本查询,多行查询,组函数等语法。同时对比着mysql数据库中的查询语法进行比较。

    韩顺平oracle学习笔记

    韩顺平oracle学习笔记 第0讲:如何学习oracle 一、如何学习oracle Oracle目前最流行的数据库之一,功能强大,性能卓越。学习oracle需要具备一定基础: 1.学习过一门编程语言(如:java ,c) 2.最好学习过一门别的...

    Oracle最简单易懂的学习笔记

    Oracle最简单易懂的学习笔记 Oracle最简单易懂的学习笔记 Oracle最简单易懂的学习笔记 Oracle最简单易懂的学习笔记 Oracle最简单易懂的学习笔记 Oracle最简单易懂的学习笔记

    Oracle学习笔记.txt

    简单明了的oracle学习笔记。。。。。。。。。。。。。。

    Oracle数据库学习笔记

    Oracle数据库学习笔记,包括课程PPT(数据库基础,简单查询,单行多行函数,多表连接,子查询,高级子查询,集合运算,层次查询,DML与事务控制,数据库的网络连接,创建维护表,约束,视图,序列索引和同义词,用户...

    oracle完整学习笔记

    该资源是本人在专业培训学校的oracle完整学习笔记,内容全面,简单易懂

    oracle笔记

    oracle 详细笔记,玩转oracle,简单,快捷的学习oracle

    Oracle学习笔记

    oracle数据库 新手学习笔记 比较简单

    oracle学习笔记

    一些oracle 学习的笔记 简单实用的

    Oracle的学习笔记

    Oracle,Oracle的由浅入深,Oracle的简单的收获

    Oracle 入门文档

    Oracle 入门文档 Oracle笔记 一、oracle的安装、sqlplus的使用 Oracle笔记 二、常用dba命令行 Oracle笔记 三、function 、select Oracle笔记 四、增删改、事务 ...Oracle笔记 十四、查询XML操作、操作系统文件

    我的oracle学习笔记

    学习 基础,从简单到复杂。步步深入,自己感觉还不错。拿出来分享下~

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 第一章 Oracle入门 一、 数据库概述 数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,它产生于距今五十年前。简单来说是本身可视...

    oracle简单笔记

    别人总结的简单的oracle笔记,初学者看看还不错

    Oracle9iSQL/PLSQL学习笔记

    Oracle9i SQL/PLSQL 学习笔记 自己照着书学习时候的笔记。TXT的,比较简单,希望对大家学习有帮助。 其中0 mysqlCmd.txt是我自学mysql时候的笔记,是有关于命令的。大家看看有帮助没有。 都比较精华和简单,适合...

Global site tag (gtag.js) - Google Analytics