当前位置: 首页 > news >正文

Oracle基础教程

体系结构

数据库

一个操作系统仅有一个数据库

实例

拥有一系列后台进程和存储结构,一个数据库可拥有一个或多个实例,一般只有1个实例

数据文件(.dbf/.ora)

数据文件是数据库的物理存储单元,一个表空间由一个或多个数据文件组成,一个数据文件只能属于一个表空间。当某个数据文件被加到某个表空间后,就不能删除这个文件,如果要删除某个数据文件,只能删除其所属的表空间

表空间

实质上是对数据文件的一种逻辑映射,大小由所包含的数据文件所定义,每个数据库至少有一个表空间

用户

用户在表空间下创建

oracle数据库相当于房间,表空间相当于房间内的空间,可以自由分配,数据文件相当于空间内堆放的箱子,表则为箱子内放的物件。

表空间的相关操作

查看表空间

select * from dba_tablespaces;
select tablespace_name from dba_tablespaces;
desc dba_tablespaces;

创建表空间

create tablespace 表空间的名字
datafile 'XXX.dbf' # 指定表空间的数据文件
size XXXm # 指定数据文件的大小
autoextend on next YYm # 开启自动增长,指定每次扩容的大小
maxsize unlimited; # 限制数据文件最大的大小,unlimited时,最大为32G

查看数据文件

select * from dba_data_files;
select file_name from dba_data_files;

更改表空间

扩容1:增加数据文件大小

alter database datafile 'XXX.dbf' resize YYYm;

扩容2:增加数据文件数量

alter tablespace 表空间的名字 add datafile '' size XXXm autoextend on next YYm maxsize unlimited;

删除数据文件

alter tablespace 表空间的名字 drop datafile 'xxx.dbf';

删除表空间

drop tablespace 表空间的名字;

用户相关操作

角色,默认的有connect、resource、dba

select * from dba_role_privs where grantee = '用户名大写';

权限

select * from system_privilege_map; # 查看所有系统权限
select distinct privilege from dba_tab_privs; # 查看所有对象权限select * from dba_sys_privs where grantee = 'CONNECT';
select * from dba_sys_privs where grantee = 'RESOURCE';
select * from dba_sys_privs where grantee = 'DBA';select * from dba_sys_privs where grantee = '角色名称';

查看所有用户

select * from dba_users;
select * from all_users;
select * from user_users; # 查看当前用户信息

查看用户拥有的表

select * from all_tables where owner = '用户名大写'

切换用户

conn 用户名 # scott 用户默认密码为:tiger

修改账户状态

alter user 用户名 account lock|unlock;

创建用户

create user 用户名
identified by 密码
default tablespace 表空间名
alter user 用户名 identified by 密码 # 修改密码

用户系统权限赋予与撤回

grant XXX to 用户名
grant XXX to 用户名 with admin option # 可以把自己的权限赋予其他用户
revoke XXX from 用户名

用户对象权限赋予与撤回

赋予、撤回某项权限

grant XXX on USERNAME.TABLENAME to 用户名;
revoke XXX on USERNAME.TABLENAME from 用户名;

赋予、撤回所有权限

grant all on USERNAME.TABLENAME to 用户名;
revoke all on USERNAME.TABLENAME from 用户名;

删除用户

drop user 用户名
drop user 用户名 cascade # 删除用户及下属所有表

角色相关操作

创建角色

create role 角色名称

赋予与撤回权限

grant XXX to 角色名称
revoke XXX from 角色名称

删除角色

drop role 角色名称 

表相关操作

建表

create table 表名(
字段名 字段类型(长度) 限制,
字段名 字段类型(长度) 限制,
字段名 字段类型(长度) 限制,constraint 限制名称 cons,
constraint 限制名称 cons,
constraint 限制名称 cons
) tablespace 表空间名;

