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学习笔记 以下是我这一周学习oracle整理的笔记,包括课堂的内容和自己看额外看的视频补充的一些内容,基本上囊括了所有oracle的基本知识。主要的形式是例子代码加代码解释加运行结果,我个人认为对于没有学习...
│ Oracle学习笔记.pdf │ Oracle学习笔记.wps │ 安装Oracle后myEclipse不能正常使用.txt │ 手工配置listener.ora【避免出现ORA-12514错误】.txt │ 贴子树状态存储结构.jpg │ 贴子树状态存储结构.sql │ ├─01...
个人在学习ORACLE过程当中记录下来的学习笔记,通俗易懂,适合想快速了解ORACLE基本语法的朋友
oracle学习笔记。简单的学习了基本查询,多行查询,组函数等语法。同时对比着mysql数据库中的查询语法进行比较。
韩顺平oracle学习笔记 第0讲:如何学习oracle 一、如何学习oracle Oracle目前最流行的数据库之一,功能强大,性能卓越。学习oracle需要具备一定基础: 1.学习过一门编程语言(如:java ,c) 2.最好学习过一门别的...
Oracle最简单易懂的学习笔记 Oracle最简单易懂的学习笔记 Oracle最简单易懂的学习笔记 Oracle最简单易懂的学习笔记 Oracle最简单易懂的学习笔记 Oracle最简单易懂的学习笔记
简单明了的oracle学习笔记。。。。。。。。。。。。。。
Oracle数据库学习笔记,包括课程PPT(数据库基础,简单查询,单行多行函数,多表连接,子查询,高级子查询,集合运算,层次查询,DML与事务控制,数据库的网络连接,创建维护表,约束,视图,序列索引和同义词,用户...
该资源是本人在专业培训学校的oracle完整学习笔记,内容全面,简单易懂
oracle 详细笔记,玩转oracle,简单,快捷的学习oracle
oracle数据库 新手学习笔记 比较简单
一些oracle 学习的笔记 简单实用的
Oracle,Oracle的由浅入深,Oracle的简单的收获
Oracle 入门文档 Oracle笔记 一、oracle的安装、sqlplus的使用 Oracle笔记 二、常用dba命令行 Oracle笔记 三、function 、select Oracle笔记 四、增删改、事务 ...Oracle笔记 十四、查询XML操作、操作系统文件
学习 基础,从简单到复杂。步步深入,自己感觉还不错。拿出来分享下~
oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 第一章 Oracle入门 一、 数据库概述 数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,它产生于距今五十年前。简单来说是本身可视...
别人总结的简单的oracle笔记,初学者看看还不错
Oracle9i SQL/PLSQL 学习笔记 自己照着书学习时候的笔记。TXT的,比较简单,希望对大家学习有帮助。 其中0 mysqlCmd.txt是我自学mysql时候的笔记,是有关于命令的。大家看看有帮助没有。 都比较精华和简单,适合...