• 常用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 '派查勘员受阻';

    --创建序列

    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;
    View Code

    --异常处理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;
    View Code

    --异常处理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;
    View Code

     3.一些定义和关键字 

    --DDL和DML

    DDL:如drop,altertruncate。
    DML:如insert,updatedelete,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;
    View Code

    --记录类型

     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;
    View Code

     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代码点为单位的长度.
    View Code

    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编码。
    View Code
  • 相关阅读:
    JavaScript 命名空间
    雅虎网站页面性能优化的34条黄金守则
    利用模板引擎配合ajax进行数据的导入
    canvas 实现小人的行走和上下左右的变换
    canvas 做一个小鸟运动的小游戏 (第二步) 使小鸟飞起来
    canvas 做一个小鸟运动的小游戏 (第一步)
    canvas 画一个小时钟
    更改博客的通知
    pat advanced 1139. First Contact (30)
    10分钟上手python pandas
  • 原文地址:https://www.cnblogs.com/zhaopei/p/4153036.html
Copyright © 2020-2023  润新知