Oracle是甲骨文公司推出的一款大型数据库管理系统。甲骨文公司成立于1977年,总部位于美国加利福尼亚州的红木滩。1989年,Oracle正式进入中国市场;2013年,甲骨文超越 IBM ,成为继 Microsoft 后全球第二大软件公司。

Oracle的版本从8i开始完全支持Java。Oracle是一种大型关系数据库,关系数据库支持的SQL语言包括:

DDL(Data Define Language)数据定义语言,如create,alter,drop,truncate等
DML (Data Manipulation Language)数据操纵语言,如insert,delete,update,select等
DCL (Data Control Language)数据控制语言,如grant,revoke等

  我们在电脑上安装了Oracle数据库后,以Win7为例,可以先在电脑的“服务和应用程序”里将所有Oracle服务设置为“手动”开启方式,在需要使用Oracle时进行手动开启,从而避免电脑内存被占用过高。

在需要使用Oracle时,我们可以打开DOS窗口,在里面开启Oracle和相应的监听服务。举例来说,我们在安装Oracle时,将Oracle服务命名为orcl,那么服务启动如下:

net start oracleserviceorcl        开启oracle服务

lsnrctl start        开启监听

  在需要关闭Oracle时,则操作如下:

net stop oracleserviceorcl        关闭Oracle服务
lsnrctl 关闭监听

  接下来我们可以打开Oracle的SQL Plus窗口,在提示的输入用户名和密码里,分别输入scott和tiger,然后以scott用户的权限登录进Oracle进行操作;我们还可以在电脑上安装PL/SQL来操作Oracle。scott用户默认提供了几个表可以作为演示,如下所示:

select * from dept;
select * from emp;
select * from bonus;
select * from salgrade;

  我们一般通过SQL来操作Oracle。

一般来说,Sql可以分为初中高三级。

Sql初级主要包括增删改查、内外连接、子查询等;

Sql中级主要包括事务、函数、序列、同义词、视图等;

Sql高级主要包括PL/Sql、存储过程、自定义函数、触发器等。

另外,对索引的灵活运用是一个实用技巧。

基本表的定义格式如下所示:

create  table   表名(
列名 数据类型 [default 缺省值] [not null]
[,列名 数据类型 [default 缺省值] [not null]]
……
[,primary key(列名 [,列名] …)]
[,foreign key (列名 [,列名] …)
references 表名 (列名 [,列名] …)]
[,unique(列名 [,列名] …)]
[,check(条件)])

  在Sql初级的基本操作里,我们主要看下having与where的区别。Having用来筛选聚合之后的结果集,Where用来筛选表中的记录。如下例所示:

select deptno,sum(sal) from emp group by deptno having sum(sal)<10000;

select deptno,sum(sal) from emp where sal>2000 group by deptno;

  总的来说,Where 在聚合前执行条件筛选,having在 聚合后执行。Having可以使用聚合函数,Where 则不可以。

另外,我们在删除表中的记录时,truncate是移除表中所有的数据行,并释放表中的存储空间,在执行truncate语句后,不能对该操作回滚rollback;可以用delete语句来做相同的操作,delete不会立即释放表空间,因而可以回滚。相对而言,truncate速度更快,而且不写入日志。

在sql中级里,sql中的dml语句可以通过设置事务的提交方式(自动提交或手动提交)来选择手动提交或自动提交,而DDL语句则不用设置提交,系统会自动提交。换言之,在Oracle中,只有对数据记录的增删改查 是手动提交,其他是自动提交。

提及事务,我再次重复下曾经在《数据库简述(以MySQL为例)》文章里说过的事务4大特性,即原子性、一致性、隔离性、持久性。

其中,原子性:事务中的操作是不可分割的逻辑单元;

  一致性:事务前后的业务逻辑要一致;

  隔离性:事务之间的操作相对独立,不受影响;

  持久性:事务一旦发生就持久有效。

事务的命令包含的关键词主要有commit(提交),rollback(回滚),savepoint(保存点)等关键词。

