十天学会Oracle数据库(Day2)

 十天学会Oracle数据库(Day2)


今日目标:

  1. 查询排序(重要)
  2. Oracle思考题(重要)
  3. 单行函数(背)
  4. 多表查询(重要)


一:查询排序

  1. 使用子句【ORDER BY 字段[ASC|DESC],字段[ASC|DESC]】:ASC表示升序,DESC表示降序;
  2. 按照工资由高到低排序。SELECT *FROM emp ORDER BY sal ASC;
  • SELECT FOME WHERE ORDER BY;就是这么一个子句


二:Oracle思考题

1:选择部门30中的所有员工

  SELECT *FROM emp WHERE deptno=30;

2:列出所有办事员的姓名,编号和部门编号

  SELECT ename ,empno,deptno FROM emp WHERE job='CLECK';

3:找出佣金高于薪金60%的员工

  SELECT * from emp WHERE comn>sal*0.6;

4:找出收取佣金员工的不同工作

  SELECT DISTINCT job FROM emp WHERE comn IS NOT NULL;

5:找出不收取佣金或者佣金小雨100的员工

  SELECT  job FROM emp (comn IS NULL) OR (comn<100);



三:单行函数

  在Oracle中提供的单行函数非常多,有几万个,主要的有以下几个:

  • 字符串函数
    • 大小写转换函数:字符串 UPPER()|lower()。select *from emp where ename=UPPER('&name');
    • 首字母大写,其余字母小写。Initrap();
    • 取得字符串的长度,length(字符串型字段);
    • 替换指定字符串的内容。Replace
    • 字符串的截取操作。SUBSTR
    • 去掉左右空格的函数 TRIM(字符串类型的字段)
  • 数字函数
    • 四舍五入函数:ROUND(数字,位数);
    • 截取小数函数:TRUNC(数字,位数);
    • 求模函数:求余数
  • 日期函数
    • 伪列(是不存在表中的列,但是可以直接执行):SYSTIME,SYSDATE
    • 取得当前的系统日期,然后,日期+数字=日期;日期-日期=两个日期之间的参数;
      • SELECT SYSDATE-hireday from emp;
    • 加上指定月后的时间ADD_MONTHS(日期|列 月数)
    • 求出本月的最后一天 LAST_DAY(SYSDATE)
  • 转换函数
    • 字符串,数字,日期
    • 日期(yyyy)(mm)(dd)(HH)(mi)(ss):SELECT TO_CAHR(SYSDATE,'yyyy-mm-dd hh24:mi:ss') from dual;
    • 转日期操作:
    • 转数字类型:TO_NUMBER('1').但是现在Oracle提供了数据类型自动转换
  • 通用函数
    • NVL();
    • DECODE();——多数据判断


四:多表查询

  1. 基本概念

      同时从多个表中查询数据。

      必须使用关联字段消除笛卡尔积。

      就是两张表中的相同的字段 SELECT* FROM EMP,DEPT WHERE EMP.DEPTNO=DEPT.DEPTNO;

      如果表名称过长,往往会使用一个别名,select * from EMP E, DEPT D WHERE E.DEPTNO=D.DEPTNO;

  2. 要先确定关联条件

      不一定是直接相同的字段,也可能需要自己定义关联条件,方法就是通过WHERE定义关联条件

      多表查询其实性能并不好,减少多表查询就能提升性能。

        第一种叫做内连接,第二种叫做外链接

        增加行:INSERT INTO

原文地址:https://www.cnblogs.com/BoscoGuo/p/5827413.html