数据库常见的对象:
- 表:数据集
- 试图:从表中抽取出来的逻辑相关的数据集
- 序列:连续的数字
- 索引:提高查询效率
- 同义词:表/试图起的别名
1、试图
试图是一种虚拟表
试图是建立在已有的表的基础上,试图赖以建立的这些表称为基表。
1 . 创建试图
-- 格式
CREATE [OR RELACE] VIEW (试图名称) as (查询语句);
-- 查看试图
select * from 视图名
-- 示例
-- 查询出所有的雇员及其所在的部门信息
create or replace view empAndDeptView
AS
select e.empno,e.ename,e.job,e.sal,e.hiredate,d.dname,d.loc from emp e, dept d where e.deptno = d.deptno;
--查询试图
select * from empAndDeptView;
2 . 修改试图
--格式
alter view 视图名 as 查询语句;
3 . 删除试图
-- 格式
drop view 视图名;
2、序列
可供多个用户用来产生唯一数据的数据库对象
作用:
- 自动提供唯一数值
- 共享对象
- 主要用户提供主键值
- 将序列值装入内存 通过访问的效率
1 . 创建序列
--创建序列
create SEQUENCE stu_seq
increment by 1--步长 就是每次增加的值
start with 1 --开始值
maxvalue 99999999 -- 最大值
minvalue 0 -- 最小值
nocycle --是否循环nocycle|cycle
nocache; --是否缓存nocache|cache
-- nextval 和currval伪列
-- nextval 返回序列中下一个有效值 任何用户都可以引用
-- currval 存放序列中的当前值
select stu_seq.currval ,stu_seq.nextval from dual;
--序列的应用
insert into student(sid,sname,sage,email,phone,hiredate,cid)
values(stu_seq.nextval,'李四',22,null,null,sysdate,null);
2 . 修改序列
--修改序列
alter sequence stu_seq
increment by 10
maxvalue 99999999
nocache
nocycle
可以修改序列的增量、最值、循环、缓存
不允许修改初始值,要改变初始值必须删除序列重新创建
3、 索引
索引可以加速Oracle服务器的查询速度
1 . 创建索引
1)自动创建:
定义表时 primary key 或者 unique约束后系统都会为其创建一个唯一性索引
2)手动创建:
用户可以在其他列上创建非唯一索引 从而加快查询的速度
create index stu_sid_index on student(sid);
2 . 什么时候创建索引
- 列中的值分布范围很广时
- 列经常在where字句 或链接条件中出现时
- 表经常被访问,且数据量很大时(访问的数据大概占总数的2%-4%)
3 . 删除索引
drop index 索引名称;
4、同义词
当用户需要访问其他用户的对象的时候 此时为了简化书写 可以给这个对象创建同义词
1)创建同义词
create synonym stu for scott.student;
select * from stu ;
可以为序列创建同义词 但是没有意义
2)删除同义词
drop synonym 同义词名