Oracle--基础

Oracle数据库的体系结构

  1. 数据库: database

Oracle数据库是数据的物理存储,和mysql不一样的是,只要我们愿意,我们就可以在mysql下创建任意的数据库,每个新项目的启动,创建一个数据库,然后通过showdatabases可以查看到全部数据库,但是Oracle的数据库是一个操作系统只有一个库,说白了,就是把Oracle看成一个大的数据库

  1. 实例:

一个Oracle实例,有一系列的后台进程(Background Processes) 和内存结构(Momory Structures),一个数据库,可以有多个实例

  1. 数据文件: dbf

Oracle中的数据是存放在表空间里面的 数据文件中的,一个数据文件,只属于一个表空间,一旦数据文件被加入到表空间,那么,这个数据文件就不能被删除了,除非我们删除表空间

  1. 表空间

表空间其实是一种逻辑上的映射, 我们知道,Oracle的数据存放在 数据文件(dbf/ora)中,数据文件在Oracle中是物理层面上的结构,而表空间,就是基于物理层面的数据文件的逻辑上抽象出来的映射, 一个Oracle数据库,至少有一个表空间(system表空间),每个表空间,由同一个磁盘上的一个或多个数据文件组成

每个新项目的启动我们都会创建新的表空间

  1. 用户:

用户是在实例下创建的,1. 不同实例中可以创建相同名字的用户, 2. 表的数据是由用户放入到表空间里面的,表空间在把数据随机的放入到一个或者多个不同的数据文件中

oracle中的数据由 用户+表空间 进行管理和存放! 表是给用户去查的,而不是给表空间查,因为不同的用户可以在同一个表空间创建同名的表,所以Oralce区分用户

6: SCOTT 用户 和 HR用户

这两个用户是Oracle默认的初始用户,让初学者更好的进行学习

图片


举个例子,顺一下整个Orcle的使用流程

1. 公司新项目启动

2. 运维工程师(DBA)在Oracle数据库给新项目开辟一个新的表空间

  • 运维工程师登录数据库的身份是 DBA(系统管理员), DBA是超人,裤衩穿在外面,拥有对Oracle的最高权限

创建表空间的sql

create tablespace 表空间名
logging  
datafile 'D:\oracle\oradata\Oracle9i\user_data.dbf' -- dbf文件的路径
size 50m        -- 单个dbf文件初始化大小
autoextend on   -- 自动增长
next 50m        -- 下次增长的大小
maxsize 20480m  -- 最大内存

后续插入到数据库里面的数据存放在磁盘上的 XXX.DBF文件中,而表空间就是对这些dbf文件的抽象

安装完数据库,会自动创建1. System系统表空间 2.TEMP 临时表空间 3. UNDP 重做日志表空间 4.USERS 用户表空间(创建普通用户时默认的表空间)

DBA查看表空间是否创建成功

Select file_name,tablespace_name from dba_data_files order by  file_name;

dba_data_files 这种dba_XXX 开头的,只有DBA才有权限查看,普通用户执行的话,会报错说,表或视图不存在

DBA查看每个用户的默认表空间

select user_id , username, default_tablespace from dba_users;

DBA修改默认的用户表空间(我们知道,新创建用户属于users,而下面的命令就可以把users替换成其他存在的表空间)

Alter database default tablespace 其他表空间;    

DBA修改表空间的名称

Alter tablespace 表空间的当前名称 rename to  表空间的新名称

DBA 删除表空间

drop tablespace user1 ;  -- 不会删除本地的 dbf文件
drop tablespace user1 including contents and datafiles;    -- 删除本地的dbf 数据文件

一般不让普通用户创建表空间,若他非要创建,需要问DBA要 授权

3.DBA给开发工程师创建账号

创建用户的sql

create user 用户名
identified by 密码
default tablespace  表空间;

注意: 新创建的用户没有任何权限,他甚至都不能登录Oracle数据库,(新创建的用户登录Oracle会报错说缺少创建session的权利)

4. DBA给新创建的用户授权

DBA给普通用户授权sql

grant 角色/权限 to 用户名;

DBA自定义角色sql

sql create role 自定义角色名创建会话

然后使用 grant给我们的角色授权,grant给用户

DBA删除角色sql

试了一下,DBA删除系统自带的角色,果然还是裤衩穿在外面,二话不说,删除成功了

drop user 用户名 cascade;  -- 删除用户级联的关系也会被删除掉

