文章详情

短信预约信息系统项目管理师 报名、考试、查分时间动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Oracle学习(五) --- 视图、序列、同义词、索引

2019-06-02 22:25

关注

Oracle学习(五) --- 视图、序列、同义词、索引

1、视图

1.1、什么是视图

1.2、视图的基本操作

1.2.1、简化版创建

-- 语法
create view 视图名称 as 查询语句;

1.2.2、删除

-- 语法
drop view 视图名称;

1.2.3、具体操作:CURD

-- 0.准备数据,查询业主表
select * from t_owners;
-- 1 创建视图
create view view_owners 
as select * from t_owners;

-- 2 删除视图
drop view view_owners;

-- 3 查询 -- 与查询表语法相同
select * from view_owners;

-- 4 增删改
insert into view_owners values(11,"美廉美超市666",5,"4-2","30423",to_date("2016-10-12","yyyy-MM-dd"),3 );
commit;

update view_owners set name = "大润发" where id = 11;
commit;

delete from view_owners where id = 11;
commit;

1.3、含有条件(检测)的视图

-- 含条件的视图
-- 0 准备工作
select * from t_owners where ownertypeid = 1

-- 1 创建视图
create or replace view view_owner1 
as select * from t_owners where ownertypeid = 1
with check option

-- 2 查询
select * from view_owner1;

-- 3 添加数据
-- 执行不成功,提供违反约束
insert into view_owner1 values(11,"美廉美超市666",5,"4-2","30423",to_date("2016-10-12","yyyy-MM-dd"),3 );
commit;
-- 执行成功
insert into view_owner1 values(11,"美廉美超市666",5,"4-2","30423",to_date("2016-10-12","yyyy-MM-dd"),1 );
commit;
delete from t_owners where id = 11;
commit;

1.4、强制创建(了解)

--- 强制创建
-- 0 准备工作,查询表数据,表不存在
select * from temp;

-- 1 创建视图
create force view view_owners2
as select * from temp;

1.5、只读视图

-- 只读视图
-- 0.准备数据,查询业主表
select * from t_owners;
-- 1 创建只读视图
create view view_owners3
as select * from t_owners
with read only

-- 2 查询
select * from view_owners3

-- 3 添加 --不允许
insert into view_owners3 values(11,"美廉美超市666",5,"4-2","30423",to_date("2016-10-12","yyyy-MM-dd"),1 );
commit;

1.6、关联查询

1.6.1、名词解释:键保留表、非键保留表

1.6.2、SQL编写

-- 关联查询(复杂视图)
-- 0 准备sql 
select ow.id 业主编号,ow.name 业主名称,ot.name 类型名称 from t_owners ow
inner join t_ownertype ot on ow.ownertypeid = ot.id
-- 1 创建视图
create or replace view view_owners4
as select ow.id 业主编号,ow.name 业主名称,ot.name 类型名称 from t_owners ow
inner join t_ownertype ot on ow.ownertypeid = ot.id
-- 2 查询数据
select * from view_owners4
-- 3 更新数据
-- 3.1 键保留表
update view_owners4 set 业主名称 = "王小强" where 业主编号 = 2;
commit;
-- 3.2 非键保留表 (非键值保存表)--执行不成功
update view_owners4 set 类型名称 = "行政事业单位" where 业主编号 = 2;
commit;

1.7、总结

create [or replace] [force] view 视图名称
as 查询语句
[with check option]
[with read only]

-- or replace 覆盖
-- force 强制
-- with check option 有效数据检查
-- with read only 只读视图

2、序列

2.1、什么是序列

2.2、语法

create sequence 序列号;
create sequence 序列号
start with 起始值
increment by 步长
maxvalue 最大值
minvalue 最小值

2.3、创建

-- 简化版
create sequence seq_stuno;

-- 完整版
create sequence seq_stuno2
start with 2
increment by 3
maxvalue 20
minvalue 2

2.4、使用

-- 查询 , nextval 获得下一个序列
select seq_stuno2.nextval from dual;
-- 表主键自动维护
create table t_demo(
  id int primary key,
  name varchar2(50)
);
insert into t_demo(id,name) values(seq_stuno.nextval , "张三");
insert into t_demo(id,name) values(seq_stuno.nextval , "李四");
insert into t_demo(id,name) values(seq_stuno.nextval , "王五");
commit;

3、同义词

3.1、什么是同义词

3.2、同义词分类

3.3、创建和删除

3.4、演示

--- 同义词
-- 创建私有同义词
create synonym owners for t_owners;
-- 创建完成后,可以查询到数据
select * from owners;

-- 创建共有的同义词
create public synonym owners2 for t_owners;
select * from owners2;

--- 删除
drop synonym owners;
drop public synonym owners2

4、索引

4.1、什么是索引

4.2、索引分类

4.3、普通索引

4.3.1、语法

create index 索引名称 on 表名(列名);

4.3.2、准备数据

-- 1 准备数据
-- 1.1 创建表
drop table t_indextest;
create table t_indextest(
  id number,
  name varchar2(30)
);
-- 1.2 批量导入100万条数据
begin
  for i in 1..1000000
  loop
    insert into t_indextest(id,name) values(i, "AA" || i);
  end loop;
  commit;
end;

4.3.3、测试性能

-- 2 测试
-- 2.1 查询(id,name)  -- 两个结果基本一样
select * from t_indextest where id = 765432;
select * from t_indextest where name = "AA765432";
-- 2.2 添加索引
create index t_indextest_name on t_indextest(name);
-- 2.3 再次查询   -- 有索引快
select * from t_indextest where id = 765432;
select * from t_indextest where name = "AA765432";

--- 执行计划
explain plan for select * from t_indextest where id = 765432;
select * from table(dbms_xplan.display());

explain plan for select * from t_indextest where name = "AA765432";
select * from table(dbms_xplan.display());

4.4、唯一索引(了解)

create unique index 索引名称 on 表名(列名);

4.5、复合索引(了解)

create index 索引名称 on 表名(列名,列名2,.....);
阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