数据库对象

来源:互联网 发布:java爬虫爬取视频 编辑:程序博客网 时间:2024/05/21 09:00

表(Table)

创建表

1.create table test(

    deptno NUMBER(2)  ...);

2.create table emp20

as

select ename,sal*1.2newsal

from emp wheredeptno = 20;

复制表结构

create table copy_emp asselect * from emp where 1 = 2;

视图

1.创建物化视图

create materialized view emp20 as

select empno,ename, job, mgr, sal,deptno

from emp wheredeptno = 20;

2.创建物化视图(指定刷新时间)

create materialized viewemp20_copy

refresh force on demand start withsysdate next sysdate+1

as

select empno,ename, job, mgr, sal,deptno

from emp

where deptno = 20;

3.说明:

我们一般使用子查询创建视图,要注意子查询中不可以使用Order By 子句

我们在SQL语句中使用视图时,Oracle实际上都使用视图创建时的sql文对基表进行查询

而物化视图则则和不同视图不同,它有自己的存储空间,可以预先做好查询,把查询结果缓存起来,

这样在SQL语句中使用它的时候就可以避免查询基表,有利于提高性能。

物化视图是不让更新数据的。

4.

我们可以对满足一定条件的视图进行更新,删除,插入操作

View 定义中含有以下元素时不能对视图数据进行操作

Group 函数

Group By 子句

Distinct 关键字

Rownum伪列

由表达式生成的列(追加,更新)

视图关联的表中存在 Not Null 约束的列不在视图的 SELECT 子句中(追加)

可以使用 With read only关键字来禁止修改视图的数据

可以使用 With check option关键字来限制能够更新到视图的数据必须符合视图的检索条件

ex:

create or replace view emp20 as  select empno, sal fromemp where deptno = 20 andsal < 3000with read only;

create or replace view emp20 as select empno, sal,deptno from empwheredeptno = 20 andsal < 3000 with check option;

 

约束(Constraints)

约束主要有以下几种:
• NOT NULL          
• UNIQUE
• PRIMARY KEY
• FOREIGN KEY
• CHECK
 
1.FOREIGN KEY

声明外键约束时可以指定一个称作级联的属性,可以定义在主表中的参照列的

数据被变更时,子表的动作

默认情况下,主表的数据如果被子表参照着,是不允许删除的

ON DELETE CASCADE

当主表中对象列的数据被删除时,自动删除子表中的记录

ON DELETE SET NULL

当主表中对象列的数据被删除时,自动更新子表中对应列的数据为 NULL
 
2.CHECK

最后一种check约束,可以定义某个列的数据必须满足的条件,

每个列都可以有多个check约束

可以使用和 Where 条件中一样的结构,除了:

参照伪列(如 Rownum

使用 SYSDATEUIDUSERUSERENV函数

参照别的行的值

索引(Index)

•在列上建立的数据结构,用于提高查询数据的效率
•索引数据按照关联的列排序,其数据独立于表数据而存储
•Unique 约束和 Primary key 约束上自动创建索引

序列(Sequence)

按照一定规则自动增加的数字序列

不能被 Rollback可在多个用户间共享

修改序列时,不可以修改 Start With项,不影响已经生成的数字

其他数据库对象

同义词:创建数据库对象的一个别名,用于简化对象的访问

触发器:特定事件发生时Oracle自动执行的代码块,用户不可以直接调用

DataBase Link:用于创建从一个数据库到另外一个数据库的链接

存储过程:存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。

函数:也是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,Oracle提供了很多内置的函数可供调用,这个后面会提到。

除了内置函数,我们还可以自定义函数。

函数和存储过程主要的区别是,函数必须作为某个表达式的一部分来调用,不能单独调用

而存储过程可以作为一条语句直接调用

类型:Oracle中的类型有很多,比如Numberchar,这些都是内置类型,我们还可以自己定义类型

包:包将逻辑上相关的存储过程,函数,类型组合成一个更大的单位。

包有两个部分:包说明(specification)和包体(body)。说明部分是为应用程序的接口,它声明包里面含有的类型、常量、可用的子程序等等。Body部分实现说明。