字段类型

  1. number(n, m): 数字类型,n代表数字范围为n(包含m),m指定小数点后精度,默认n=18
  2. char(n): 字符串类型,长度固定,用空格扩充,最大存储2000B
  3. varchar2(n): 字符串类型,长度可变,最大存储4000B
  4. long : 存储4G
  5. date:日期类型的数据,sysdate
  6. clob:存储字符,最大4G
  7. blob:存储图像、声音等二进制数据,最大4G

限制

  1. primary key:主键,可以唯一标识一行数据的字段

  2. not null:要求字段非空

  3. unique:要求字段不重复

  4. default VAL:设定字段的默认值

  5. constraint TBALE_PK primary key(COL, COL);

  6. constraint TBALE_FK foreign key(COL) references TABLE_NAME(col); # 参考其他表的主键

  7. constraint AGE_CK check((age>0) and (age<200));

  8. constraint GENDER_CK check(GENDER in (‘M’, ‘F’, ‘O’));

操作约束
查看
select constraint_name, constraint_type from user_constraints where table_name = '';
constraint_type
  1. C : check
  2. P : primary key
  3. U : unique
  4. R : foreign key
其他
alter table 表名 add  constraint 限制名称 cons # 添加约束
alter table 表名 disable constraint 限制名称 # 关闭约束
alter table 表名 enable constraint 限制名称 # 开启约束
alter table 表名 drop constraint 限制名称 # 删除约束

示例

create table class(cid number(4) primary key,teacher varchar2(20) not null,phone char(4) unique
);create table student(sid number(4) primary key,sname varchar2(20) not null,gender char not null,phone char(4) unique,age number(3),cid number(4),constraint AGE_CK check((age>0) and (age<150)),constraint GENDER_CK check(GENDER in ('M', 'F', 'O')),constraint STU_FK foreign key(cid) references class(cid)
);

插入数据

insert into 表名(字段名, 字段名,....)  values(1,2, .....);
insert into 表名 values(1,2, .....);

修改数据

update 表名 set 字段名=where.....

删除数据

delete from 表名 where....
delete from 表名
truncate table 表名

修改表

rename 旧表名 to 新表名

增加字段

alter table 表名 add(
字段名 字段类型(长度) 限制,
字段名 字段类型(长度) 限制,
字段名 字段类型(长度) 限制
);

修改已有字段类型

alter table 表名 modify(
字段名 字段类型(长度) 限制,
字段名 字段类型(长度) 限制,
字段名 字段类型(长度) 限制
);

修改字段名称

alter table 表名 rename column 旧字段名 to 新字段名;

删除字段

alter table 表名 drop column 字段名;

删除表

drop table 表名;

查询

select * from 表名; # 查询所有数据
select 字段名,字段名, from 表名;

单表查询

条件查询

select * from 表名 where ... 
select * ftom 表名 where 字段=值;
模糊查询:%用于匹配0-n个字符,_用于匹配一个字符
where 字段 like  '%KEY%' # 含有KEY的记录
where 字段 like '%KEY' # 以KEY结尾的
where 字段 like 'KEY%' # 以KEY开始的
where 字段 like '_KEY_' # KEY前后各有一个字符的
范围查询
where 字段 >|>=|<|<=where 字段 between lo and hi # lo和hi范围之间,包含lo和hi
where 字段 in () # 选择
where 字段 not in ()
空值查询
where 字段 is null
where 字段 is not null
查询结果去重
select distinct 字段
查询结果排序
select * from 表名 oder by 字段 [asc]# 默认升序
select * from 表名 oder by 字段 desc# 降序
聚合统计
select sum(字段) from
select max(字段) from
select min(字段) from
select avg(字段) from
select count(*) from
分组统计
select 字段,聚合统计 from 表名 group by 字段 # select后面只可以跟聚合函数或者是分组聚合的条件
select 字段,聚合统计 from 表名 group by 字段 having count(*)  >#
练习
  1. 查询每个dept部门分别有多少员工、平均工资是多少

    select deptno, count(*), avg(sal) from emp group by deptno;
    
  2. 查询每个dept部门、job岗位分别有多少员工、工资最高是多少

    select deptno, job, count(*), max(sal) from emp group by deptno,job;
    
  3. 查询comm为0的有多少员工

    select count(*) from emp where comm=0 or comm is null;
    
  4. 查询comm不为0的员工数量及平均工资

    select count(*), avg(sal) from emp where comm is not null and comm > 0;
    
  5. 查询sal工资在[1200, 3000]内的员工数量

    select count(*) from emp where sal between 1200 and 3000;
    select count(*) from emp where sal>=1200 and sal<=3000;
    
  6. 查询各岗位的最高工资,并按最高工资降序排序

    select job, max(sal) from emp group by job order by -max(sal);
    
  7. 查询最低工资小于1500的岗位

    select job, min(sal) from emp group by job having min(sal)<1500;
    
