天天看點

常用SQL[ORACLE] ↑↑↑↑

1.常用系統函數

2.常用sql語句

3.一些定義和關鍵字

4.需要注意點

1.常用系統函數 ↑

--decode

decode(column,if_value,value,elseif_value,value,default_value);

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

好比一張表:

select decode(score,'A','優秀','B','良好','C','及格','不及格') from t_table      

--sum

求和函數      

--wm_concat

該函數可以把列值以","号分隔起來,并顯示成一行      

 2.常用sql語句 ↑

--建立使用者

create user zhaopei identified by zhaopei;      

--給使用者權限

grant dba to zhaopei ;      

--删除表字段

alter table Tbl_Survey_Human_New DROP COLUMN 字段名;
alter table Tbl_Survey_Human_New DROP COLUMN n_oa_report_FLAG;      

--新增表字段

alter table Tbl_Survey_Human_New add(字段名 字段類型);
alter table Tbl_Survey_Human_New add(n_protocaryon_report_FLAG varchar2(2));      

--修改表字段

alter table Tbl_Survey_Human_New modify(字段名 字段類型);
alter table Tbl_Survey_Human_New modify(c_caseisreal_type varchar2(30));      

--添加字段備注

comment on column 表名.字段名  is '注釋';
comment on column Tbl_Report_Caseseat.BLOCKED  is '派查勘員受阻';      

--建立序列

常用SQL[ORACLE] ↑↑↑↑
常用SQL[ORACLE] ↑↑↑↑
create sequence mysq
minvalue 1                   --最小值 
maxvalue 99999999999999999   --最大值
start with 1                 --開始值
increment by 1               --每次增長值
cache 20;                    --緩存大小      

View Code

--Union 并集操作 .

對兩個結果集進行并集操作,不包括重複行,同時進行預設規則的排序;      

--Union All 并集操作

對兩個結果集進行并集操作,包括重複行,不進行排序;      

-- CASE WHEN 表達式

--簡單Case函數  

CASE sex  
WHEN '1' THEN '男'  
WHEN '2' THEN '女'  
ELSE '其他' END  

--Case搜尋函數  

CASE
WHEN sex = '1' THEN '男'  
WHEN sex = '2' THEN '女'  
ELSE '其他' END       

--查詢相同條件的其中一條資料

select * from tb k_id in (select min(k_id) from tb group by d_id)      

 --動态SQL.

常用SQL[ORACLE] ↑↑↑↑
常用SQL[ORACLE] ↑↑↑↑
--動态sql   execute immediate
begin
  execute immediate 'select * from scott.emp';
  execute immediate 'create table emp1121(id number,name varchar2(10),salary number )';
end;      

--異常處理1

常用SQL[ORACLE] ↑↑↑↑
常用SQL[ORACLE] ↑↑↑↑
1 declare
 2   num1 number := 1;
 3   num2 number := 0;
 4   my_exce exception;   --定義錯誤類型
 5 begin
 6   if num2 = 0 then
 7     raise my_exce;     --自定義錯誤
 8   end if;
 9   num1 := num1 / num2;
10 exception
11   when my_exce then    --自定義錯誤處理
12     dbms_output.put_line(sqlcode || '===' || sqlerrm);
13     dbms_output.put_line('自定義 錯誤');
14   when others then
15     dbms_output.put_line(sqlcode || '===' || sqlerrm);
16     dbms_output.put_line('除零錯誤');
17 end;      

--異常處理2

常用SQL[ORACLE] ↑↑↑↑
常用SQL[ORACLE] ↑↑↑↑
1 declare
 2   num1 number := 1;
 3   num2 number := 0;
 4 begin
 5   if num2 = 0 then
 6     raise_application_error(-20991, '部門代碼為空'); --自定義異常錯誤消息
 7     --RAISE_APPLICATION_ERROR(error_number,error_message,[keep_errors] );--keep_errors 為可選
 8     --error_number 是從 –20,000 到 –20,999 之間的參數
 9     --error_message 是相應的提示資訊(< 2048 位元組)
10   end if;
11   num1 := num1 / num2;
12 exception
13   when others then
14     dbms_output.put_line(sqlcode || '===' || sqlerrm);
15     dbms_output.put_line('除零錯誤');
16 end;      

 3.一些定義和關鍵字 ↑

--DDL和DML

