`

Oracle 查询、更新基本操作

 
阅读更多

oracle 默认隔离等级是:读已提交。

查询锁定,防止另外用户更新:
select * from books for update;
当前用户更新之后,另外用户可以更改。


01、表连接
假定from子句中从左到右两个表分别为A,B表。

内连接:选取A、B表的完全匹配的集合,两表交集:
select empno,ename,emp.deptno A,dept.deptno B,dname from emp inner join dept on emp.deptno=dept.deptno;

左外连:选取A表全部以及A、B表交集
select dname,dept.deptno A,emp.deptno B,empno,ename from dept left join emp on dept.deptno=emp.deptno;

右外连:选取B表全部以及A、B表交集
select empno,ename,emp.deptno A,dept.deptno B,dname from emp right join dept on emp.deptno=dept.deptno;

02、表联合
整合结果集并消除重复行:
select empno,ename from emp
union
select deptno,dname from dept;

03、空值
select empno,ename,nvl(comm,0) from emp; --正确,comm与0类型相同
select empno,ename,nvl(comm,'空值') from emp; --错误,comm与'空值'类型不同
select empno,ename,comm from emp where comm is null;
select empno,ename,comm from emp where comm is not null;

04、排序
select * from emp order by empno,asc;
select * from dept order by deptno desc;

05、消除重复数据
select distinct deptno from emp;

06、模糊查询
select ename from emp where ename like '%K';
_表示一个字符,%表示一个或多个字符

07、分组
select deptno, avg(sal) from emp group by deptno; --分组求出平均薪水
select deptno, avg(sal) from emp group by deptno, job; --组合分组
select deptno, avg(sal) from emp group by deptno having avg(sal) > 2000;
group by 后面的字段,可以不出现在select后面;
select 后面的字段,如果没有出现在聚集函数里,就必须出现在group by后面。
group by 分组过滤要使用having。

08、聚集函数
select ename, max(sal) from emp;
这条语句错误:max只能有一个值,只能选取一行,但是等于max值的记录可能有好几个,无法正确匹配,所以应该使用子查询:
select ename from emp where sal = (select max(sal) from emp);

聚集函数不能做为条件出现在where子句的后边:
select deptno,sum(sal) from emp where sum(sal)>3000 group by deptno;
这条语句是错误的。要记住:聚集函数做条件,一定要想到having子句。
having经常与group by联用,一般建议group by在having的前面:
select deptno,sum(sal) from emp group by deptno having sum(sal) >9000;

09、子查询
无关子查询:子查询中使用的条件与外部父查询没有关系。
select empno,ename,mgr,deptno from emp where exists (select deptno from dept where deptno>10);
判断子查询是否有结果集,如果存在,就显示员工表所有数据,否则不显示。

相关子查询:子查询中使用的条件与外部父查询有紧密的关系。
select empno,ename,mgr,deptno from emp where deptno in (select deptno from dept where deptno>20);

select empno,ename,deptno from emp where not exists (select * from dept where deptno<emp.deptno);
判断子查询是否有结果集,如果不存在,就显示员工表所有数据,否则不显示。

IN:子查询中不能在select中使用*。
EXISTS:子查询可以在select中使用*。
如果查询既能用表连接实现,又能用子查询实现,就使用表连接。

子查询就是在select语句中套select语句,把子查询的结果当成一张表:
select ename, sal from emp where sal > (select avg(sal) from emp);

10、修改数据
根据指定表创建新表(oracle专用)
create table t_dump as select empno,ename from emp where empno>7900;
每次插入多条记录(oracle专用)
insert into t_dump(empno,ename) select deptno,dname from dept where deptno<30;
用SMITH的信息更新SCOTT的信息
update emp set(job,sal,comm)=(select job,sal,comm from emp where ename='SMITH') where ename='SCOTT';

11、插入多行
create table abc(a varchar2(10),b varchar2(10),c varchar2(10));
insert into abc
select 'a1','b1','c1' from dual
union all
select 'a2','b2','c2' from dual
union all
select 'a3','b3','c3' from dual;

12、数据表备份
create table dept2 as select * from dept;

13、简单业务查询
入职超过300天的员工
select rownum,empno,ename,hiredate from emp where sysdate>add_months(hiredate,300);
员工的入职天数
select empno,ename,trunc(sysdate-hiredate) 入职天数 from emp;
在月底前一天入职的员工
select empno,ename,hiredate,last_day(hiredate) "入职月底日期" from emp where last_day(hiredate)-2=hiredate;
别名不能使用单引号。

set transaction readonly;
只读设置后,在该点之后更新的数据不会进入读取范围,不会统计到。

分享到:
评论

相关推荐

    Oracle数据库的基本操作

    本篇将介绍Oracle数据库的基本操作,包括常用的工具、数据类型、创建数据表、索引和视图。 首先,Oracle数据库的基本操作工具主要包括以下几种: 1. SQL Plus:这是一个命令行接口,允许用户输入SQL语句进行数据库...

    ORACLE表的基本操作

    本文将深入探讨Oracle表的基本操作,包括创建、查询、更新和删除等核心概念,以及与NULL值相关的处理。 首先,创建Oracle表是数据库设计的第一步。我们使用`CREATE TABLE`语句来定义表的结构,指定每个字段的名称、...

    Oracle查询语句大全-精华版

    查询表结构是使用 Oracle 的一个基本操作,使用以下语句可以查询表结构: desc tablename; 其中,desc 语句用于查询表结构,tablename 是表名。 四、查询数据 查询数据是使用 Oracle 的一个基本操作,使用以下...

    Java使用Jdbc连接Oracle执行简单查询操作示例

    Java使用Jdbc连接Oracle执行简单查询操作示例 Java使用Jdbc连接Oracle执行简单查询操作,是指使用Java语言通过Jdbc(Java Database Connectivity)连接Oracle数据库并执行简单查询操作的过程。本文将通过实例形式...

    oracle数据库基本操作入门

    本文将介绍Oracle数据库的一些基本操作,包括服务的管理和SQL Plus的使用,以及如何创建、查询、插入、更新、删除数据,以及表的导入和导出。 首先,确保Oracle服务正在运行。在Windows系统中,可以通过“控制面板...

    oracle数据库基本操作讲义.pptx

    在学习Oracle数据库的基本操作时,了解数据类型、SQL/Plus环境以及如何管理数据库对象如表、索引和视图至关重要。 首先,Oracle数据库的数据类型是构建数据库结构的基础。常见的数据类型包括:NUMBER(用于存储数值...

    C#版Oracle数据库通用操作类

    `ConnForOracle` 类主要实现了对 Oracle 数据库的基本操作,包括但不限于连接数据库、执行 SQL 语句以及返回结果集等功能。通过此类可以有效地简化数据库操作代码,并提高开发效率。 #### 二、基本属性与构造函数 ...

    Oracle EBS 操作手册

    本操作手册将详细介绍Oracle EBS系统的使用方法和功能特性,帮助用户熟悉并掌握其核心功能。 在Oracle EBS R12版本中,主要包含了以下关键知识点: 1. **财务模块**:Oracle EBS的财务模块提供了一整套全面的财务...

    oracle 基本操作,工具指南

    oracle的常见问题,基本操作,常用工具类的使用!

    oracle 查询部分ppt

    在Oracle中,SQL查询的基本结构包括SELECT、FROM、WHERE、GROUP BY、HAVING、ORDER BY等子句。其中,SELECT用于定义要查询的列,FROM指定要查询的表,WHERE用于设定查询条件,GROUP BY用于数据分组,HAVING用于分组...

    oracle中文基本操作教程

    本教程将深入浅出地介绍Oracle的基本操作,包括语法、函数的使用,并通过实例帮助你提升对Oracle的理解。 一、Oracle基本语法 1. 数据类型:Oracle支持多种数据类型,如CHAR、VARCHAR2(可变长度字符串)、NUMBER...

    项目中最基本的Oracle操作与安装

    在IT行业中,数据库管理系统是数据存储和管理的核心...总的来说,掌握Oracle的基本操作和安装,不仅需要理解SQL语言,还要熟悉Oracle的管理工具和特性,同时在实际项目中不断实践和优化,才能真正提升数据库管理能力。

    oracle ERP 基本操作手册

    文档介绍了Oracle ERP的基本操作,适合入门级用户使用

    Oracle数据库基本查询知识

    本篇将深入探讨Oracle数据库的基本查询知识,帮助初学者理解如何在Oracle环境中进行数据操作。 一、SQL基础 SQL(结构化查询语言)是用于管理关系数据库的标准语言,Oracle数据库也基于此。基本的SQL语句包括SELECT...

    oracle 数据库操作基本方法

    不错的oracle基本操作,实现了基本sql 分页等功能

    Oracle基本操作指南

    这篇"Oracle基本操作指南"将带领我们深入了解Oracle的核心功能和基础操作,为初学者提供了一个很好的学习起点。 首先,Oracle数据库的基础操作主要包括安装配置、数据库创建、用户管理以及数据表的建立。安装配置...

    oracle中plsql基本操作

    在本文中,我们将探讨Oracle中SQL*PLUS的基本操作和一些常用命令。 首先,`SPOOL`命令是SQL*PLUS中一个非常实用的工具,用于将输出结果保存到文件中。例如,`SPOOL f:/a.sql`会将后续的SQL语句输出重定向到名为`a....

    《Oracle查询优化改写技巧与案例》PDF版本下载.txt

    根据提供的文件信息,本文将对《Oracle查询优化改写技巧与案例》这一主题进行详细的解析,涵盖Oracle查询优化的基本概念、重要性、改写技巧及其实际应用案例。 ### 一、Oracle查询优化概述 #### 1.1 查询优化定义 ...

Global site tag (gtag.js) - Google Analytics