Oracle(1)

Oracle

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
重新用该用户登录
在这里插入图片描述

1 数据类型

字符型
(1) CHAR:固定长度的字符类型,最多存储 2000 个字节
(2) VARCHAR2:可变长度的字符类型,最多存储 4000 个字节 ==> 对应的是mysql的varchar
(3) LONG:大文本类型。 最大可以存储 2 个 G ==> 对应的是mysql的text

数值型
(1)NUMBER:数值类型,代表一切数字
(2) NUMBER(5):表示数字最多5位,最大可以存的数为 99999
(3) NUMBER(5,2):表示总长度5位,最大可以存的数为 999.99

日期型
(1) DATE:日期时间型,精确到秒
(2) TIMESTAMP:精确到秒的小数点后 9 位

二进制型
(1) CLOB:存储字符,最大可以存 4 个 G
(2) BLOB:存储图像、声音、 视频等二进制数据,最多可以存 4 个 G

2 代码演示

在这里插入图片描述
新增数据后,要提交,commit(F10)
修改表
添加字段
在这里插入图片描述
修改字段类型
在这里插入图片描述
修改字段名称
在这里插入图片描述
删除字段
在这里插入图片描述
删除表
drop table 表名称

使用工具进行表的增删改
在这里插入图片描述
在这里插入图片描述
字段信息
填写字段的名称,类型, [默认值],选择是否可以为空
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3 关于主键 ID 的自增

在这里插入图片描述
在 oracle 中主键自增需要用到序列
在这里插入图片描述
新建序列
在这里插入图片描述
在这里插入图片描述
如果存在id为1的数据,会报错,违反唯一约束,再次执行就可以了,提交,然后就可以看到新增数据新增在原来的数据之后。

4 基于伪列的查询

在 Oracle 的表的使用过程中,实际表中还有一些附加的列,称为伪列。伪列就像表中的列一样,但是在表中并不存储。伪列只能查询,不能进行增删改操作。

接下来学习两个伪列: ROWID 和 ROWNUM。
ROWID
表中的每一行在数据文件中都有一个物理地址, ROWID 伪列返回的就是该行的物理地址。使用 ROWID 可以快速的定位表中的某一行。 ROWID 值可以唯一的标识表中的一行。由于 ROWID 返回的是该行的物理地址,因此使用 ROWID 可以显示行是如何存储的。

ROWNUM
在查询的结果集中,ROWNUM 为结果集中每一行标识一个行号,第一行返回 1,第二行返回 2,以此类推。通过 ROWNUM 伪列可以限制查询结果集中返回的行数。

在这里插入图片描述
在这里插入图片描述
结果发现没有显示任何记录。这是因为 rownum 是在查询语句扫描每条记录时产生的,所以不能使用大于符号,只能使用“小于”或“小于等于”,只用“等于”也不行。
所以我们需要采用子查询来完成,先让 rownum 全部生成,再进行筛选。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
基于排序的分页
rownum顺序混乱,会导致前面的序号也是乱的。是因为 ROWNUM 伪列的产生是在表记录扫描是产生的,而排序是后进行的,排序时 r 已经产生了,所以排序后 r 是乱的。
怎么解决?很简单,我们只要再嵌套一层查询(一共三层),让结果先排序,然后对排序后的结果再产生 r,这样就不会乱了。
在这里插入图片描述

5 连接查询之Oracle方言

连接查询
在这里插入图片描述
在这里插入图片描述

聚合统计

sum,avg,max,min,count
分组聚合
select * from user group by userId;在mysql是可以用的,在Oracle是不对的。
Oracle 是正常的SQL标准
在这里插入图片描述

6 函数

单行子查询
所谓单行子查询及嵌套的查询只返回一条记录,对于这种查询结果,我们可以采用单行操作符号:=,>,>=,<,<=,<>

多行子查询
子查询返回了多条记录,就得采用多行操作符:in,any,all

字符函数

在这里插入图片描述
在这里插入图片描述

数值函数

在这里插入图片描述

日期函数

在这里插入图片描述
在这里插入图片描述

转换函数

在这里插入图片描述
在这里插入图片描述

其他函数
  1. 空值处理函数 NVL :只能指定不为null的值
    NVL(检测的值,如果为 null 的值)
    在这里插入图片描述
  2. 空值处理函数 NVL2:可以同时指定为null和不为null的值
    NVL2(检测的值,如果不为 null 的值,如果为 null 的值)
    在这里插入图片描述
  3. 条件取值 decode:翻译函数
    作用:根据条件返回相应值(不是万能的,只适用于翻译值比较少的这种情况)
    decode(条件,值 1,翻译值 1,值 2,翻译值 2,…值 n,翻译值 n,缺省值)
    在这里插入图片描述
  4. 条件取值 case when then
    在这里插入图片描述
    行列转换
    在这里插入图片描述
分析函数

主要用于数据的排名使用
排名的分类
在这里插入图片描述
RANK()
在这里插入图片描述
DENSE_RANK()
在这里插入图片描述
ROW_NUMBER()
在这里插入图片描述
用 ROW_NUMBER()分析函数实现的分页查询相对三层嵌套子查询更简单一些
在这里插入图片描述

7 集合运算

在这里插入图片描述
集合运算就是将两个或者多个结果集组合成为一个结果集。
集合运算包括:
 UNION ALL(并集),返回各个查询的所有记录,包括重复记录。
 UNION(并集),返回各个查询的所有记录,不包括重复记录。
 INTERSECT(交集),返回两个查询共有的记录。
 MINUS(差集),返回第一个查询检索出的记录减去第二个查询检索出的记录
之后剩余的记录。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

oracle分页
  1. 直接用rownum
    在这里插入图片描述
  2. minus差集(不推荐,效率低)
  3. 使用row_number() over(…)函数
    在这里插入图片描述
8 数据备份
整库导出(备份)/导入

命令: exp hsj520/123123 [file=’文件名’] full=y
手动在 oracle 的安装目录下创建文件夹 backup
在该目录下打开 cmd,进行全库导出
在这里插入图片描述
完成之后,在 backup 文件夹中出现以下文件:EXPDAT.DMP。
导出的时候,如果不指定文件名,默认是 EXPDAT.MDP,我们在导出的时候可以
指定文件名。

整库导入
命令:imp hsj520/123123 [file=’文件名’] full=y
如果不指定文件名。则按照默认的 EXPDAT.MDP 进行整库导入。

按用户导入/导出

按用户导出:exp hsj520/123123 owner=hsj520 file=‘hsjspace.DMP’

按用户导入:imp hsj520/123123 file=‘hsjspace.DMP’ fromuser=hsj520

按表导入/导出

按表导出,需要表所在的用户进行登录。要导出多张表可以用逗号隔开。
exp hsj520/123123 file=‘mytable.DMP’ tables=t_owners,t_ownertype

按表导入,可以只导入部分表。
imp hsj520/123123 file=‘mytable.DMP’ tables=t_owners

java备份数据库

在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值