IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> 数据库对象,序列,视图,索引 -> 正文阅读

[大数据]数据库对象,序列,视图,索引

oracle06-数据库对象

一、数据库对象
? ? 1.1 什么是数据库对象
?? ?说白了就是pl/sql软件my objects里面的东西,最基本的可以理解为表。
?? ?数据库对象又称模式对象,是逻辑结构的集合。
? ?? ?最基本的数据库对象就是表。

?? ?数据逻辑结构:指的是存在一种或多种特定关系的数据元素集合。
?? ?通俗点:就是把数据元素形象地进行了有规则排列,但不用考虑在计算机上如何实现。
?? ?再通俗点:就是数据有规则的排列。表不就是有规则的排列吗?

? ?? ?数据库对象包括:
? ?? ?同义词、序列、视图、索引、表、函数、包、过程、触发器等。

?? ?指针

?? ?1.table:基本的数据库对象,由行和列组成
?? ??? ?创建表,数据类型,约束对象,简单的CURD(增删改查)
?? ??? ?了解:手动添加,删除字段,类型,约束
?? ??? ??? ?alter ? ? create drop

?? ?2.view:视图,虚拟表
?? ?3.sequence:序列
?? ?4.index:索引
?? ?5.synonym:同义词
?
? ? 1.2 同义词 synonym

?? ?A ?B
?? ?A用户:创建一个表 tb_sb
?? ?B用户:能访问A用户的tb_sb

?? ?同义词是数据库方案对象的一个别名,经常用于简化对象访问和提高对象访问的安全性。
?? ?通过创建一个同义词(对象的另外一个名字)来简化对数据库中对象的存取。
?? ?缩短了对象的名字的长度
?? ?语法:
?? ??? ?create [public] synonym 同义词名字 for object;

?? ?同义词分类:私有同义词&&公有同义词
?? ?
?? ?1.2.1 私有同义词
?? ? ? ?只能被当前用户访问,而且不能与当前模式的对象相同,就是有的对象有这名字了就不能取了。

?? ?**创建私有同义词
?? ??? ?create sysnonym aa for scott.emp;--aa为名字,可自定义,执行如果出现权限不足错误,可以使用管理员给予权限

?? ?**给予权限:使用sys登录后,手动点击user找到scott用户,点击编辑,给系统权限加:
?? ??? ?create synonym--创建私有同义词
?? ?
?? ?**查看同义词
?? ??? ?select * from aa;--使用同义词得到emp表数据,后期有需求再用,先理解制作方式。

?? ?1.2.2 公有同义词
?? ? ? ?由一个特殊的用户组Public所拥有。顾名思义,数据库中所有的用户都可以使用公用同义词。
?? ?**创建公有同义词
?? ??? ?create public synonym bb for scott.emp;--会提示权限不足

?? ?**解决权限问题:使用sys登录后给予权限
?? ??? ?grant create public synonym to scott;?

?? ?**撤销权限
? ?? ??? ?revoke create ?public synonym from scott;

? ? 1.3 序列:用于生成唯一、连续序号的值,类似sqlserver中的标识列
?? ?概述:
?? ??? ?①自动产生唯一的数字
?? ??? ?②是一个可以共享的数据库对象
?? ??? ?③典型地用于产生数据库表中的主键值
?? ??? ?④能够节省应用程序的代码
?? ??? ?⑤当缓存在内存中时,能够提高存取的效率。
?? ?**创建序列
?? ? ? ?create sequence seq0212--创建名字
?? ? ? ?start with 1--开始从1
?? ? ? ?increment by 1--自增长为1
?? ? ? ?maxvalue 100--最大值
?? ? ? ?minvalue 1--最小值

