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. CentOS LVM逻辑卷管理

    在CentOS 挂载(U盘NTFS格式,新硬盘,增加交换分区,扩展根分区等)中扩展根分区部分用的就是LVM逻辑卷管理来进行扩展的. 1.为什么会有逻辑卷管理 传统磁盘管理是直接对硬盘分区进行访问,你如 ...

  2. Shell编程学习总结

    Shell编程总结 一.Hello World 新建文件test.sh 然后编辑代码: #!bin/bash/ echo “hello world !” cd 到目标目录下: chmod +x ./t ...

  3. BZOJ4754 & 洛谷4323 & LOJ2072:[JSOI2016]独特的树叶——题解

    https://www.lydsy.com/JudgeOnline/problem.php?id=4754 https://www.luogu.org/problemnew/show/P4323 ht ...

  4. UVA.136 Ugly Numbers (优先队列)

    UVA.136 Ugly Numbers (优先队列) 题意分析 如果一个数字是2,3,5的倍数,那么他就叫做丑数,规定1也是丑数,现在求解第1500个丑数是多少. 既然某数字2,3,5倍均是丑数,且 ...

  5. jdbcType和javaType

    MyBatis 通过包含的jdbcType类型 BIT FLOAT CHAR TIMESTAMP OTHER UNDEFINED TINYINT REAL VARCHAR BINARY BLOB NV ...

  6. Jupyter生成中文PDF的Notebook

    修改模板文件,将article.tplx文件中的\documentclass[11pt]{article}改为\documentclass[11pt]{ctexart} Linux下的文件路径一般在: ...

  7. [技巧篇]12.从Spring的编码过滤器说起

    有一枚学生问问了我一个问题,突然灵感爆发,他使用的Spring的过滤器,前台利用GET方式向后端发出一个请求,由于里面含有中文数据,结果在后端显示的是乱码,他问我为什么?明明在Spring里面也配了字 ...

  8. jQuery图表插件Flot中文文档

    转载自:http://www.itivy.com/ivy/archive/2011/6/4/jquery-flot-chinese-doc.html 最近正在使用JQuery的flot进行画图,但是这 ...

  9. bzoj 2083: [Poi2010]Intelligence test——vecto+二分

    Description 霸中智力测试机构的一项工作就是按照一定的规则删除一个序列的数字,得到一个确定的数列.Lyx很渴望成为霸中智力测试机构的主管,但是他在这个工作上做的并不好,俗话说熟能生巧,他打算 ...

  10. elementui input样式覆盖 头部小图等

    .nav-right >>> .keywords .el-input__inner { -webkit-appearance: none; background-color: #F3 ...