Java学习日记十五

一、ORACLE数据库中的函数

字符串操作函数

  • SUBSTR(ch, pos, length) 字符串提取
    • ch:源字符串
    • pos:提取的起始位置,最小是1
    • length:提取的长度

例如:

SELECT SUBSTR('abcdef', 1, 3) FROM dual;--输出abc
  • INSTR(str, substr)字符串查找
    • str:源字符串
    • substr:要查找的字符串

例如:

SELECT INSTR('abcdef','cd',1) FROM dual;--输出3
SELECT INSTR('abcdefcd','cd',1,2) FROM dual;--从1开始找第2次出现的位置 输出7
  • LTRIM(ch)、RTRIM(ch)、TRIM(ch)去除空格
    • ch:源字符串

例如:

SELECT LTRIM('     abc') FROM dual;--输出abc
SELECT RTRIM('abc     ') FROM dual;--输出abc
SELECT TRIM('     abc     ') FROM dual;--输出abc
  • TO_CHAR(x)其他类型转成字符串
    • x:其他类型的值

例如:

SELECT TO_CHAR(SYSDATE,'yyyy-mm-dd') FROM dual;--输出2019-04-28
  • LPAD(expr1, n, expr2)、RPAD(expr1, n, expr2)左右补齐
    • expr1:要补齐的字符串
    • n:补齐后字符串的长度
    • expr2:用来补齐的字符串

例如:

SELECT LPAD('123', 5, 0) FROM dual;--输出00123
SELECT RPAD('123', 5, 0) FROM dual;--输出12300
  • LOWER(ch)、UPPER(ch)大小写转换
    • ch:源字符串

例如:

SELECT LOWER('ABCdefGHIjkl') FROM dual;--输出abcdefghijkl
SELECT UPPER('ABCdefGHIjkl') FROM dual;--输出ABCDEFGHIJKL
  • LENGTH(ch)获取字符串长度
    • ch:源字符串

例如:

SELECT LENGTH('abcdef') FROM dual;--输出6
  • REPLACE(str,oldstr,newstr)字符串替换
    • str:源字符串
    • oldstr:被替换的字符串
    • newstr:替换的内容

例如:

SELECT REPLACE('abcdef', 'def', 'xyz') FROM dual;--输出abcxyz
  • CONCAT(ch1, ch2)字符串连接
    • ch1:字符串1
    • ch2:字符串2

例如:

SELECT CONCAT('abc','def') FROM dual;--输出abcdef
--也可以使用||符号进行连接
SELECT 'abc' || 'def' FROM dual;--输出abcdef

数学函数

  • ABS(n)绝对值
SELECT ABS(-10) FROM dual;--输出10
  • ROUND(n, int)四舍五入
SELECT ROUND(56.789) FROM dual;--输出57
SELECT ROUND(56.789, 2) FROM dual;--输出56.79
SELECT ROUND(-56.789) FROM dual;--输出-57
SELECT ROUND(-56.789, 2) FROM dual;--输出-56.79
  • CEIL(n)取大于或者等于n的最小值
SELECT CEIL(56.789) FROM dual;--输出57
SELECT CEIL(56) FROM dual;--输出56
SELECT CEIL(-56.789) FROM dual;--输出-56
  • FLOOR(n)取小于或者等于n的最大值
SELECT FLOOR(56.789) FROM dual;--输出56
SELECT FLOOR(56) FROM dual;--输出56
SELECT FLOOR(-56.789) FROM dual;--输出-57
  • SQRT(n)平方根
SELECT SQRT(2) FROM dual;--输出1.41421356237309504880168872420969807857
  • POWER(n1, n2)计算n1的n2次方
SELECT POWER(2, 10) FROM dual;--输出1024
  • TRUNC(n1, n2)数字截取,不会四舍五入
SELECT TRUNC(56.789, 1) FROM dual;--输出56.7
  • TO_NUMBER(expr)字符串转数字
SELECT TO_NUMBER('56789') FROM dual;--输出56789
SELECT TO_NUMBER('-56789') FROM dual;--输出-56789

日期函数

  • EXTRACT(time_unit FROM expr)提取年月日时分秒
SELECT EXTRACT(YEAR FROM SYSDATE) FROM dual;--2019
SELECT EXTRACT(MONTH FROM SYSDATE) FROM dual;--4
SELECT EXTRACT(DAY FROM SYSDATE) FROM dual;--28
  • 获取当前时间
SELECT CURRENT_DATE FROM dual;--2019-04-28 15:55:10
SELECT SYSDATE FROM dual;--2019-04-28 15:55:10
SELECT CURRENT_TIMESTAMP FROM dual;--2019-04-28 15:55:10.913000 +08:00
SELECT SYSTIMESTAMP FROM dual;--2019-04-28 15:55:10.914000 +08:00
  • 字符串转时间
SELECT TO_DATE('2019-04-28', 'yyyy-mm-dd') FROM dual;
SELECT TO_TIMESTAMP('2019-04-28', 'yyyy-mm-dd') FROM dual;
  • ADD_MONTHS(date, int)加月份
SELECT ADD_MONTHS(SYSDATE, 10) FROM dual;--10个月后是2020-02-28 15:58:43
  • LAST_DAY(date)获取当月的最后一天
SELECT LAST_DAY(SYSDATE) FROM dual;--2019-04-30 16:00:23

聚合函数

  • COUNT()计算记录有多少条
SELECT COUNT(*) FROM sales;
  • MAX()计算列数据的最大值
SELECT MAX(PRICE) FROM sales;
  • MIN()计算列数据的最小值
SELECT MIN(PRICE) FROM sales;
  • SUM()计算列数据的总和
SELECT SUM(PRICE) FROM sales;
  • AVG()计算列数据的平均值
SELECT AVG(PRICE) FROM sales;

二、视图

  在ORACLE数据库中视图是数据库中特有的对象。视图主要用于数据查询,它不会存储数据。视图的数据来源于一个或者多个表中,通常情况下视图主要用于查询,不提倡通过视图修改表中的数据,因为视图中的数据只是一个或者多个表中的局部数据。

  • 关系视图
    创建关系视图格式:
CREATE OR REPLACE VIEW 视图名称 AS
SELECT 表或者其他视图;

例如:

CREATE OR REPLACE VIEW view_emp_dept AS
SELECT D.ID 部门编号,D.NAME 部门名称,E.ID 员工编号,E.NAME 员工姓名 FROM DEPT D,EMP E WHERE E.DEPID = D.ID;
  • 只读关系视图
    视图中的数据来源于表中,修改了视图的数据就是修改了表中的数据,通常不提倡通过视图修改表中的数据。
    创建只读关系视图格式:
CREATE OR REPLACE VIEW 视图名称 AS
SELECT 表或者其他视图;
WITH READ ONLY;
  • 内嵌视图
    内嵌视图是非存在于ORACLE数据库中的对象,它只是查询过程中生成的结果集;内嵌视图通常以子查询的方式出现。
  • 物化视图
    物化视图也叫快照,物化视图和表一样生成物理文件并占用磁盘空间。

三、PL/SQL

  PL/SQL是过程化SQL语言是对SQL语句的扩展,增加了编程语言的特点。

PL/SQL块的组成结构

DECLARE
    变量1 类型;
    变量2 类型;
BEGIN
    数据处理语句;
    EXCEPTION
    异常处理语句;
END;

声明部分

  使用关键字DECLARE声明变量,使用:=符号来给变量赋值,声明部分必须写在其他语句的前面。

通常变量名称可以包括字母、下划线、数字、#、$
变量名称不能超过30个字符
第一个字符必须是字母
不区分大小写
不能使用任何关键字

数据类型

  • char 定长字符类型,包括子类character、string、rowid、nchar。最长限制2000个字符
  • varchar2 可变字符类型,包括子类varchar、string、nvarchar2。最长限制4000个字符。
  • number 值类型,包括子类int、integer、smallint、dec、float、double
  • date 日期型
  • boolean 布尔类型
  • %type 复合类型
  • %rowtype 行复合类型

逻辑控制语句

  • if-else
    格式:
IF 布尔表达式 THEN
    执行的语句;
ELSE
    执行的语句;
END IF;
  • if-elsif-else
    格式:
IF 布尔表达式1 THEN
    执行的语句;
ELSIF 布尔表达式2 THEN
    执行的语句;
ELSIF 布尔表达式3 THEN
    执行的语句;
ELSIF 布尔表达式4 THEN
    执行的语句;
ELSE
    执行的语句;
END IF;
  • case-when
    格式:
CASE
    WHEN 布尔表达式1 THEN
        执行的语句;
    WHEN 布尔表达式2 THEN
        执行的语句;
    WHEN 布尔表达式3 THEN
        执行的语句;
    WHEN 布尔表达式4 THEN
        执行的语句;
    ELSE
        执行的语句;
END CASE;

循环控制语句

  • loop循环
    格式:
LOOP
    循环体;
    EXIT;--可用exit退出循环
END LOOP;
  • while循环
    格式:
WHILE 循环条件控制语句 LOOP
    循环体
END LOOP;
  • for循环
    格式:
FOR 循环变量 IN 循环变量开始值..循环变量结束值 LOOP
    循环体
END LOOP;

end

你可能感兴趣的:(Java,学习记录)