列型別和表型別

2021-05-26 00:59:07 字數 1076 閱讀 7746

在定義變數時處理可以使用oracle規定的資料型別外,還可以使用%type和%rowtype來定義變數.

%type型別的變數是專門為儲存在資料列中檢索到的值而建立的.對於使用%type建立的變數,其資料型別由系統根據檢索的資料列的資料型別決定.

%rowtype型別的變數,它可以一次儲存從資料庫檢索的一行資料。

當你不知道表中的資料型別是什麼時候?那你就考慮%type來解決此問題。

sql> declare

2     empno emp.empno%type; //宣告的時候一定要加上表的中列

3     ename emp.ename%type;

4     job   emp.job%type;

5  begin

6     select empno,ename,job into empno,ename,job from emp where empno='7369';

7     dbms_output.put_line(empno||'/'||ename||'/'||job);

8  end;

9  /

7369/smith/clerk

emp.empno%type; 解析:首先它到emp表中去查詢empno列 %type返回其資料的資料型別。

%type的好處:

可移植性高(當我們對錶的資料型別發生改變時,使用者不必考慮定義變數型別)

使用者不必檢視資料型別就可以定義變數能夠儲存檢索的資料。

%rowtype

sql> declare

2      row_data emp%rowtype;

3  begin

4     select * into row_data from emp where empno='7369';

5     dbms_output.put_line(row_data.empno||'/'||row_data.ename||'/'||row_data.job);

6  end;

7  /

注意:如果定義了%rowtype型別的變數,該變數的結構與定義表的結構完全相同,查詢時必須使用*或者列舉全部的字段資訊。

列型別 字元型別

在 sql 中,將字串型別分成了 6 類,分別為 char varchar text blob enum和set.char 磁碟 二維表 在定義結構的時候就已經確定了最終資料的儲存長度。變長字串 varchar,即在分配儲存空間的時候,按照最大的空間分配,但是實際用了多少,則是根據具體的資料來確定。...

表的優化和列型別的選擇

如id int 佔四個位元組 char 4 佔四個字元長度,也是定長 time即每乙個單元值佔的位元組是固定的 核心且常用字段,宜建成定長,放在一張表,而varchar text bolb這種邊長的字段,適合單方一張表,用主鍵與核心表關聯起來。需要結合 具體業務來分析,分析欄位的查詢場景,查詢頻度低...

oracle初識005 列型別和建表

varchar2 n 變長型別,最長4000個字元 char n 定長,最長2000個字元 變長與定長的區別 varchar2 n char n 為例,2者最多能存n個字元,不同在於,char n 如果實際只存1個字元,仍佔據n個字元的空間 varchar n 如果實際存在1字元,佔據1 1 2 字...