DDL:如drop,alter,truncate。
DML:如insert,update,delete,merge。      

--DECLARE

declare 聲明變量      

 --DEFAULT

default 預設值      

--數組類型.

常用SQL[ORACLE] ↑↑↑↑
常用SQL[ORACLE] ↑↑↑↑
1 DECLARE
 2 --定義一個最多儲存5個VARCHAR(25)資料類型成員的VARRAY資料類型
 3    TYPE REG_VARRAY_TYPE IS VARRAY(5) OF VARCHAR(25);
 4 --聲明一個該VARRAY資料類型的變量
 5    V_REG_VARRAY REG_VARRAY_TYPE;
 6 
 7 BEGIN
 8 --用構造函數文法賦予初值
 9    v_reg_varray := reg_varray_type
10          ('中國', '美國', '英國', '日本', '法國');
11 
12    DBMS_OUTPUT.PUT_LINE('地區名稱:'||v_reg_varray(1)||'、'
13                                     ||v_reg_varray(2)||'、'
14                                     ||v_reg_varray(3)||'、'
15                                     ||v_reg_varray(4));
16    DBMS_OUTPUT.PUT_LINE('賦予初值NULL的第5個成員的值:'||v_reg_varray(5)||' count:'||v_reg_varray.count);--count可查數組的長度
17 --用構造函數文法賦予初值後就可以這樣對成員指派
18    v_reg_varray(5) := '國';
19    DBMS_OUTPUT.PUT_LINE('第5個成員的值:'||v_reg_varray(5));
20 END;      

--記錄類型

常用SQL[ORACLE] ↑↑↑↑
常用SQL[ORACLE] ↑↑↑↑
1 declare
 2   type test_type is record(
 3     name varchar2(10) not null := 'zhangsan',
 4     id   varchar2(10));
 5   test_v test_type;
 6 begin
 7   test_v.name := '李四';
 8   test_v.id   := '111';
 9   dbms_output.put_line(test_v.name || '  ' || test_v.id);
10 end;      

 4.需要注意的 ↑

存儲過程中is和as的差別

在存儲過程(PROCEDURE)和函數(FUNCTION)中沒有差別,在視圖(VIEW)中隻能用AS不能用IS,在遊标(CURSOR)中隻能用IS不能用AS。      

指派

str1 := 'str'; --資料庫中的指派 是 :=      

比較

str1=str2 --資料庫中的比較符 是單等号      

 LENGTH,LENGTHB,LENGTHC,LENGTH2,LENGTH4的差別

常用SQL[ORACLE] ↑↑↑↑
常用SQL[ORACLE] ↑↑↑↑
LENGTH(string1) 傳回以字元為機關的長度.
LENGTHB(string1) 傳回以位元組為機關的長度.
LENGTHC(string1) 傳回以Unicode完全字元為機關的長度.
LENGTH2(string1) 傳回以UCS2代碼點為機關的長度.
LENGTH4(string1) 傳回以UCS4代碼點為機關的長度.      

oracle中 substrb() substrc() substr2() substr4()的差別

常用SQL[ORACLE] ↑↑↑↑
常用SQL[ORACLE] ↑↑↑↑
substr 按字元截取,機關字元
substrb 按位元組,機關位元組
substrc unicode字元為機關
substr2 ucs2代碼點為機關
substr4 ucs4代碼點為機關

substr是按字元來計算,一個字母或漢字都按一個字元計算如:
substr('智能ABC',2,2)='能A'
如果想要按位元組來計算則可以采用substrb函數,用法一樣
substrb('智能ABC',3,4)='能AB'
 
當然還有另外幾個按不同編碼計算的函數
substrc:按Unicode編碼,
substr2:按UCS2編碼,
substr4:按UCS4編碼。      
  • 學習本是一個不斷抄襲、模仿、練習、創新的過程。
  • 雖然,園中已有本人無法超越的同主題博文,為什麼還是要寫。
  • 對于自己,博文隻是總結。在總結的過程發現問題,解決問題。
  • 對于他人,在此過程如果還能附帶幫助他人,那就再好不過了。
  • 由于部落客能力有限,文中可能存在描述不正确,歡迎指正、補充!
  • 感謝您的閱讀。如果文章對您有用,那麼請輕輕點個贊,以資鼓勵。
  • 工控物聯Q群:995475200
sql