另外,视图是一个虚拟的表,视图本身并没有存储任何数据,使用视图我们可以限定用户只访问表的一部分数据;通过利用with,check,option选项,我们可以限制用户对视图的更改和插入记录在我们指定的值域中。视图演示如下:

#简单的视图
Create view myview as select * from emp where job=‘MANAGER’;
#带有聚合函数的视图
Create view myviewa as select deptno,sum(sal) totsal from emp group by deptno;
#从多张表连接形成的视图
Create view myviewb as select ename,job,dname,loc from emp e,dept d where e.deptno=d.deptno;
#对视图的更改实际上是对表的更改
Update myview set sal=sal+20;
#删除视图
drop view myview;

  在数据库设计中,我们通常需要设计实体关系模型。在这方面,E-R图为我们从现实世界到数据模型提供了一个中间工具,它包括了实体、属性和联系三个要求。示意图如下:

E-R图在具体表示中,用矩形表示实体,用椭圆表示属性,用菱形表示联系。 实体间的联系,以及属性和实体间、实体和联系间用线段连接。实体与实体之间的关系包含三种,分别是一对一(如一个身份证号对应一个人),一对多(一个人可以有多个朋友),多对多(一个老师可以对应多个学生,一个学生也可以对应多个老师)。

一般来说,设计E-R图的原则是:首先, 针对特定用户的应用,确定实体、属性和实体间的联系,设计该用户视图的局部E-R图 ;其次,综合各个用户的局部E-R图,产生反映数据库整体概念的总体E-R图。

一个系统的E-R图不是唯一的。 现实世界的复杂性导致实体联系的复杂性,E-R图将实体联系模型转化为关系数据模型的规则有:一是E-R图中每个实体类型转化为一个关系模式, 实体类型中实体的属性转化为该关系模式的属性;实体标识符(实体键)转化为该关系模式的关键字; 每一个实体转化为该关系模式对应关系的一个元组。二是E-R图中的联系,根据联系方式的不同,采取不同手段以使被它联系的实体所对应的关系彼此有某种联系。

在此,我再申明下数据库设计中的三范式 :第一,表中的列不可再分;第二,表中的列必须完全依赖于全主键而不能部分依赖;第三,不能出现依赖传递。

我们再来看Oracle中的数据字典。Oracle数据字典中的对象名称以三种前缀开头:”User”,”All”,”DBA”(只有在个别情况下例外)。

其中,“User”域中的记录通常显示有关执行查询的帐户所拥有的对象的信息 ;“All”域中的记录包括“User”记录以及有关已授予用户其特权的对象的信息; “DBA”域包含所有数据库对象,而不管其所有者是谁。对于大多数数据库对象而言,“User”,”All”和“DBA”域都是可用的。

常用的数据字典有:

User_Tables
User_Views
User_Constraints
User_Triggers

  

