文章目录
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 单/多行函数
- 单行函数:作用于一行,返回一个值。
---字符函数
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;
- 多行函数 [聚合函数] :作用于多行,返回一个值。
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调用存储函数