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 '派查勘員受阻';
--建立序列

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 execute immediate
begin
execute immediate 'select * from scott.emp';
execute immediate 'create table emp1121(id number,name varchar2(10),salary number )';
end;
--異常處理1

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

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 預設值
--數組類型.

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;
--記錄類型

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的差別

LENGTH(string1) 傳回以字元為機關的長度.
LENGTHB(string1) 傳回以位元組為機關的長度.
LENGTHC(string1) 傳回以Unicode完全字元為機關的長度.
LENGTH2(string1) 傳回以UCS2代碼點為機關的長度.
LENGTH4(string1) 傳回以UCS4代碼點為機關的長度.
oracle中 substrb() substrc() substr2() substr4()的差別

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