一、Oracle的SQL语句学习

    0.sql的执行顺序
        from .. where .. group by .. having .. select .. rownum ..  order by ..
    1.select的区别:
        select 1+1;    此句在mysql中可以执行,但是在Oracle数据库中不可以使用,
        Oracle必须要补全表名,select 1+1 from dual;(dual是为了补全语法的系统的一个虚表)
    2.别名查询:
        别名查询使用as关键字,可以省略
            select ename 姓名,sal 工资 from emp;
        别名中不能使用特殊字符或关键字,如果有的话就加双引号
            select ename "姓     名",sal 工资 from emp;
    3.去除重复数据:distinct
        去除单列重复数据
            select distinct job from emp;
        去除多列重复数据(每一列都相同才算重复)
            select distinct job, deptno from emp;
    4.空值问题
        null值,代表不确定的、不可预知的内容,不可以做四则运算
            nvl函数:如果参数1为null,就返回参数2
            select sal*12 + nvl(comm,0) from emp;
    5.字符串拼接
        (在oracle中双引号用于表示别名,单引号表示拼接)
        oracle特有的字符串拼接符:||
            select '姓名'||ename from emp;
        函数拼接:concat(str1,str2)
            select concat('姓名',ename) from emp;
    6.转义字符
        使用escape表示转义字符 escape 后面接表示转义字符的符号
            (查询姓名中包含%的员工信息)
            select * from emp where ename like '%/%%' escape '/';
    7.排序
        升序 asc (默认)
        降序 desc
        排序时注意Null问题,默认Null数据排在前面nulls first,使用nulls last 可以使null值排在后面
            select * from emp order by comm desc nulls last;
    8.数值函数
        floor(value) 向下取整
        ceil(value) 向下取整
        round(value,[num]) 四舍五入, num 为精确度
            round(45.926,2) --45.93
            round(45.926,1) --45.9
            round(45.926,0) --46
            round(45.926,-1) --50
            round(45.926,-2) --0
            round(65.926,-2) --100
        trunc(value,[num]) 截断,num为精确度
            trunc(45.926,2) --45.92
            trunc(45.926,1) --45.9
            trunc(45.926,0) --45
            trunc(45.926,-1) --40
            trunc(45.926,-2) --0
            trunc(65.926,-2) --0
        mod(value1,value2) 取余函数 
    9.通用函数
        nvl(参数1,参数2) 如果参数1=null,就返回参数2
        nvl2(参数1,参数2,参数3) 如果参数1=null,就返回参数3,否则返回参数2
        nullif(参数1,参数2) 如果参数1=参数2,就返回null,否则返回参数1
        coalesce(参数1...) 返回第一个不为null的值
    10.条件表达式
        mysql和oracle通用
            case 字段
                when 值1 thenwhen 值2 thenwhen 值3 thenelse
                    默认值
                end
        oracle特有
            decode(字段,if1,then1,if2,then2,eles1)
    11.exists(查询语句)
        存在的意思,当作布尔值来处理
            当查询语句有结果时,返回true
            当查询语句没有结果时,返回false
    12.分页查询
        在Oracle中没有分页查询,只能借助子查询来实现分页查询
            查询第6到第10条记录
            select * from (select rownum hanghao,emp.* from emp) tt where tt.hanghao  between 6 and 10;
    13.并集运算
        union:去除重复的,并且进行排序
        union all:不会去除重复的
        列的类型要一致,按照顺序写,结果数量要一致(如果不足用null填充,或者写相同类型的数据填充)
    14.差集运算 minus

猜你喜欢

转载自www.cnblogs.com/QQ1171492144/p/10654208.html