权限的传递(包括普通用户,只要求当前的东西是属于他的就行)

关键字: with grant option;

例: scott 把属于他的emp表的 增删改查权限给 另一个用户B ,同时允许B把权限传递给别人

grant all on emp to B with grant option;

注意点:

  • with grant option 可选, 如果不写的话,B用户不能把权限传递给别人
  • B用户得到的权限 针对的是表中的数据,而不是这张表, 表的主人仍然是scott
  • B试着删除emp表,结果尝试删除不属于自己的表直接掉线了
  • B对emp的操作都要添加前缀 scott.emp

收回部分权限/全部权限

Revoke select[insert,delete,update] on 表名 from 用户名Revoke   all  on 表名 from 用户名

当前用户(包括普通用户查看自己的权限)

select * from user_sys_privs;
  • 问一句, 什么是权限?什么是角色?

刚才说了,在Oracle中,新创建的用户默认一点权限都没有,没有权限就不能对数据库进行操作, 有了用户但是不能对oracle进行操作那要这个用户 干什么? 所以就得根据需求授予用户权利

比如说,如果 create session 权限,可以让用户登录Oracle, create table权限可以让用户在自己所属的表空间创建表

多个权限的集合 === 角色

在Oracle主要有三种角色, 分别是

1. DBA系统管理员

这个角色拥有至高无上的权限,传说中删库跑路的主,拥有的角色就是DBA

2. Resource 专属开发者的权限

开发者可以做下面的事,开发我们的新项目

  • create cluster 建立聚簇
  • create procedure 建立过程
    • 存储过程是一组已经编译好了的plsql语句,辅助提高对数据库的读写效率
  • create sequence 建立序列
    • oracle和mysql不一样,是没有auto_increament自增长的,而序列可以间接实现自增长
  • create table 建表
  • create trigger 创建触发器
    • 我们可以把它理解成是监听器,监听用户对具体某张数据表的具体操作(inset update delete)然后再操作前后做出相应的 逻辑反应
  • create type 创建类型
    • 变量名 类型

3. Connect 最终用户的权限

  • alter session 修改
  • create cluster 建立聚簇
  • create Database Link 创建数据库连接
  • create session -- 创建会话(登录的前提)
  • create synonym 创建同义词
  • create view 创建视图

5. 开发人员把密码忘了DBA怎么办?

修改某用户的 用户密码

alter user 用户名 identified by 新密码;

6. 开发人员离职DBA怎么办?

删除用户

 DROP USER 用户名 CASCADE;

补充概念

什么是事务

事务可以理解成是一组操作的集合,要么都成功,要么都失败

事务的四大特性

  • Atomicity 原子性
  • Consistency 一致性
  • Isolation 隔离性
  • Durability 持久性

事务的提交 , 回滚点, 回滚

  • commit
  • savepoint
  • rollback

什么是视图?

视图可以理解成一扇窗户,是对我们查询出来的数据的封装,说的这么高大尚,但是本质就是从好几张不同的表中抽取字段,组成一张新的表(从而屏蔽掉我们不想看到的字段)

特点: 视图中的所有数据都来自于原表中的数据,换句话说,如果视图中的数据被更改,原表中的数据也会被修改 但是如果我们在创建视图时添加 with read only 就是只读的视图

创建视图 用的关键字是 as (同义词是for 别混了)

语法:

create or replace view 视图名 as 查询语句 [whth read only]

再说一下,视图本质还是一张表,只要不设置它是只读的,那么,DML语句同样适用于视图

什么是别名?

关键字是 synonym(别名)

sql

create or replace 别名 for 视图/表

很多情况下我们是给视图取别名,因为一般视图的名称都是XXX_view,遵循命名规范,一看他就是视图,为了让他看起来像个表,于是我们给视图取个表的名子

什么是序列?

在mysql中,我们想让某个字段自增长的话, 可以使用 auto_increatement 关键字

然而oracle没有auto_increatement!!! 但是 oracle 中 使用序列完成对相似操作

语法:

  create sequence 序列名start with 从几开始increment by 每次增长几maxvalue 最大值| nomaxvalueminvalue 最小值 | nominvaluecycle | nocyclecache 缓存的数量 | nocache

注意点:

  • 下面的语句执行报错了,原因是 cache值必须小于cycle , 也就是指定了 cycle, 就必须再写出cache的值,不然报错
 create sequence startText1start with 1increment by 2maxvalue 30cycle;

