码迷,mamicode.com
首页 > 数据库 > 详细

Oracle表的查询(一)

时间:2017-07-17 10:04:32      阅读:193      评论:0      收藏:0      [点我收藏+]

标签:部门   最小值   tab   不加引号   排序   操作   自动   ssi   经典   

表查询
关键字、字段、表名不加引号时不区分大小写
引号定义的内容区分大小写
运算中有null值时,结果为null
*nvl(字段,赋值):如果字段值为null,则取后面一个值
*like 关键字:%表示若干个字符,_代表一个字符
in 关键字:in(条件集合)
order by:排序
别名 : 中文加“”
分组: group by
max():对字段取最大值
min(): 对字段取最小值
having :对分组的结果进行限制操作
where :对源数据进行限制操作
sum():对字段求和
avg():对字段求平均值
count():统计数据数量
分组函数只能出现在选择列、having、order by字句
字句顺序:group by,having ,order by
规定:多表查询时,条件至少不能少于表的个数-1(排除笛卡尔集)
between and:字段 between a1 and a2 (字段在a1-a2之间)
自连接:同一张表的连接查询
子查询:嵌套查询(在sql中嵌入的select语句),分为单行/多行子查询
all用法:select ename,sal,deptno from emp where sal>all (select sal from emp where deptno=30);
any用法:select ename,sal,deptno from emp where sal>any (select sal from emp where deptno=30);
多行子查询:select * from emp where (deptno,job) = (select deptno,job from emp where ename = ‘SMITH‘);
经典逻辑示例(显示工资高于自己部门平均工资的员工信息)
select emp.ename,emp.sal a1.mysal emp.deptno from emp ,(select deptno,avg(sal) mysal from emp group by deptno) a1 where emp.deptno=a1.deptno and emp.sal>a1.mysal;

分页
select * from (select a1.* ,rownum rn from (select * from emp) a1 where rownum<=10) where rn>=5;
所有改动只需该最里层的数据

用子查询创建表
create table 表名 (字段1,字段2,字段3) as select empno,ename,sal from emp;

合并查询:多个查询结果合并为一个
查询语句 union 查询语句(取并集自动distinct)
查询语句 union all 查询语句(取并集不自动distinct)
查询语句 intersect 查询语句(取交集)
查询语句 minus 查询语句(取差集(在第一个集合存在且不存在于第二个集合中))

创建数据库
1、用工具 Database configuration assistant(dbca)
2、用函数

Oracle表的查询(一)

标签:部门   最小值   tab   不加引号   排序   操作   自动   ssi   经典   

原文地址:http://www.cnblogs.com/-maji/p/7192768.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!