一、数据库表常用操作
--建表,指定表空间 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中的对象类型与对象
定义一个类型的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;