`
步青龙
  • 浏览: 295582 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
博客专栏
72ba33fb-eefe-3de1-bd65-82a6e579265d
Java面试
浏览量:0
社区版块
存档分类
最新评论

Oracle(三) SQL 语句

 
阅读更多

Oracle 过滤递归查询

 

select id from department d where d.is_parent = 0 start with d.id= 3 connect by prior d.id=d.parent_id
然后可以该分类下凡是是没子节点的分类员工信息  select id,name from emp where department_id in (上一个查询) 
Oracle 分页查询
尽量少用或不用between startnum and endnum;
select id from (
select id,row_number() over ( order by name) rn from mytable
) where rn between 100 and 150;
推荐使用虚拟表

select id from ( 
   select id,rownum rn from mytable where rownum <= 20 
where rn >= 2;  

 

 

 

select * from sal*12+comm*13  from emp

select * from (sal+nvl(comm,0))*12 from emp --comm奖金

order deptno [asc],sal desc

as 可写可不写 中文带引号  英文不带

数据分组函数 max min avg count等

注意查询多个字段如有一个是分组函数其他要查询的都必须为分组函数

如:select min(sal),max(sal) from table 

where后如果有分组的话要某用having要某用子查询

group by  对查询结果分组统计 注意分组查询必须要查询要分组的字段

having 子句用于限制分组显示结果

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

平均工资小于2000

select avg(sal) from mytable group by deptno having avg(sal) < 2000

分组函数只能出现在选择列,having,order by 中

多表查询的笛卡尔积 表 a,b,c 。。。 表的个数为n ,where 后个数为n-1 才可以消除笛卡尔积

不加条件则查询出的数据为各个表里数据的积。

 between  and 

自连接

在同一张表的连接查询

select a.name from emp a ,emp b where a.parentid = b.id and a.name  = 'NameHello'

where  ... and 

注意and前后会影响性能

 

select  ename ,sal from emp where sal >

all (select sal from emp where deptno = 30)

注:> all 可以改为 > max() 更好

   扩> any 可以改为 > min() 更好

 

注意Oracle是从后开始扫描

where多个字段匹配:

where (deptno,job) = (select deptno,job from emp)

查出高于自己部门员工平均工资的员工信息

 

select emp.name,emp.sal,emp.deptno,dept.avgsal from emp emp,(

select deptno,avg(sal) avgsal from emp 

) dept where emp.deptno= dept.deptno

and emp.sal > dept.avgsal

 

里面一个查询作为一个表,也可以看作是一个子表,或内嵌视图

 

as 用法给字段加as 无所谓,但是给表起别名要注意了,Oracle可能会出现问题。

表不写as 肯定没问题 

 

Oracle分页

select * from (

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

) where rn >= 6;

 

如果想只查询其中几个,只要修改最里的子查询,如排序,分组等都在里面修改。

 

 

分页效率最高的查询(写法很麻烦)

根据ROWID 来分页

select * from my_table where rowid in(

select rid from 

(select rownum rn,rid from 

( select rowid rid,cid from my_table order by cid desc)

where rownum < 1000 )

where rn > 9980)

order b cid desc

 

还有一种row_number()  这种方式效率最差不研究 

 

select * from (

select t.*,row_number() over(order by cid desc) rk from mytable t 

) where rk < 10000 and rk > 9980

 

把查询结果创建新表

create talbe mytable(id,name,sal) as select empno,ename,sal from emp;

创建表的结构和emp的三个字段的结构一摸一样,数据也放入表中了

 

合并查询

Oracle特有的 union ,union all,intersect,minus

nuion  和并两个查询的并集(去除重复的)

nuion  all 不取消重复行,不会排序

intersect 去交集 只取重复的记录

minus 差集 如a minus b ,其中a和b都是一个查询,b的结果在a都有,minus取的数据a-b

这些比 and or 等速度快很多。

 

创建数据库:

工具database configuration  assistant

一般选择new database 

 

java 连接Class.forName   Oracle oracle.jdbc.driver.OracleDriver

"jdbc:oracle:thin:@127.0.0.1:1521:myoral"

 

insert into 批量导入

update emp set (job.sal,comm)  = (select job,sal,comm from emp where ename= 'b')

where ename = 'A'

 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    Oracle Sql语句转换成Mysql Sql语句

    本项目提供了一个Java源码工具,能够帮助用户便捷地将Oracle SQL语句转换为MySQL SQL语句。 Oracle SQL与MySQL SQL的主要差异在于以下几个方面: 1. **数据类型**:Oracle支持的数据类型如NUMBER、LONG、RAW等在...

    压测Oracle的SQL语句的性能情况

    本文将深入探讨如何利用压力测试工具来评估和优化Oracle数据库中的SQL语句性能。 标题"压测Oracle的SQL语句的性能情况"暗示了我们关注的是在高负载情况下,Oracle数据库处理SQL查询的能力。压力测试(Pressure ...

    ORACLE常用SQL语句大全.pdf

    Oracle 常用 SQL 语句大全 本文档总结了 Oracle 中常用的 SQL 语句,包括数据库的创建、删除、备份、表的创建、删除、修改、索引的创建、视图的创建等基本操作,以及一些高级查询运算符的使用。 一、数据库操作 ...

    oracle常用SQL语句(汇总版).docx

    Oracle 常用 SQL 语句汇总 Oracle 是一个功能强大且复杂的关系数据库管理系统,它提供了多种 SQL 语句来管理和操作数据库。在本文中,我们将详细介绍 Oracle 中常用的 SQL 语句,包括数据控制语句(DML)、数据定义...

    oracle的SQL语句的一些经验总结

    Oracle SQL语句是数据库管理员和开发人员在处理Oracle数据库时不可或缺的工具。它允许用户查询、更新、插入和删除数据,以及执行各种复杂的数据库操作。以下是对"Oracle的SQL语句的一些经验总结"中可能涉及的关键...

    ORACLE数据库SQL语句美化器

    对ORACLE-SQL进行一些布局优化,更新它的格式

    oracle监听执行sql语句

    ### Oracle监听执行SQL语句详解 #### 一、Oracle监听执行概述 在Oracle数据库管理与维护过程中,有时候我们需要了解应用程序正在执行哪些SQL语句,这不仅有助于性能优化,还可以帮助我们诊断潜在的问题。通过监听...

    Oracle高效SQL语句原则

    Oracle 高效 SQL 语句原则是指在编写 Oracle 数据库 SQL 语句时需要遵循的一些基本原则,以便提高 SQL 语句的执行效率,减少数据库服务器的负载,提高应用程序的性能。下面是 Oracle 高效 SQL 语句原则的详细介绍: ...

    Oracle基本sql语句

    Oracle数据库是全球最广泛使用的数据库管理系统之一,它遵循SQL标准,提供了一套强大的SQL语句,使得数据库操作变得高效和灵活。在Oracle数据库中,SQL语句是与数据库进行交互的主要方式。本文将总结一些Oracle基本...

    [自己开发]一款非常好用的抓取Oracle数据库SQL语句的工具

    Oracle SQL Profiler,自己设计算法写的一款非常好用的抓取Oracle数据库SQL语句的工具,可以再没有源码的情况下监控ORACLE数据库服务器的v$sqlarea视图抓取出从点击开始按钮到点击结束按钮期间执行过的SQL语句。...

    Oracle数据库sql语句 跟踪器

    Oracle数据库SQL语句跟踪器,通常被称为SQL Monitor,是一种强大的工具,用于监控和分析数据库中的SQL语句执行情况。在Oracle环境中,理解SQL语句的行为是优化数据库性能的关键。SQL Monitor提供实时视图,帮助DBA...

    Oracle中SQL语句执行效率的查找与解决

    本文将深入探讨Oracle中SQL语句执行效率的查找与解决方法,特别关注于如何识别和优化那些导致性能瓶颈的查询。 ### Oracle SQL执行效率:查找与解决 #### 一、资源消耗分析 在Oracle中,SQL语句执行效率低下通常...

    oracle、sql语句基础

    oracle、sql语句基础

    Oracle经典SQL语句

    ORACLE经典语句汇总 -- 字符串左填充和右填充,默认填充空格 -- 产生1~99行数据,少于一位则补0 -- 刪除相同行 -- 随机数 -- 产生业务流水号 -- 查询某张表中有哪些字段 -- 自循环表中 由叶子节点查父节点 -- 查子...

    Oracle中用sql语句创建数据库

    Oracle中用sql语句创建数据库,比较长,一般做了解

    oracle 中SQL语句优化

    oracle中SQL语句优化

    Oracle数据库Sql语句详解大全

    Oracle数据库Sql语句详解大全,提供给大家快速查询复习哦!

    Oracle数据库Sql语句详解大全.pptx

    Oracle 数据库 SQL 语句详解大全 本资源总结了 Oracle 数据库中 SQL 语句的详解大全,涵盖了 SELECT 查询、条件查询、运算符、空值处理、列别名、去重复行等多方面的知识点。 一、SELECT 查询 * 基本语法:SELECT...

    oracle Sql语句二

    oracle Sql语句二 oracle Sql语句二

Global site tag (gtag.js) - Google Analytics