Oracle简述的更多相关文章

  1. oracle 简述

    1.数据库有很多的管理工具,Sqlplus是最好的管理工具. 2.sql语句是学习中最难的部分,如何编写出高效的sql 语句是我们的目标 3.oracle的日常最终要的工作就是备份,永远是备份,有数据 ...

  2. Oracle Redo 以及 Archived日志简述

    Oracle通过Redo Archived实现数据的归档 什么是Redo日志 Redo日志记录了数据的变更,用于在数据库出现故障后,进行数据恢复. 功能主要由三个组件实现:Redo Log Buffe ...

  3. 简述oracle视图

    1.视图的概述 视图其实就是一条查询sql语句,用于显示一个或多个表或其他视图中的相关数据.视图将一个查询的结果作为一个表来使用,因此视图可以被看作是存储的查询或一个虚拟表.视图来源于表,所有对视图数 ...

  4. Oracle与Mysql区别简述

    在Mysql中,一个用户下可以创建多个库: 而在Oracle中,Oracle服务器是由两部分组成 数据库实例[理解为对象,看不见的] 数据库[理解为类,看得见的] 一个数据库实例可拥有多个用户,一个用 ...

  5. 简述Oracle IOT(Index Organized Table)

    转:http://blog.itpub.net/17203031/viewspace-744477 对关系型数据库产品(RDBMS)而言,一个重要特性就是:数据信息都被组织为二维数据表,信息的表达可以 ...

  6. Oracle 表空间、段、区和块简述

    数据块(Block) 数据块Block是Oracle存储数据信息的最小单位.注意,这里说的是Oracle环境下的最小单位.Oracle也就是通过数据块来屏蔽不同操作系统存储结构的差异.无论是Windo ...

  7. Oracle表空间、段、区和块简述

    本文转载自:http://blog.itpub.net/17203031/viewspace-682003/ 在Oracle学习过程中,存储结构,表段区块可能是每个初学者都要涉及到的概念.表空间.段. ...

  8. Oracle数据库导入与导出方法简述

    说明: 1.数据库数据导入导出方法有多种,可以通过exp/imp命令导入导出,也可以用第三方工具导出,如:PLSQL 2.如果熟悉命令,建议用exp/imp命令导入导出,避免第三方工具版本差异引起的问 ...

  9. oracle表的操作简述

    单表的操作!(代码完全可以用手工代替,写下来为了记忆)1.建立表create table HKB_TABLE_MODIFY(  NAME VARCHAR2(6),  AGE  VARCHAR2(3), ...

随机推荐

  1. float,absolute脱离文档流的总结

    dom元素脱离文档流,有如下几种方式: 1. float 脱离文档流,其他dom元素无视他,在其下方布局,但是其未脱离文本流,其他元素的文本会认为他存在,环绕他布局.父元素会无视他,因此无法获取其高度 ...

  2. bzoj3680: 吊打XXX(模拟退火)

    题目要求 最小(dis表示绳结到点i的距离),就是个广义费马点的题,模拟退火裸题QAQ 模拟退火就是优化后的爬山算法,一开始先随机一个平均点,接下来如果随机到的点比当前点劣,温度比较高的话也有几率跳过 ...

  3. 【简单算法】40.Fizz Buzz

    题目: 写一个程序,输出从 到 n 数字的字符串表示. . 如果 n 是3的倍数,输出“Fizz”: . 如果 n 是5的倍数,输出“Buzz”: .如果 n 同时是3和5的倍数,输出 “FizzBu ...

  4. pushViewController:animated:的问题

    1.在AppDelegate.m中: 2.在SecondViewController.h中: 3.在FirstViewController.m中: 4.在SecondViewController.m中 ...

  5. OopenCV复习及函数深入理解(轮廓查询及绘图)

    核心函数:(后面标明号的,下面有解析) int cvFindContours(Iplimage* img,//这是输入函数,必须是8bit,单通道的图像---1 CvMemStorage* stora ...

  6. POJ 1698 最大流

    Alice's Chance Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 7327   Accepted: 2992 De ...

  7. 顺序统计:寻找序列中第k小的数

    最直观的解法,排序之后取下标为k的值即可. 但是此处采取的方法为类似快速排序分块的方法,利用一个支点将序列分为两个子序列(支点左边的值小于支点的值,支点右边大于等于支点的值). 如果支点下标等于k,则 ...

  8. 分割png图片

    /*** * 分割图片 */public function cut_img(){ $filename = 'site_upload/form_file_forinput/20180313/201803 ...

  9. uva 10683 Fill

    https://vjudge.net/problem/UVA-10603 题意: 倒水问题,输出最少的倒水量和目标水量 如果无解,目标水量就是尽可能接近给定点的目标水量,但不得大于给定的目标水量 推推 ...

  10. 「模板」 线段树——区间乘 && 区间加 && 区间求和

    「模板」 线段树--区间乘 && 区间加 && 区间求和 原来的代码太恶心了,重贴一遍. #include <cstdio> int n,m; long l ...