数据库对象

同义词是先用数据库对象的别名;序列用于生成惟1、连续的序号;数据库

视图是基于一个或多个表的虚拟表;索引是与表相关的一个可选结构,用于提升SQL语句执行的性能安全

1、数据库对象:oracle

   模式对象:性能

数据库对象是逻辑结构的集合,最基本的数据库对象是表;spa

其余对象包括:create增、drop删、改altercode

  同义词、序列、视图、索引对象

一、同义词:blog

①、 现有对象的一个别名:索引

  简化SQL语句,隐藏对象的名称和全部者,提供对对象的公共访问;事务

②、类型:

私有同义词:

  只能在其模式下内访问,且不能与当前模式的对象同名(当前用户下使用);

公有同义词:

  可被全部的数据库用户访问。只能是管理员用户建立。

③、私有:synonym(system身份登陆建立)

---建立用户

CREATE  USER  test  IDENTIFIED  BY  123456;--建立一个用户名为 test 密码为123456的用户
GRANT  CONNECT , CREATE  SYNONYM TO test; ---授予权限(链接数据库,建立同义词--起别名)
GRANT  SELECT   ON   SCOTT.EMP  TO test;--查询
GRANT  DELETE  ON   SCOTT.EMP TO test;--删除
GRANT  UPDATE  ON  SCOTT.EMP TO test;--

select * from scott.emp;
create synonym staff for scott.emp;--起别名--提升安全性
select * from staff;---私有同义词,只能谁建立谁访问

④、公有:public

须要sys或者system用户来建立

--一sys或system身份登陆,建立公有同义词--谁都能查
create public synonym emps for scott.emp;  
select * from emps;

 

修改和删除的原则是:谁建立谁修改、删除

2、序列:

一、Oracle是不支持自增加的;

  ①、序列是用于生成惟1、连续序号的对象;

  ②、序列能够是升序,也能够是降序的;

  ③、建立:create sequence(前三个必须写)

 

 

二、访问序列:

nextval:返回序列的下一个值;

currval:返回序列的当前值

---建立序列(至关于计数器,与表无关)
create sequence seq_student start with 1 increment by 1;

create table stu(
       ssid int primary key,
       sname varchar(10)
)
--给ssid赋值为序列的值
insert into stu values(seq_student.nextval,'李四');---nextval 下一个值
insert into stu values(seq_student.nextval,'张三');
select * from stu

select seq_student.currval from dual;-- currval 当前值

注意:

序列与表无任何关系!!!

 三、当出现异常须要修改和删除的序列时,友情提示:删除从新建!

3、视图:

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

  能够视为“虚拟表”或“存储的查询”;

二、建立视图所依据的表称为“基表”;

三、优势:

   提供了另一种级别的表安全性;

  隐藏的数据的复杂性;

  简化的用户的SQL命令;

  隔离基表结构的改变;

  经过重命名列,从另外一个角度提供数据。

四、

--建立视图(scott下,将查询的结果封装到个视图里面)

select * from emp
select * from dept
select * from emp join dept on emp.deptno=dept.deptno;

--受权(system下给scott用户授予建立视图的权利)
grant create view to scott;

create view emp_dept as (select empno,ename,job,mgr,sal,comm,emp.deptno,dname,loc from emp join dept on emp.deptno=dept.deptno);

--查询视图
select * from emp_dept

五、在视图上能够使用修改数据的DML语句:

不过有以下限制:

  只能修改一个底层的基表;

  若是修改违反了基表的约束条件,则没法更新视图;

  若是视图包含链接数据库、去重关键字等,则将没法更新视图;

  若是视图包含伪列或表达式,则将没法更新视图

  (总结:能够修改数据,但尽可能不要在视图上修改!!!在基表上改

六、使用create or replace语句修改视图定义(尽可能不要如此麻烦)

 CREATE  OR REPLACE   [FORCE] VIEW   
  view_name [(alias[, alias]...)] 
  AS  
  select_statement
  [WITH CHECK OPTION]
  [WITH READ ONLY];

4、索引:

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

  用以提升SQL语句执行的性能;

  在逻辑上和物理上都独立于表的数据;

  Oracle自动维护索引

二、

--建立表
create table t_testseq
(
  id number,
  name varchar2(10)
);
--建立序列
create sequence seq_value
start with 1
increment by 1;
-- oracle里面事务须要手动提交事务
select * from t_testseq where id=50000    -- 0.023


--建立索引 CREATE  INDEX    索引名    ON   表名 (索引字段)
create index  t_testseq on t_testseq(id)  -- 0.015