Oracle 笔记
所谓的数据库其实就是数据的集合。用户可以对集合中的数据进行新增、查询、更新、
删除等操作。数据库是以一定方式储存在一起、能与多个用户共享、具有尽可能小的冗余度、
与应用程序彼此独立的数据集合。
Oracle
Mysql
PostgreSQL
DB2
Microsoft SQL Server
Microsoft Access
Redis
Mongodb
Big Table
关系型数据库最典型的数据结构是表,由二维表及其之间的联系所组成的一个数据组
织。支持事务一致特性。
易于维护:都是使用表结构,格式一致;
使用方便:SQL 语言通用;
复杂操作:支持 SQL,可用于一个表以及多个表之间非常复杂的查询;
性能差:读写性能比较差,尤其是海量数据的高效率读写,传统关系型数据库来说,硬
盘 I/O 是一个很大的瓶颈;
存储方式不灵活:固定的表结构,灵活度稍欠;
非关系型数据库严格上不是一种数据库,应该是一种数据结构化存储方法的集合,可以
是文档或者键值对等。不支持事务一致特性。
格式灵活:存储数据的格式可以是 key,value 形式、文档形式、图片形式等等;
高扩展性:基于键值对,数据没有耦合性,容易扩展;
速度快:无需经过 sql 层的解析,读写性能很高;
不支持 SQL:不提供 sql 支持,学习和使用成本较高;
不支持事务:无事务处理能力;
不支持复杂查询:数据结构相对复杂,复杂查询方面稍欠;
所有的关系型数据库存储数据的集合就是磁盘中的文件。Oracle 数据库其实就是一组文
件的集合。Oracle 数据库分别由:数据文件、控制文件、日志文件所构成。
数据文件是一个二进制文件,是用于保存用户应用程序数据和 Oracle 系统内部数据的
文件,这些文件在操作系统中就是普通的操作系统文件。Oracle 在创建表空间的同时会创建
数据文件。
控制文件是一个二进制文件,它主要记录数据库的名称、数据库的数据文件存放位置等
信息。一个控制文件只能属于一个数据库。如果控制文件丢失,这数据库就无法操作。
日志文件在 Oracle 数据库中分为重做日志(Redo Log File)文件和归档日志文件两种。重
做日志文件是 Oracle 数据库正常运行不可缺少的文件。重做日志文件主要记录了数据库操
作过程。用于备份和还原数据库,以达到数据库的最新状态。
实例就是数据库启动后分配的内存和建立的后台进程. 数据库关闭后,物理上的文件还
存在,但实例(分配的内存和建立的进程)就没有了
实例就是一组操作系统进程(或者是一个多线程的进程)以及一些内存。这些进程可以
操作数据库;而数据库只是一个文件集合(包括数据文件、临时文件、重做日志文件和控制
文件)。
在任何时刻,一个实例只能有一组相关的文件(与一个数据库关联)。大多数情况下,
反过来也成立:一个数据库上只有一个实例对其进行操作。
Oracle 8i
Oracle 9i
Oracle 10g
Oracle 11g
Oracle 12c
I:i 代表 Internet。8i 版本开启对 Internet 的支持。所以,在版本号之后,添加了标识 i。
G:g 代表 Grid 网格。10g 加入了网格计算的功能,因此版本号之后的标识使用了字母
g。
C:c 代表云(cloud)计算设计。12c 版本表示对云计算的支持。
停用 oracle 服务,进入计算机管理,在服务中,找到 oracle 开头的所有服务,右击选择
停止。
在开始菜单中找到 Oracle 安装产品,点击运行 Oracle 自带的卸载程序 Universal Installer
工具卸载。
开始菜单中,找到 Universal Installer,运行 Oracle Universal Installer,单击卸载产品,
在产品清单窗口中,单击全部展开,除了 OraDb11g_home1 外,勾选其他项目,单击删除,
根据软件提示单击下一步最终完成卸载。
在 命 令 窗 口 , 输 入 regedit , 打 开 注 册 表 , 依 次 展 开
HKEY_LOCAL_MACHINESOFTWARE,找到 oracle,删除之。
依次展开 HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServices 中,删除所有
oracle 开头的项。
依 次 展 开
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesEventlogApplication,删除
所有 oracle 开头的项。
扩展删除(以下不是必须的注册表删除项),如果安装不成功可以自己也把这些删除了
在 HKEY_CLASSES_ROOT,删除以 Ora、Oracle、Orcl 或 EnumOra 为前缀的键
删 除
HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionExplorerMenuOrderSt
art MenuPrograms 中所有以 oracle 开头的键。
删 除 HKEY_LOCAL_MACHINESOFTWAREODBCODBCINST.INI 中 除 Microsoft
ODBC for Oracle 注册表键以外的所有含有 Oracle 的键。
右键点击我的电脑–>属性–>高级–>环境变量,删除环境变量 ORACLE_HOME、
TNS_ADMIN 等环境变量,删除 PATH 中等环境变量有关 Oracle 的设定的路径信息。
打开资源管理器,在地址栏中输入“%userprofile%「开始」菜单程序”回车,删除安
装的 Oracle 目录。然后再到地址栏中输入“%allusersprofile%「开始」菜单程序”回车,
删除安装的 Oracle 目录。
重启电脑。
如果在 Program FilesOracle 目录存在,则删除 Program FilesOracle 目录。
删除 Oracle 的安装目录 app 等目录。
记录 Oracle 实例的配置,运行日志等文件。每个实例一个目录。
SID:System IDentifier 的缩写,是 Oracle 实例的唯一标记。在 Oracle 中一个实例只能
操作一个数据库。如果安装多个库那么就会有多个实例,我们可以通过实例 SID 来区分。
由于 Oracle 中一个实例只能操作一个数据库的原因 oracle 中也会使用 SID 来作为库的名称。
下面子目录分别存放当运行 dbca,emca,netca 等图形化配置程序时的 log。
存放检查点文件
Oracle11g 新添加的一个重组目录。其中的子目录,基本上 Oracle 每个组件都有了自己
单独的目录,在 Oracle10g 中我们一直诟病的 log 文件散放在四处的问题终于得到解决,无
论是 asm 还是 crs 还是 rdbms,所有组件需要被用来诊断的 log 文件都存放在了这个新的目
录下。
闪回区:分配一个特定的目录位置来存放一些特定的恢复文件,用于集中和简化管理数
据库恢复工作。闪回区可存储完全的数据文件备份、增量备份、数据文件副本、当前的控制
文件、备份的控制文件、spfile 文件、快照控制文件、联机日志文件、归档日志、块跟踪文
件、闪回日志。
存放数据文件。
Oracle 数据库的控制文件。
Oracle 数据库表空间文件。
Oracle 数据库的重做日志文件。
11g 新增加的表空间。主要存储除数据字典以外的其他数据对象。由系统内部自动维护。
用于存放 Oracle 系统内部表和数据字典的数据。比如,表名、列名、用户名等。
临时表空间文件。
撤销表空间文件。用来保存回滚数据。
用户表空间。
Oracle RDBMS 的软件存放目录。RDBMS 即关系数据库管理系统(Relational Database
Management System)。
sys:sys 是 Oracle 中的超级账户,拥有的权限最大。可以完成数据库的所有管理任务。
system:没有 sys 权限大,通常用来创建一些用户查看管理信息的表或视图。不建议使
用 system 用户来创建一些与管理无关的表或者视图。
sys 和 system 在登录 Oracle 时,sys 只能以系统管理员(sysdba)或系统操作员(sysoper)
的权限登录,而 system 可以直接登录(normal)。
scott:是 oracle 提供的示例用户,提供了一些学习 oracle 操作的数据表。如:emp、dept、
salgrade、bonus 表
Oracle 是通过系统的服务来启动的。
OracleServiceORCL:数据库服务(数据库实例),是 Oracle 核心服务该服务是数据库启动
的基础,只有该服务启动,Oracle 数据库才能正常启动。
OracleOraDb11g_home1TNSListener:监听器服务,服务只有在数据库需要远程访问的时候
或者使用 PL/SQL Developer 等第三方工具时才需要。
Oracle ORCL VSS Writer Service:Oracle 卷映射拷贝写入服务,VSS(Volume Shadow Copy
Service)能够让存储基础设备(比如磁盘,阵列等)创建高保真的时间点映像,即映射拷贝
(shadow copy)。它可以在多卷或者单个卷上创建映射拷贝,同时不会影响到系统的系统能。
OracleDBConsoleorcl:Oracle 数据库控制台服务,orcl 是 Oracle 的实例标识,默认的实
例为 orcl。在运行 Enterprise Manager(企业管理器 OEM)的时候,需要启动这个服务。
OracleJobSchedulerORCL:Oracle 作业调度(定时器)服务,ORCL 是 Oracle 实例标识。
OracleMTSRecoveryService:服务端控制。该服务允许数据库充当一个微软事务服务器
MTS、COM/COM+对象和分布式环境下的事务的资源管理器。
关闭 Oracle 只需要将服务停止即可。
sys 用户登录命令: sys as sysdba|sysoper
system 用户登录命令:system
表空间是数据库的逻辑划分,一个表空间只能属于一个数据库。所有的数据库对象都存
放在指定的表空间中。但主要存放的是表,所以称作表空间。
Oracle 临时表空间主要用来做查询和存放一些缓冲区数据。临时表空间消耗的主要原因
是需要对查询的中间结果进行排序。重启数据库可以释放临时表空间。
create tablespace 永 久 表 空 间 名 称 datafile ’ 永 久 表 空 间 物 理 文 件 位 置 ’ size 15M
autoextend on next 10M permanent online;
注: 由于错误删除表空间导致连接失败,出现oracle 正在初始化或关闭
解决:打开sqlplus
1、alter database datafile ‘D:KAIFARUANJIANORCLTABLESPACEBJFDB’ offline drop;
2、alter database open;
对象权限是指在指定的表,视图,序列上制定执行动作的权限或权利。
角色是可以授予用户的相关权限的组,该方法使权限的授予,撤回更加容易管理。
为用户分配创建表、创建用户、创建视图、创建存储过程等权限。
为当前用户分配一个 connect 链接角色
Oracle 目录product11.2.0dbhome_1NETWORKADMIN
名称解析。通过这个文件来决定怎么样找一个连接中出现的连接字符串。
如:sqlplus bjsxt/oracle@orcl
NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)
用在 oracle client 端,用户配置连接数据库的别名参数,就像系统中的 hosts 文件一样。
客户端连接服务器端使用的服务别名。注意一定要顶行书写,否则会无法识别服务别名。
客户端与服务器端通讯的协议,一般为 TCP,该内容一般不用改。
ORACLE 服务器端 IP 地址或者 hostname。确保服务器端的监听启动正常。
数据库侦听正在侦听的端口,此处 port 的值一定要与数据库侦听正在侦听的端口一样。
用在 oracle server 端,可配置 Oracle 的监听端口
监听名称,可以配置多个监听,多个监听的端口号要区分开来。
监听协议,一般都使用 TCP 。
本机 IP 地址或者 localhostname。
监听的端口号。
1 配置监听程序
2 Oracle 本地网络服务配置
2.1配置本地网络服务要求:
1,防火墙需要关闭
2,相互是可 ping 通的
2.2配置方式
字符串数据类型还可以依据存储空间分为固定长度类型(CHAR) 和可变长度类型
(VARCHAR2/NVARCHAR2)两种。
CHAR 类型,定长字符串,会用空格填充来达到其最大长度。非 NULL 的 CHAR(12)
总是包含 12 字节信息。CHAR 字段最多可以存储 2,000 字节的信息。如果创建表时,不指
定 CHAR 长度,则默认为 1。
变长字符串,与 CHAR 类型不同,它不会使用空格填充至最大长度。VARCHAR2 最多
可以存储 4,000 字节的信息。
这是一个包含 UNICODE 格式数据的变长字符串。 NVARCHAR2 最多可以存储 4,000
字节的信息。
NUMBER(P,S)是最常见的数字类型。
P 是 Precision 的英文缩写,即精度缩写,表示有效数字的位数,最多不能超过 38 个有
效数字。
S 是 Scale 的英文缩写,表示小数点数字的位数。
INTEGER 是 NUMBER 的子类型,它等同于 NUMBER(38,0),用来存储整数。若插
入、更新的数值有小数,则会被四舍五入。
BINARY_FLOAT 是 32 位、 单精度浮点数字数据类型。可以支持至少 6 位精度,每个
BINARY_FLOAT 的值需要 5 个字节,包括长度字节。
BINARY_DOUBLE 是为 64 位,双精度浮点数字数据类型。每个 BINARY_DOUBLE
的值需要 9 个字节,包括长度字节。
DATE 是最常用的数据类型,日期数据类型存储日期和时间信息。虽然可以用字符或数
字类型表示日期和时间信息,但是日期数据类型具有特殊关联的属性。为每个日期值,Oracle
存储以下信息: 世纪、 年、 月、 日期、 小时、 分钟和秒。一般占用 7 个字节的存储空
间。
这是一个 7 字节或 12 字节的定宽日期/时间数据类型。它与 DATE 数据类型不同,因为
TIMESTAMP 可以包含小数秒,带小数秒的 TIMESTAMP 在小数点右边最多可以保留 9 位。
这是 TIMESTAMP 类型的变种,它包含了时区偏移量的值。
将时间数据以数据库时区进行规范化后进行存储
二进制数据,存储单字节和多字节字符数据。最大长度 4G。
它存储非结构化的二进制数据大对象,它可以被认为是没有字符集语义的比特流,一般
是图像、声音、视频等文件。最大长度 4G。
存储 UNICODE 类型的数据 ,最大长度 4G。
它存储变长字符串(超长字符串),最多达 2G 的字符数据(2GB 是指 2 千兆字节, 而不
是 2 千兆字符)。
能存储 2GB 的原始二进制数据,可存放多媒体图象声音等。
用于存储二进制或字符类型数据,必须制定长度。这种数据类型存储的数据不会发生字
符集转换。可存放多媒体图象声音等。
必须以字母开头
长度不能超过 30 个字符
避免使用 Oracle 的关键字
只能使用 A-Z、a-z、0-9、_#$
Oracle 在创建表时,表名会自动转换大写。Oracle 对表名大小写不敏感。
如果在定义表名时含有特殊符号,或者用小写字母来定义表名则需要在表名两侧添加双
引号。
约束用于规定表中的数据规则,如果存在违反约束的数据行为,行为会被约束终止。
唯一性,非空性。
唯一性,可以空,但只能有一个。
对该列数据的范围、格式的限制(如:年龄、性别等)。
该列不允许包含空值。
需要建立两表间的关系并引用主表的列。
设计关系数据库的一个重要部分是将数据元素划分为相关的表,我们可以根据数据本身
的关联性,将不同表之间的数据聚合在一起。注意:无论在表与表之间建立了什么样的关系,
决定数据之间是否有关系的不是表,而是数据本身。
表与表之间一般存在三种关系,即一对一,一对多,多对多关系。
一对多关系是建立在两张表之间的关系。一个表中的一条数据可以对应另一个表中的多
条数据。记住:外键永远在多方。外键允许重复,允许含有空值。
一对一关系是建立在一对多的基础之上,外键可以在任何一方,需要让外键一方具备唯
一约束
需要建立一个中间表,中间表里建立两个列,然后需要用这两个列作为这个表的联合主
键,然后每个列在作为外键参照各自的表的主键
a) SQL, Structured Query Language, 结构化查询语言
b) SQL是最重要的关系数据库操作语言,是所有关系数据库管理系统的标准语言.
c) SQL语言是非过程化的语言, 只需要告诉做什么, 不需要关注怎么做, 简单.
a) 增删改查(CRUD)
b) 操作数据库对象(用户, 表格, 序列, 索引…)
c) 操作用户权限和角色的授予跟取消
d) 事务(Transaction)管理
a) DQL, Data Query Language, 数据查询语言
执行数据库的查询操作, select
b) DML, Data Manipulation Language, 数据操作语言
操作表格中的数据, 执行增删改, insert, delete, update
c) DDL, Data Definition Language, 数据定义语言
用于操作数据库对象, create, alter, drop
d) DCL, Data Control Language, 数据控制语言
操作用户权限, grant, revoke
e) TCL, Transaction Control Language, 事务控制语言
用于管理事务, commit, rollback
(以下表来源于oracle用户 hr中的表用于学习和测试)
a)查询emp表格的所有数据
* 通配符, 表示所有的列
select * from emp;
a) 查询所有员工的编号, 姓名和职位
select empno, ename, job from emp;
a) 查询所有员工的姓名, 职位和年薪
select子句中, 支持算数运算
select ename, job, sal*12 from emp;
a) select子句中, 可以通过as关键字给列起别名
select ename, job, sal12 as nianxin from emp;
b)as关键字可以被省略, 一般都省略
select ename, job, sal12 nianxin from emp;
c)别名中, 尽量不要使用特殊符号, 例如空格; 如果非要有特殊符号, 可以使用双引号括起来.
d)在Oracle中, 双引号表示原样输出.
select ename, job, sal*12 “ni a n xin” from emp;
both:去掉首尾两侧的字符
方法1、select trim(both ‘H’ from ‘HelloWordH’) from dual;
方法2、select trim(‘H’ from ‘HelloWordH’) from dual;
leading:去掉首部字符
select trim(leading ‘H’ from ‘HelloWordH’) from dual;
trailing:去掉尾部
select trim(trailing ‘H’ from ‘HelloWordH’) from dual;
round用法:
1、保留小数点后两位
select round(62.232,2) from DUAL; (62.23)
2、从小数点前开始四舍五入
select round(62.22,-2) from DUAL; (60.22)
trunc用法:截取小数点,不四舍五入
select trunc(45.926,2) from dual; (45.92)
MOD:取余数
select mod(1600,300) from dual; (100)
sysdate:返回当前系统日期和时间
select sysdate from dual;
MONTHS_BETWEEN:
select MONTHS_BETWEEN(SYSDATE,HIREDATE) from EMP WHERE EMPNO=7369;
ADD_MONTHS:
NEXT_DAY:
距离当前日期最近的下一个周二是几号
select NEXT_DAY(SYSDATE,2) from DUAL;
ROUND:
TO_CHAR 数字转换
TO_NUMBER
1、把带$符的小数转成数字
select to_number(‘$123.45’,‘$999.99’) from dual;
– 入职六个月后的星期五 日期格式化
select to_char(next_day(add_months(HIREDATE,6),‘星期五’),‘day,MM"月",DD"日",YYYY"年"’) as “入职日期”
from EMP
eg:计算所有员工年薪,如果有佣金包含佣金
select ename, sal,comm,12salnvl(comm,1) from EMP;
eg:
select ename,sal,comm,nvl2(comm,‘sal_comm’,‘sal’) from EMP;
NULLIF函数
COALESCE
本文发布于:2024-01-27 21:51:39,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/17063634972852.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |