首页 > WEB开发 > 数据库 > 常见Oracle数据库对象及PL/SQL编程
2014
11-17

常见Oracle数据库对象及PL/SQL编程

一、DDL和数据库对象

DDL语句(create、alter、drop)是操作数据库对象的语句。最基本的数据库对象是数据表,除了数据表,数据库中还可以包含如下常见的数据库对象:

database object 01

因为存在上面几种数据库对象,所以create后面可以紧跟不同的关键字。例如,建表时使用create table,建索引应使用create index,建视图应使用create view …… 同样,alter、drop后面也要跟类似的关键字表示修改、删除哪种数据库对象。

由于存储过程、函数、触发器属于数据库编程内容,而在Oracle数据库中编程需要使用到PL/SQL语言,因此中间会介绍PL/SQL编程。

二、Oracle数据库对象(一)

1、表

关于表的创建、修改、删除,参考《MySql(SQL入门)》一文。下面只列出些需要注意的部分。

1)create table

可以使用子查询创建表,在创建表的同时插入数据。

Demo:创建表emp20,同时保存20号部门的员工

04. 常见Oracle数据库对象及PLSQL编程755

Demo2:利用多表的子查询创建表,保存员工的员工号、姓名、月薪、年薪以及部门名称

04. 常见Oracle数据库对象及PLSQL编程799

2)alter table

① 追加新列(add):alter table empinfo add (hiredate date);

② 修改现有的列(modify):alter table empinfo modify (hiredate date default sysdate);
modify可以修改列的数据类型、大小和默认值。

③ 重命名列(rename column):alter table empinfo rename column hiredate to hire;

④ 删除列(drop column):alter table empinfo drop column hire;

3)rename…to…(改变表名)

将empinfo表名改为emp_details:rename empinfo to emp_details;

rename…to…也可以改变视图、序列等其他数据库对象的名称。

4)drop table

需要注意的是,在Oracle中也有回收站(同windows),所有drop后的表并没有真正删除,而是被放到回收站。

04. 常见Oracle数据库对象及PLSQL编程1289

要想达到windows中按住shift键删除的效果可以使用purge:drop table emp_details purge;

5)约束

约束是在表一级上的限制,在《SQL入门》一文中介绍了常见的几种约束,这儿再添加一种:check约束。

04. 常见Oracle数据库对象及PLSQL编程1413

另外,在定义外键约束(foreign key)时需要注意,删除父表记录时子表记录的处理有两种策略:

  • on delete cascade:级联删除子表记录
  • on delete set null:将子表的相关记录的外键值置为null

2、视图

  • 视图是一种虚表,它建立在已有表的基础上,视图赖以建立的这些表称为基表
  • 可以通过select语句向视图提供数据内容,因此可以将视图 理解为存储起来的select语句
  • 视图向用户提供基表数据的另一种表现形式。
  • 视图的优点:简化复杂查询、限制数据访问,但视图不能提高性能。

1)create view

语法:create [or replace] view viewName as subquery [with read only]

普通用户创建视图需要管理员授权,如下图:

04. 常见Oracle数据库对象及PLSQL编程1773

说明:视图只是一张虚表,不建议对视图中的数据进行CUD操作,可以使用with read only屏蔽对视图中数据的CUD操作。

2)drop view

删除上面创建的视图:drop view v_empinfo;

删除视图只是删除视图的定义,并不会删除基表的数据。

3、序列

序列是用来产生唯一数值的数据库对象(类似于MySql中的auto_increment),主要用于提供主键值。

1)create sequence

语法:create sequence sequenceName [increment by N] [start with n]

创建一个名为myseq的序列:create sequence myseq;

2)nextval、currval伪列

  • nextval:返回序列中下一个有效的值
  • currval:返回序列中的当前值,nextval应在currval之前指定。如下图:

04. 常见Oracle数据库对象及PLSQL编程2175

3)在表中使用索引

04. 常见Oracle数据库对象及PLSQL编程2188

上面的序列是连续的(2,3,4),在这些情况下,序列会不连续(即出现裂缝):回滚、多个表同时使用一个序列、系统异常。

4)drop sequence

删除上面定义的序列:drop sequence myseq;

4、索引

  • 一本书,有了目录查找内容才会方便。索引就相当于给数据表增加一个目录,它可以提升表查询的效率。
  • 索引一旦建立,DBMS会自动维护,而且由DBMS决定何时使用索引。不需要猿类在查询语句中指定使用哪个索引。
  • 删除索引时,不会对表产生影响,其影响的只是查询的速度。但是删除表时,所有基于该表的索引会自动被删除。

1)创建索引

自动创建(隐式):DBMS会在有primary key或unique约束的列上创建唯一性索引。

手动创建(create index):猿类可以在其他列上创建索引,以加快查询。

语法:create index indexName on tableName(column[, column...]); 在一个或多个列上创建索引。如:create index i_emp_deptno on emp(deptno);

2)drop index i_emp_deptno;

5、同义词(了解)

同义词的作用类似于别名,可以使用同义词访问相同的对象。

语法:create synonym synonymName for object

下图的hremp相当于hr.employees的别名:

04. 常见Oracle数据库对象及PLSQL编程2802


留下一个回复

你的email不会被公开。