Oracle数据库表、视图

一、数据库表常用操作

--建表,指定表空间
create table student(student_id number,student_name varchar2(20)) tablespace TS1;
--增加列
alter table student add (address varchar2(20));
--修改列
alter table student modify (address varchar2(30));
--删除列
alter table student drop column address;
--重命名列
alter table student rename column student_name to name;
--修改表空间
alter table student move tablespace users;
--删除数据表
drop table student;

二、 关系视图

--创建视图
create view v_emp as select * from emp; 

--with read only
--创建只读视图
create or replace view 视图名字 as 查询语句 with read only;

--强制创建视图,此时基础表并未创建
--提示:视图创建成功,但是存在编译错误
create or replace force view 视图名字 as 查询语句

--通过user_updatable_columns查看用户视图各列的可更新情况
--对于视图的更新 操作,只要该列可更新,就可以 利用视图进行更新
--对于插入和删除操作,必须所有列均可执行插入和删除操作,才能利用视图进行操作
select * from user_updatable_columns where lower(table_name)='v_emp';

--with check option
--为视图创建约束,约束的检查依据为where子句中的条件。
--对于修改操作、插入操作不符合该约束,将报错,禁止修改。
create or replace view 视图名字 as 查询语句 with check option;

--修改视图
create or replace view v_emp as select * from emp; 

--删除视图
drop view view_name

--查询视图,通过user_views实现
select * from user_views;

三、对象视图

1、Oracle中的对象类型与对象

使用对象的好处:
1.对象的特性,如:继承、封装等,为开发人员提供灵活的处理形式。
2.可以构造复杂的对象类型来封装复杂的多表查询。
3.对象的传输效率更高。
 

       定义一个类型的SQL语法如下:

create or replace type 对象类型名 as object(

   attribute1  datatype1,
   attribute2  datatype2,
   ...
   member function function1,
   member procedure procedure1,
   ...

)

    说明:

            type   定义类

            as object        继承自object类

            member function     定义成员函数

            member procedure  定义成员过程

2、对象视图

对象类型在数据库编程中有许多好处,但是有时,应用程序已经开发完成。为了迎合对象类型而重建数据表是不实现的。对象视图下是解决这一问题的优秀策略。


1.创建对象视图:

--with object oid(employee_id)    为对象视图指定对象标识符  employee_id是对象类型employee的属性
--of employee --视图基于对象类型employee

SQL> create or replace view ov_employee of employee --视图基于对象类型employee
  2  with object oid(employee_id) as  --为对象视图指定对象标识符
  3  select employee_id a_id ,employee_name ,employee_position from
  4  employees;
 
View created
 
SQL> desc ov_employee;
Name              Type         Nullable Default Comments
----------------- ------------ -------- ------- --------
EMPLOYEE_ID       NUMBER(2)    Y                        
EMPLOYEE_NAME     VARCHAR2(20) Y                        
EMPLOYEE_POSITION VARCHAR2(30) Y     

    
查对象视图信息:
SQL> select view_name, view_type from user_views
  2   where view_name='VW_EMPLOYEES' or view_name='OV_EMPLOYEE';
 
VIEW_NAME                      VIEW_TYPE
------------------------------ ------------------------------
OV_EMPLOYEE                    EMPLOYEE
VW_EMPLOYEES   

               

2.更新视图
同样映射为更新表
SQL>  insert into ov_employee values(
  2   employee(20,'jjluu,'数据库工程师'));  --实例化一个employee对象
 
1 row inserted
 
SQL> select * from ov_employee;
 
EMPLOYEE_ID EMPLOYEE_NAME        EMPLOYEE_POSITION
----------- -------------------- ------------------------------
          1 abc                  开发经理
          2 efd                   高级工程师
          3 ewf                  高级工程师
          4 ewe                 工程师
          5 sdee                工程师
          6 hgd                  测试工程师
          7 李四                 测试工程师
          8 王五                 测试工程师
         19 Jamaly              
         20 jjluu               数据库工程师
 
10 rows selected


 再查看原表:employees
SQL> select * from employees;
 

猜你喜欢

转载自768992698.iteye.com/blog/2265739