第一章 Oracle 数据库的使用
一、 数据库相关概念
1 什么是数据库
所谓的数据库其实就是数据的集合。用户可以对集合中的数据进行新增、查询、更新、
删除等操作。数据库是以一定方式储存在一起、能与多个用户共享、具有尽可能小的冗余度、
与应用程序彼此独立的数据集合。
2 数据库类型
2.1关系型
Oracle
Mysql
PostgreSQL
DB2
Microsoft SQL Server
Microsoft Access
2.2非关系型
Redis
Mongodb
Big Table
3 关系型数据库与非关系型数据之间的区别
3.1关系型数据库
3.1.1特点
关系型数据库最典型的数据结构是表,由二维表及其之间的联系所组成的一个数据组
织。支持事务一致特性。
3.1.2优点
易于维护:都是使用表结构,格式一致;
使用方便:SQL 语言通用;
复杂操作:支持 SQL,可用于一个表以及多个表之间非常复杂的查询;3.1.3缺点
性能差:读写性能比较差,尤其是海量数据的高效率读写,传统关系型数据库来说,硬
盘 I/O 是一个很大的瓶颈;
存储方式不灵活:固定的表结构,灵活度稍欠;
3.2非关系型数据库
3.2.1特点
非关系型数据库严格上不是一种数据库,应该是一种数据结构化存储方法的集合,可以
是文档或者键值对等。不支持事务一致特性。
3.2.2优点
格式灵活:存储数据的格式可以是 key,value 形式、文档形式、图片形式等等;
高扩展性:基于键值对,数据没有耦合性,容易扩展;
速度快:无需经过 sql 层的解析,读写性能很高;
3.2.3缺点
不支持 SQL:不提供 sql 支持,学习和使用成本较高;
不支持事务:无事务处理能力;
不支持复杂查询:数据结构相对复杂,复杂查询方面稍欠;
二、 Oracle 入门
1 什么是 Oracle 数据库
所有的关系型数据库存储数据的集合就是磁盘中的文件。Oracle 数据库其实就是一组文
件的集合。Oracle 数据库分别由:数据文件、控制文件、日志文件所构成。
1.1数据文件(.DBF)
数据文件是一个二进制文件,是用于保存用户应用程序数据和 Oracle 系统内部数据的
文件,这些文件在操作系统中就是普通的操作系统文件。Oracle 在创建表空间的同时会创建
数据文件。
1.2控制文件(.CTL)
控制文件是一个二进制文件,它主要记录数据库的名称、数据库的数据文件存放位置等
信息。一个控制文件只能属于一个数据库。如果控制文件丢失,这数据库就无法操作。
1.3日志文件(.LOG)
日志文件在 Oracle 数据库中分为重做日志(Redo Log File)文件和归档日志文件两种。重
做日志文件是 Oracle 数据库正常运行不可缺少的文件。重做日志文件主要记录了数据库操
作过程。用于备份和还原数据库,以达到数据库的最新状态。
2 什么是 Oracle 实例
实例就是数据库启动后分配的内存和建立的后台进程. 数据库关闭后,物理上的文件还
存在,但实例(分配的内存和建立的进程)就没有了
3 Oracle 实例与数据库的关系
实例就是一组操作系统进程(或者是一个多线程的进程)以及一些内存。这些进程可以
操作数据库;而数据库只是一个文件集合(包括数据文件、临时文件、重做日志文件和控制
文件)。
在任何时刻,一个实例只能有一组相关的文件(与一个数据库关联)。大多数情况下,
反过来也成立:一个数据库上只有一个实例对其进行操作。
4 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 的安装与卸载
1 Oracle 安装步骤
2 Oracle 卸载步骤
2.1停止使用 Oracle 的服务
停用 oracle 服务,进入计算机管理,在服务中,找到 oracle 开头的所有服务,右击选择
停止。
2.2运行卸载 Oracle 数据库程序
在开始菜单中找到 Oracle 安装产品,点击运行 Oracle 自带的卸载程序 Universal Installer
工具卸载。
2.3删除使用 Oracle 的服务
开始菜单中,找到 Universal Installer,运行 Oracle Universal Installer,单击卸载产品,在产品清单窗口中,单击全部展开,除了 OraDb11g_home1 外,勾选其他项目,单击删除,
根据软件提示单击下一步最终完成卸载。
2.4删除注册表中 Oracle 相关项
在 命 令 窗 口 , 输 入 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 的键。
2.5删除 Oracle 环境变量
右键点击我的电脑-->属性-->高级-->环境变量,删除环境变量 ORACLE_HOME、
TNS_ADMIN 等环境变量,删除 PATH 中等环境变量有关 Oracle 的设定的路径信息。
2.6删除“开始”菜单中 Oracle 目录
打开资源管理器,在地址栏中输入“%userprofile%「开始」菜单程序”回车,删除安
装的 Oracle 目录。然后再到地址栏中输入“%allusersprofile%「开始」菜单程序”回车,
删除安装的 Oracle 目录。
2.7重新启动计算机
重启电脑。
2.8删除 Program FilesOracle 目录
如果在 Program FilesOracle 目录存在,则删除 Program FilesOracle 目录。2.9删除 Oracle 安装目录
删除 Oracle 的安装目录 app 等目录。
四、 Oracle 目录结构与系统用户
1 Oracle 目录结构
1.1admin 目录
记录 Oracle 实例的配置,运行日志等文件。每个实例一个目录。
SID:System IDentifier 的缩写,是 Oracle 实例的唯一标记。在 Oracle 中一个实例只能
操作一个数据库。如果安装多个库那么就会有多个实例,我们可以通过实例 SID 来区分。
由于 Oracle 中一个实例只能操作一个数据库的原因 oracle 中也会使用 SID 来作为库的名称。
1.2cfgtoollogs 目录
下面子目录分别存放当运行 dbca,emca,netca 等图形化配置程序时的 log。
1.3checkpoints 目录
存放检查点文件
1.4diag 目录
Oracle11g 新添加的一个重组目录。其中的子目录,基本上 Oracle 每个组件都有了自己
单独的目录,在 Oracle10g 中我们一直诟病的 log 文件散放在四处的问题终于得到解决,无
论是 asm 还是 crs 还是 rdbms,所有组件需要被用来诊断的 log 文件都存放在了这个新的目
录下。
1.5flash_recovery_area(闪回区)目录
闪回区:分配一个特定的目录位置来存放一些特定的恢复文件,用于集中和简化管理数据库恢复工作。闪回区可存储完全的数据文件备份、增量备份、数据文件副本、当前的控制
文件、备份的控制文件、spfile 文件、快照控制文件、联机日志文件、归档日志、块跟踪文
件、闪回日志。
1.6oradata 目录
存放数据文件。
1.6.1orcl 数据库文件
1.6.2数据库中的文件介绍
1.6.2.1 CONTROL01.CTL
Oracle 数据库的控制文件。
1.6.2.2 EXAMPLE01.DBF
Oracle 数据库表空间文件。
1.6.2.3 REDO01.LOG
Oracle 数据库的重做日志文件。
1.6.2.4 SYSAUX01.DBF
11g 新增加的表空间。主要存储除数据字典以外的其他数据对象。由系统内部自动维护。
1.6.2.5 SYSTEM01.DBF
用于存放 Oracle 系统内部表和数据字典的数据。比如,表名、列名、用户名等。
1.6.2.6 TEMP01.DBF
临时表空间文件
1.6.2.7 UNDOTBS01.DBF
撤销表空间文件。用来保存回滚数据。
1.6.2.8 USERS01.DBF
用户表空间。
1.7product 目录
Oracle RDBMS 的软件存放目录。RDBMS 即关系数据库管理系统(Relational Database
Management System)。
2 Oracle 系统用户
2.1sys 用户
sys:sys 是 Oracle 中的超级账户,拥有的权限最大。可以完成数据库的所有管理任务。
2.2system 用户
system:没有 sys 权限大,通常用来创建一些用户查看管理信息的表或视图。不建议使
用 system 用户来创建一些与管理无关的表或者视图。
2.3二者在登录时的区别
sys 和 system 在登录 Oracle 时,sys 只能以系统管理员(sysdba)或系统操作员(sysoper)
的权限登录,而 system 可以直接登录(normal)。
2.4scott 用户
scott:是 oracle 提供的示例用户,提供了一些学习 oracle 操作的数据表。如:emp、dept、
salgrade、bonus 表
五、 Oracle 的启动与关闭
1 Oracle 启动
Oracle 是通过系统的服务来启动的。
1.1OracleServiceORCL(必须启动)
OracleServiceORCL:数据库服务(数据库实例),是 Oracle 核心服务该服务是数据库启动的基础,只有该服务启动,Oracle 数据库才能正常启动。
1.2OracleOraDb11g_home1TNSListener(必须启动)
OracleOraDb11g_home1TNSListener:监听器服务,服务只有在数据库需要远程访问的时候
或者使用 PL/SQL Developer 等第三方工具时才需要。
1.3Oracle ORCL VSS Writer Service(非必须启动)
Oracle ORCL VSS Writer Service:Oracle 卷映射拷贝写入服务,VSS(Volume Shadow Copy
Service)能够让存储基础设备(比如磁盘,阵列等)创建高保真的时间点映像,即映射拷贝
(shadow copy)。它可以在多卷或者单个卷上创建映射拷贝,同时不会影响到系统的系统能。
1.4OracleDBConsoleorcl(非必须启动)
OracleDBConsoleorcl:Oracle 数据库控制台服务,orcl 是 Oracle 的实例标识,默认的实
例为 orcl。在运行 Enterprise Manager(企业管理器 OEM)的时候,需要启动这个服务。
1.5OracleJobSchedulerORCL(非必须启动)
OracleJobSchedulerORCL:Oracle 作业调度(定时器)服务,ORCL 是 Oracle 实例标识。
1.6OracleMTSRecoveryService(非必须启动)
OracleMTSRecoveryService:服务端控制。该服务允许数据库充当一个微软事务服务器
MTS、COM/COM+对象和分布式环境下的事务的资源管理器。
2 Oracle 关闭
关闭 Oracle 只需要将服务停止即可。
六、 Oracle 客户端工具介绍
1 Oracle 自带客户端工具 SQL Plus
sys 用户登录命令: sys as sysdba|sysoper
system 用户登录命令:system
2 Oracle 第三方工具 PL/SQL Developer
2.1安装 PL/SQL Developer
2.2Command Window
2.3Sql Window
七、 Oracle 的使用
1 Oracle 的表空间
1.1Oracle 的表空间分类
1.1.1永久表空间
表空间是数据库的逻辑划分,一个表空间只能属于一个数据库。所有的数据库对象都存
放在指定的表空间中。但主要存放的是表,所以称作表空间。
1.1.2临时表空间
Oracle 临时表空间主要用来做查询和存放一些缓冲区数据。临时表空间消耗的主要原因
是需要对查询的中间结果进行排序。重启数据库可以释放临时表空间。
1.2创建永久表空间命令
create tablespace 永 久 表 空 间 名 称 datafile ' 永 久 表 空 间 物 理 文 件 位 置 ' size 15M
autoextend on next 10M permanent online;
create tablespace wq datafile 'D:oracle11goradataorclWQ.DBF ' size 15M autoextend on next 10M permanent online;
2 创建用户
2.1通过 PL/SQL Developer 工具创建用户
3 分配用户权限
3.1对象权限(Object privileges)
对象权限是指在指定的表,视图,序列上制定执行动作的权限或权利。
3.2角色权限(Role privileges)
角色是可以授予用户的相关权限的组,该方法使权限的授予,撤回更加容易管理。
3.3系统权限(System privileges)
为用户分配创建表、创建用户、创建视图、创建存储过程等权限。
4 分配链接权限
为当前用户分配一个 connect 链接角色
5 分配系统权限
八、 Oracle 的链接配置
1 文件位置
Oracle 目录product11.2.0dbhome_1NETWORKADMIN
2 sqlnet.ora
名称解析。通过这个文件来决定怎么样找一个连接中出现的连接字符串。
如:sqlplus bjsxt/oracle@orcl
NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)
3 tnsnames.ora
用在 oracle client 端,用户配置连接数据库的别名参数,就像系统中的 hosts 文件一样。
3.1ORCL
客户端连接服务器端使用的服务别名。注意一定要顶行书写,否则会无法识别服务别名。
3.2PROTOCOL
客户端与服务器端通讯的协议,一般为 TCP,该内容一般不用改。
3.3HOST
ORACLE 服务器端 IP 地址或者 hostname。确保服务器端的监听启动正常。
3.4PORT
数据库侦听正在侦听的端口,此处 port 的值一定要与数据库侦听正在侦听的端口一样。
4 listener.ora
用在 oracle server 端,可配置 Oracle 的监听端口
4.1LISTENER
监听名称,可以配置多个监听,多个监听的端口号要区分开来。
4.2PROTOCOL
监听协议,一般都使用 TCP 。
4.3HOST
本机 IP 地址或者 localhostname。
4.4PORT
监听的端口号。
九、 Net Configuration Assistant 工具
1 配置监听程序
2 Oracle 本地网络服务配置
2.1配置本地网络服务要求:
1,防火墙需要关闭
2,相互是可 ping 通的
2.2配置方式
十、 Oracle 基本操作
1 Oracle 中的数据类型
1.1字符类型
字符串数据类型还可以依据存储空间分为固定长度类型(CHAR) 和可变长度类型
(VARCHAR2/NVARCHAR2)两种。
1.1.1CHAR 类型
CHAR 类型,定长字符串,会用空格填充来达到其最大长度。非 NULL 的 CHAR(12)
总是包含 12 字节信息。CHAR 字段最多可以存储 2,000 字节的信息。如果创建表时,不指
定 CHAR 长度,则默认为 1。
1.1.2VARCHAR2 类型
变长字符串,与 CHAR 类型不同,它不会使用空格填充至最大长度。VARCHAR2 最多
可以存储 4,000 字节的信息。
1.1.3NVARCHAR2 类型
这是一个包含 UNICODE 格式数据的变长字符串。 NVARCHAR2 最多可以存储 4,000
字节的信息。
1.2数字类型
1.2.1NUMBER 类型
NUMBER(P,S)是最常见的数字类型。
P 是 Precision 的英文缩写,即精度缩写,表示有效数字的位数,最多不能超过 38 个有
效数字。
S 是 Scale 的英文缩写,表示小数点数字的位数。
1.2.2INTEGER 类型
INTEGER 是 NUMBER 的子类型,它等同于 NUMBER(38,0),用来存储整数。若插
入、更新的数值有小数,则会被四舍五入。
1.3浮点数
1.3.1BINARY_FLOAT 类型
BINARY_FLOAT 是 32 位、 单精度浮点数字数据类型。可以支持至少 6 位精度,每个
BINARY_FLOAT 的值需要 5 个字节,包括长度字节。
1.3.2BINARY_DOUBLE
BINARY_DOUBLE 是为 64 位,双精度浮点数字数据类型。每个 BINARY_DOUBLE
的值需要 9 个字节,包括长度字节。
1.4日期类型
1.4.1DATE 类型
DATE 是最常用的数据类型,日期数据类型存储日期和时间信息。虽然可以用字符或数
字类型表示日期和时间信息,但是日期数据类型具有特殊关联的属性。为每个日期值,Oracle
存储以下信息: 世纪、 年、 月、 日期、 小时、 分钟和秒。一般占用 7 个字节的存储空
间。
1.4.2TIMESTAMP 类型
这是一个 7 字节或 12 字节的定宽日期/时间数据类型。它与 DATE 数据类型不同,因为
TIMESTAMP 可以包含小数秒,带小数秒的 TIMESTAMP 在小数点右边最多可以保留 9 位。
1.4.3TIMESTAMP WITH TIME ZONE 类型
这是 TIMESTAMP 类型的变种,它包含了时区偏移量的值。
1.4.4TIMESTAMP WITH LOCAL TIME ZONE 类型
将时间数据以数据库时区进行规范化后进行存储
1.5LOB 类型
1.5.1CLOB 类型(Character Large Object)
二进制数据,存储单字节和多字节字符数据。最大长度 4G。
1.5.2BLOB 类型(Binary Large Object)
它存储非结构化的二进制数据大对象,它可以被认为是没有字符集语义的比特流,一般是图像、声音、视频等文件。最大长度 4G。
1.5.3NCLOB 数据类型
存储 UNICODE 类型的数据 ,最大长度 4G。
1.6LONG & RAW & LONG RAW 类型
1.6.1LONG 类型
它存储变长字符串(超长字符串),最多达 2G 的字符数据(2GB 是指 2 千兆字节, 而不
是 2 千兆字符)。
1.6.2LONG RAW 类型
能存储 2GB 的原始二进制数据,可存放多媒体图象声音等。
1.6.3RAW 类型
用于存储二进制或字符类型数据,必须制定长度。这种数据类型存储的数据不会发生字
符集转换。可存放多媒体图象声音等。
2 在 Oracle 中创建表
2.1Oracle 表名命名规则
必须以字母开头
长度不能超过 30 个字符
避免使用 Oracle 的关键字
只能使用 A-Z、a-z、0-9、_#$
2.2使用带有特殊符号的表名
Oracle 在创建表时,表名会自动转换大写。Oracle 对表名大小写不敏感。
如果在定义表名时含有特殊符号,或者用小写字母来定义表名则需要在表名两侧添加双
引号。
3 数据库中的约束
3.1约束的作用
约束用于规定表中的数据规则,如果存在违反约束的数据行为,行为会被约束终止。
3.2约束类型
3.2.1主键约束(Primay Key Constraint)
唯一性,非空性。
3.2.2唯一约束 (Unique Constraint)
唯一性,可以空,但只能有一个。
3.2.3检查约束 (Check Constraint)
对该列数据的范围、格式的限制(如:年龄、性别等)。
3.2.4非空约束 (Not Null Constraint)
该列不允许包含空值。
3.2.5外键约束 (Foreign Key Constraint)
需要建立两表间的关系并引用主表的列。
4 数据库中表关系
设计关系数据库的一个重要部分是将数据元素划分为相关的表,我们可以根据数据本身
的关联性,将不同表之间的数据聚合在一起。注意:无论在表与表之间建立了什么样的关系,
决定数据之间是否有关系的不是表,而是数据本身。
表与表之间一般存在三种关系,即一对一,一对多,多对多关系。
4.1一对多
一对多关系是建立在两张表之间的关系。一个表中的一条数据可以对应另一个表中的多
条数据。记住:外键永远在多方。外键允许重复,允许含有空值。
4.1.2T_STUDENT 表
4.2一对一
4.2.1T_USER 表
4.2.2T_ROLE 表
4.3多对多
需要建立一个中间表,中间表里建立两个列,然后需要用这两个列作为这个表的联合主
键,然后每个列在作为外键参照各自的表的主键
4.3.1T_ORDER 表
4.3.2T_ITEM 表
4.3.3T_ORDER_ITEM 表