伪列查询
select rowid, t.* from emp t;select rownum, t.* from emp t; # 在生成查询记录时赋值rownum,从1开始计数
select rownum, t.* from emp t where rownum > 0;
select rownum, t.* from emp t where rownum >= 1;
select rownum, t.* from emp t where rownum <= n; # 前n条记录
select rownum, t.* from emp t where rownum != n; #前n-1条记录

多表连接查询

内连接

select * from emp e, dept d;
select e.ename, d.dname, d.loc from emp e, dept d where e.deptno=d.deptno;

左外连接

select d.dname, e.ename from dept d left join emp e on d.deptno = e.deptno;
select d.dname, e.ename from dept d, emp e where d.deptno=e.deptno(+);select d.dname, count(*) from dept d left join emp e on d.deptno = e.deptno group by d.dname;
select d.dname, count(e.ename) from dept d left join emp e on d.deptno = e.deptno group by d.dname;

右外连接

select e1.ename as directboss, e2.ename as clerk from emp e1 right join emp e2 on e1.empno=e2.mgr;
select e1.ename as directboss, e2.ename as clerk from emp e1, emp e2 where e1.empno(+)=e2.mgr;

子查询

where子句中加入子查询

单行
select ename, sal from emp where sal > (select avg(sal) from emp);
多行
select ename, sal from emp where ename in (select ename from emp where ename like '%S');

from子句中加入子查询

select * from (select deptno, count(*) as cnt from emp group by deptno) where cnt > 3;

select子句中加入子查询

select e.ename, e.sal, (select grade from salgrade s where e.sal between s.losal and s.hisal) salgrade from emp e;select e.ename, e.sal, g.grade from emp e, salgrade g where e.sal between g.losal and g.hisal;

数据导出与导入

cmd下,文件保存在cmd当前目录

整库导出与导入

exp system/orcl file=data.dmp full=y
imp system/orcl file=data.dmp full=y

按用户导出与导入

exp system/orcl file=scott.dmp owner='SCOTT'
imp system/orcl file=scott.dmp fromuser='SCOTT'

按表导出与导入

exp scott/tiger file=emp.dmp tables='EMP'
imp scott/tiger file=emp.dmp tables='EMP'

相关文章:

Oracle基础教程

体系结构 数据库 一个操作系统仅有一个数据库 实例 拥有一系列后台进程和存储结构&#xff0c;一个数据库可拥有一个或多个实例&#xff0c;一般只有1个实例 数据文件&#xff08;.dbf/.ora&#xff09; 数据文件是数据库的物理存储单元&#xff0c;一个表空间由一个或多…...

电脑如何录屏?三款电脑录屏工具分享

电脑如何录屏&#xff1f;作为一个经常需要录制电脑屏幕大职场人&#xff0c;不是为了制作教程、记录会议&#xff0c;就是偶尔想自己做个游戏解说视频。市面上的录屏软件琳琅满目&#xff0c;经过一番尝试和比较&#xff0c;我选出了三款我个人认为表现不错的软件&#xff0c;…...

