春节第三弹——Oracle基础

Oracle

1 体系结构

1.1 简介

oracle以数据存储量大,处理速度快,安全性高,容错性强等出色特征,长期以来占据着全球数据库市场的主导地位。以分布式数据库为核心的一组软件产品,是目前最流行的客户/服务器(CLIENT/SERVER)或 B/S 体系结构的数据库之一。Oracle 通常应用于大型系统的数据库产品。
特点:
(1)支持多用户、大事务量的事务处理
(2)数据安全性和完整性控制
(3)支持分布式数据处理
(4)可移植性
oracle和mysql区别:
https://blog.csdn.net/weixin_45044097/article/details/104309155

1.2 了解Oracle安装

由数据库管理员进行…
学会本地连接Oracle服务器,使用虚拟机
在这里插入图片描述
在这里插入图片描述
检查安装:打开 CMD 命令提示符,输入: sqlplus system/gxaedu(gxaedu 为设置的密码)
在这里插入图片描述
安装 图形化界面的软件——PLSQL Developer
学习版安装:
在这里插入图片描述
输入用户名system,密码登录进来
配置PLSQL
配置环境变量
TNS_ADMIN——C:\安装路径\network\admin
添加系统变量 NLS_LANG,值为查询出的结果
在这里插入图片描述
path——C:\安装路径\network\admin

1.3 体系结构

1.数据库
Oracle数据库是数据的物理存储。这就包括(数据文件ORA或者DBF、控制文件、联机日志、参数文件)。其实Oracle数据库的概念和其它数据库不一样,这里的数据库是一个操作系统只有一个库。可以看作是Oracle就只有一个大数据库。

2.实例
一个Oracle实例(Oracle Instance)有一系列的后台进程(Backguound Processes)和内存结构(Memory Structures)组成。一个数据库可以有n个实例。

3.用户
用户是在实例下建立的。不同实例可以建相同名字的用户。
用户是在表空间下建立的。用户登陆后只能看到和操作自己的表,Oracle 的用户与 MYSQL 的数据库类似,每建立一个应用需要创建一个用户。

4.表空间
表空间是Oracle对物理数据库上相关数据文件(ORA或者DBF文件)的逻辑映射。一个数据库在逻辑上被划分成一到若干个表空间,每个表空间包含了在逻辑上相关联的一组结构。每个数据库至少有一个表空间(称之为system表空间)。
每个表空间由同一磁盘上的一个或多个文件组成,这些文件叫数据文件(datafile)。一个数据文件只能属于一个表空间。

5.数据文件(dbf, ora)
数据文件是数据库的物理存储单位。
在这里插入图片描述

2 基本操作

2.1 创建表空间,用户,用户授权

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

2.2 数据类型介绍和表创建

Oracle数据类型
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.3 增删改查

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

2.4 序列的使用

生成主键的值,非空,唯一
序列不真的属于任何一张表,但是可以逻辑和表做绑定;
序列:默认从1开始,依次递增,主要用来给主键赋值使用;
dual:虚表,只是为了补全语法,没有任何意义。
在这里插入图片描述
在这里插入图片描述

3 查询

3.1 scott用户介绍

scott用户,密码tiger
初学者要了解Oracle,模拟出各种查询。首先要超级管理员解锁scott用户

--解锁scott用户
alter user scott account unlock;
--解锁scott用户的密码[此句也可以用来重置密码)
alter user scott identified by tiger;
--切换到scott用户下

在这里插入图片描述

3.2 单/多行函数
  1. 单行函数:作用于一行,返回一个值。
---字符函数
select upper('yes') from dual; -- YES
select lower('YES') from dual; --yes

---数值函数
select round (56.16, -2) from dual;---四舍五入,后面的参数表示保留的位数
select trunc(56.16, -1) from dual;---直接截取,不再看后面位数的值
select mod(10,3) from dual;---求余数

---日期函数
----查询出emp表中所有员工入职距离现在几天。
select sysdate-e.hiredate from emp e;
----算出明天此刻
select sysdate+1 from dual ;
----查询出emp表中所有员入职距离现在几月。
select months_between (sysdate, e.hiredate) from emp e;
----查询出emp表中所有员工入职距离现在几年。
select months_ between (sysdate,e.hiredate)/12 from emp e;
----查询出emp表中所有员工入职距离现在几周。
select round( (sysdate-e.hiredate) /7) from emp e;