?? ?nextval:返回下一个可用的序列值,每访问一次,它将产生一个唯一的新值,即使对不同的用户,该值也是唯一的。
?? ?currval:返回当前的序列值,只有当nextval被访问之后,currval伪列才能包含一个值。
?? ?
?? ?**使用序列
?? ?***取下一个值 值每运行一次增长,相当于于标识列,不能回去。
?? ? ? ?select scott.seq0212.nextval from dual;
?? ?***取当前的值 值回不去 除非删除序列
?? ? ? ?select scott.seq0212.currval from dual;

?? ? 删除序列
?? ?使用drop sequence命令来删除一个数据字典的序列
?? ?一旦序列被删除,那么被序列就不可以访问了。
?? ?
?? ?序列的作用:Oracle中没有标识列,所以让序列当作标识列,后期会与触发器配合使用
?? ?
?? ?【案例】创建表 ?插入数据 ?使用nextval

? ? 1.4 视图:存储一个后者多个表数据的虚拟表
?? ?【需求】显示dept表和emp表中部门和部门编号,员工和员工薪水,存储到视图中
?? ??? ?【注意】需要权限
?? ?【需求】求每个部门的平均薪资
?? ?【需求】修改数据,如果不是原数据就会失败
?? ?概述
?? ?视图,就是一张虚拟表,我们可以从这个表中查询数据
?? ?视图,就是一个命名的查询的语句

?? ?create view 视图名称 as select...

?? ?删除视图:不会影响原来的数据
?? ?drop view 视图名称

? ? 1.5 索引:相当与书的目录,可以大大的提供我们的速度
? ? --在普通情况下不会有区别,当数据多的情况下,加索引就会提升查询速度,了解一下
? ? --会鼠标创建即可:点击表,右击编辑,可以看到索引,给列添加索引就好了
? ? --PPT上看一下,了解下就可以
? ? --索引的优点:大大提升查询速度
?? ?
?? ?1.5.1 概述
?? ?①一个数据库模式对象
?? ?②Oracle利用索引来加快对数据行的访问
?? ?③依靠索引来快速定位数据,从而 减少了磁盘I/O的次数
?? ?④与使用它的表是相互独立的数据库对象
?? ?⑤Oracle服务器自动对索引进行维护和使用

? ? ?? ?1.5.2 创建索引的2种方式
?? ?①自动创建:Oracle辉自动为主键(primary key)和唯一键(unique)创建索引
?? ?自动创建的索引是无法删除的。
?? ?alter table emp?
?? ?add constraints ename_uni unique(ename);

?? ?alter table emp
?? ?drop constraints ename_uni;

?? ?②可以手动的创建索引,表中什么样的字段应该添加索引?
?? ? ?在查询的时候,经常被用来作为查询添加的字段,应该添加索引。
?? ? ?create index ename_index on emp(ename);

?? ? ?select * from emp where ename = 'smith'
?? ?
?? ?③什么时候创建索引?
?? ??? ?a.欲创建索引的列在where子句或者连接条件中频繁使用
?? ??? ?b.该列所包含的不同值很多
?? ??? ?c.该列包含大量的空值
?? ??? ?d.表中的数据库行数非常大,而且只有2-4%数据行被查询出来
?? ?
?? ?④什么时候不必创建索引
?? ??? ?a.表是空的
?? ??? ?b.列在查询条件中不经常使用
?? ??? ?c.大多数基于该表的查询,所查询出的数据量远多于2-4%行。
?? ??? ?d.表被频繁修改

?? ?⑤删除索引
?? ?drop index 索引名称;
?? ??? ?


------代码
Oracle 创建视图view 权限不足,无法创建 解决办法
Oracle?
在创建用户的时候如果直接给用户DBA权限,那么在B用户中可以直接查询A用户的表,但是在创建视图时就会报无权限,在这种情况下需要再在被访问的A用户里面去给予要访问该表的B用户授权。?

--创建视图权限,一般网上找都是说的这句,但是光有这句还是无法创建?
grant create ?view to B;?

--授予查询权限?
grant select any table to B;?

--授予权限?
grant select any dictionary to B;?


