oracle 学习笔记(五)

1.集合运算:

UNION运算符返回两个集合去掉重复元素后的所有记录。

例:查询属于部门10与部门20的所有员工信息。

select * from emp where deptno=10
union select * from emp where deptno=20;

UNIONALL 返回两个集合的所有记录,包括重复的。

例:查询工资在500~1500或在1000~2000范围的员工信息(这是两个工资级别)。

select * from emp where sal between 500 and 1500 union all select * from emp where sal
between 1000 and 1500

INTERSECT运算符返回同时属于两个集合的记录。

例:查询工资在500~1500又在1000~2000范围的员工信息(这是两个工资级别)。

select * from emp where sal between 500 and 1500
intersect select * from emp where sal
between 1000 and 1500

MINUS返回属于第一个集合,但不属于第二个集合的记录。

例:查询属于500~1500但不属于1000~2000范围的员工信息。

select * from emp where sal between 500 and 1500
minus select * from emp where sal
between 1000 and 1500

2.多表查询

等值连接:只有两张表中的数据没有null值的时候才显示 如果左表或者右表中查出的数据有Null值 不予显示

例:查询员工信息,要求显示员工的编号,姓名,月薪和部门名称

select e.empno,e.ename,e.sal,d.dname

from emp e,dept d

where e.deptno=d.deptno;

不等值连接:

例:查询员工的工资级别:编号 姓名 月薪和级别

select e.empno,e.ename,e.sal,s.grade

from emp e,salgrade s

外连接:

左外连接:where e.deptno=d.deptno  当连接条件不成立时,等号左边所代表的表的信息仍然显示

右外连接:where e.deptno=d.deptno  当连接条件不成立时,等号右边所代表的表的信息仍然显示

左外连接的写法: where e.deptno=d.deptno(+)

右外连接的写法: where e.deptno(+)=d.deptno

实现上面的效果:

select d.deptno,d.dname,count(e.empno)

from emp e,dept d

where e.deptno(+)=d.deptno

group by d.deptno,d.dname

order by 1;

自连接:利用表的别名,将同一张表视为多张表

例:查询员工信息:xxx的老板是yyy

select e.ename||‘的老板是‘||b.ename

from emp e, emp b

where e.mgr=b.empno;

使用SQL99标准的连接查询(JOIN..ON..)

内连接

只返回满足连接条件的数据(两边都有的才显示)。

select e.*, d.*

from emp e

inner join dept d

on e.deptno=d.deptno

-- 也可以省略inner关键字。

左外连接

左边有值才显示。

select e.*, d.*

from emp e

left outer join dept d

on e.deptno=d.deptno

-- 也可以省略outer关键字

右外连接

右边边有值才显示。

select e.*, d.*

from emp e

right outer join dept d

on e.deptno=d.deptno

-- 也可以省略outer关键字

满外联接

任一边有值就会显示。

select e.*, d.*

from emp e

full outer join dept d

on e.deptno=d.deptno

-- 也可以省略outer关键字

交叉连接:

叉集,就是笛卡尔积

select e.*, d.*

from emp e

cross join dept d

-- 没有连接条件

3.DML,Data Manipulation Language,数据操作语言

插入数据(Insert into):

插入全部列

插入部分列

插入空值

使用 & 变量(创建脚本)

例:

SQL> insert into emp (empno, ename, sal) values (&empno, &ename, &sal)

SQL> insert into emp (empno, ename, sal) values (&empno, ‘&ename‘, &sal)

SQL> update emp set ename=‘&new_name‘ where empno=&empno

SQL> select empno,ename,&col from emp;

可以在命令行sqlplus或是iSQL*Plus中演示。

从其它表中拷贝数据

insert into mytable

select mycolums from ...

更新数据(Update)

删除数据(Delete)

删除所有的记录:

Delete 效率高

Truncate 效率低

4.事务:

事务是由完成若干项工作的DML语句组成的

保存点

设置事务隔离级别:

QL99标准是有4个隔离级别,但Oracle只支持2个:

SET TRANSACTION ISOLATION LEVEL READ COMMITTED;

SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;

set feedback on 设置开启每次执行完语句之后打印结果信息

set feedback off 不打印结果信息

set timing on oracle的记录时间开启

set timing off 记录时间关闭

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-11-09 22:54:40

oracle 学习笔记(五)的相关文章

Oracle学习笔记五 SQL命令(三):Group by、排序、连接查询、子查询、分页