----转换函数
---日期转字符串
select to_char (sysdate, 'fm yyyy-mm-dd hh24:mi:ss') from dual; 
---字符串转日期
select to_date('2019-2-2 16:23:12','fm yyyy-mm-dd hh24:mi:ss') from dual;
 ----通用函数
---算出emp表中所有员工的年薪
----奖金里面有null值, 如果null值 和任意数字做算术运算,结果都是null
select e.sal*12+nvl(e.comm,0) from emp e;
  1. 多行函数 [聚合函数] :作用于多行,返回一个值。
    在这里插入图片描述
3.3 条件表达式

条件表达式的通用写法,mysql和oracle通用
在这里插入图片描述
在这里插入图片描述
Oracle中除了起别名,都用单引号
oracle专用条件表达式
在这里插入图片描述

3.4 分组查询

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

3.5 多表查询

在这里插入图片描述
自连接
子查询
分页查询

4 Oracle对象

4.1 视图

视图:提供一个查询的窗口,所有数据来自于原表。
在这里插入图片描述
视图作用:
1.视图可以屏蔽掉一些敏感字段;
2.保证总部和分部 数据及时统一。

4.2 索引

索引:在表的列上创建一个二叉树。
达到大幅度提高查询效率的目的,但是索引会影响增删改的效率。

单列索引
在这里插入图片描述
复合索引
在这里插入图片描述

5 Oracle编程

1 pl/sql编程语言

pl/sql编程语言是对sql语言的扩展,使得sql语言具有过程化编程的特性。他比一般的过程化编程语言,更加灵活高效。主要用于编写存储过程和存储函数等。

变量

声明方法:declare—begin—end
在这里插入图片描述
在这里插入图片描述

if

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

三种循环:(用的最多的是exit)

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

游标

可以存放多个对象,多行记录
在这里插入图片描述
在这里插入图片描述

2 存储过程

存储过程就是提前已经编译好一段pl/sql语言,放置在数据库端,可以直接被调用。这一段pl/sql一般都是固定步骤的业务。
在这里插入图片描述

3 存储函数

create or replace function 函数名(Name in type, Name in type, …) return 数据类型 is 结果变量数据类型;
begin
return(结果变量);
end 函数名;
在这里插入图片描述
在这里插入图片描述

out类型参数

在这里插入图片描述
in和out类型参数的区别:凡是涉及到into查询语句赋值或者 := 赋值操作的参数,都必须使用out来修饰

存储过程和存储函数的区别
语法区别:关键字不一样,存储函数比存储过程多了两个return
本质区别:存储函数可以有一个返回值,而过程没有返回值。(如果存储过程想实现有返回值的业务,就必须使用out类型的参数。即便是存储过程使用了out类型的参数,其本质也不是真的有了返回值,而是在存储过程中使用了out类型的参数赋值,在执行完毕后,直接拿到输出类型参数的值)
但过程和函数都可以通过out指定一个或多个输出参数。我们可以利用out参数,在过程和函数中实现返回多个值。
可以使用存储函数有返回值的特性,来自定义函数。而存储过程不能用来自定义函数。
在这里插入图片描述
在这里插入图片描述

4 触发器

制定一个规则,在做增删改操作的时候,只要满足该规则,自动触发,无需调用。
语句级触发器:不包含for each row
行级触发器:包含有for each row
加for each row是为了使用 :old 或者 :new 对象或者一行记录
在这里插入图片描述

4.1 语句级触发器

插入数据之后触发
在这里插入图片描述

4.2 行级触发器

给员工降薪之前触发
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.3 触发器实现主键自增

分析:在用户做插入操作之前,拿到即将插入的数据,给该数据中的主键列赋值。
在这里插入图片描述

6 java调用存储过程

环境准备
在这里插入图片描述
环境测试
在这里插入图片描述
java调用存储过程
在这里插入图片描述
在这里插入图片描述
java调用存储函数
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值