oracle 學習筆記(三)

來源:互聯網
上載者:User

  在oracle資料庫中,有一個概念:資料表空間。資料表空間是資料庫的邏輯組成部分,從物理上講,資料庫資料存放在資料檔案中,從邏輯上講,資料庫是存放在資料表空間中,資料表空間是由一個或多個資料檔案組成。邏輯結構包括資料表空間、段、 區、 塊,那麼為什麼要將資料庫分的這麼細呢,我想主要是為了提高資料庫效率,至於是為什麼,各位自己考慮吧!

  通過建立資料表空間有以下好處
   一:控制資料庫佔用的磁碟空間(好像最大是500M);
     二:dba可以將不同資料類型部署到不同的位置,這樣有利於提高I/O效能,同時利於備份和恢複等管理操作;

  當然,一個使用者不是想建資料表空間就建立資料表空間的,他必須擁有create tablespace 的許可權,否則不能建立資料表空間。據瞭解,一個優秀的DBA在建立好資料庫後,會立刻建立資料表空間的,以便於管理。而我現在只是一個程式員,沒有考慮到這方面,但瞭解一點很好。命令列如下

  create tablespace 資料表空間名 datafile 'd:\sp001.dbf'(路徑名) size(大小) 5m uniform size(最小地區大小) 128k;

  如果你希望將建立的表放在某個資料表空間下面,那麼只需要這樣 create table 表名(....欄位名 tablespace 資料表空間名) 即可。

  

alter tablespace 資料表空間名 offline --資料表空間離線,這樣別人不能訪問資料庫
alter tablespace 資料表空間名 online --資料表空間聯機
alter tablespace 資料表空間名 read only --設定資料表空間唯讀
alter tablespace 資料表空間名 read write --設定資料表空間可讀可寫

  那麼接下來,就是一些很很重要的知識了,個人理解!

  塊:前面講過,是資料庫邏輯結構中的一種,那什麼是塊呢??引用別人的話:

  資料區塊概述Oracle對資料庫資料檔案(datafile)中的儲存空間進行管理的單位是資料區塊(data block)。資料區塊是資料庫中最小的(邏輯)資料單位。與資料區塊對應的,所有資料在作業系統級的最小實體儲存體單位是位元組(byte)。每種作業系統都有一個被稱為塊容量(block size)的參數。Oracle每次擷取資料時,總是訪問整個數(Oracle)資料區塊,而不是按照作業系統塊的容量訪問資料。原文連結:http://soft.chinabyte.com/database/56/12199056.shtml

  在oracle 中,我們常用它來定義一個塊,作為所有的程式設計語言,輸出 hello.world 是第一課,在oracle也可,命令如下

begin   --表示開始執行
dbms_output.put_line('hello,world!'); --執行的代碼
end; --結束執行

 如果你沒有看見 hello,world!,那麼有可能是你的輸出器關閉了,命令語句是  set serveroutput on 。

下面的例子是定義了一個塊,從scott使用者中讀取資料,代碼如下

declare 
v_ename varchar2(5); --定義了兩個變數 用來傳送兩個值
v_sal number(7,2);
begin
select ename,sal into v_ename,v_sal from emp where empno=&empno; --這裡表示使用者輸入的的 員工編號
dbms_output.put_line('使用者名稱是:'|| v_ename|| '薪水是:' || v_sal);
end;

  大致一看沒什麼問題 ,其實這個塊是很有問題的,比如 使用者輸入的員工號的數位大小不同,定義的變數的類型與表中的資料類型不同,這都是一些問題。那麼請看下面一段語句

declare
v_ename emp.ename%type;
v_sal emp.sal%type;
begin
select ename,sal into v_ename,v_sal from emp where empno=&empno;
dbms_output.put_line(v_ename ||'薪水是:' || v_sal);
exception --如果有異常
when no_data_found --當沒有資料找到時
then dbms_output.put_line('error');
end;

  從這個命令,我沒有明確定義變數 v_ename,v_sal的類型,而是用了%type 這個很有意義,這樣讓兩個值的類型一樣。其次,我定義了異常的處理,當no_data_found 即沒有資料時,則執行下面語句。關於異常,我會在後面具體講講幾種異常。

  函數:用於返回特定的資料,當建立函數時,在函數頭部必須包含return字句,而在函數體內必須包含return語句返回的資料,必須要有關鍵字 function代表我們建立的是一個函數。比如我們寫一個函數,或得一個使用者的年薪。當然,個例子只返回了一個值,且使用者名稱師唯一的,語句如下。  

create function sp_fun1(spName varchar2) --定義了函數名和函數所帶的參數
return number is yearSal number(7,2);  
--定義了傳回值的類型是number 並且傳回值的名稱是 yearSal 這裡兩個值的類型並然是一樣的 
begin
select sal*12 into yearSal from emp where ename=spName;
return yearSal;
end;

如何調用這個函數呢??

var yearSal number; --定義一個變數,接受傳回值
call sp_fun1('SCOTT') into:yearSal; --調用預存程序
Method called
yearSal
---------
36000 ---返回結果

  恩 這些知識今天我就總結到這裡了!

    

 

  

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.