正确创建:

create sequence startText1start with 1increment by 2maxvalue 30cyclecache 10;

从序列中获取值

关键字: currval : 当前值
关键字: nextval : 下一个值

  • 注意: ----- currval 在 nextval之后才能用
select startText1.nextval  from dual;  -- 先执行  
select startText1.currval  from dual;  -- 再执行,不然报错/或者一直都是当前值

create sequence seq_text2; -- 默认没有最大值,不循环,不缓存

什么是索引?

  • 相当于一本书的目录,可以提高我们的查询效率
    -- 语法
      create index 索引名称 on 表名(列)

注意:
主键约束自带主键索引
唯一约束自带唯一索引

sql 优化

-- 考虑 Cost CPU调用次数
-- 考虑 Cardinality 影响行数

在百万级别的数据里面检索, 建立索引 create index 无论是在Cost CPU的调用次数,还是Cardinality 影响行数 都会产生上百数量级级别的差距

-- 索引 原理;
-- btree balance Tree 平衡二叉树
-- 每个子节点都会记录 物理地址 --- rowid
-- 优点: 把某列当作查询条件的时候, 可以提高查询效率,
-- 缺点: 在修改的时候,会变慢(DBA 每隔一段时间就会重构索引)

转载于:https://www.cnblogs.com/ZhuChangwu/p/11150500.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/550252.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

html动态跟随鼠标效果,使用JS实现气泡跟随鼠标移动的动画效果

气泡跟随鼠标移动,并在每次点击时产生不同的变化效果如下简单的气泡效果body{background-color:#000000;margin:0px;overflow:hidden}var canvas document.createElement(canvas),context canvas.getContext(2d),windowW window.screen.width ,windowH window.s…

html的数据类型有哪些,数据库数据类型有哪些

MySQL中定义数据字段的类型对你数据库的优化是非常重要的。MySQL支持多种类型,大致可以分为三类:数值、日期/时间和字符串(字符)类型。推荐教程:MySQL入门视频教程一、数值类型MySQL支持所有标准SQL数值数据类型。这些类型包括严格数值数据类…

2021 河南 高考成绩查询,2021河南高考成绩查询入口

随着高考结束,高考阅卷工作陆续启动,已有多个省份公布了查分时间,那我们知道河南高考时间是什么时候嘛?下面是小编整理2021河南高考成绩查询入口_2021河南高考查分时间公布,仅供参考,希望能够帮助到大家。2021河南高考…

人脸检测算法_腾讯已开源高精度人脸检测算法DSFD

腾讯提出一种高精度双分支人脸检测器DSFD并开源。该算法曾在全球两大权威人脸检测数据集WIDERFACE和FDDB上均取得了第一。任务介绍人脸检测算法是在图像上检测出人脸的位置(通常以矩形框形式输出),是人脸配准、人脸属性识别、人脸核身、人脸检索等技术的基础。随着人…

java之struts2之数据检验

1.使用struts2时,有时候需要对数据进行相关的验证。如果对数据的要求比较严格,或对安全性要求比较高时,前端 js 验证还不够, 需要在后端再进行一次验证,保证数据的安全性。 2.struts2提供了两种机制来进行后端的数据验…

sdk开发包如何使用_SDK如何使能行业?华为昇腾要用软件充分释放硬件性能

谈及落地,软件永远是激发硬件性能的核心。自AI出现,围绕传统产业“智能化转型”的探讨就一直没有停下。而随着“新基建”口号的喊出,工业制造等场景的智能化进程更是被加上了助推器。以智能制造为例,依据Markets报告所预计的&…

vue入门:(组件)

模板:(template)模板声明了数据和最终展现给用户的DOM之间的映射关系。初始数据:(data)一个组件的初始数据状态。对于可复用的组件来说,通常是私有的状态。接收外部参数:&#xff08…

excel删除行 uipath_学会这8个Excel神技巧,轻松告别零基础!

无论你是个学生还是职场中人,谁不知道Excel呢?尤其是办公一族,总是不可避免会使用到Excel。下面小电就向大家介绍8个神技巧,让你的工作量大大减少!那什么技巧有如此威力呢?想必有些大家都用过的&#xff0c…

qt 5编程入门(第2版)_《C++并发编程实战第2版》第六章:设计基于锁的并发数据结构(1/3)...

本章主要内容设计并发数据结构的含义设计指南并发数据结构的示例实现在上一章中我们了解了底层原子操作和内存模型。本章我们先把底层的细节放一放(尽管在第7章我们将需要它们),探讨一下数据结构。为编程问题选择数据结构可能是整个解决方案的关键部分,并…

转学到斯坦福大学计算机专业,斯坦福大学转学申请条件有哪些?

斯坦福大学转学申请条件有哪些?据托普仕小编了解,斯坦福大学(Stanford University,简称Stanford)位于美国加州旧金山湾区南部的帕罗奥多市(PaloAlto)境内,临近世界著名高科技园区硅谷,是世界著名私立研究型大学。斯坦福…

深入理解Asp.net MVC路由

深入理解Asp.net MVC路由 吴剑 2012-10-22 原创文章,转载必需注明出处:http://www.cnblogs.com/wu-jian/ 前言 从.Net Framework 1.0时代开始写WebForm,直到最近断断续续看到Razor的语法风格,然后搜了Asp.net MVC的一些介绍&#…

高中计算机学业水平测试知识点总结,高中化学学业水平测试知识点总结

高中化学学业水平测试知识点总结大家有总结吗?下面小编整理了高中化学学业水平测试知识点总结,欢迎大家参考借鉴!高中化学学业水平测试知识点总结第一章从实验学化学 第一节化学实验基本方法一.化学实验安全1. 遵守实验室规则。2. 了解安全措…

chrome html 读写文件路径,Chrome浏览器支持直接读写本地文件了

本文首发于公众号:符合预期的CoyPan写在前面最新版的Chrome(Chrome 83, 须要开启权限)支持直接读写本地文件了。javascript开启方法:Chrome浏览器升级到83版本以上;访问chrome://flags/,开启 Native File System API 选项当前如何…

最长单调递增子序列_最长递增子序列(动态规划 + 二分搜索)

题目给定数组arr,返回arr的最长递增子序列举例:arr [2,1,5,3,6,4,8,9,7],返回的最长递增子序列为[1,3,4,8,9]要求:如果arr的长度为N,请实现时间复杂度为O(nlogn)的方法。分析这一题也是经典的动态规划,那么…

二叉排序树(BinarySortTree)

相关知识: 二叉树是每个节点最多有两个子树的树结构。通常子树被称作“左子树”(left subtree)和“右子树”(right subtree)。 二叉树中的左右子树不可随意交换。 根节点:一棵树最上面的节点称为根节点。 父…

惠普台式计算机系列,惠普发布设计笔记本、设计台式电脑等Z系列产品

惠普发布新一代惠普Z系列产品,包含设计笔记本、设计台式电脑、显示器和VR等产品。惠普Z系列设计笔记本HP ZBook 14u G6配有4K显示屏,支持100% Adobe RGB色域显示,拥有600尼特亮度,满足创意族群对色彩的精确要求。HP ZBook 15u G6图…

ORM多表操作之多对多查询

创建多对多的关系 authormodels.ManyToManyFleld(" ")  (推荐) 书籍对象它的所有关联作者 book_obj.authors.all() 掌握:通过filter values(双下划线)进行多对多的关联查询(形式一对多) django是将python语句翻译成sql语句执行 聚…

计算机的iscsi配置,我们将了解如何设置自己的支持iscsi配置的存储节点

iSCSI代表Internet小型计算机系统接口。它用于使用块级数据传输通过TCP / IP访问网络上的存储。NFS与iSCSI之间通常存在比较。关键区别在于NFS是文件级实现,而iSCSI是块级实现。这适用于TCP / IP层,并允许通过局域网(LAN)发送SCSI命令。在诸如iSCSI和光纤…

计算机基础知识复习资料,计算机基础知识复习资料

.Word 资料Ch1 计算机基础知识1.1 现代信息技术1.1.1、特征:●以数字技术和电子技术为基础;●以计算机及其软件为核心;●采用电子技术(包括激光技术)进行信息的收集、传递、加工、存储、显示与控制。1.1.2、数字技术一、二进位数字——比特(b…

linux上安装Docker

Docker的三大核心概念:镜像、容器、仓库 镜像:类似虚拟机的镜像、用俗话说就是安装文件 容器:类似一个轻量级的沙箱,容器是从镜像创建应用运行实例,可以将其启动、开始、停止、删除、而这些容器都是相互隔离、互不可见…