idea2024建立maven web项目servlet 6.0

(1) 下载好tomcat 10.1.28 打开tomcat.apache.org官网下载 &#xff08;2&#xff09;配置好maven &#xff08;3&#xff09;idea 2024打开&#xff0c;建立项目 选择maven java项目 &#xff08;4&#xff09;在项目src/main/下 建立webapp/WEB-INF目录&#xff0c;在…...

游戏开放式新手引导框架设计

强制性引导&#xff1a;只能点某个按钮 优&#xff1a;程序简单 缺&#xff1a; 玩家体验差 开放式引导&#xff1a;不强制点 优&#xff1a;玩家体验好 缺&#xff1a; 程序复杂 需求分析&#xff1a; 1.开放式引导&#xff0c;引导是到达某个条件后进行一系列行为&#xff08…...

【Hot100】LeetCode—189. 轮转数组

目录 1- 思路自定义 reverse 翻转函数 2- 实现⭐189. 轮转数组——题解思路 3- ACM 实现 原题链接&#xff1a;189. 轮转数组 1- 思路 自定义 reverse 翻转函数 2- 实现 ⭐189. 轮转数组——题解思路 class Solution {public void rotate(int[] nums, int k) {k % nums.lengt…...

javaweb学习之HTML(一)

推荐学习使用网站 w3school 在线教程 认识HTML HTML&#xff08;HyperText Markup Language&#xff09;是超文本标记语言&#xff0c;它是一个用于创建网页和网页应用程序的标准标记语言。HTML文档由一系列的元素&#xff08;elements&#xff09;组成&#xff0c;这些元素通…...

项目实战:Qt+Opencv相机标定工具v1.3.0(支持打开摄像头、视频文件和网络地址,支持标定过程查看、删除和动态评价误差率,支持追加标定等等)

若该文为原创文章&#xff0c;转载请注明出处 本文章博客地址&#xff1a;https://hpzwl.blog.csdn.net/article/details/141334834 长沙红胖子Qt&#xff08;长沙创微智科&#xff09;博文大全&#xff1a;开发技术集合&#xff08;包含Qt实用技术、树莓派、三维、OpenCV、Op…...

【数据结构】汇总八、排序算法

排序Sort 【注意】本章是 排序 的知识点汇总&#xff0c;全文1万多字&#xff0c;含有大量代码和图片&#xff0c;建议点赞收藏&#xff08;doge.png&#xff09;&#xff01;&#xff01; 【注意】在这一章&#xff0c;记录就是数据的意思。 排序可视化网站&#xff1a; D…...

Java-分割list并执行多线程任务的工具类

要创建一个用于分割列表并执行多线程任务的工具类,你可以使用 Java 的 ExecutorService 和 ThreadPoolExecutor 来实现。下面是一个详细的示例,展示了如何创建这样一个工具类。 步骤 1: 创建线程池 首先,创建一个线程池来执行任务。 步骤 2: 分割列表 接着,定义一个方…...

Springboot-从服务器获取一个输入流,转成视频文件存到oss

要在Spring Boot应用中从服务器获取一个输入流,然后将该流转换为视频文件并存储到阿里云 OSS中,你可以遵循以下步骤: 设置阿里云OSS客户端:首先,你需要配置阿里云OSS客户端,以便能够上传文件到OSS。 获取输入流:使用HTTP客户端(如RestTemplate或WebClient)从服务器…...

[Meachines] [Easy] Bastion SMB未授权访问+VHD虚拟硬盘挂载+注册表获取NTLM哈希+mRemoteNG远程管理工具权限提升

信息收集 IP AddressOpening Ports10.10.10.134TCP:22, 135, 139, 445, 5985, 47001, 49664, 49665, 49666, 49667, 49668, 49669, 49670 $ nmap -p- 10.10.10.134 --min-rate 1000 -sC -sV PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH fo…...

