oracle数据库知识
-
oracle认知
ORACLE 数据库系统是美国 ORACLE 公司(甲骨文)提供的以分布式数据库为核心的一组软件产品,是目前最流行的客户/服务器(CLIENT/SERVER)或 B/S 体系结构的数据库之一。ORACLE 数据库是目前世界上使用最为广泛的数据 库管理系统,作为一个通用的数据库系统,它具有完整的数据管理功能;作为一个关系数据库, 它是一个完备关系的产品;作为分布式数据库它实现了分布式处理功能。 -
oracle的安装
-
oracle体系结构
3.1 Oracle
数据库是数据的物理存储。这就包括(数据文件 ORA 或者 DBF、控制文件、联机日志、参数文件)。其实 Oracle 数据库的概念和其它数据库不一样,这里的数据库是一个操作系统只有一个库。可以看作是 Oracle 就只有一个大数据库。
3.2 实例:
一个 Oracle 实例(Oracle Instance)有一系列的后台进程(Backguound Processes)和内存结构 (Memory Structures)组成。一个数据库可以有 n 个实例。
3.3 用户:
用户是在实例下建立的。不同实例可以建相同名字的用户。
3.4 表空间
表空间是 Oracle 对物理数据库上相关数据文件(ORA 或者 DBF 文件)的逻辑映射。一个数据库在逻辑上被划分成一到若干个表空间,每个表空间包含了在逻辑上相关联的一组结构。每个数据库至少有一个表空间(称之为 system 表空间)。 每个表空间由同一磁盘上的一个或多个文件组成,这些文件叫数据文件(datafile)。一个数据文件只能属于一个表空间。
3.5 数据文件(dbf、ora)
数据文件是数据库的物理存储单位。数据库的数据是存储在表空间中的,真正是在某一个或者多个数据文件中。而一个表空间可以由一个或多个数据文件组成,一个数据文件只能属于一个表空间。一旦数据文件被加入到某个表空间后,就不能删除这个文件,如果要删除某个数据文件,只能删除其所属于的表空间才行。
注: 表的数据,是有用户放入某一个表空间的,而这个表空间会随机把这些表数据放到一个或者多个数据文件中。 由于oracle 的数据库不是普通的概念,oracle 是有用户和表空间对数据进行管理和存放的。 但是表不是有表空间去查询的,而是由用户去查的。因为不同用户可以在同一个表空间建立同一个名字的表!这里区分就是用户了!
3.6 体系结构图
- 创建表空间
创建表空间的命令:
create tablespace itcast
datafile 'c:\itcast.dbf'
size 100m
autoextend on
next 10m
解析:
itcast 为表空间名称
datafile 指定表空间对应的数据文件
size 定义表空间的初始大小
autoextend on 当表空间存储都占满时,自动增长
next 一次自动增长的大小。
5. 用户
5.1 创建用户
create user itcastuser
identified by itcast
default tablespace itcast
解析:
identified by 后边是用户的密码
default tablespace 后边是表空间名称
oracle 数据库与其它数据库产品的区别在于,表和其它的数据库对象都是存储在用户下的。
5.2 用户赋权限
Oracle 中已存在三个重要的角色:connect 角色,resource 角色,dba 角色。 connect 角色:是授予用户的典型权利
resource 角色: 是授予开发人员的
dba 角色:拥有全部特权,是系统最高权限,只有 DBA 才可以创建数据库结构,并且系统权限也需要 DBA 授出,且 DBA 用户可以操作全体用户的任意基表,包括删除
赋权限命令:grant dba to itcastuser 给用户赋予dba权限
-
oracle数据类型
https://liushilive.github.io/github_exercise_oracle/md/概念/Oracle数据类型.html -
表的管理
sql
-
单行函数
8.1 字符函数
8.1.1 把小写字符转换成大写字符:upper('smith')
8.1.2把大写字符变成小写字符:lower('SMITH')
8.2 数值函数
8.2.1 四舍五入函数:ROUND()
默认情况下 ROUND 四舍五入取整,可以自己指定保留的位数。
8.3 日期函数
8.3.1 日期的加减:
日期 – 数字 = 日期
日期 + 数字 = 日期
日期 – 日期 = 数字
8.3.2 获得两个时间段中的月数:MONTHS_BETWEEN()
范例:查询所有雇员进入公司的月数
select ename, round(MONTHS_BETWEEN(sysdate,hiredate)) from emp
8.4 转换函数
8.4.1 TO_CHAR:字符串转换函数
8.4.2 TO_DATE:日期转换函数,可以把字符串的数据转换成日期类型
8.5 通用函数
8.5.1 空值处理 nvl
8.5.2 Decode 函数
8.5.3 case when
- 多行函数(聚合函数)
9.1 统计记录数 count()
9.2 最小值查询 min()
9.3 最大值查询 max()
9.4 查询平均值 avg()
9.5 求和函数 sum()
- 分组统计
分组统计需要使用 GROUP BY 来分组
语法:SELECT * |列名 FROM 表名 {WEHRE 查询条件} {GROUP BY 分组字段} ORDER BY 列 名 1 ASC|DESC,列名 2...ASC|DESC
- 多表查询
11.1 多表连接基本查询
使用一张以上的表做查询就是多表查询
语法: SELECT {DISTINCT} *|列名.. FROM 表名 别名,表名 1 别名 {WHERE 限制条件 ORDER BY 排序字段 ASC|DESC...}
11.2 外连接(左右连接)
使用(+)表示左连接或者右连接,当(+)在左边表的关联条件字段上时是左连接,如果是在右边表的关联条件字段上就是右连接。
- 子查询
12.1 子查询:在一个查询的内部还包括另一个查询,则此查询称为子查询。 Sql的任何位置都可以加入子查询。
12.2 子查询在操作中有三类:
单列子查询:返回的结果是一列的一个内容
单行子查询:返回多个列,有可能是一个完整的记录
多行子查询:返回多条记录
补充:
Oracle和Mysql的区别
在Mysql中,一个用户下可以创建多个库:
而在Oracle中,Oracle服务器是由两部分组成
数据库实例【理解为对象,看不见的】
数据库【理解为类,看得见的】
一个数据库实例可拥有多个用户,一个用户默认拥有一个表空间。
表空间是存储我们数据库表的地方,表空间内可以有多个文件。
当我们使用Oracle作为我们数据库时,我们需要指定用户、表空间来存储我们所需要的数据!
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 【.NET】调用本地 Deepseek 模型
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库