程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle數據庫基礎 >> oracle使用四(數據庫對象)

oracle使用四(數據庫對象)

編輯:Oracle數據庫基礎

同名對象:

     connect yyaccp/accp;

     drop user myuser;

     create user myuser identifIEd by myuser;

 grant create synonym to myuser;

connect myuser / myuser;

create synonym mytable for yyaccp.mytable;

使用公共同名對象

Connect yyaccp/accp;

 Grant create synonym to myuser;

Connect myuser/myuser;

Create public synonym jobs for yyaccp.jobs;

序列是用來生成唯一,連續的整數的數據庫對象。序列是用來自動生成主鍵或唯一鍵的值。

以下代碼創建了一個名為:emp_id的序列(序列號從10開始,自動增長為1,最大值為2000)

Create sequence mytable_id start with 10 increment by 1 maxvalue 2000

以下代碼把 emp_id 序列產生的值插入到mytable表中

insert into mytable values(mytableid.nextval,''rose'',''beijing'',''[email protected]'',date''2007-10-10'');

以下代碼修改了mytable_id 序列的信息。重新設置了新的 maxvalue 值以及設置增量值為2

Alter sequence mytable_id increment by 2 maxvalue 5000;

********* 注意 :不能修改序列的 start with 參數。

以下代碼演示了刪除一個序列

     Drop sequence emp_id;

可以通過查詢user_sequence 字典表來獲取有關序列的信息。

user_sequence 表中的部分列

Sequence_name

序列名

Min_value

 最小值

Max_value

 最大值

Increment_by

 序列的增量

Cycle_flag

 該序列是否循環,該值為Y或N

Order_flag

 該序列是否有序,該值為Y或N

Cache_size

保存在內存中的序列值的個數

Last_number

該序列生成或緩存的最後一個數字

以下查詢顯示了user_sequence表中的詳細信息

   select * from user_sequences

刪除序列:

   drop sequence  mytable_id;

視圖:

視圖是在一個或者多個表上的預定義查詢。

以下代碼基於employees2表創建一個名為: employee2_vIEw的視圖:

1.  create view employee2_vIEw as select * from employees2;

2. create view employee2_vIEw as slect * from employees2 where division_id = ''BUS'' OR job_id=''PRE''

在視圖中使用 with check option 。修改視圖後在視圖中不能顯示修改的行。使用with check option 可以防止視圖數據被修改。 create or replace view employee2_vIEw as select * from employees2 where division_id = ''BUS'' OR job_id=''PRE'' with check option

創建只讀視圖(創建只讀視圖後,用戶將不能修改視圖):

    create or replace view employee2_vIEw as select  * from employees2 where division_id = ''BUS'' OR   job_id=''PRE'' with READ ONLY

創建帶有錯誤視圖:

下面語句創建一個基於表venmast 的視圖 ,但是在數據庫中並不存在名為“venmast”的表:

   Create  force  view  vtable  as  select  *  from  vIEwtable;  

創建表連接視圖:

  Create  vIEw  emp2_job_divisions  as 

  select e.employee_id,e.division_id,d.name as    division_name,e.job_id,j.name as jobname,

first_name,last_name,salary 

from employees2 e,jobs j,divisions d 

where e.job_id = j.job_id 

and e.division_id = d.division_id

鍵保留表:

   在聯接視圖中,如果視圖包含了一個表的主鍵,並且也是這個視圖的的主鍵,則這個鍵被保留,這個表稱為鍵保留表,Oracle 可以通過此視圖向表中插入行。包含外邊連接的視圖通常不包含鍵保留表

以下代碼可以修改視圖中的數據:

update emp2_job_divisions set first_Name = ''aaaaa'' where employee_id=1;

以下代碼不能修改視圖中的數據:

update emp2_job_divisions set jobname = ''aaa'' where employee_id=1;

使用索引

創建唯一索引:

以下代碼在order_master 表的orderno 列上創建了一個名為order_no 的唯一索引:

   create unique index mytableid on mytable(id)

創建組合索引:

組合索引是在表中的多個列上創建的索引。組合索引中列的順序是任意的,不必是表中相鄰的列。

以下代碼在employee2 表中創建了組合索引:

     Create index emp_first_last on employees2(first_name,last_name);

反向鍵索引:

  反向鍵索引是一種特殊的索引,在索引基於含有序數的列時非常有用

以下代碼在pemployee 表中創建了反向索引。

Create or replace index empid on emp(id) reverse;

位圖索引適用於低基數列,也就是不同值的數目比表的行數少的列。

以下代碼演示了在order_detail 表中創建位圖索引。

Create bitmap index employees2_first_name on      employees2(first_name);

索引組織表:

索引組織表與普通表的不同之處在於,該表的數據存儲在與其關聯的索引中。對表數據進行的修改,只會導致對索引的更新。

primary key 是索引組織表必須的。

以下代碼創建了索引組織表:

create table ind_org_tab(

vencode number(4) primary key,

venname varchar2(20)

)

organization index;

函數索引:

create index employees2_firstname on employees2(lower(first_name));

查詢索引數據:

    select * from employees2 where lower(first_name) = ''john'';

索引中的分區:

create table order_mast(

   orderno number(4),

   venname varchar(20)

 )

 partition by range(orderno)(

   partition oe1 values less than(1000),

     partition oe2 values less than(2000),

     partition oe3 values less than(maxvalue)

 );

局部分區索引是在分區表上創建的一種索引,在局部分區索引中,Oracle 為每一個分區建立了一個獨立的索引.

在上面創建的分區表上創建局部索引。

Create  index myind on order_mast(orderno) local;

查看索引信息:

select segment_name,partition_name,segment_type,tablespace_name from user_segments  where segment_name=''MYIND'';

修改索引,以下代碼重命名了索引。

Alter index vn_ind rename to c_vn_ind;

刪除索引:

   Drop index cvn_ind;

獲取索引列信息:

Select index_name,table_name,column_name from user_ind_columns

Order by index_name,column_position;

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved