Java进阶-Oracle(二十一)(2)

目录

  • 一、Oracle 数据库的操作(DDL DML DQL DCL TPL)
    • 1.1 标识符、关键字、函数等
      • 1.1.1 数值类型:
      • 1.1.2 字符串类型:
      • 1.1.3 日期类型
      • 1.1.4 大的数据类型--适合保存更多的数据
    • 1.2 运算符
    • 1.3 函数---预定义函数、自定义函数,
      • 1.3.1 数值函数---进行数值操作:
      • 1.3.2 字符串函数
      • 1.3.3 日期函数
      • 1.3.4 转换函数
      • 1.3.5 其他函数
    • 1.4 单表多表查询
    • 1.5 分页查询

一、Oracle 数据库的操作(DDL DML DQL DCL TPL)

1.1 标识符、关键字、函数等

  • 1)标识符—数字、字母、下划线、#
  • 2)关键字
  • 3)数据类型:

1.1.1 数值类型:

  • 1) Mysql—int double
  • 1) Oracle—number:整数和小数,number(n)–整数,number(m,n)–小数,m表示小数的整体位数,n表示小数点之后的位数

1.1.2 字符串类型:

Mysql—char varchar
Oracle—char varchar2 nchar nvarchar2
char nchar – 定长类型,向此类型的字段中添加字符串的时候,如果字符串的长度不够指定的长度,那么自动补齐空格
varchar2 nvarchar2 – 变长类型,向此类型的字段中添加字符串的时候,不会补齐空格,添加的字符串是多长那么空间就是多长
varchar2和nvarchar2–占4000字节,通常一个数字或者一个字母对应一个字节,使用此两个类型可以保存4000个字母或者数字,在Oracle中默认三个字节一个汉字
varchar2(n) — n表示字节个数,能放的汉字个数n/3
varchar2(n char) — n表示汉字个数
char和nchar—占2000字节,char(n char) — n表示汉字个数

1.1.3 日期类型

Mysql – date datetime
Oracle – date timestamp

1.1.4 大的数据类型–适合保存更多的数据

Mysql — text tinytext longtext 存更多的字符串
blob longblob 存非字符串的内容,比如图片、音频等
Oracle — clob long 存更多的字符串
blob 存非字符串的内容,比如图片、音频、视频等

1.2 运算符

A、算术运算 + - * / mod()
B、关系判断运算:> >= < <= <>/!=
C、逻辑判断运算:and or not
D、特殊运算:is null is not null like in between…and
not like not between…and

1.3 函数—预定义函数、自定义函数,

在Oracle中函数的运行需要使用标准的sql格式,在Oracle中为了补齐标准的sql,设置了一个dual的虚拟表,
聚合函数—统计函数:count() avg() sum() max() min()
单行函数:

1.3.1 数值函数—进行数值操作:

数学函数–
abs()绝对值
四舍五入round()

Java进阶-Oracle(二十一)(2)_第1张图片

截取数值函数trunc()–只删除不进位

Java进阶-Oracle(二十一)(2)_第2张图片

floor()–比指定数值小的最大整数
ceil()–比指定数值大的最小整数

Java进阶-Oracle(二十一)(2)_第3张图片

power()
log()

1.3.2 字符串函数

字符串截取–substr()

Java进阶-Oracle(二十一)(2)_第4张图片

字符串长度–length()

Java进阶-Oracle(二十一)(2)_第5张图片

大写转小写lower()
小写转大写upper()

Java进阶-Oracle(二十一)(2)_第6张图片

首字母大写,其他小写initcap()

Java进阶-Oracle(二十一)(2)_第7张图片

字符串串联concat() ||

Java进阶-Oracle(二十一)(2)_第8张图片

1.3.3 日期函数

sysdate – 系统时间

Java进阶-Oracle(二十一)(2)_第9张图片

给月份增加值add_months()

Java进阶-Oracle(二十一)(2)_第10张图片

四舍五入日期round(date,’month/year’)

Java进阶-Oracle(二十一)(2)_第11张图片

1.3.4 转换函数

在Oracle中日期格式是:日-月-年,而且月上还有一个汉字‘月’,比如:14-5月-19 19年5月14日
字符串转日期

select to_date('2023-05-07','YYYY-MM-dd') from dual;

Java进阶-Oracle(二十一)(2)_第12张图片

字符串转数值–to_number(数值字符串,格式字符串)

select to_number('123','9G999') from dual;
select to_number('56,023,780','999,999,999') from dual;

Java进阶-Oracle(二十一)(2)_第13张图片

日期转字符串、数值转字符串to_char

SELECT to_char(sysdate,'YYYY-MM-dd') from dual;
SELECT to_char(123456789,'999,999,999') from dual;

Java进阶-Oracle(二十一)(2)_第14张图片

1.3.5 其他函数

Oracle自带模板表

Java进阶-Oracle(二十一)(2)_第15张图片

与null有关的函数

select nvl(comm,0) from emp;

Java进阶-Oracle(二十一)(2)_第16张图片

nvl()函数,将null转成指定的值
nvl2()函数,当第一个参数值不为null时,显示第二个参数的结果,当第一个参数值为null时,显示第三个参数的结果

select nvl2(comm,sal+comm,sal) from emp;

Java进阶-Oracle(二十一)(2)_第17张图片

与case when then结构有关的函数

select job,case job when 'CLERK' then '文员'
                    when 'SALESMAN' then '销售员'
                    when 'MANAGER' then '经理'
                    when 'ANALYST' then '分析员'
                    when 'PRESIDENT' THEN '总裁'
           end job1
from emp;

Java进阶-Oracle(二十一)(2)_第18张图片

代替以上格式的函数

select job,decode(job,'CLERK','文员',
                      'SALESMAN','销售员',
                      'MANAGER','经理',
                      'ANALYST','分析员',
                      'PRESIDENT','总裁') job1
from emp;

Java进阶-Oracle(二十一)(2)_第19张图片

1、DDL—数据库定义语言:create drop alter
2、DML—数据库操作语言:insert delete update
3、DQL—数据库查询语言:select

CREATE TABLE t_person(

	pid NUMBER(5) primary key,
	pname VARCHAR2(3 CHAR),
	psex CHAR(1),
	pbirthday DATE,
	psal NUMBER(5,2),
	pbir timestamp
);

SELECT * FROM t_person;

INSERT INTO t_person VALUES(1004,'张易得','3','1-5月-1995',333.993,SYSDATE)

Java进阶-Oracle(二十一)(2)_第20张图片

1.4 单表多表查询

单表查询:简单查询、子查询、连接查询
多表查询:连接查询、子查询

 -- 查询员工中没有奖金的员工信息
SELECT * FROM EMP WHERE COMM IS NULL OR COMM = 0

Java进阶-Oracle(二十一)(2)_第21张图片

-- 子查询的结果如果出现在外查询的Where部分,那么子查询的结果就是where的条件值
-- 子查询的结果如果出现在外查询的from部分,那么子查询结果就是表
--如果子查询出现在where部分,子查询结果只有一个值,那么把子查询就看作是这个值
--如果子查询出现在where部分,子查询结果是一列多个值,那么把子查询看做同类型多个值

--查询员工工资比平均工资高的员工的信息

SELECT * FROM EMP WHERE SAL > (select AVG(SAL) from EMP)

Java进阶-Oracle(二十一)(2)_第22张图片

-- 查询Smith、allern同部门的其他员工信息

select DEPTNO from EMP where  ENAME = 'SMITH' OR ENAME = 'ALLEN';

SELECT * FROM EMP 
WHERE DEPTNO IN (select DEPTNO from EMP where  ENAME = 'SMITH' OR ENAME = 'ALLEN') 
AND  ENAME <> 'SMITH' AND ENAME <> 'ALLEN';

Java进阶-Oracle(二十一)(2)_第23张图片

--查询每位员工姓名以及领导的姓名

SELECT * from  emp e,emp m where e.empno = m.mgr(+)   --(+)ORACLE 特有的加上相当于左查询
 
SELECT * from  emp e LEFT JOIN emp m ON e.empno = m.mgr  --左查询

Java进阶-Oracle(二十一)(2)_第24张图片

1.5 分页查询

  • 在Oracle中实现分页,没有limit关键字
  • rowid保证表中数据的唯一性
  • Rownum是查询结果的行号
  • 分页实现

– 第一页,每页4个,行号从1到4

select empno,ename,job,mgr,hiredate,sal,comm,deptno
from (select rownum r,emp.* from emp) te
where te.r between 1 and 4;

Java进阶-Oracle(二十一)(2)_第25张图片

你可能感兴趣的:(#,计算机(Java进阶)初级进阶,阶段,java,oracle,开发语言)