锋盈数科-知识库 Logo
首页
软件开发
计算机基础
Hello Halo
新手必读
关于本知识库
登录 →
锋盈数科-知识库 Logo
首页 软件开发 计算机基础 Hello Halo 新手必读 关于本知识库
登录
  1. 首页
  2. 软件开发
  3. Oracle数据库---序列、视图、索引

Oracle数据库---序列、视图、索引

0
  • 软件开发
  • 发布于 2024-08-19
  • 11 次阅读
黄健
黄健

oracle数据库管理及其应用

    • 一、序列:sequence
    • 二、视图:view
      • 视图可以DML(数据操纵语言)操作的条件
    • 三、索引:index

一、序列:sequence

--序列:sequence,产生序列号
--使用属性的默认值创建
--start with:起始序号为1
--increment  by:步长,等差
(--increment by定义序列的差值,默认为1,如果increment by 为负值则序列按照此差值递减)
maxvalue:最大值
--minvlue:最小值
--cycle :循环(定义存放序列的内存块的大小,默认为20),nocycle不循环
--cache:预产生的序号数 ,nocache:不按预产生序号,20;

--创建一个序列
creat sequence squ1; --创建一个序列

create sequence squ2
start with 10    - -开始序号10
increment by 2; --等差2

create sequence squ3
start with 12    - -开始序号12
increment by 3; --等差3
maxvalue 2000
minvalue12
nocache
nocycle
--访问序列
--nextvalu:产生新的序列号返回
--currval:返回当前序号
--nextval应定义在currval之前
select squ3.nextval from dual;
select squ1.nextval from dual;
--修改序列:alter
--注意:序列一旦使用,start with 不能修改,其它属性可以修改
-- 修改只能影响后续的序列号
alter sequence squ3 increment by 2;
alter squ3.currval from dual;
alter squ3.nextval from dual;
--查看序列信息
select * from all_sequence;
select * from dba_sequence;

二、视图:view

视图是虚拟的表,也称为'存储的查询'。与包含数据的表不一样,视图只包含使用时动态检索数据的查询。数据本质上也是存储在表中。
视图具有以下优点:
1、可以限制用户只能通过视图检索数据。这样就可以对最终用户屏蔽建表时底层的基表。
2、可以将复杂的查询保存为视图。可以对最终用户屏蔽一定的复杂性。
3、限制某个视图只能访问基表中的部分列或者部分行的特定数据。这样可以实现一定的安全性。
4、从多张基表中按一定的业务逻辑抽出用户关心的部分,形成一张虚拟表。

--创建视图------语法结构
create[or replace] [{
  force|noforce}] view view_name
as
select查询语句
[with read only constraint]
--基于students表和dept表创建的视图
create view view_name
as
select查询语句
create view view_name_info
as
select s.sno,s.sname,s.age,s.ssex,d.dname from students s join dept d s.sno=d.sno;
--重新命名列,修改视图or replace
create or replace view view_students_info(学号,姓名,年龄,性别,院系)
as
select s.sno,s.sname,s.age,s.ssex,d.dname from students s join dept d s.sno=d.sno;
--force:即使基表不存在,也可以创建该视图,但是该视图不能正常使用,当基表创建成功后,视图才能正常使用
--忽视查询错误,强制创建视图
create force view v_t
as
select * from temp;

--创建temp表后视图可用
create table temp(id number(3,0));

select * from temp;
--只读视图with read only,只能查询,不能通过视图修改基表的数据
create or replace view view_students_info(学号,姓名,年龄,性别,院系)
as
select s.sno,s.sname,s.age,s.ssex,d.dname from students s join dept d s.sno=d.sno 
with read only;
--根据视图进行查询
select * from view_name;
select * from view_name_info;
--在创建视图是没有with read only 时,根据视图进行修改
--以视图中列的名称为基准
update view_students_info set 姓名='name' where 学号='2015010001';

update view_students_info set 年龄 = 17 where 学号='2015010001';

select * from view_students_info ;
--with check option:检查修改的数据是否满足创建视图查询的条件
create or replace view view_students_info1(学号,姓名,年龄,性别,院系)
as
select s.sno,s.sname,s.age,s.ssex,d.dname from students s join dept d s.sno=d.sno where s.age>18;

update view_students_info1 set 年龄 = 17 where 学号='2015010001';
--注意,此时可以修该,但在视图中无法查询
select * from view_students_info;


create or replace view view_students_info2(学号,姓名,年龄,性别,院系)
as
select s.sno,s.sname,s.age,s.ssex,d.dname from students s join dept d s.sno=d.sno where s.age>18 with check option;

