Oracle 也是一种数据库管理系统
存储结构分类:逻辑存储结构,物理存储结构
逻辑存储结构:
数据块:数据块是Oracle逻辑存储结构的最小逻辑结构,一个数据块对应一个或多个物理块,
数据块的结构包括块头和存储区的两个部分
块头包括:数据块标题,表目录,行目录
存储区:自由空间,行数据
数据区:数据区是由连续的数据块结合而成的,数据区是Oracle存储分配的最小单位
段:
数据段:存储表中所有的数据
索引段:存储表上最佳查询的所有索引数据
临时段:存储表排序操作期间建立的临时表的数据
回滚段:存储修改之前的位置和值
表空间:表空间是数据库的最大逻辑划分区域,一个表空间由一个或多个数据文件组成,一个数据文件只属于一个表空间,表空间的大小是它所对应的数据文件大小的总和
默认创建的表空间有:
系统表空间(system tablespace)辅助表空间(sysaux tablespace)
撤销表空间(undo tablespace) 用户表空间(users tablespace)
物理存储结构:
物理存储结构包含三种数据文件:控制文件,数据文件,日志文件
逻辑存储结构与物理存储结构的交互方式有两种:1.表空间与数据文件2.块与os块
数据文件:系统数据文件(SYSTEM01.DBF和SYSAUX01.DBF)回滚数据文件(UNDOTBS01.DBF)
用户数据文件(USERS01.DBF、TBSP_1.DBF)临时数据文件(TEMP02.DBF)
控制文件:是数据库中最小的文件但也是非常的重要的文件
日志文件:包括重做数据文件(记录所有的数据变化,提供恢复机制)和归档日志文件等等
我自己安装的Oracle 版本是Oracle11g
oracle11g提供了 SQLPlus SQLDeveloper Oracle企业管理器 数据库配置助手(DBCA)
目前先使用SQL*Plus工具:在Oracle 11g数据库系统中,用户对数据库的操作主要是通过SQL *Plus来完成的。SQL *Plus作为Oracle的客户端工具,既可以建立位于数据库服务器上的数据连接,也可以建立位于网络中的数据连接。
SQL*Plus工具的特点为:
可以用它运行SQL查询和PL/SQL代码块并接受结果信息;
可以发布DBA命令并自动工作;
可以启动和关闭数据库;
一种创建数据库管理报告的便利方法;
Oracle的常用SQL语句
列别名:列别名可以使检索出来的表更加美观易懂
例如:
1.检索emp表员工的编号、姓名和年基本工资、日基本工资信息,并为查询结果设置列别名
select empno as "员工编号",ename as "员工名称",sal*12 as "年基本工资",sal/30 as "日基本工资" from emp;
2.检索emp表的指定列(empno、ename、job),不使用任何关键字而直接为这些列指定中文的别名
select empno "员工编号",ename "员工名称",job "职务" from emp;
如果别名中包含了特殊字符,或想让别名原样显示,就要使用双引号把别名括起来
去重:使查询结果中排出重复行可以使用关键字distinct
distinct的作用是消除重复内容,但是所谓的消除重复的内容,是指一条完整的数据全部是重复的,如果多行记录只有一列重复而其他列不重复,那么也是无法消除的。
例如:在SCOTT模式下,显示emp表中的job(职务)列,要求显示的“职务”记录不重复
select distinct job from emp;
也可以使用分组group by 来达到去重的目的
select job from emp group by job;
查询:
查询单个表中的所有数据
select * from scott.emp;
查询多个表中的所有数据(将表用逗号隔开就行了)
select * from scott.emp,dept;
查询指定(/多个)数据
select job,sal,ename,empno from emp;
伪列:是一种数据类型,唯一标识一条记录,物理位置的一条id,它之所以被称为伪列就是因为他不是正式存在的,伪列可以从表中查询,但是不可以插入,更新或者删除。
伪列的用途:1.能以最快的方式访问表中的一行
2.能显示表的行是如何存储的
3.作为表中的唯一标识
常用的伪列:rowid和rownum
rowid:数据库中的每一行都有一个行地址,rowid伪列返回该行地址。可以使用rowid值来定位表中的一行,通常情况下,rowid值可以唯一地标识数据库的一行。
rownum:对于一个查询返回的每一行,rownum伪列返回一个数值代表的次序。返回第一行的rownum值为1,第二行的rownum值为2,以此类推。通过使用rownum伪列,用户可以限制查询返回的行数
例如:1.查询emp表的rowid列---select rowid from emp;
2.从emp表中查询前5条数据---select * from emp where rownum < 6;模式匹配: like以及两个通配符“%”表示0或多个字符,“_”表示一个且只有一个字符
例如:查询表中名字中含有张的人名字
select * from biaoge where ename like "%张%";
空值:oracle中的空值(null)是不存在的值,而不是空字符串,