视图:

/*

  视图:经过以制定的方式显示来自一个或多个表的数据

        可以视为"虚拟表""存储的查询"

        创建视图所依据的表为基表

  优点:1.提供了另外一种级别的安全性;

        2.隐藏数据的复杂性;

        3.简化用户的sql语句;

        4.隔离基表的变化

        5.通过重命名列,从另外一个角度提供对数据的访问。

*/

-- 视图,关键字  view as

create or replace view emp_view  -- 要有创建view的权限

as

  select ename,sal,dname from emp,dept where emp.deptno = dept.deptno;

-- 从视图中查询

select * from emp_view;

-- 删除视图

drop  view emp_view;

/*

   连接视图查询与多表连接查询相似,因为可以将视图当做虚拟表,只是有一些限制:

    1.只能修改一个底层的基表

    2.如果修改违反了基表的约束条件,则无法更新视图

    3.如果视图包含连接操作符、DISTINCT 关键字、集合操作符、聚合函数或 GROUP BY 子句,则将无法更新视图

    4.如果视图包含伪列或表达式,则将无法更新视图

*/

索引:

/*

  索引:索引是与表相关的一个可选结构

  创建索引的优点:1.减少磁盘的I/O

                  2.能提高查询语句的执行能力

  注意:建立不必要的索引会造成写入数据的性能开销以及磁盘空间的浪费

*/

-- 1.创建标准索引

create index emp_index on emp(ename); -- 注意不能用or replace

alter index emp_index rebuild; -- 重构索引

drop index emp_index; -- 删除索引

-- 创建唯一索引

create unique index dept_uniqueIndex on dept(dname);

drop index dept_uniqueIndex;

 

同义词

/*

     同义词:现有对象的一个别名;

     优点:1.简化sql;2.隐藏了对象的名称和所有者;3.提供对对象的公共访问

*/

-- 创建私有同义词,只能在模式内访问,且不能与当前对象同名

create or replace synonym em for emp;

select * from em;

drop synonym em;

--创建公有的同义词,可以被所有的数据库用户访问,当然别的用户要有访问权限

create or replace public synonym pub_emp for emp; --需要授权

drop public synonym pub_emp; -- 需要授权

 

/*

   序列:用于生成唯一,连续序号的对象,可以使升序,也可以使降序

*/

create sequence my_seq  -- 此处与索引一样不能用 or replace

start with 1

increment by 1

maxvalue 1000

minvalue 1

cycle

cache 20

-- 查询序列

select my_seq.nextval from dual; -- 序列下一个值

select my_seq.currval from dual; -- 序列当前值

create table person(

   pid number primary key,

   pname varchar2(20)

)

-- 人工创建自增

insert into person(pid,pname) values(my_seq.nextval,'ysjian');

insert into person values(my_seq.nextval,'ysjian');

select * from person;