update view_students_info2 set 年龄 = 17 where 学号='2015010001';
--注意,此时会报错,不允许修改
--删除视图
drop view 视图名;

视图可以DML(数据操纵语言)操作的条件

	1、只能修改一个底层的基表
	2、如果修改违反了基表的约束条件,则无法更新视图
	3、如果视图包含连接操作符、DISTINCT 关键字、集合操作符、聚合函数或 GROUP BY 子句,则将无法更新视图
	4、如果视图包含伪列或表达式,则将无法更新视图
	伪列:伪列的操作类似于表中的列,但是它并不存实际保存在表中。你可以对其进行查询操作,但是你却不能对其进行增加、修改或者是删除,一个伪列也类似于一个没有参数的函数。但是,没有参数的函数通常在结果集中为每一列返回相同的结果,伪列通常为每一列返回不同的值。
	具体参考:https://blog.csdn.net/ziwen00/article/details/11672233?biz_id=102&utm_term=oracle%E4%BC%AA%E5%88%97&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-0-11672233&spm=1018.2118.3001.4187
	5、在连接视图中不能有Order by、Group by等排序、分组语句。

三、索引:index

--创建索引
create  index 索引名 on table 表名(column1,column2);
--重命名索引
alter index 原索引名 rename to 新索引名;
--重建索引
	一、删除原来的索引,重新建立索引
   二、alter index 索引名 rebuild;
--查看索引
select * from all_indexes where table_name='表名';
--删除索引
drop index 索引名;
--唯一索引
create unique index 索引名 on table 表名(column1,column2);

原文链接: https://blog.csdn.net/friggly/article/details/123723470

标签: #Oracle 2 #数据库 67 #软件开发 1171
相关文章

万字:支付“核心系统”详解 2024-11-02 15:33

专栏作者:隐墨星辰 \| 主编:陈天宇宙 这篇文章也尝试化繁为简,探寻支付系统的本质,讲清楚在线支付系统最核心的一些概念和设计理念。 虽然支付行业已经过了风头最劲的时光,但跨境支付仍然在蓬勃发展,每年依然有很多新人进入这个行业,这篇文章尝试为这些刚入行的新人提供一点帮助。 文章只介绍一些支付行业十几

资深支付架构师视角:实战从问题定义到代码落地的完整套路 2024-11-02 15:33

前言 今天从一个实际案例入手,介绍站在架构师的角度,如何识别并定义问题,提炼需求,技术方案选型,再到详细设计,最后利用AI的能力协助写出核心的代码,验证与调优。 解决问题存在一定的模式,也可以称之为框架,总结出自己的思考和解题框架,以后再碰到同类型的问题就可以如庖丁解牛一样容易。 很多年前,我写代码

Spring 实现 3 种异步接口 2024-10-18 09:07

大家好,我是苏三~ 如何处理比较耗时的接口? 这题我熟,直接上异步接口,使用 Callable、WebAsyncTask 和 DeferredResult、CompletableFuture等均可实现。 但这些方法有局限性,处理结果仅返回单个值。在某些场景下,如果需要接口异步处理的同时,还持续不断地

重学SpringBoot3-集成Redis(五)之布隆过滤器 2024-10-08 11:24

更多SpringBoot3内容请关注我的专栏:《SpringBoot3》 期待您的点赞👍收藏⭐评论✍ 重学SpringBoot3-集成Redis(五)之布隆过滤器 1. 什么是布隆过滤器? * 基本概念 适用场景 2. 使用 Redis 实现布隆过滤器 * 项目依赖 Redis 配置

设计模式第16讲——迭代器模式(Iterator) 2024-10-08 11:24

一、什么是迭代器模式 迭代器模式是一种行为型设计模式,它提供了一种统一的方式来访问集合对象中的元素,而不是暴露集合内部的表示方式。简单地说,就是将遍历集合的责任封装到一个单独的对象中,我们可以按照特定的方式访问集合中的元素。 二、角色组成 抽象迭代器(Iterator):定义了遍历聚合对象所需的方法

vue2路由和vue3路由区别及原理 2024-10-08 11:24

一、Vue2 与 Vue3 路由的区别 1. 创建路由实例方式的不同 Vue 2 中,通过 Vue.use() 注册路由插件,并通过 new VueRouter() 来创建路由实例。 import Vue from 'vue';import VueRouter from 'vue-router';i

目录

IT 外包服务商

  • 意见投递
  • zyf6619

软件开发应用

主菜单

  • 首页
  • 软件开发
  • 计算机基础
  • Hello Halo
  • 新手必读
  • 关于本知识库
Copyright © 2024 your company All Rights Reserved. Powered by Halo.