您的位置:首页 > 数据库 > Oracle

Oracle基础学习

2012-10-31 09:45 309 查看
Oracle Server是一个对象一关系数据库管理系统。它提供开放的、全面的、和集成的信息管理方法。每个Server由一个 Oracle DB和一个 Oracle Server实例组成。它具有场地自治性(Site Autonomy)和提供数据存储透明机制,以此可实现数据存储透明性。每个 Oracle数据库对应唯一的一个实例名SID,Oracle数据库服务器启动后,一般至少有以下几个用户:Internal,它不是一个真实的用户名,而是具有SYSDBA优先级的Sys用户的别名,它由DBA用户使用来完成数据库的管理任务,包括启动和关闭数据库;Sys,它是一个
DBA用户名,具有最大的数据库操作权限;System,它也是一个 DBA用户名,权限仅次于 Sys用户。

[编辑本段]

客户端

  为数据库用户操作端,由应用、工具、SQL* NET组成,用户操作数据库时,必须连接到一服务器,该数据库称为本地数据库(Local DB)。在网络环境下其它服务器上的 DB称为远程数据库(Remote DB)。用户要存取远程 DB上的数据时,必须建立数据库链。

  Oracle数据库的体系结构包括物理存储结构和逻辑存储结构。由于它们是相分离的,所以在管理数据的物理存储结构时并不会影响对逻辑存储结构的存取。

[编辑本段]

逻辑存储结构

  它由至少一个表空间和数据库模式对象组成。这里,模式是对象的集合,而模式对象是直接引用数据库数据的逻辑结构。模式对象包括这样一些结构:表、视图、序列、存储过程、同一词、索引、簇和数据库链等。逻辑存储结构包括表空间、段和范围,用于描述怎样使用数据库的物理空间。而其中的模式对象和关系形成了数据库的关系设计。

  数据块(Block):

  是数据库进行UO操作的最小单位,它与操作系统的块不是一个概念。oracle数据库不是以操作系统的块为单位来请求数据,而是以多个Oracle数据库块为单位。

  段(Segment):

  是表空间中一个指定类型的逻辑存储结构,它由一个或多个范围组成,段将占用并增长存储空间。

  其中包括:

  数据段:用来存放表数据;.

  索引段:用来存放表索引;

  临时段:用来存放中间结果;

  滚段:用于出现异常时,恢复事务。

  范围(Extent):是数据库存储空间分配的逻辑单位,一个范围由许多连续的数据块组成,范围是由段依此分配的,分配的第一个范围称为初始范围,以后分配的范围称为增量范围。例:

  写出SQL脚本

  题目一:从EMP表中取得无重复的DEPTNO字段记录行数?

  SQL>select count(distinct deptno) from emp;

  题目二:从EMP表中获取所每个部门的员工平均工资和总和工资?

  SQL>select deptno,avg(sal),sum(sal) from emp group by deptno;

  题目三:显示EMP表平均工资高于2000的部门号,平均工资?

  SQL>select deptno,avg(sal) from emp group by deptno having avg(sal)>2000;

  高级SQL连接查询

  题目一:请查询EMP表和DEPT表,显示部门号为10的部门名称,该部门的雇员?

  SQL> select e.ename,d.dname from emp e,dept where e.deptno=d.deptno and e.deptno=10;

  题目二:请查询EMP表和DEPT表,显示部门号为10的部门名称,该部门的雇员,以及其他部门员工的名称?

  SQL>select e.ename,d.dname from emp e left join dept don e.deptno=d.deptno and d.dept=10;

  也可以写成:

  SQL>select e.ename,d.dname from emp e ,dept d where e.deptno=d.deptno(+) and d.dept=10;

  高级SQL子查询

  题目一:显示销售部(SALES) 雇员的总人数?

  SQL>select count(empno) from emp where deptno=(select deptno from dept where dname='SALES');

  题目二:显示工作岗位匹配与部门30的雇员名称,岗位,工资,部门号?

  SQL>select ename,job,sal,deptno from emp where job in(select job from emo where deptno=30);

  题目三:显示工资高于部门30的所有雇员的雇员名称,工资,部门号?

  SQL> select ename,sal,deptno from emp where sal>all(select sal from emp where deptno=30);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: