• Oracle复习(复习精简版v1.0)


    自己没记不住的,超基础Oracle知识,新手可以看一下。

    大多数例子是用scott用户中的emp表完成

    排序:order by 列名    desc是降序,默认是升序;

    update 表名 set 列名=‘’;

    insert into 表名列名[列名写全或者不写全]) values(要与列名对应);

    模糊查询:like“%S%” 含有S ,like“s%”是以S开头的,like“S_”以S开头只有两字母的;

    alter table 表名 add constraint 键名列名

           若是外键     键名列名)reference 表名);

    alter table 表名 drop column 列名

    序列,常用于插入操作,可以自己增长,在mysql以及sqlserver中可以设置自增长,在Oracle中常用序列

    create sequence 序列名

    start with 1       从1开始

    increment by 1   每次增长1

    minvalue 1         最小值是1

    nomaxvalue        没有最大值

    cache 10(这里的cahe是指缓存10个数);

    涉及到日期转换

    select to_char(sysdate,“yyyy-mm-dd hh24:mi:ss”)from dual;

    查询部门20中在1981年1月1日之后入职的员工:

    select ename from emp where deptno=20 and hiredate > to_date(‘19810101’,‘yyyymmdd’);

    分组

    select avg(sal) from  emp表名 grop by deptno列名

    选出各个部门,各个职位的平均工资

    select deptno,job avg(sal)

    from emp

    group by deptno,job

    order by deptno;

    group by/having/order by以及where的使用顺序为

    where》group by》having》order by

    多表连接查询

    查询和部门10中工作相同的雇员的名字

    先查询部门10中的工作     select distinct【这个用于去重】 job from emp where deptno=10;

    则完整句子是  select ename,job from emp where job in【这里指在后面的范围之内】( select distinct【这个用于去重】 job from emp where deptno=10)and deptno<>10;

    into关键字

    select ename,job,into sname,sjob from emp where empno=7396;

    三种循环:

    ①loop                              ②while i<=100 loop                    ③for i in reverse 1......100 loop 

    if i>100 then exit;              s:=s+i;                                       s:=s+i;

    end if;                               i:=i+1;                                        end loop;

    s:= s+i;                           end loop;

    i:=i+1;

    end loop;

    执行动态sql语句

    daclare

    strsql varchar2(100);

    begin

    strsql:=‘create table ttt(a mumber)’;

    excute immediate(strsql);

    end;

    游标

    declare 

    cursor【游标关键字】 c1 is select empno ,ename,job from emp;

    begin

    open c1;

    fetch c1 into emp.empno,emp.ename,emp.job;

    while c1%found loop

    dbms_output.put_line();

    fetch c1 into emp.empno,emp.ename,emp.job;

    end loop;

    close c1;

    end;

    触发器

    表级触发器不管一次插入几行都只执行一次,行级触发器是插入一行就执行一次

    create or replace trigger tri1

    before update

    on emp

    for each row     这句话如果存在就是行级触发器,如果不存在就是表级触发器

    begin

    dbms_output.put_line(‘’);

    若想让其终止运作,在这里抛出异常 raised ——————————————-;

    end;

    关于old:new

    insert:没有old,有new

    update:有old,有new

    delete:没有old,没有new

    结束!。。。。

  • 相关阅读:
    在WINDOWS任务计划程序下执行PHP文件 PHP定时功能的实现
    使用Sublime Text 3进行Markdown 编辑+实时预览
    ni_set()函数的使用 以及 post_max_size,upload_max_filesize的修改方法
    CORS跨域的概念与TP5的解决方案
    tp5模型笔记---多对多
    微信小程序 GMT+0800 (中国标准时间) WXSS 文件编译错误
    ESP8266 LUA脚本语言开发: 外设篇-GPIO输入检测
    ESP8266 LUA脚本语言开发: 外设篇-GPIO输出高低电平
    ESP8266 LUA脚本语言开发: 准备工作-LUA文件加载与变量调用
    ESP8266 LUA脚本语言开发: 准备工作-LUA开发说明
  • 原文地址:https://www.cnblogs.com/easilyai/p/7738856.html
Copyright © 2020-2023  润新知