数据库的使用
什么是数据库
所谓的数据库其实就是数据的集合。用户可以对集合中的数据进行新增、查询、更新、删除等操作。 数据库是以一定方式储存在一起、 能与多个用户共享、 具有尽可能小的冗余度、与应用程序彼此独立的数据集合。
为什么要用数据库
为了完善系统文件:安全性问题,不利于查询和对数据的管理,利于存放海量数据,在程序中控制不方便的问题,创造了数据库。
数据库作用:
数据库:高效的存储和处理数据的介质(介质主要是两种:磁盘和内存)。
数据库是以数据结构的形式组织数据的,数据库是用户层面的,是由用户后来去实现的。而文件系统则是内核层面的,是操作系统自带的。(不知道我有没有说清楚)这是这两个的不同。我们可以通过结构化查询语言,即SQL语句,去操纵数据,进行一些我们想要的改变。
数据库类型:关系型(Oracle,Mysql,PostgreSQL,DB2,Microsoft SQL Server,Microsoft SQL Server,Microsoft Access)和非关系型(Redis,Mongodb,Big Table)
关系型数据库与非关系型数据之间的区别
关系型数据库:特点:关系型数据库最典型的数据结构是表,由二维表及其之间的联系所组成的一个数据组织。支持事务一致特性。
优点:1.易于维护:都是使用表结构,格式一致;
2.使用方便:SQL 语言通用;
3.复杂操作:支持 SQL,可用于一个表以及多个表之间非常复杂的查询;
缺点:
1.性能差:读写性能比较差,尤其是海量数据的高效率读写,传统关系型数据库来说,硬
盘 I/O 是一个很大的瓶颈;
2.存储方式不灵活:固定的表结构,灵活度稍欠;
非关系型数据库 :特点:非关系型数据库严格上不是一种数据库,应该是一种数据结构化存储方法的集合,可以是文档或者键值对等。不支持事务一致特性。
优点
1.格式灵活:存储数据的格式可以是 key,value 形式、文档形式、图片形式等等;
2.高扩展性:基于键值对,数据没有耦合性,容易扩展;
3.速度快:无需经过 sql 层的解析,读写性能很高;
缺点
1.不支持 SQL:不提供 sql 支持,学习和使用成本较高;
2.不支持事务:无事务处理能力;
3.不支持复杂查询:数据结构相对复杂,复杂查询方面稍欠、
Oracle的使用:
Oracle 数据库其实就是一组文件的集合。Oracle 数据库分别由:数据文件、控制文件、日志文件所构成。
数据文件(.DBF)
数据文件是一个二进制文件,是用于保存用户应用程序数据和 Oracle 系统内部数据的文件,这些文件在操作系统中就是普通的操作系统文件。Oracle 在创建表空间的同时会创建据文件。
控制文件(.CTL)
控制文件是一个二进制文件,它主要记录数据库的名称、数据库的数据文件存放位置等息。一个控制文件只能属于一个数据库。如果控制文件丢失,这数据库就无法操作。
日志文件(.LOG)
日志文件在 Oracle 数据库中分为重做日志(Redo Log File)文件和归档日志文件两种。重日志文件是 Oracle 数据库正常运行不可缺少的文件。重做日志文件主要记录了数据库操过程。用于备份和还原数据库,以达到数据库的最新状态。
什么是Oracle实例
实例就是数据库启动后分配的内存和建立的后台进程. 数据库关闭后,物理上的文件还存在,但实例(分配的内存和建立的进程)就没有了
3Oracle实例与数据库的关系
实例就是一组操作系统进程(或者是一个多线程的进程)以及一些内存。这些进程可以操作数据库;而数据库只是一个文件集合(包括数据文件、临时文件、重做日志文件和控制文件)。在任何时刻,一个实例只能有一组相关的文件(与一个数据库关联)。大多数情况下,反过来也成立:一个数据库上只有一个实例对其进行操作。
Oracle版本说明
Oracle 8i Oracle 9i :代表 Internet。8i 版本开启对 Internet 的支持。所以,在版本号之后,添加了标识 i。
Oracle 10g Oracle 11g:代表 Grid 网格。10g 加入了网格计算的功能,因此版本号之后的标识使用了字母g。
Oracle 12c:代表云(cloud)计算设计。12c版本表示对云计算的支持
Oracle的安装与卸载
安装较简单不说明
Oracle卸载步骤
1停止使用Oracle的服务
2运行卸载Oracle数据库
3删除使用Oracle的服务
4删除注册表中Oracle相关项
5删除Oracle环境变量
6删除“开始”菜单中 Oracle目录
7.重新启动计算机
8.删除ProgramFiles\Oracle目录
9删除Oracle安装目录
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目录
存放数据文件。
数据库中的文件介绍
1.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 DatabaseManagement System)
sys用户:sys 是 Oracle 中的超级账户,拥有的权限最大。可以完成数据库的所有管理任务。system用户
system:没有 sys 权限大,通常用来创建一些用户查看管理信息的表或视图。不建议使用 system 用户来创建一些与管理无关的表或者视图。
二者在登录时的区别
sys 和 system 在登录 Oracle 时, sys 只能以系统管理员 (sysdba) 或系统操作员 (sysoper)的权限登录,而 system 可以直接登录(normal)。
scott用户
scott:是 oracle提供的示例用户,提供了一些学习 oracle 操作的数据表。如:emp、dept、salgrade、bonus 表
Oracle启动
Oracle 是通过系统的服务来启动的。
1.1OracleServiceORCL(必须启动)
OracleServiceORCL:数据库服务(数据库实例),是 Oracle 核心服务该服务是数据库启动的基础,只有该服务启动,Oracle 数据库才能正常启动。
OracleOraDb11g_home1TNSListener(必须启动)
OracleOraDb11g_home1TNSListener:监听器服务,服务只有在数据库需要远程访问的时候
或者使用 PL/SQL Developer 等第三方工具时才需要。
Oracle ORCL VSSWriter Service(非必须启动)
Oracle ORCL VSS Writer Service:Oracle 卷映射拷贝写入服务,VSS(Volume Shadow CopyService)能够让存储基础设备(比如磁盘,阵列等)创建高保真的时间点映像,即映射拷贝shadow copy)。 它可以在多卷或者单个卷上创建映射拷贝, 同时不会影响到系统的系统能。
OracleDBConsoleorcl(非必须启动)
OracleDBConsoleorcl:Oracle 数据库控制台服务,orcl 是 Oracle 的实例标识,默认的实例为 orcl。在运行 Enterprise Manager(企业管理器 OEM)的时候,需要启动这个服务。
OracleJobSchedulerORCL(非必须启动)
OracleJobSchedulerORCL:Oracle 作业调度(定时器)服务,ORCL 是 Oracle 实例标识。
OracleMTSRecoveryService(非必须启动)
OracleMTSRecoveryService:服务端控制。该服务允许数据库充当一个微软事务服务器MTS、COM/COM+对象和分布式环境下的事务的资源管理器。、
Oracle关闭
关闭 Oracle 只需要将服务停止即可。
Oracle客户端工具介绍
Oracle自带客户端工具SQL Plus
输入sys 用户登录命令: sys as sysdba|sysoper
system 用户登录命令:system
Oracle第三方工具PL/SQL Develope
常用命令窗口1.CommandWindow:
2.SqlWindow
Oracle的表空间:
永久表空间
表空间是数据库的逻辑划分,一个表空间只能属于一个数据库。所有的数据库对象都存放在指定的表空间中。但主要存放的是表,所以称作表空间。
临时表空间
Oracle 临时表空间主要用来做查询和存放一些缓冲区数据。 临时表空间消耗的主要原因是需要对查询的中间结果进行排序。重启数据库可以释放临时表空间。
创建永久表空间命令
create tablespace 永久表空间名称 datafile '永久表空间物理文件位置' size 15M autoextend on next 10M permanent online;
创建用户
通过PL/SQL Developer工具创建用户
分配用户权限:
对象权限(Object privileges)
对象权限是指在指定的表,视图,序列上制定执行动作的权限或权利。
角色权限(Role privileges)
角色是可以授予用户的相关权限的组,该方法使权限的授予,撤回更加容易管理。
系统权限(Systemprivileges)
为用户分配创建表、创建用户、创建视图、创建存储过程等权限。
分配链接权限
分配系统权限
分配无限制权限:
Oracle的链接配置
文件位置
Oracle 目录\product\11.2.0\dbhome_1\NETWORK\ADMIN
sqlnet.ora
名称解析。通过这个文件来决定怎么样找一个连接中出现的连接字符串。
如:sqlplus bjsxt/oracle@orcl
NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)
tnsnames.ora
用在 oracle client 端,用户配置连接数据库的别名参数,就像系统中的 hosts 文件一样。
listener.ora
用在 oracle server 端,可配置 Oracle 的监听端口
Net Configuration Assistant 工具
配置如下:
Oracle中的数据类型:
1.字符类型
字符串数据类型还可以依据存储空间分为固定长度类型(CHAR) 和可变长度类型(VARCHAR2/NVARCHAR2)两种。
CHAR类型
CHAR 类型,定长字符串,会用空格填充来达到其最大长度。非 NULL 的 CHAR(12)总是包含 12 字节信息。CHAR 字段最多可以存储 2,000字节的信息。如果创建表时,不指定 CHAR 长度,则默认为 1。
VARCHAR2类型
可变长字符串,与 CHAR 类型不同,它不会使用空格填充至最大长度。VARCHAR2 最多可以存储 4,000字节的信息。
NVARCHAR2 类型
这是一个包含 UNICODE 格式数据的可变长字符串。 NVARCHAR2 最多可以存储 4,000字节的信息。
2数字类型
NUMBER类型
NUMBER(P,S)是最常见的数字类型。P 是 Precision 的英文缩写,即精度缩写,表示有效数字的位数,最多不能超过 38个有效数字。S是 Scale 的英文缩写,表示小数点数字的位数。
INTEGER类型
INTEGER 是 NUMBER 的子类型,它等同于 NUMBER(38,0),用来存储整数。若插入、更新的数值有小数,则会被四舍五入。
3浮点数
BINARY_FLOAT类型BINARY_FLOAT 是 32 位、 单精度浮点数字数据类型。可以支持至少 6 位精度,每个BINARY_FLOAT 的值需要 5 个字节,包括长度字节。
BINARY_DOUBLE
BINARY_DOUBLE 是为 64 位,双精度浮点数字数据类型。每个 BINARY_DOUBLE的值需要 9 个字节,包括长度字节。
4日期类型
DATE类型DATE是最常用的数据类型,日期数据类型存储日期和时间信息。虽然可以用字符或数字类型表示日期和时间信息, 但是日期数据类型具有特殊关联的属性。 为每个日期值, Oracle存储以下信息: 世纪、 年、 月、 日期、 小时、 分钟和秒。一般占用 7 个字节的存储空间。
TIMESTAMP类型
这是一个 7字节或 12 字节的定宽日期/时间数据类型。它与 DATE 数据类型不同,因为TIMESTAMP可以包含小数秒,带小数秒的 TIMESTAMP 在小数点右边最多可以保留 9 位。
TIMESTAMPWITH TIME ZONE 类型
这是 TIMESTAMP 类型的变种,它包含了时区偏移量的值。
TIMESTAMPWITH LOCAL TIME ZONE 类型
将时间数据以数据库时区进行规范化后进行存储
5LOB类型
CLOB 类型(Character Large Object)
二进制数据,存储单字节和多字节字符数据。最大长度 4G。
BLOB类型(Binary Large Object)
它存储非结构化的二进制数据大对象,它可以被认为是没有字符集语义的比特流,一般是图像、声音、视频等文件。最大长度 4G。
NCLOB 数据类型
存储 UNICODE 类型的数据 ,最大长度 4G。
LONG & RAW& LONG RAW类型
6.LONG类型
它存储变长字符串(超长字符串),最多达 2G 的字符数据(2GB 是指 2千兆字节, 而不是 2 千兆字符)。
LONG RAW 类型
能存储 2GB 的原始二进制数据,可存放多媒体图象声音等。
RAW类型
用于存储二进制或字符类型数据,必须制定长度。这种数据类型存储的数据不会发生字符集转换。可存放多媒体图象声音等。
在Oracle中创建表
Oracle表名命名规则
必须以字母开头
长度不能超过 30个字符
避免使用 Oracle 的关键字
只能使用 A-Z、a-z、0-9、_#$
使用带有特殊符号的表名Oracle 在创建表时,表名会自动转换大写。Oracle 对表名大小写不敏感。如果在定义表名时含有特殊符号, 或者用小写字母来定义表名则需要在表名两侧添加双引号。
数据库中的约束
约束的作用
约束用于规定表中的数据规则,如果存在违反约束的数据行为,行为会被约束终止。
约束类型
主键约束(Primay Key Constraint)
唯一性,非空性。
唯一约束 (Unique Constraint)
唯一性,可以空,但只能有一个。
检查约束 (Check Constraint)
对该列数据的范围、格式的限制(如:年龄、性别等)。
非空约束 (Not Null Constraint)
该列不允许包含空值。
外键约束 (Foreign Key Constraint)
需要建立两表间的关系并引用主表的列。