在Oracle database中所有对数据的操作都是通过执行SQL来实现的。
SQL语法非常简单,但功能非常强大。
SQL语句是一串字符,例如下面的:
SELECT first_name,last_name FROM employees;
通过SQL语句你可以完成下列任务:
·查询数据
·Insert(插),update(更新)以及delete(删除)表中的行
·Create(创建),replace(替换),alter(更改)以及drop(删除)对象
·控制对数据库以及其中对象的访问(权限控制)
·保证数据库的一致性和完整性
SQL是前面这些任务整合起来的语言。Oracle SQL 是ANSI标准的落实,但Oracle SQL支持很多标准SQL不支持的特性。
PL/SQL and Java
PL/SQL是OracleSQL的程序化扩展。PL/SQL集成Oracle database中的,可以使用Oracle 数据库的 SQL、功能,和数据类型。可以使用PL/SQL来控制SQL程序流,使用变量,以及些错误处理程序
PL/SQL的一个主要好处就是编的东西可以存在数据库本身。procedure 或function是一个schema object.它包括一堆sql以及其他的PL/SQL结构,它们组合在一起,存储进数据库,然后作为一个东西来运行,用来解决指定的问题,或者相关的一些问题。
而这种数据库本身的程序有一个很重要的好处,就是可以部署你想用它的任何地方。
Oracle 数据库也可以保存由Java写的programunits .你可以从Java中调用PL/SQL程序,也可以从PL/SQL中调用Java程序。
事务管理(Transaction Management)
Oracle数据库是多用户数据库,数据库必须保证多用户并发工作,且不会造成数据的不一致损坏。
事务(Transaction)
RDBMS必须可以将一组SQL要么全部提交(committed,意思是操作应用到了数据库),或者全部回滚(rolled back,意思是这一组sql全部不生效)。
事务(transaction)是一个逻辑的,原子(意味着不可分割)单元,它包含一个或者多个SQL语句。
下面这是一个需要用到事务的案例,将资金从一个储蓄账户转移到支票账户
这个转移需要分成几个操作:
1、 从储蓄账户里减去
2、 增加到支票账户
3、 记录事务到事务日志
Oracle数据库要保证这三个操作,要么同时成功,要么同时失败,
举个例子:如果一个事务在执行时出现了硬件错误,而导致没有执行完成,则这个事务中的所有语句全部都要回滚(把已经造成的影响消除掉)
事务是将Oracle数据库和文件系统区分开的特性中的一个。如果你执行一个原子操作,它更行了一些文件,因为系统错误导致只更新了一般,则这些文件将不再一致。与之对比,事务会将Oracle数据库 从一个一致性状态变成另一个一致性状态。
事务最基本也是最重要的特性就是"all or nothing(要不就全部搞定,要不就全部搞不定)"
数据并发(Data concurrency)
多用户RDBMS的一个需求就是如何控制并发, 并发指的是多个用户同时访问一个数据。如果没有并发控制,用户修改的数据就是不合适的,会危害数据完整性
举个例子,一个用户更行了一行,而另一个用户又在同一时间更新了他
如果多用户访问同样的数据,则管理并发的方法既是让用户等待(排队)。
无论如何,DBMS的一个目标是减少这种等待时间。所有修改数据的SQL语句必须尽可能减少影响。
毁灭性的互相影响,这个是指不争取的更新或者修改底层数据结构导致的,必须避免
Oracle数据库使用锁(locks)来控制数据的并发。lock是用来防止因为不同事物同事访问同一共享资源而导致的毁灭性影响。Locks帮助保证数据的完整性,同事允许最大并发访问数据。