STM32标准库学习笔记-9.DMA 直接存储器存取

参考教程&#xff1a;【STM32入门教程-2023版 细致讲解 中文字幕】 DMA&#xff08;Direct Memory Access&#xff09; DMA&#xff08;Direct Memory Access&#xff09;直接存储器存取DMA可以提供外设和存储器或者存储器和存储器之间的高速数据传输&#xff0c;无须CPU干预…...

ubuntu VCS+verdi安装遇到的一些问题

主体流程&#xff1a;https://blog.51cto.com/u_15346322/4995147 我的是Ubuntu22.4 安装目录问题 执行 ./installer -gui 只能安装到home 或者 sudo ./setup.sh -install_as_root 能安装到/usr/ 目录 运行 vcs 出现 bin/sh: Illegal option -h sudo rm -f /bin/sh sudo…...

使用Poi-tl对word模板生成动态报告

一、pom依赖问题&#xff1a; <dependency> <groupId>com.deepoove</groupId> <artifactId>poi-tl</artifactId> <version>1.12.2</version> </dependency> 使用 poi-tl 的 1.12.2版本&#xff0c;如果使用了poi依赖&#x…...

day45-dynamic programming-part12-8.16

tasks for today: 1. 115.不同的子序列 2. 583.两个字符串选的删除操作 3. 72.编辑距离 4. 总结编辑两个序列关系的问题 ------------------------------------------------------------------- 1. 115.不同的子序列 In this practice, it is necessary to compare with t…...

C# String的方法

目录 #region 知识点九 字符串切割 #region 知识点一 字符串指定位置获取 #region 知识点二 字符串拼接 #region 知识点三 正向查找字符位置 #region 知识点四 反向查找指定字符串位置 #region 知识点五 移除指定位置后的字符 #region 知识点六 替换指定字符串 #region 知识点七…...

Oracle RAC vs Clusterware vs ASM

Oracle RAC vs Clusterware vs ASM Oracle RACCache FusionRAC后台进程自动负载管理DBA管理工具Oracle ClusterwareCRS组件HAS组件管理工具Oracle ASMASM实例ASM磁盘组镜像和故障组ASM磁盘ASM文件Oracle RAC RAC即Real Application Clusters,是一种Oracle高可用部署架构。Orac…...

“华为杯”第十五届中国研究生数学建模竞赛-F题:机场新增卫星厅对中转旅客影响的研究

目录 摘 要: 一、 问题重述 1.1 研究背景 1.2 已知信息 1.3 需要解决的问题 二、 模型假设 三、 符号说明 四、 问题一模型的建立与求解 4.1 问题描述与分析 4.2 模型的求解 4.3 求解结果与分析 五、 问题二模型的建立与求解 5.1 问题描述与分析 5.2 模型的求解 5.3 求解结果与…...

正点原子linux开发板 qt程序交叉编译执行

1.开发板光盘 A-基础资料->5、开发工具->1、交叉编译器->fsl-imx-x11-glibc-x86_64-meta-toolchain-qt5-cortexa7hf-neon-toolchain-4.1.15-2.1.0.sh 拷贝到 Ubuntu 虚拟机 用文件传输系统或者共享文件夹传输到linux虚拟机 用ls -l查看权限&#xff0c;如果是白色的使…...

聚星文社和虹猫哪个好

聚星文社和虹猫是两个不同的公司&#xff0c;各有各的特点。下面是它们各自的优点&#xff1a; 聚星文社&#xff1a;Docshttps://docs.qq.com/doc/DRU1vcUZlanBKR2xy 聚星文社是一家传媒公司&#xff0c;专注于出版漫画、动画、小说等内容&#xff0c;拥有丰富的IP资源和创作…...

利用ngx_stream_return_module构建简易 TCP/UDP 响应网关

