您的位置:首页 > 数据库 > Oracle

oracle 数据库 入门第一天

Java_HCL 2019-10-25 18:27 453 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/Java_HCL/article/details/102747973

oracle数据库入门

  • Oracle 的两种函数
  • 2分组函数
  • 查询语句

    你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。

    基本查询语句

    关键词 作用
    spool
    spool 文件路径:开启sql语句缓存
    spool off:保存sql语句到文件
    host cls
    清屏
    show user
    显示当前用户
    ·
    desc
    后跟表名:查询表结构
    selet * from tab
    查询当前用户下的所有表,tab为系统创建的保存表信息的表
    show linesize
    显示行宽
    set linesize
    设置行宽,后加数字,比如 150
    col 列名 for a8
    设置列显示字符串长度,a表示字符
    col 列名 for 9
    设置列显示数字位数,一个9代表一位数
    /
    单独使用,表示执行上一条sql语句
    c
    /错误单词/正确单词
    修改上一条语句的错误单词,修改后,输入 / 执行
    + - * /
    数字运算符
    sql中的null值
    1.包含null的表达式都为null
    2.null永远不等于null
    as
    取别名
    ed
    进入缓存文件编辑上条sql语句,保存关闭后,输入 / 执行
    distinct
    1.去除查询列的重复值
    2.作用域为后面所有列
    concat
    连接两个字符串:concat(A,B)
    dual
    伪表,测试用:select 3+2 from dual
    ||
    连接多个字符串

    oracle 过滤和排序

    注意事项 示例
    字符大小写敏感
    如查询员工为SMITH的信息
    SQL> select * from emp where ename=‘SMITH’;
    SQL> select * from emp where ename=‘SMITh’;
    日期格式敏感
    SQL>
    select * from v$nls_parameters;
    【查看当前的日期格式】
    SQL>
    alter session set NLS_DATE_FORMAT='yyyy-mm-dd';
    【修改当前会话的日期格式】
    查询日期:
    SQL> select * from emp where hiredate=‘17-12月-80’;
    SQL> select * from emp where hiredate=‘1980-12-17’;
    between and
    查询薪水1000~2000之间的员工,结果是包含1000和2000的
    SQL> select * from emp where sal between 1000 and 2000;
    注:含有边界 小值在前 大值在后
    in 在集合中<br/>not in 不在·
    1.查询10和20号部门的员工
    SQL> select * from emp where deptno in(10,20);
    2.查询不在10和20号部门的员工
    SQL> select * from emp where deptno not in(10,20);
    如果集合中含有null,不能使用not in; 但可以使用in
    like 模糊查询
    1.查询名字以S打头的员工
    SQL> select * from emp where ename like ‘S%’;
    2查询名字是4个字的员工,4个下划线即可
    SQL> select * from emp where ename like '____'
    3.查询名字中含有下划线的员工 需要转意字符
    SQL> select * from emp where ename like ‘%_%’ escape ‘’;
    rollback 回滚
    Oracle是自动开启事务,不同mysql需要手动开启
    order by 排序
    1.order by后面 + 列,表达式,别名,序号
    2.order by 作用于后面所有的列;desc只作用于离他最近的列
    null值为最大,nulls last可以让null值一直放最后

    select * from emp order by comm desc nulls last;
    set pagesize
    set pagesize 20 : 设置界面显示的分页大小

    Oracle 的两种函数

    1.单行函数

    单行函数:用于操作数据对象,比如操作字符,数值,日期
    函数格式:参数可以是一个列或一个值
    function_name[(arg1,arg2,…)]

    字符操作

    函数作用 示例说明
    lower
    转小写
    upper
    转大写
    Initcap
    首写母大写
    SQL> select lower(‘Hello’) 转小写upper(‘Hello’) 转大写,initcap(‘hello’) 首写母大写 from dual
    substr(a,b)

    从a中,第b位开始取
    select substr(‘Hello,How Are You’,3) from dual;
    substr(a,b,c)

    从a中,第b位开始取,取后面c个字符
    SQL> select substr(‘Hello,How Are You’,7,3) from dual;
    instr(a,b)

    b字符串在a 中的位置
    select instr(‘hello’,‘ll’) from dual;
    从1开始
    length
    字符数
    lengthb
    字节数 SQL> select length(‘hello你好’) 字符串,lengthb(‘hello你好’) from dual;
    lpad
    左填充
    rpad
    右填充
    SQL> lpad/rpad(a,b,c)
    a 原字符串,b 新字符串总长度,c 填充物
    trim
    去掉前后指定的字符
    SQL> select trim(‘H’ from ‘Hello,WorldH’) from dual;
    replace
    替换
    SQL> select replace(‘hello’,‘ll’,’**’) from dual;

    浮点操作

    函数作用 示例说明
    round
    四舍五入
    SQL>select round(466.691,2) ,round(466.691,1) from dual;
    trunc
    截断
    SQL>select trunc(466.691,2) ,trunc(466.691,1) ,from dual
    第二个参数,0(可省略):代表从小数点截断,正数往右移动断点

    时间格式化

    格式 说明 举例
    YYYY
    Full year in numbers 2011
    Year
    Year spelled out(年英文全称) Twenty eleven
    MM
    Tow-digit value of month 月分(两位数字) 04
    MONTH
    Full name of month(月的全称) 4月
    DY
    Three-letter abrreviation of the day of the week(星期几) 星期一
    DAY
    Full name of the day of the week 星期一
    DD
    Numeric day of the moth 02

    函数常用格式

    符号 示意
    9
    数字
    0
    $
    美元符
    L
    本地货币符
    .
    小数点
    ,
    千位符

    时间操作

    函数 示例
    sysdate
    系统时间
    SQL> select sysdate from dual;
    to_char
    格式化时间
    to_char的函数格式 to_char(date,’formate_model’
    )
    SQL> select to_char(sysdate,‘yyyy-mm-dd HH24:mi:ss’) 当前时间 from dual;
    时间相加减 1.昨天 今天 明天
    SQL>select sysdate-1 昨天,sysdate 今天,sysdate+1 明天 from dual;
    2.2.计算员工的工龄:天 星期 月 年
    SQL>select empno,ename,hiredate, (sysdate-hiredate) 天,(sysdate-hiredate)/7 星期,(sysdate-hiredate)/30 月,(sysdate-hiredate)/365 年 from emp
    months_between

    两个日期相差的月数
    SQL> select empno,ename,hiredate, (sysdate-hiredate)/30 一,months_between(sysdate,hiredate) 二 from emp;
    add_months

    当前日期加上n个月的时间
    一年后的时间
    SQL> select add_months(sysdate,12) from dual;
    last_day

    最后一天
    当前月的最后一天
    SQL> select last_day(sysdate) from dual;
    next_day

    下个星期几
    下个星期
    SQL>select next_day(sysdate,‘星期日’) from dual;
    next_day的应用:设置时间自动备份数据
    to_char

    也可以格式数字
    1.年和月的四舍五入
    SQL> select round(sysdate,‘month’),round(sysdate,‘year’) from dual;
    2.2017-06-29 09:50:09今天是星期四
    SQL>select to_char(sysdate,‘yyyy-mm-dd HH24:mi:ss"今天是"day’) from dual
    3.查询员工薪水:两位小数 千位符 货币代码
    SQL> select to_char(sal,‘L9,999.99’) from emp;

    空操作

    函数 示例
    |nvl2(a,b,c)

    当a=null的时候,返回c;否则返回b
    如果奖金是空,输出0,注意2前的是L的小写,不是1
    SQL> select ename,nvl2(comm,comm,0) from emp;
    nullif(a,b)

    当a=b的时候,返回null;否则返回a
    SQL> select nullif(‘abc’,‘abc’) from dual;
    SQL> select nullif(‘abc’,‘abcb’) from dual;
    nvl(a,b)

    当a=null的时候,返回b;否则返回a
    SQL> select nvl(comm, 100) from emp;

    条件判断

    函数 用法
    使用decode判断字符串是否一样
    decode(value,if1,then1,if2,then2,if3,then3,…else)
    value
    :输入的值
    if
    判断的值
    then
    输出结果
    eles
    默认结果
    `相当于java中的switch判断
    使用decode比较大小
    decode(sign(var1-var2),-1,var 1,var2)
    sign()函数根据某个值是0、正数还是负数,分别返回0、1、-1
    使用decode函数分段
    比较大小的嵌套使用
    利用decode实现表或者试图的行列转换
    select sum(decode(ename,'字段名‘,sal,0) '字段名‘ ,。。。from emp;
    使用decode函数来使用表达式来搜索字符串
    decode (expression, search_1, result_1, search_2, result_2, …, search_n, result_n, default)
    decode函数比较表达式和搜索字,如果匹配,返回结果;如果不匹配,返回default值;如果未定义default值,则返回空值。
    使用case when来判断
    case when 条件1 then 结果1 when 条件2 then 结果2…else 默认结果

    2分组函数

    组函数语法
    SELECT [column,] group_function(column),…
    FROM table
    [WHERE condition]
    [GROUP BY column]
    [GROUP BY column]
    Having…

    常用组函数

    函数 示例
    Avg 求平均数
    select avg(sal) from emp;
    Count 求记录数
    select count(distinct deptno) from emp;
    Max 求最大值
    select max(sal) from emp;
    Min 求最小值
    select min(sal) from emp;
    Sum 示各和
    select sum(sal) from emp;
    注意
    null值 组函数(多行函数)自动滤空,也就是空值也会计算
    group by 分组
    • 在select列表中,所有未包含的组函数中的列都应该包含在group by子句中
    • where和having的区别:where后面不能使用多行函数
    • rollup groupby语句增加【报表汇总】
    标签: