1、数据库相关概念
(1)什么是数据库
所谓的数据库其实就是数据的集合。用户可以对集合中的数据进行新增、查询、更新、
删除等操作。数据库是以一定方式储存在一起、能与多个用户共享、具有尽可能小的冗余度、
与应用程序彼此独立的数据集合。
(2)数据库类型
分为关系型和非关系型
关系型: Oracle 、Mysql 、PostgreSQL 、DB2 、Microsoft SQL Server 、Microsoft Access
非关系型:Redis 、Mongodb 、Big Table
关系型数据库与非关系型数据之间的区别
关系型数据库的特点及优缺点:
特点:关系型数据库最典型的数据结构是表,由二维表及其之间的联系所组成的一个数据组织。支持事务一致特性。
优点:易于维护:都是使用表结构,格式一致;
使用方便:SQL 语言通用;
复杂操作:支持 SQL,可用于一个表以及多个表之间非常复杂的查询;
缺点:性能差:读写性能比较差,尤其是海量数据的高效率读写,传统关系型数据库来 说,硬盘 I/O 是一个很大的瓶颈;
存储方式不灵活:固定的表结构,灵活度稍欠;
非关系型数据库的特点及优缺点:
特点:非关系型数据库严格上不是一种数据库,应该是一种数据结构化存储方法的集合,可以是文档或者键值对等。不支持事务一致特性。
优点:格式灵活:存储数据的格式可以是 key,value 形式、文档形式、图片形式等等;
高扩展性:基于键值对,数据没有耦合性,容易扩展;
速度快:无需经过 sql 层的解析,读写性能很高;
缺点:不支持 SQL:不提供 sql 支持,学习和使用成本较高;
不支持事务:无事务处理能力;
不支持复杂查询:数据结构相对复杂,复杂查询方面稍欠;
2、Oracle 入门
Oracle 数据库
所有的关系型数据库存储数据的集合就是磁盘中的文件。Oracle 数据库其实就是一组文
件的集合。Oracle 数据库分别由:数据文件、控制文件、日志文件所构成。
数据文件(.DBF)
数据文件是一个二进制文件,是用于保存用户应用程序数据和 Oracle 系统内部数据的
文件,这些文件在操作系统中就是普通的操作系统文件。Oracle 在创建表空间的同时会创建
数据文件。
控制文件(.CTL)
控制文件是一个二进制文件,它主要记录数据库的名称、数据库的数据文件存放位置等
信息。一个控制文件只能属于一个数据库。如果控制文件丢失,这数据库就无法操作。
日志文件(.LOG)
日志文件在 Oracle 数据库中分为重做日志(Redo Log File)文件和归档日志文件两种。重
做日志文件是 Oracle 数据库正常运行不可缺少的文件。重做日志文件主要记录了数据库操
作过程。用于备份和还原数据库,以达到数据库的最新状态。
Oracle 实例
实例就是数据库启动后分配的内存和建立的后台进程. 数据库关闭后,物理上的文件还
存在,但实例(分配的内存和建立的进程)就没有了
Oracle 实例与数据库的关系
实例就是一组操作系统进程(或者是一个多线程的进程)以及一些内存。这些进程可以
操作数据库;而数据库只是一个文件集合(包括数据文件、临时文件、重做日志文件和控制
文件)。
在任何时刻,一个实例只能有一组相关的文件(与一个数据库关联)。大多数情况下,
反过来也成立:一个数据库上只有一个实例对其进行操作。
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 版本表示对云计算的支持。
3、Oracle 的安装与卸载
Oracle 安装步骤
Oracle 卸载步骤
停用 oracle 服务,进入计算机管理,在服务中,找到 oracle 开头的所有服务,右击选择
停止。
在开始菜单中找到 Oracle 安装产品,点击运行 Oracle 自带的卸载程序 Universal Installer工具卸载。
开始菜单中,找到 Universal Installer,运行 Oracle Universal Installer,单击卸载产品,在产品清单窗口中,单击全部展开,除了 OraDb11g_home1 外,勾选其他项目,单击删除,根据软件提示单击下一步最终完成卸载。
删除注册表中 Oracle 相关项
在 命 令 窗 口 , 输 入 regedit , 打 开 注 册 表 , 依 次 展 开
HKEY_LOCAL_MACHINESOFTWARE,找到 oracle,删除之。
依次展开 HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServices 中,删除所有oracle 开头的项。
依 次 展 开 HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesEventlogApplication,删除所有 oracle 开头的项。
扩展删除(以下不是必须的注册表删除项),如果安装不成功可以自己也把这些删除了
在 HKEY_CLASSES_ROOT,删除以 Ora、Oracle、Orcl 或 EnumOra 为前缀的键删 除
HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionExplorerMenuOrderStart MenuPrograms 中所有以 oracle 开头的键。
删 除 HKEY_LOCAL_MACHINESOFTWAREODBCODBCINST.INI 中 除 Microsoft
ODBC for Oracle 注册表键以外的所有含有 Oracle 的键。
右键点击我的电脑-->属性-->高级-->环境变量,删除环境变量 ORACLE_HOME、
TNS_ADMIN 等环境变量,删除 PATH 中等环境变量有关 Oracle 的设定的路径信息。
打开资源管理器,在地址栏中输入“%userprofile%「开始」菜单程序”回车,删除安
装的 Oracle 目录。然后再到地址栏中输入“%allusersprofile%「开始」菜单程序”回车,
删除安装的 Oracle 目录。
重启电脑。
4、Oracle 目录结构与系统用户
(1)Oracle 目录结构
admin 目录:记录 Oracle 实例的配置,运行日志等文件。每个实例一个目录。
cfgtoollogs 目录:下面子目录分别存放当运行 dbca,emca,netca 等图形化配置程序时的 log。
checkpoints 目录:存放检查点文件
diag 目录:Oracle11g 新添加的一个重组目录。
flash_recovery_area(闪回区)目录:闪回区:分配一个特定的目录位置来存放一些特定的恢复文件,用于集中和简化管理数据库恢复工作。闪回区可存储完全的数据文件备份、增量备份、数据文件副本、当前的控制文件、备份的控制文件、spfile 文件、快照控制文件、联机日志文件、归档日志、块跟踪文件、闪回日志。
oradata 目录:存放数据文件。
(2)数据库中的文件介绍
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)。
(3)Oracle 系统用户
sys 用户:sys 是 Oracle 中的超级账户,拥有的权限最大。可以完成数据库的所有管理任务。
system 用户:没有 sys 权限大,通常用来创建一些用户查看管理信息的表或视图。不建议使
用 system 用户来创建一些与管理无关的表或者视图。
二者在登录时的区别
sys 和 system 在登录 Oracle 时,sys 只能以系统管理员(sysdba)或系统操作员(sysoper)的权限登录,而 system 可以直接登录(normal)。
scott 用户:是 oracle 提供的示例用户,提供了一些学习 oracle 操作的数据表。如:emp、dept、salgrade、bonus 表
5、Oracle 的启动与关闭
OracleServiceORCL(必须启动):数据库服务(数据库实例),核心服务
OracleOraDb11g_home1TNSListener(必须启动):监听器服务
Oracle ORCL VSS Writer Service(非必须启动) :Oracle 卷映射拷贝写入服务
OracleDBConsoleorcl(非必须启动):Oracle 数据库控制台服务
OracleJobSchedulerORCL(非必须启动):Oracle 作业调度(定时器)服务,ORCL 是 Oracle 实例标识。
OracleMTSRecoveryService(非必须启动) :服务端控制。
Oracle 关闭:只需要将服务停止即可。
6、Oracle 客户端工具介绍
sys 用户登录命令: sys as sysdba|sysoper
system 用户登录命令:system
7、Oracle 第三方工具 PL/SQL Developer
安装 PL/SQL Developer
安装过程只需next即可,最后点击finish按钮完成安装
Command Window
Sql Window
创建永久表空间命令
create tablespace 永 久 表 空 间 名 称 datafile ' 永 久 表 空 间 物 理 文 件 位 置 ' size 15M autoextend on next 10M permanent online;
创建用户
分配用户权限
对象权限(Object privileges):对象权限是指在指定的表,视图,序列上制定执行动作的权限或权利。
角色权限(Role privileges):角色是可以授予用户的相关权限的组,该方法使权限的授予,撤回更加容易管理。
系统权限(System privileges) :为用户分配创建表、创建用户、创建视图、创建存储过程等权限。
分配链接权限
为当前用户分配一个 connect 链接角色
分配系统权限
Oracle 的链接配置
文件位置:Oracle 目录product11.2.0dbhome_1NETWORKADMIN
sqlnet.ora:名称解析。通过这个文件来决定怎么样找一个连接中出现的连接字符串。
tnsnames.ora:用在 oracle client 端,用户配置连接数据库的别名参数,就像系统中的 hosts 文件一样。
<1>ORCL :客户端连接服务器端使用的服务别名。注意一定要顶行书写,否则会无法识别服务别名。
<2>PROTOCOL:客户端与服务器端通讯的协议,一般为 TCP,该内容一般不用改。
<3>HOST:ORACLE 服务器端 IP 地址或者 hostname。确保服务器端的监听启动正常。
<4>PORT:数据库侦听正在侦听的端口,此处 port 的值一定要与数据库侦听正在侦听的端口一样。
listener.ora :用在 oracle server 端,可配置 Oracle 的监听端口
<1>LISTENER :监听名称,可以配置多个监听,多个监听的端口号要区分开来。
<2>PROTOCOL:监听协议,一般都使用 TCP 。
<3>HOST:本机 IP 地址或者 localhostname。
<4>PORT:监听的端口号。
8、Oracle 基本操作
Oracle 中的数据类型
字符类型:
字符串数据类型还可以依据存储空间分为固定长度类型(CHAR) 和可变长度类型
(VARCHAR2/NVARCHAR2)两种。
CHAR 类型:
CHAR 类型,定长字符串,会用空格填充来达到其最大长度。非 NULL 的 CHAR(12)
总是包含 12 字节信息。CHAR 字段最多可以存储 2,000 字节的信息。如果创建表时,不指
定 CHAR 长度,则默认为 1。
VARCHAR2 类型 :
变长字符串,与 CHAR 类型不同,它不会使用空格填充至最大长度。VARCHAR2 最多
可以存储 4,000 字节的信息。
NVARCHAR2 类型:
这是一个包含 UNICODE 格式数据的变长字符串。 NVARCHAR2 最多可以存储 4,000
字节的信息。
数字类型:
NUMBER 类型:
NUMBER(P,S)是最常见的数字类型。
P 是 Precision 的英文缩写,即精度缩写,表示有效数字的位数,最多不能超过 38 个有
效数字。
S 是 Scale 的英文缩写,表示小数点数字的位数。
INTEGER 类型:
INTEGER 是 NUMBER 的子类型,它等同于 NUMBER(38,0),用来存储整数。若插
入、更新的数值有小数,则会被四舍五入。
浮点数:
BINARY_FLOAT 类型:
BINARY_FLOAT 是 32 位、 单精度浮点数字数据类型。可以支持至少 6 位精度,每个
BINARY_FLOAT 的值需要 5 个字节,包括长度字节。
BINARY_DOUBLE:
BINARY_DOUBLE 是为 64 位,双精度浮点数字数据类型。每个 BINARY_DOUBLE
的值需要 9 个字节,包括长度字节。
日期类型 :
DATE 类型:
DATE 是最常用的数据类型,日期数据类型存储日期和时间信息。虽然可以用字符或数
字类型表示日期和时间信息,但是日期数据类型具有特殊关联的属性。为每个日期值,Oracle
存储以下信息: 世纪、 年、 月、 日期、 小时、 分钟和秒。一般占用 7 个字节的存储空间。
TIMESTAMP 类型:
这是一个 7 字节或 12 字节的定宽日期/时间数据类型。它与 DATE 数据类型不同,因为
TIMESTAMP 可以包含小数秒,带小数秒的 TIMESTAMP 在小数点右边最多可以保留 9 位。
TIMESTAMP WITH TIME ZONE 类型:
这是 TIMESTAMP 类型的变种,它包含了时区偏移量的值。
TIMESTAMP WITH LOCAL TIME ZONE 类型 :
将时间数据以数据库时区进行规范化后进行存储
LOB 类型:
CLOB 类型(Character Large Object):
二进制数据,存储单字节和多字节字符数据。最大长度 4G。
BLOB 类型(Binary Large Object):
它存储非结构化的二进制数据大对象,它可以被认为是没有字符集语义的比特流,一般是图像、声音、视频等文件。最大长度 4G。
NCLOB 数据类型:存储 UNICODE 类型的数据 ,最大长度 4G。
LONG 类型:它存储变长字符串(超长字符串)
LONG RAW 类型:能存储 2GB 的原始二进制数据,可存放多媒体图象声音等。
RAW 类型:用于存储二进制或字符类型数据,必须制定长度。
9、在 Oracle 中创建表
Oracle 表名命名规则
1.必须以字母开头
2.长度不能超过 30 个字符
3.避免使用 Oracle 的关键字
4.只能使用 A-Z、a-z、0-9、_#$
使用带有特殊符号的表名
Oracle 在创建表时,表名会自动转换大写。Oracle 对表名大小写不敏感。
如果在定义表名时含有特殊符号,或者用小写字母来定义表名则需要在表名两侧添加双
引号。
10、数据库中的约束
约束的作用
约束用于规定表中的数据规则,如果存在违反约束的数据行为,行为会被约束终止。
约束类型
主键约束(Primay Key Constraint):唯一性,非空性。
唯一约束 (Unique Constraint):唯一性,可以空,但只能有一个。
检查约束 (Check Constraint):对该列数据的范围、格式的限制(如:年龄、性别等)。
非空约束 (Not Null Constraint) :该列不允许包含空值。
外键约束 (Foreign Key Constraint) :需要建立两表间的关系并引用主表的列。
11、数据库中表关系
表与表之间一般存在三种关系,即一对一,一对多,多对多关系。
一对多 :
一对多关系是建立在两张表之间的关系。一个表中的一条数据可以对应另一个表中的多
条数据。记住:外键永远在多方。外键允许重复,允许含有空值。
T_CLASSROOM 表
T_STUDENT 表
一对一:
一对一关系是建立在一对多的基础之上,外键可以在任何一方,需要让外键一方具备唯
一约束。
T_USER 表
多对多 :
需要建立一个中间表,中间表里建立两个列,然后需要用这两个列作为这个表的联合主
键,然后每个列在作为外键参照各自的表的主键
T_ORDER 表
T_ITEM 表
T_ORDER_ITEM 表