Oracle数据库的学习
(尚学堂课程之后的学习笔记)
1.数据库的概念
1.1什么是数据库
(1)数据库其实就是数据的集合。用户可以对集合中的数据进行新增、查询、更新、删除等操作。
(2)数据库是以一定方式存储在一起的、能与多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合。
2.数据库的类型:
关系型数据库
3.关系型数据库与非关系型数据库之间的区别
3.1关系型数据库
特点:关系型数据库最典型的数据结构是表,由二维表及其之间的联系所组成的一个数据组织。支持事务一致特性。
优点:
1.易于维护,都是使用表结构,格式一致;
2.使用方便,SQL语言通用;
3.复杂操作,支持SQL,可用于一个表以及多个表之间非常复杂的查询;
缺点:
1.性能差,读写性能比较差,尤其是海量数据的高效率读写,传统关系型数据库来 说,磁盘I/O是一个很大的瓶颈;
2.存储方式不灵活,固定的表结构,灵活度稍欠。
3.2非关系型数据库
特点:非关系型数据库严格上不是一种数据库,应该是一种数据结构化存储方法的集合,可以是文档或者键值对等,不支持事务一致特性。
优点:
1.格式灵活,存储数据的格式可以是key,value形式、文档形式、图片形式等等;
2.高扩展性,基于键值对,数据没有耦合性,容易扩展;
3.速度快,无需经过sql层的解析,读写性能很高。
缺点:
1.不支持SQL,不提供SQL支持,学习和使用成本较高;
2.不支持事务,无事务处理能力;
3.不支持复杂查询,数据结构
4.Oracle入门
4.1什么是Oracle数据库
所有的关系型数据库存储数据的集合就是磁盘中的文件,Oracle数据库其实就是一组文件的集合,Oracle数据库分别由:数据文件、控制文件、日志文件所构成。
数据文件(.DBF)
数据文件是一个二进制文件,是用于保存用户应用程序数据和Oracle系统内部数据的文件,这些文件在操作系统中就是普通的操作系统文件。Oracle在创建表空间的同时会创建这些数据文件。
控制文件(.CTL)
控制文件是一个二进制文件,它主要记录数据库的名称、数据库的数据文件存放位置等信息。一个控制文件只能属于一个数据库。如果控制文件丢失,这数据库就无法操作。
日志文件(.LOG)
日志文件在Oracle数据库中分为重做日志(Redo Log File)文件和归档日志文件两种。重做日志文件是Oracle数据库正常运行不可缺少的文件。重做日志文件主要记录了数据库操作过程。用于备份和还原数据库,以达到数据库的最新状态。
4.2Oracle实例
实例就是数据库启动后分配的内存和建立的后台进程,数据库关闭后,物理上的文件还存在,但实例(分配的内存和建立的进程)就没有了。
4.3Oracle实例与数据库的关系
实力就是一组操作系统进程(或者一个多线程的进程)以及一些内存。这些进程可以操作数据库;而数据库只是一个文件集合(包括数据文件、临时文件、重做日志和控制文件)。
在任何时刻,一个实例只能有一组相关的文件(与一个数据库关联)。大多数情况下,反过来也成立;一个数据库上只有一个实例对其他进行操作。
5.Oracle的目录结构
admin目录:
记录Oracle实例的配置,运行日志等文件。每个实例一个目录。
SID:System IDentifier 的缩写,是Oracle实例的唯一标记。在Oracle中一个实例只能操作一个数据库。如果安装多个库那么就会有多个实例,我们可以通过实例SID来区分。由于Oracle中一个实例只能操作一个数据库的原因oracle中也会使用SID来作为库的名称。
cfgtoollogs目录:
下面子目录分别存放当运行dbca,emca,netca等图形化配置程序的log。
checkpoints目录:
存放检查点文件。(初始为空)
diag目录:
Oracle11g新添加的一个重组目录。其中的子目录,基本上Oracle每个组件都有了自己单独的目录,在Oracle10g中我们一直诟病的log文件散放在四处的问题终于得到解决,无论是asm还是crs还是rdbms,所有组件需要被用来诊断的log文件都存放在了这个新目录下。
flash_recovery_area(闪回区)目录
闪回区:分配一个特定的目录来存放一些特定的恢复文件,用于集中和简化管理数据库恢复工作。闪回区可存储完全的数据文件备份、增量备份、数据文件副本、当前的控制文件、备份的控制文件、spfile文件、快照控制文件、联机日志文件、归档日志、快跟踪文件、闪回日志。
oradata目录
存放数据文件
数据文件
数据库中的文件介绍:
CONTROL01.CTL
Oracle数据库的控制文件
EXAMPLE01.DBF
Oracle数据库表空间文件
REDO01.LOG
Oracle数据库的重做日志文件
SYSAUX01.DBF
11g新增加的表空间。主要存储数据字典以外的其他数据对象。由系统内部自动维护。
SYSTEM01.DBF
用于存放Oracle系统内部表和数据字典的数据。比如,表名、列名、用户名等。
TEMP01.DBF
临时表空间文件。
UNDOTBS01.DBF
撤销表空间文件。用来保存回滚数据。
USERS01.DBF
用户表空间。
product目录
Oracle RDBMS的软件存放目录。RDBMS即关系数据库管理系统(Relational Database Management System)。
6.Oracle系统用户
6.1sys用户:超级用户,拥有的权限最大。可以完成数据库的所有管理任务。
6.2system用户:没有sys权限大,通常用来创建一些用户查看管理信息的表或视图。不建议使用system用户来创建一些与管理无关的表或者视图。
6.3sys和system在登录时的区别:
sys和system在登陆Oracle时,sys只能以系统管理员(sysdba)或系统操作员(sysoper)的权限来登录,而system可以直接登录(normal)。
6.4scott用户
scott:是oracle提供的示例用户,提供了一些学习oracle操作的数据表。如:emp、dept、salgrade、bonus表。
7.Oracle的启动与关闭
7.1Oracle启动
通过系统的服务来启动。
OracleServiceORCL(必须启动)
Oracle OraDb11g_home1TNSListener(必须启动)
7.2Oracle关闭
通过系统的服务来关闭。
8.Oracle的使用
8.1Oracle表空间
Oracle的表空间分类:永久表空间和临时表空间。
永久表空间:
表空间是数据库的逻辑划分,一个表空间只能属于一个数据库。所有的数据库对象都存放在指定的表空间中。但主要存放的是表,所以称作表空间。
临时表空间:
Oracle临时表空间主要用来做查询和存放一些缓冲区数据。临时表空间消耗的主要原因是需要对查询的中间结果进行排序。重启数据库可以释放临时表空间。
8.2创建永久表空间命令
create tablespace 永久表空间名称 datafile '永久表空间物理文件位置' size 15M autoextend on next 10M permanent online;
9.Oracle基本操作
9.1Oracle中的数据类型
数据类型 | 说明 |
---|---|
CHAR类型 | 定长字符串,会用空格填充来达到其最大长度。字段最多可以存储2000字节信息 |
VARCHAR2类型 | 变长字符串,与char类型不同,不会使用空格填充至最大长度。varchar2最多存储4000字节的信息。 |
NVARCHAR2 | 包含UNICODE格式数据的变长字符串。最多存储4000字节信息。 |
NUMBER | NUMBER(P,S)常见的数字类型,P为Precision,精度,表示有效数字的位数,最多不能超过38个有效数字。S为Scale,表示小数点数字的位数。 |
INTEGER | 是NUMBER的子类型,等同于NUMBER(38,0),用来存储整数。若插入、更新的数值有小数,则会被四舍五入。 |
BINARY_FLOAT | BINARY_FLOAT是32位、单精度浮点数字数据类型。可以支持至少6位精度,每个BINARY_FLOAT的值需要5个字节,包括长度字节。 |
BINARY_DOUBLE | BINARY_DOUBLE是64位,双精度浮点数字数据类型。每个BINARY_DOUBLE的值需要9个字节,包括长度字节。 |
DATE | 日期数据类型存储日期和时间信息。虽然可以使用字符或数字类型表示日期和时间信息,但是日期数据类型具有特殊关联的属性,为每个日期值,Oracle存储以下信息:世纪、年、月、日期、小时、分钟和秒。一般占用7个字节的存储空间。 |
TIMESTAMP | 这是一个7字节或12字节的定宽日期/时间数据类型。它与DATE数据类型不同,因为TIMESTAMP可以包含小数秒,带小数秒的TIMESTAMP在小数点右边最多可以保留9位。 |
TIMESTAMP WITH TIME ZONE | TIMESTAMP类型的变种,包含了时区偏移量的值。 |
TIMESTAMP WITH LOCAL TIME ZONE | 将时间数据以数据库时区进行规范化进行存储 |
CLOB | 二进制数据,存储单字节和多字节字符数据。最大长度4G |
BLOB | 存储非结构化的二进制数据大对象,它可以被认为是没有字符集语义的比特流,一般是图像、声音、视频等文件。最大长度4G |
NCLOB | 存储UNICODE类型的数据,最大长度4G |
LONG | 存储变长字符串(超长字符串),最多达2G的字符数据 |
LONG RAW | 能存储2GB的原始二进制数据,可以存放多媒体图像声音。 |
RAW | 用于存储二进制或字符类型数据,必须指定长度。这种数据类型存储的数据不会发生字符集转换。可以存放多媒体图像声音。 |
10在Oracle中创建表
10.1表名命名规则:
必须以字母开头;
长度不能超过30个字符;
避免使用Oracle的关键字;
只能使用A-Z、a-z、0-9、_#$。
10.2使用带有特殊符号地表名
Oracle在创建表时,表名会自动转换大写。Oracle对表名大小写不敏感。
如果在定义表名时含有特殊符号,或者用小写字母来定义表名则需要在表名两侧添加双引号。
11数据库中的约束
11.1约束的作用
约束用于规定表中的数据规则,如果存在违反约束的数据行为,行为会被约束终止。
11.2约束类型
(1)主键约束(Primary Key Constraint)
唯一性,非空性。
(2)唯一约束(Unique Constraint)
唯一性,可以空,但只能有一个。
(3)检查约束(Check Constraint)
对该列数据的范围、格式的限制(如:年龄、性别等)
(4)非空约束(Not Null Constraint)
该列不允许包含空值。
(5)外键约束(Foreign Key Constraint)
建立两表间的关系并引用主表的列。
12数据库中表关系
设计关系数据库的最重要部分是将数据元素划分为相关的表,我们可以根据数据本身的关联性,将不同表之间的数据聚合在一起。注意:无论在表与表之间建立了什么样的关系,决定数据之间是否有关系的不是表,而是数据本身。
表与表之间一般存在三种关系,即一对一,一对多,多对多关系。
12.1一对多
一对多关系是建立在两张表之间的关系。一个表中的一条数据可以对应另一个表的多条数据。(外键永远在多方,外键允许重复,允许含有空值。)
12.2一对一
一对一关系是建立在一对多的基础上,外键可以在任何一方,需要让外键一方具备唯一约束。
12.3多对多
需要建立一个中间表,中间表里建立两个列,然后需要用这两个列作为这个表的联合主键,然后每个列在作为外键参照各自的表的主键。
建立了什么样的关系,决定数据之间是否有关系的不是表,而是数据本身。
表与表之间一般存在三种关系,即一对一,一对多,多对多关系。
12.1一对多
一对多关系是建立在两张表之间的关系。一个表中的一条数据可以对应另一个表的多条数据。(外键永远在多方,外键允许重复,允许含有空值。)
12.2一对一
一对一关系是建立在一对多的基础上,外键可以在任何一方,需要让外键一方具备唯一约束。
12.3多对多
需要建立一个中间表,中间表里建立两个列,然后需要用这两个列作为这个表的联合主键,然后每个列在作为外键参照各自的表的主键。