一、Oracle的存储结构
存储结构分为:逻辑存储结构和物理存储结构
(一)逻辑存储结构包括数据库、表空间、段、区、数据块
数据块(Data Blocks):
是Oracle逻辑存储结构中的最小的逻辑单位
一个数据库块对应一个或多个物理块,大小由参数DB_BLOCK_SIZE决定
数据块的结构包括块头和存储区两个部分
块头包括数据块标题、表目录、行目录
存储区包括自由空间和行数据
数据区(Extent):
数据区是由连续的数据块结合而成
数据区是Oracle存储分配的最小单位
段(Segment):
数据段:存储表中所有数据
索引段:存储表上最佳查询的所有索引数据
临时段:存储表排序操作期间建立的临时表的数据
回滚段:存储修改之前的位置和值
表空间(TableSpace):
表空间是数据库的最大逻辑划分区域
一个表空间由一个或多个数据文件组成,一个数据文件只属于一个表空间
表空间的大小是它所对应的数据文件大小的总和
默认创建的表空间
系统表空间(system tablespace)、辅助表空间(sysaux tablespace)、撤销表空间(undo tablespace)、
用户表空间(users tablespace)
(二)物理存储结构包含三种数据文件
控制文件、数据文件、重做日志文件
1、数据文件(.DBF)
数据文件和表空间的关系:
一个表空间可以包含几个数据文件,一个数据文件只能对应一个表空间
数据文件的种类:
系统数据文件(SYSTEM01.DBF和SYSTEM02.DBF)
回滚数据文件(UNDOTBS01.DBF)
用户数据文件(USERS01.DBF、TBSP_1.DBF)
临时数据文件(TEMP02.DBF)
2、控制文件(.CTL)
控制文件是数据库中最小的文件、是数据库中最重要的文件
3、日志文件
日志文件包含重做日志文件和归档日志文件
重做日志文件特点:记录所有的数据变化、提供恢复机制
归档日志文件是重做日志文件的历史备份,有两种模式归档模式(ARCHIVELOG)和非归档模式(NOARCHIVELOG)
其他文件
服务器参数文件(orcl.ora)、密码文件(PWDorcl.ora)、警告文件(alert_orcl.log)、跟踪文件
二、Oracle 11g的管理工具
Oracle 11g提供了多种数据库管理工具:SQL * Plus、SQL Developer、Oracle企业管理器、数据库配置助手(DBCA)
这里我们主要用SQL * Plus,
SQL * Plus工具
在Oracle 11g数据库系统中,用户对数据库的操作主要是通过SQL *Plus来完成的,SQL * Plus作为Oracle的客户端工具,既可以建立位于数据库服务器上的数据连接,也可以建立位于网络中的数据连接。
特点:
1、可以用它运行SQL查询和PL/SQL代码块并接受结果信息
2、可以发布DBA命令并自动工作
3、可以启动和关闭数据库
4、一种创建数据库管理报告的便利方法
三、查询
Oracle数据库的查询与MySQL的查询基本上是一致的,这里仅列出不同的地方
1、查询结果中排除重复行
使用DISTINCT关键字
eg:在SCOTT模式下,显示emp表中的job(职务)列,要求显示的“职务”记录不重复
select diatinct job from emp;
原查询结果:
排除重复行之后:
注意:distinct的作用是消除重复内容,但是所谓的消除重复的内容,是指一条完整的数据全部是重复的,如果多行记录只有一列重复而其他列不重复,那么也是无法消除的。当查询比较大的表时应尽可能地避免使用distinct关键字
2、伪列
定义:一种数据类型,唯一标识一条记录,物理位置的一个id,基于64位编码的18个字符
注意:伪列并不是真实的存在于数据表中的列;伪列可以从表中查询,但是不能插入、更新或删除
伪列的用途:
(1)能以最快的方式访问表中的一行
(2)能显示表的行是如何存储的
(3)作为表中唯一标识
常用的伪列:rowid和rownum
rowid:数据库中的每一行都有一个行地址,rowid伪列返回该行地址。可以使用rowid值来定位表中的一行,通常情况下,rowid值可以唯一地标识数据库中的一行。
eg:查询emp表中的rowid列
select rowid from emp;
查询结果如下:
rownum:对于一个查询返回的每一行,rownum伪列返回一个数值代表的次序。返回第一行的rownum值为1,第二行的rownum值为2,以此类推。通过使用rownum伪列,用户可以限制查询返回的行数。
eg:从emp表中查询前5条数据
select * from emp where rownum<6;
查询结果如下:
3、完全外连接
在执行完全外连接时,Oracle会执行一个完整的左外连接和右外连接查询,然后将查询结果合并,并消除重复的记录行。
eg:实现emp表和dept表之间通过deptno列进行完全外连接
select e.empno,e.ename,e.job,d.deptno,d.dname from emp e full join dept d on e.deptno=d.deptno;
查询结果:
4、自然连接
自然连接和内连接的功能相似,自然连接是指在检索多个表时,Oracle会将第一个表中的列与第二个表中具有相同名称的列进行自动连接。在自然连接中,用户不需要明确指定进行连接的列,这个任务由Oracle系统自动完成,自然连接使用“NATURAL JOIN”关键字。
eg:在emp表中检索工资(sal字段)大于2000的记录,并实现emp表与dept表的自然连接
select empno,ename,job,dname from emp natural join dept where sal>2000;
查询结果:
5、自连接
自连接主要用在自参照表上显示上下级关系或者层次关系。自参照表是指在同一张表的不同列之间具有参照关系或主从关系的表。例如emp表包含empno(雇员号)和mgr(管理员号)列,两者之间就具有参照关系。这样用户就可以通过mgr列与empno列的关系,实现查询某个管理者所管理的下属员工信息。
6、交叉连接
交叉连接实际上就是不需要任何连接条件的连接,它使用cross join关键字来实现
eg:通过交叉连接dept表和emp表,计算出查询结果的行数
select count(*) from dept cross join emp;
查询结果: