天天看点

常用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