資料庫中的重要物件

773281375發表於2014-03-07
物件時性質相同的資料元素的集合,如超市裡的商品一般由食品、家用電器、傢俱等物件組成

一、表
1、表示用來儲存資料的最基本單位
2、表的建立sql語句
-- Create table
create table DEPT
(
  deptno NUMBER(2) not null,
  dname  VARCHAR2(14),
  loc    VARCHAR2(13)
)
tablespace USERS
  pctfree 10
  initrans 1
  maxtrans 255
  storage
  (
    initial 64
    minextents 1
    maxextents unlimited
  );
-- Create/Recreate primary, unique and foreign key constraints 
alter table DEPT
  add constraint PK_DEPT primary key (DEPTNO)
  using index 
  tablespace USERS   --該DEPT表儲存在USERS表空間中
  pctfree 10
  initrans 2
  maxtrans 255
  storage
  (
    initial 64K
    minextents 1
    maxextents unlimited
  );

二、檢視
1、檢視是使用者看到的資料,不是真正存在於資料庫表中的資料,這些資料來源於表,是經過資料抽取、轉化變成的
2、檢視使用者下有多少個檢視
select * from user_views;
3、建立求平均工資的檢視
create view avgsal as
select d.dname as "部門",
       round(avg(e.sal), 2) as "平均工資",
       count(*) as "員工人數"
  from emp e, dept d
 where e.deptno = d.deptno
 group by d.dname;

注:create view為建立檢視關鍵字,後跟檢視名稱,as為“當做”意思,後面跟SQL查詢語句,即avgsal檢視由其下面的查詢SQL語句組成
4、檢視的查詢
select * from avgsal;

三、序列
1、利用它可以生產唯一的整數,一個序列的值是由Oracle資料庫的特殊程式自動生成的,序列可以定義自動遞增或遞減。
2、序列建立
create table book(
       bookID number(12) constraint pk_book primary key,
       bookName varchar2(32) not null,
       price number(5,2),
       printTime date);
       
create sequence bookID   --建立序列
       Start with 1
       Increment by 1
       Maxvalue 99999999
       nocache
       nocycle;
3、插入資料
insert into book(bookid,bookname) 
       values(bookid.nextval,'三毛流浪記');
4、通過虛表檢視bookid序列的當前值和下一個值
當前值:select bookid.currval from dual;
下一個值:select bookid.nextval from dual;

四、函式
1、函式分為兩種,一種是Oracle資料庫自身的函式,另一種是使用者自己寫的函式
2、建立一個通過員工的ID號獲取其薪水的函式
create or replace function get_empsal(emp_no number)
       return number
       is emp_sal number(7,2);
       begin
         select sal 
         into emp_sal
         from emp
         where empno=emp_no;
         return(emp_sal);
       end;

注:
①create or replace function:這是建立新的或者替換已存在的函式,函式名get_empsal,輸入引數emp_no,為number型別
return number:該函式定義一個返回number型別的值
③is emp_sal number(7,2):定義引數emp_sal,型別為number(7,2)
④begin:為函式的程式段開始
⑤select...return...:函式程式段,
select sal把emp表的sal薪水查詢出來,把查詢出來的sal賦予自定義引數emp_sal,輸入的引數與emp表的員工號相等,則返回該員工的薪水
⑥end:結束函式的SQL程式段,與begin相對應

3、通過函式獲取員工薪水
select get_empsal(7566) from dual;

五、儲存過程
1、儲存過程是一組為了完成特定功能而建立的SQL語句集,經編譯後儲存在資料庫中,使用者通過制定儲存過程的名字並給出引數(如果該儲存過程帶有引數)來執行它。
2、建立一個根據員工號刪除員工資訊的儲存過程
create or replace procedure Delempno(empid in number) as
begin
  delete from emp where emp.empno=empid;
  commit;
end Delempno;
注:
create or replace procedure:建立儲存過程的關鍵字,如果存在同名的儲存過程,則會替換這個儲存過程;
                                           Delempno是儲存過程的名稱
empid in number:為儲存過程的傳入引數,該引數為number型別
③begin...end...:這是儲存過程開始和結束的關鍵字,在begin...end之間為儲存過程的具體SQL語句
3、儲存過程的執行
在命令視窗中輸入:excute Delempno(7566);

六、索引
1、索引時對資料庫表中一列或多列的值進行排序的一種結構,相當於一本書的目錄,可以加快查詢內容的作用;索引可以加快資料庫的查詢速度。
2、索引建立:根據表test_index的id欄位建立名為id_test_index的索引
create index id_test_index on test_index(id);

七、同義詞
1、同義詞是現有物件的一個別名,分為私有同義詞和公共同義詞
2、確認使用者是否有建立同義詞的許可權及許可權的授予
①查詢是否有許可權
select * from session_privs s where s.privilege like '%SYNONYM%'; 
②許可權授予
grant create any synonym to scott;
grant create public synonym to scott;
③建立和刪除一個表的同義詞
create synonym sg for salgrade;
drop synonym sg;

八、Oracle資料庫中函式和儲存過程有何區別
①函式必須有返回值,而過程沒有返回值
②函式可以單獨執行,而過程必須通過execute執行
③函式可以嵌入SQL中執行,而過程不能
其實我們可以將比較複雜的查詢寫成函式,然後到儲存過程中呼叫這些函式

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29489498/viewspace-1102974/,如需轉載,請註明出處,否則將追究法律責任。

相關文章