select * from dba_synonyms where table_owner='SCOTT';

drop ?public synonym paaa

给予权限代码??

select * from emp;
--给scott用户创建公开同义词的权限
grant create public synonym to scott;
--给scott用户创建私有同义词的权限
grant create  synonym to scott;

select * from sb;

--创建用户
create user nb
identified by 123;

--授权
grant connect,resource to nb;

--给予nb这个用户去查询emp表的权限
grant select on scott.emp to nb;

--以SYS的角色给emp表创建私有同义词
create synonym xb for scott.emp;

select * from xb;

select * from sb2;

--视图给予权限
grant create view to scott;

实现详细步骤?

--数据库对象
1.能够使用数据定义语言中的create关键来创建的都可以成为数据库对象。
2.Oracle中最基础的数据库对象:表,视图
3.其他:函数,存储过程,触发器,序列,同义词,索引等等。
4.四个数据库对象:同义词,序列,视图,索引

#同义词 synonym
1.对已有的数据表对象起别名。
2.作用:方便其它用户访问
3.同义词:公开同义词    私有同义词
4.公开同义词:所有用户都能被访问(这些用户必须拥有查询的权限)
5.私有同义词:只有当前用户所创建的才能访问。
6.语法
公开同义词:  create public synonym 同义词名称 for 表;
私有同义词:  create  synonym 同义词名称 for 表;

--需求:给scott用户的emp表创建一个公开同义词,以允许其他用户进行访问。
create public synonym sb for emp;

select * from sb;

select * from xb;
--创建私有同义词
create  synonym sb2 for emp;

select * from sb2;

drop synonym sb2;

----------------------------------------------------
#序列:sequence
#1.序列:与伪列rownum类似,区别在于:rownum属于自动创建,而序列属于手动创建,序列会生成一连串有顺序的数字,默认从1开始。
#2.重点:序列结合触发器trigger来实现主键的标识列。
#3.语法
create sequence 序列名称;--简单语法
--一般语法
create sequence 序列名称
start with 值--序列值从哪里开始
increment by 值 --序列值每次以指定的值进行增长
maxvalue 值 --最大值
minvalue 值 --最小值

--创建一个序列
create sequence s_demo1;

--认识序列中2个伪列属性
--1.获取当前序列的值 currval
--2.获取当前序列的下一个值 nextval

select s_demo1.nextval from dual;

select s_demo1.currval from dual;

--复制表的结构
create table tb_demo1
as
select empno,ename,sal from emp where 1=0;

--查询
select* from tb_demo1;
--创建序列
create sequence s_demo2
start with 100
increment by 2
maxvalue 10000
minvalue 100
--通过nextval为tb_demo1表中的empno属性复制
insert into tb_demo1
values(s_demo2.nextval,'康康',1);
insert into tb_demo1
values(s_demo2.nextval,'康康2',2);
insert into tb_demo1
values(s_demo2.nextval,'康康3',3);

select * from tb_demo1;



#视图:一张虚拟表,通过sql语句查询的结构进行保存,
#视图相当于一个容器,作用:方便查看结果。
#关键字:view
#语法
create view v_视图名称
as
select|update...
#注意2点:(1)通过视图保存的结果集必须唯一(2)必须保证字段有名字

create view v_demo1
as
select emp.*,dept.dname from emp inner join dept on emp.deptno = dept.deptno

create view v_demo2
as
select max(sal) as "最高工资" from emp;


select * from v_demo2;

drop view v_demo2;



--索引 index
--数据库中一种特定的排布方式  类似课本的目录
--索引的建立:为了提高查询的效率,我们创建表,如果该表中设立了主键约束,自动会给这个主键的字段创建一个唯一索引。

create index 索引名称
on 表(字段)


create index i_demo1
on emp(ename)


select * from emp where ename like 'S%';

--删除索引
drop index i_demo1;

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-02-28 15:36:32  更:2022-02-28 15:38:56 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 11:35:18-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码