GROUP BY和HAVING子句 GROUP BY子句 用于将信息划分为更小的组每一组行返回针对该组的单个结果 --统计每个部门的人数: Select count(*) from emp group by deptno; --根据部门分组,并统计 Select deptno, count(*) form emp group by deptno; select deptno, avg(sal) from emp group by deptno; --每个部门的平均工资 HAVING子句 用于指定

oracle学习笔记 存储及raid技术概述

oracle学习笔记 存储及raid技术概述 本课以oracle数据库所运行的环境,讲一下存储和raid技术. 一)oralce生产环境里的结构 先说一下oracle所在的环境. 有一种结构: 两个服务器.两个光纤存储交换机.两个存储, 它们通过网线相互连接在一起. 每个服务器接两个交换机, 每个交换机连两个服务器同时连两个存储, 每个存储和两个交换机有连接. 这是oracle数据库相对比较典型的正规的运行环境. 每个服务器上都装Linux和oracle数据库软件, oracle数据库建在存储上

oracle学习笔记 SQL语句执行过程剖析讲课

oracle学习笔记 SQL语句执行过程剖析讲课 这节课通过讲述一条SQL语句进入数据库 和其在数据库中的整个的执行过程 把数据库里面的体系结构串一下. 让大家再进一步了解oracle数据库里面的各个进程.存储结构以及内存结构的关联关系. 首先来讲整个体系中有客户端.实例和数据库 数据库里有三类文件 控制文件ctl.数据文件dbf.日志文件log 实例中SGA有六大池子 第一大内存区shared pool即共享池 第二大内存区buffer cache 第三块是redo log 我们主要讲上面的三

oracle学习笔记 swap

oracle学习笔记 swap 这节课老师讲了很多,虽说看起来很多都没有用,但老师讲的仔细,我们应该认真了解一下. 这节课主要内容是硬盘的工作机制,工作原理, 以一些系统性能分析工具为线,并附带讲了系统中cpu.内存的工作机制. 对以后进行orace的优化,操作系统的学习非常有帮助. 此前讲过计算机的工作机制. 程序在硬盘上,执行时首先被调入内存成为进程,cpu按照时间片循环的轮回的执行各个进程. 表面上看各个进程都在运行,实际上很多进程都被时间片阻挡在cpu之外. 从宏观上看多个进程同时在执行

Caliburn.Micro学习笔记(五)----协同IResult

Caliburn.Micro学习笔记(五)----协同IResult 今天说一下协同IResult 看一下IResult接口 /// <summary> /// Allows custom code to execute after the return of a action. /// </summary> public interface IResult { /// <summary> /// Executes the result using the specif

Oracle 学习笔记 17 -- 异常处理(PL/SQL)

程序在执行过程中出现异常是正常的,在程序的编写过程中出现异常也是不可避免的.但是要有相应的异常处理的机 制,来保证程序的正常执行.PL/SQL程序执行过程中出现的错误,称为异常.一个优秀的程序都应该能够正确处理 各种出错的情况,并尽可能的从错误中恢复.PL/SQL提供了异常处理机制. 概念: 异常处理(exception)是用来处理正常执行过程中未预料的事件,程序块的异常处理定义的错误和自定义的错误, 由于PL/SQL程序块一旦产生异常而没有指出如何处理时,程序就会异常的终止. 有三种类型的错误

oracle学习笔记之用户管理-3

用户权限机制 1.不同用户表权限的赋予 grant select on scott.emp to software; ---当前登录用户为表所有者,则表名前不用指定所属用户 2.用software登录后 select * from scott.emp; ---software才有权限查询到scott的emp表 方案(schema) 当用户创建好后,如果该用户创建了一个数据对象(如表),此时dbms会创建一个对应的方案与改用户对应,并且该方案的名称和用户名称一致. system与scott都拥有自

【Oracle学习笔记】

内容主要包含: (1)三种循环及其简化 (2)游标的使用 (3)异常处理 (4)存储过程 (5)存储函数 (6)触发器 (7)其他pl/sql操作 ---------------loop循环定义变量-------------------- declare cursor c1 is select * from emp;# rec emp%rowtype;# i numeber:=1; # v_count number;begin# select count(*) into v_count from

oracle学习笔记(二)

设置归档模式(mount状态) ALTER database ARCHIVELOG; //关闭数据库 shutdown immediate //启动数据库到mount状态 startup mount alter database archivelog; //查看归档状态 archive log list; SQL> archive log list; 数据库日志模式 存档模式 自动存档 启用 存档终点 USE_DB_RECOVERY_FILE_DEST 最早的联机日志序列 1 下一个存档日志序列