Oracle详解(Ⅰ):世界上目前已知最好的关系型数据库

Oracle数据库的体系结构
数据库:
Oracle数据库是数据的物理存储,这就包括(数据文件ORA或者DBF、控制文件、联机日志、参数文件)。其实Oracle数据库的概念和其他数据库不一样,这里的数据库是一个操作系统只有一个库。可以看多是Oracle就只有一个大数据库
实例:
一个Oracle实例(Oracle Instance)有一系列的后台进程(BackGoundProcesses) 和内存结构(Memory Structures)组成,一个数据库可以有N个实例。
数据文件(dbf):
数据文件是数据库的物理存储单位,数据库的数据是存储在表空间中的,真正是在某一个或者多个数据文件中,而一个表空间可以由一个或者多个数据文件组成,一个数据文件只能属于一个表空间,一旦数据文件被加入到某个表空间后,就不能删除这个文件,如果要删除某个数据文件,只能删除其所属于的表空间才行。
表空间:
表空间是Oracle对物理数据库上相关数据文件(ORA或者DBF文件)的逻辑映射,一个数据库在逻辑上被划分成一个到若干个表空间,每个表空间包含了在逻辑上相关联的一组结构,每个数据库至少有一个表空间(称之为System表空间)每个表空间由同一个磁盘上的一个或者多个文件组成,这些文件叫数据文件(datafile)一个数据文件只能属于一个表空间。

用户:
用户是在实例下建立的,不同的实例中可以建相同名字的用户。

基本查询
sql书面概念:
DML (数据库操作语言)
INSERT UPDATE DELETE
DDL (数据库定义语言)
CREATE DROP
DCL(数据库控制语言)
GRANT REVOKE
1.查询语法
select *|列名 from 表名;
2.别名用法
select 列名 别名,... from 表名;
3.去重
select distinct *|列名 from 表名;
4.查询中的四则运算
eg: 查询员工的年薪
select ename,sal*12 income from emp;
5.连接符 ||
字符串连接查询 等同于mysql中的 concat


条件查询和排序
使用where语句对结果进行过滤
select *|列名 from 表名 where ....(条件:比较运算符)
其他比较运算符
between...and... (在两值之间,包含边界)
IN(set) 等于值列表中的一个
LIKE 模糊查询
IS NULL 空值
逻辑运算符
AND 逻辑并
OR 逻辑或
NOT 逻辑否
Where 语句示例
IS NOT NULL

IS NULL







模糊查询


OrderBY

排序中的空值问题
排序的时候可能出现null时就会产生问题,使用nulls first nulls last 来指定null值得显示位置
单行函数
接收字符输入返回字符串或者数值,dual是伪表
1.字符串的连接可以使用建议使用|| 而不是concat
select concat(String,String) from dual;
2.字符串的截取,使用substr,第一个参数是源字符串,第二个参数是开始索引,第三个参数是长度,开始索引使用1和0效果相同
3.获取字符串的长度
length (String) from dual;
4 字符串替换,第一个参数是源字符串,第二个参数被替换的字符串,第三个是替换字符串
select replace('String','1','o')from dual;
数值函数
ROUND:四舍五入
ROUND(100.333,2)
TRUNC:截断
TRUNC(100.33,2)
MOD:求余
MOD(100,30)