工作第一周Oracle函式總結

2021-12-30 10:54:19 字數 1815 閱讀 5667

1.oracle 行轉列和列轉行

最常見的行轉列,主要原理利用decode函式、聚合函式(sum() max())、結合group by分組實現的

max(decode(sw.sbbl, '1', sw.sbbl, null)) as sbbl_01,

max(decode(sw.sbbl, '2', sw.sbbl, null)) as sbbl_02,

說明: sw.sbbl中值為1或2,現在將其轉化為2列。如果是1就以sbbl_01為列名,這一列的值為1。如果是2就以sbbl_02為列名,這一列的值為2.

decode(條件,值1,翻譯值1,值2,翻譯值2,...值n,翻譯值n,預設值)

decode( b.task_status,'1','辦理中','2','已辦理')

列傳行,主要利用sql裡面的union,具體sql

select user_name, 'cn_score' course , cn_score as score from test_tb_grade2

union

select user_name, 'math_score' course, math_score as score from test_tb_grade2

union

select user_name, 'en_score' course, en_score as score from test_tb_grade2

order by user_name,course

2.對錶中的資料進行去除重複,當表資料小的時候可以直接使用distinct(屬性),但當表資料大的時候

使用exists替換distinct

低效select distinct dept_no,dept_name

from dept d,emp e

where d.dept_no=e.dept_no

高效select dept_no,dept_name

from dept d

where exists(select 1 from emp e

where e.dept_no=d.dept_no)

3.oracle採用自下而上的順序解析where子句。當where中多表聯接,返回行數少的表,有過濾條件的子句應放在where子句最後

4.當表資料大的時候,使用truncate替代delete進行資料刪除操作

5.將date型別的資料進行轉化為字串型別操作。

to_char(b.receive_time, 'yyyy-mm-dd hh24:mi:ss') receive_time

6.sql優化一般原則:

盡量依賴oracle優化器,建立合適的索引。

編碼方面 利用索引,避免大表、合理使用臨時表、避免寫複雜sql

幾個常見優化方案

建立表時,應盡量建立主鍵,根據實際需要呼叫整資料表pctfree和pctused引數

大資料表刪除 truncate table

少用*號 select count(key) from tab where key>0效能優於 select count(*)

盡量少用巢狀子查詢

對於比較多or運算,建議分成多個查詢,用union all聯結起來

oracle 解析器對錶解析從右到左,記錄少的表放在右邊

訪問頻繁的錶可常駐記憶體。alter table ..cache

避免複雜的多表關聯

避免使用耗費資源的操作

工作第一周總結

正式來廣州上班也有乙個多星期了,也是時候總結一下了 以後也要學考研那段時間每週上來總結一下才行了 閒話就不多說了,先總結一下吧 第一周過去了,很多朋友同學都喜歡問我這一句 適應了嗎?是啊,去到新的環境,關鍵是要適應它,不單只是自然環境氣候的適應,還有人文環境的適應。第一周,好多時候也只是在如何去適應...

第一周工作總結

在本週我的主要的任務有兩大類,一是完成乙個比較成熟的 的製作。我選擇的是小公尺官網的製作。整個大框架基本已經完成,但是對css3的不太熟練導致還是需要經常檢視一些屬性的使用方法。另外對小公尺官網的一些布局設定還是不太懂,比如 的更新要用到絕對位置和相對位置的設定,即要用到position relat...

第一周工作總結

第一周工作總結 第一周的主要做的工作就是選擇兩個地點,然後根據迪傑斯特拉演算法計算出兩點間的最優路徑,並計算出總距離。如下圖所示 當沒有地點時點選查尋就會有相應的提示,沒有起點或終點。當然以上的資料只是實驗資料,目前並不具有代表性。工作重點主要是迪傑斯特拉演算法的實現和資料庫的建立與鏈結。具體的設計...