一、模块概述 ngx_stream_return_module 提供了一个极简的指令&#xff1a; return <value>;在收到客户端连接后&#xff0c;立即将 <value> 写回并关闭连接。<value> 支持内嵌文本和内置变量&#xff08;如 $time_iso8601、$remote_addr 等&#xff09;&a…...

Xshell远程连接Kali(默认 | 私钥)Note版

前言:xshell远程连接&#xff0c;私钥连接和常规默认连接 任务一 开启ssh服务 service ssh status //查看ssh服务状态 service ssh start //开启ssh服务 update-rc.d ssh enable //开启自启动ssh服务 任务二 修改配置文件 vi /etc/ssh/ssh_config //第一…...

k8s从入门到放弃之Ingress七层负载

k8s从入门到放弃之Ingress七层负载 在Kubernetes&#xff08;简称K8s&#xff09;中&#xff0c;Ingress是一个API对象&#xff0c;它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress&#xff0c;你可…...

8k长序列建模,蛋白质语言模型Prot42仅利用目标蛋白序列即可生成高亲和力结合剂

蛋白质结合剂&#xff08;如抗体、抑制肽&#xff09;在疾病诊断、成像分析及靶向药物递送等关键场景中发挥着不可替代的作用。传统上&#xff0c;高特异性蛋白质结合剂的开发高度依赖噬菌体展示、定向进化等实验技术&#xff0c;但这类方法普遍面临资源消耗巨大、研发周期冗长…...

SpringBoot+uniapp 的 Champion 俱乐部微信小程序设计与实现,论文初版实现

摘要 本论文旨在设计并实现基于 SpringBoot 和 uniapp 的 Champion 俱乐部微信小程序&#xff0c;以满足俱乐部线上活动推广、会员管理、社交互动等需求。通过 SpringBoot 搭建后端服务&#xff0c;提供稳定高效的数据处理与业务逻辑支持&#xff1b;利用 uniapp 实现跨平台前…...

Cloudflare 从 Nginx 到 Pingora:性能、效率与安全的全面升级

在互联网的快速发展中&#xff0c;高性能、高效率和高安全性的网络服务成为了各大互联网基础设施提供商的核心追求。Cloudflare 作为全球领先的互联网安全和基础设施公司&#xff0c;近期做出了一个重大技术决策&#xff1a;弃用长期使用的 Nginx&#xff0c;转而采用其内部开发…...

【配置 YOLOX 用于按目录分类的图片数据集】

现在的图标点选越来越多&#xff0c;如何一步解决&#xff0c;采用 YOLOX 目标检测模式则可以轻松解决 要在 YOLOX 中使用按目录分类的图片数据集&#xff08;每个目录代表一个类别&#xff0c;目录下是该类别的所有图片&#xff09;&#xff0c;你需要进行以下配置步骤&#x…...

LLM基础1_语言模型如何处理文本

基于GitHub项目&#xff1a;https://github.com/datawhalechina/llms-from-scratch-cn 工具介绍 tiktoken&#xff1a;OpenAI开发的专业"分词器" torch&#xff1a;Facebook开发的强力计算引擎&#xff0c;相当于超级计算器 理解词嵌入&#xff1a;给词语画"…...

深度学习习题2

1.如果增加神经网络的宽度&#xff0c;精确度会增加到一个特定阈值后&#xff0c;便开始降低。造成这一现象的可能原因是什么&#xff1f; A、即使增加卷积核的数量&#xff0c;只有少部分的核会被用作预测 B、当卷积核数量增加时&#xff0c;神经网络的预测能力会降低 C、当卷…...

return this;返回的是谁

一个审批系统的示例来演示责任链模式的实现。假设公司需要处理不同金额的采购申请&#xff0c;不同级别的经理有不同的审批权限&#xff1a; // 抽象处理者&#xff1a;审批者 abstract class Approver {protected Approver successor; // 下一个处理者// 设置下一个处理者pub…...