zoukankan      html  css  js  c++  java
  • OracleSql语句学习(二)

    DQL语句(查询语句)

    SELECT子句用来指定要查询的字段,若写“*”则表示查询所有字段。FROM子句用来指定数据来源的表。
    
      如:SELECT * FROM emp_weiyiji; SELECT empno,ename,job,sal FROM emp_weiyiji
    
    SELECT子句中也允许使用函数或表达式,这样可以将结果查询出来。
      查看每个员工的年薪?
    
        SELECT ename,sal*12 FROM emp_weiyiji
    在DQL中使用WHERE子句也可以只查询出满足条件的记录。
      查看职位是“CLERK”的员工?
    
        SELECT ename,job,sal FROM emp_weiyiji WHERE job='CLERK'
      查看工资高于2500的员工? 
    
        SELECT ename,job,sal FROM emp_weiyiji WHERE sal>'2500'

    常用函数使用

      ①、字符串处理相关函数

    CONCAT(c1,c2)连接字符串
      SELECT CONCAT(ename,sal) FROM emp_weiyiji
    
      SELECT CONCAT(CONCAT(ename,','),sal) FROM emp_weiyiji  //往拼接的字符串中添加','
    ||拼接字符串:SELECT ename||','||sal FROM emp_weiyiji
    
    LENGTH(c):求字符串长度:
    
       SELECT ename,LENGTH(ename) FROM emp_weiyiji
    
    UPPER,LOWER,INITCAP 将字符串转换为全大写,全小写,首字母大写
      提示:DUAL伪表,当查询的内容与任何表没有关系时,可以在FROM子句中查询该表,会查询出一条记录。
      SELECT UPPER('helloworld'),LOWER('HELLOWORLD'),INITCAP('hello world')FROM dual  
    TRTM,LTRIM,RTRIM 去除字符串两边、左边、右边的指定字符
      SELECT TRIM('e' FROM 'eeeeeliteeeeeeeee') FROM dual  注意:FROM前面只能是一个字符,即只能去掉单字符
      SELECT LTRIM('eeeeeseliteeee','se') FROM dual去除左边
      SELECT RTRIM('eeslitseeseeses','se') FROM dual去除右边
    
    LPAD,RPAD补位函数,允许将指定字符串显示指定位数,不足时补充若干指定字符达到该长度
      SELECT ename,RPAD(sal,5,'$') FROM emp_weiyiji右补齐($改成空隔就是右对齐)
      SELECT ename,LPAD(sal,5,'$') FROM emp_weiyiji左补齐($改成空隔就是左对齐)
    
    SUBSTR(str,m,n)
      将给定字符串从m处开始连续截取n个字符n不知道则是截取到末尾,n超过可以截取的字符数量也是截取到末尾。m可以是负数,负数则是从倒数位置处开始数据库中的小标从1开始!!
      SELECT SUBSTR('thinking in java',10,5) FROM dual
    
    INSTR(c1,c2,m,n)
    
      查看c2在c1中的位置,m用来指定从哪儿开始检索,不写默认从第一个字符开始n表示第几次出现,不写默认为1
      SELECT INSTR('thinking in java','in',4,2) FROM dual
      ②、数字处理相关函数
    ROUND(m,n):四舍五入 
      n为保留到小数点后的位数,若n为负数则是10为以上的数字
      SELECT ROUND(55.678,1) FROM dual55.7
      SELECT ROUND(55.678,0) FROM dual56
      SELECT ROUND(55.678,-2) FROM dual100
    
    TRUND(m,n)函数:截取数字(不进行四舍五入)
      SELECT TRUNC(55.678,1) FROM dual55.6
      SELECT TRUNC(55.678,0) FROM dual55
      SELECT TRUNC(55.678,-2) FROM dual0
    
    MOD(m,n)求余数
      SELECT ename,MOD(sal,1000) FROM emp_weiyiji
    CELL,FLOOR向上取整和向下取整
      SELECT CEIL(45.678) FROM dual46
      SELECT FLOOR(45.678) FROM dual45
      ③、日期处理相关函数
    SYSDATE:返回一个Date类型数据,表示当前系统时间
    
    SYSTIMESTAMP:返回一个时间戳类型,表示当前系统时间
        SELECT SYSDATE FROM dual
        SELECT SYSTIMESTAMP FROM dual
    
      将一个字符串按照指定的日期格式解析为DATE:
    
        SELECT TO_DATE('1992-08-03 14:22:15','YYYY-MM-DD HH24:MI:SS') FROM dual
    
      在日期格式字符串中,除英文,数字,符号外的其他字符都要使用双引号括起来
        SELECT TO_DATE('1992年08月03日 14时22分15秒','YYYY"年"MM"月"DD"日" HH24"时"MI"分"SS"秒"')FROM dual
    
    TO_CHAR函数 
      将一个DATE按照给定的日期格式转换为字符串格式?
        SELECT TO_CHAR(SYSDATE,'YYYY-MM-DD HH24:MI:SS') FROM dual
    
      日期类型是可以进行计算的:
        1.对一个日期加减一个数字等同于加减天数
        2.两个日期相减,差为相差的天数,同样, 日期减也可以比较大小,越晚的越大。
      查看每个员工入职到今天共多少天了?
        SELECT ename,SYSDATE-hiredate FROM emp_weiyiji
      返回给定日期所在月的月底日期
    
        SELECT SYSDATE+1 FROM dual
      查看当月底是哪天?
        SELECT LAST_DAY(SYSDATE+1) FROM dual
    
    ADD_MONTHS(date,1) 计算指定日期加上指定的月后的日期,若i是负数,则是计算减法。
      查看每个员工入职20周年纪念日?
        SELECT ename,ADD_MONTHS(hiredate,12*20) FROM emp
    
      计算两个日期之间相差的月
        SELECT ename,MONTHS_BETWEEN(SYSDATE,hiredate) FROM emp_weiyiji
    
    NEXT_DAY(date,i) 返回给定日期之后一周内(7天内)的指定周几的日期
      SELECT NEXT_DAY(SYSDATE,7) FROM dual
    
      LEAST、GREATEST函数 求最小值与最大值
      SELECT LEAST(SYSDATE,TO_DATE('2008-08-08','YYYY-MM-DD')) FROM dual 最小值
    
    EXTRACT函数,提取指定日期指定时间分量的值。
        SELECT EXTRACT(YEAR FROM SYSDATE) FROM dual
      查看1980年入职的员工?
        SELECT ename,hiredate FROM emp_weiyiji
        WHERE EXTRACT(YEAR FROM hiredate)=1980
      ④、空值处理相关函数

    创建student表格,并且插入数据
    CREATE TABLE student_weiyiji
    (
    ID NUMBER(4),
    NAME CHAR(20),
    GENDER CHAR(1)
    )
    INSERT INTO student_weiyiji VALUES(1000,'李莫愁','F');
    INSERT INTO student_weiyiji VALUES(1001,'林平之',NULL);
    INSERT INTO student_weiyiji(id,name) VALUES(1002,'张无忌');
    SELECT * FROM student_weiyiji

    使用NULL作为判断条件 将性别不是NULL的记录删除

      DELETE FROM student_weiyiji WHERE gender IS NOT NULL

    NULL的运算
       NULL与字符串连接等于什么都没做 NULL与数字运算结果还是NULL
        SELECT ename,sal,comm,sal+comm FROM emp_weiyiji

    空值函数 
    NVL(f1,f2) 当f1为NULL时,函数返回f2的值,否则返回f1自身所以NVL函数的作用是将NULL值替换为非NULL

        SELECT ename,sal,comm,sal+NVL(comm,0) FROM emp_weiyiji

      查看绩效情况,有绩效的显示”有绩效“ 为NULL的则显示”没有绩效“

        SELECT ename,sal,comm,NVL2(comm,'有绩效','没有绩效') FROM emp_weiyiji
    NVL2(f1,f2,f3)函数 当f1不为NULL时函数返回f2 当f1为NULL时,函数返回f3
        SELECT ename,sal,comm,NVL2(comm,sal+comm,sal) FROM emp_weiyiji

  • 相关阅读:
    杨巧丽 实验十四 团队项目评审&课程学习总结
    201671010448 杨巧丽 实验四附加实验
    201671010448 杨巧丽 《英文文本统计分析》结对项目报告
    201671010448 词频统计软件项目报告
    201671010448 杨巧丽 实验三 作业互评与改进
    实验一 针对《构建之法》一书自己的几个疑惑
    实验十四 团队项目评审&课程学习总结
    201671010453钟红耀英文文本统计分析》结对项目报告
    词频项目
    钟红耀实验三作业互评与改进报告
  • 原文地址:https://www.cnblogs.com/zblwyj/p/10612042.html
Copyright © 2011-2022 走看看