Oracle
Oracle和Mysql比较
- 他们目前都是Oracle公司旗下产品
- 面向的用户群体不同:
- Oracle是大型的数据库管理系统;价格昂贵
- MySQL是中小型数据库管理系统;开源.
- 对事务的支持不同
- Oracle很早就完全支持事务
- Mysql在InnoDB存储引擎的行级锁的支持下才实现事务
- 数据持久性不同:
- Oracle可以保证提交的数据都是可以恢复的,因为Oracle把提交的SQL操作在线写入了联机日志文件中,保存到磁盘上.如果出现Oracle或主机异常重启,重启后的Oracle可以靠联日志回复客户提交的数据.
- Mysql默认提交SQL语句,如果更行过程中数据库或主机出现异常重启,有可能丢失数据.
- 提交方式不同:
- Oracle默认不自动提交,需要用户手动提交
- Mysql默认自动提交
- 启动方式不同:
- Mysql一条命令就可以启动
- Oracle需要启动三个
- OracleService:数据库服务,它是Oracle数据库启动的基础,这是必须启动的.
- Listener:数据库监听服务,只有服务端启动了监听服务,客户端才能够连接到服务器.
- OracleDBConsole:企业管理器服务
Oracle原理:
- Oracle RDBMS
Relational Database Management System:关系型数据库管理系统,也称为Oracle Server.
Oracle Server分为两部分:实例+数据库.
- 数据库
在Oracle里面,数据库是一个物理概念,体现为硬盘上的一个文件.
数据库是硬盘上文件的逻辑集合,必须要和内存的实例合作,才能对外提供数据管理服务
- 实例
实例是位于内存中的数据结构,由一个贡献内存池和多个后台进程组成,用户如果想要存取数据库里面的数据,必须通过实例才能实现,不能直接读取硬盘上的文件.
- 实例和数据库
实例可以操作数据库;
在任何时候,一个实例只能和一个数据库关联.
在绝大多数时候每一个数据库只有一个实例和它关联进行操作.
Oracle操作
说明:
- Oracle里面没有database的概念,取而代之的是表空间(tablespace).
- 需要创建用户来管理表空间.
表空间
表空间由多个数据文件组成,数据文件只能属于一个表空间,表空间是逻辑概念,数据文件是物理概念.
每个Oracle数据库都是由若干个表空间构成,用户在数据库中建立的所有内容都会被存储到表空间.
用户
SYS和SYSTEM用户
这两个都是Oracle的系统用户,他们都使用SYSTEM表空间,SYS拥有更大的权限.
数据类型
字符数据类型:
- CHAR:存储固定长度的字符串
- VARCHAR2:存储可变长度的字符串
数值类型:
- NUMBER:存储整数和浮点数
日期时间类型\
- DATE:存储日期和时间数据
- TIMESTAMP:秒值精确到小数点后6位
LOB类型:
- BLOB:存储二进制对象
- CLOB:存储字符格式的大型对象
- BFILE:将二进制数据存储操作系统文件中
VARCHAR,INTEGER,FLOAT,DOUBLE类型不推荐使用
创建表
- Oracle不支持列值自增,但是有触发器
- 表名和列名:
- 如果不带符号(“”),大小写不敏感.
- 如果带引号(“”),大小写敏感.
- 表名和列名的命名规则:
- 必须以字母开头
- 必须在1-30个字符之间
- 只能包含a-z,A-Z,0-9,_,$,#
- 不能是oracle的保留字
- oracle的默认存储都是大写
- 数据库名只能是1-8位,