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 表空间名;
字段类型
- number(n, m): 数字类型,n代表数字范围为n(包含m),m指定小数点后精度,默认n=18
- char(n): 字符串类型,长度固定,用空格扩充,最大存储2000B
- varchar2(n): 字符串类型,长度可变,最大存储4000B
- long : 存储4G
- date:日期类型的数据,sysdate
- clob:存储字符,最大4G
- blob:存储图像、声音等二进制数据,最大4G
限制
-
primary key:主键,可以唯一标识一行数据的字段
-
not null:要求字段非空
-
unique:要求字段不重复
-
default VAL:设定字段的默认值
-
constraint TBALE_PK primary key(COL, COL);
-
constraint TBALE_FK foreign key(COL) references TABLE_NAME(col); # 参考其他表的主键
-
constraint AGE_CK check((age>0) and (age<200));
-
constraint GENDER_CK check(GENDER in (‘M’, ‘F’, ‘O’));
操作约束
查看
select constraint_name, constraint_type from user_constraints where table_name = '';
constraint_type
- C : check
- P : primary key
- U : unique
- 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(*) > 值 #
练习
-
查询每个dept部门分别有多少员工、平均工资是多少
select deptno, count(*), avg(sal) from emp group by deptno; -
查询每个dept部门、job岗位分别有多少员工、工资最高是多少
select deptno, job, count(*), max(sal) from emp group by deptno,job; -
查询comm为0的有多少员工
select count(*) from emp where comm=0 or comm is null; -
查询comm不为0的员工数量及平均工资
select count(*), avg(sal) from emp where comm is not null and comm > 0; -
查询sal工资在[1200, 3000]内的员工数量
select count(*) from emp where sal between 1200 and 3000; select count(*) from emp where sal>=1200 and sal<=3000; -
查询各岗位的最高工资,并按最高工资降序排序
select job, max(sal) from emp group by job order by -max(sal); -
查询最低工资小于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基础教程
体系结构 数据库 一个操作系统仅有一个数据库 实例 拥有一系列后台进程和存储结构,一个数据库可拥有一个或多个实例,一般只有1个实例 数据文件(.dbf/.ora) 数据文件是数据库的物理存储单元,一个表空间由一个或多…...
电脑如何录屏?三款电脑录屏工具分享
电脑如何录屏?作为一个经常需要录制电脑屏幕大职场人,不是为了制作教程、记录会议,就是偶尔想自己做个游戏解说视频。市面上的录屏软件琳琅满目,经过一番尝试和比较,我选出了三款我个人认为表现不错的软件,…...
idea2024建立maven web项目servlet 6.0
(1) 下载好tomcat 10.1.28 打开tomcat.apache.org官网下载 (2)配置好maven (3)idea 2024打开,建立项目 选择maven java项目 (4)在项目src/main/下 建立webapp/WEB-INF目录,在…...
游戏开放式新手引导框架设计
强制性引导:只能点某个按钮 优:程序简单 缺: 玩家体验差 开放式引导:不强制点 优:玩家体验好 缺: 程序复杂 需求分析: 1.开放式引导,引导是到达某个条件后进行一系列行为(…...
【Hot100】LeetCode—189. 轮转数组
目录 1- 思路自定义 reverse 翻转函数 2- 实现⭐189. 轮转数组——题解思路 3- ACM 实现 原题链接:189. 轮转数组 1- 思路 自定义 reverse 翻转函数 2- 实现 ⭐189. 轮转数组——题解思路 class Solution {public void rotate(int[] nums, int k) {k % nums.lengt…...
javaweb学习之HTML(一)
推荐学习使用网站 w3school 在线教程 认识HTML HTML(HyperText Markup Language)是超文本标记语言,它是一个用于创建网页和网页应用程序的标准标记语言。HTML文档由一系列的元素(elements)组成,这些元素通…...
项目实战:Qt+Opencv相机标定工具v1.3.0(支持打开摄像头、视频文件和网络地址,支持标定过程查看、删除和动态评价误差率,支持追加标定等等)
若该文为原创文章,转载请注明出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/141334834 长沙红胖子Qt(长沙创微智科)博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、Op…...
【数据结构】汇总八、排序算法
排序Sort 【注意】本章是 排序 的知识点汇总,全文1万多字,含有大量代码和图片,建议点赞收藏(doge.png)!! 【注意】在这一章,记录就是数据的意思。 排序可视化网站: 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 直接存储器存取
参考教程:【STM32入门教程-2023版 细致讲解 中文字幕】 DMA(Direct Memory Access) DMA(Direct Memory Access)直接存储器存取DMA可以提供外设和存储器或者存储器和存储器之间的高速数据传输,无须CPU干预…...
ubuntu VCS+verdi安装遇到的一些问题
主体流程: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依赖问题: <dependency> <groupId>com.deepoove</groupId> <artifactId>poi-tl</artifactId> <version>1.12.2</version> </dependency> 使用 poi-tl 的 1.12.2版本,如果使用了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查看权限,如果是白色的使…...
聚星文社和虹猫哪个好
聚星文社和虹猫是两个不同的公司,各有各的特点。下面是它们各自的优点: 聚星文社:Docshttps://docs.qq.com/doc/DRU1vcUZlanBKR2xy 聚星文社是一家传媒公司,专注于出版漫画、动画、小说等内容,拥有丰富的IP资源和创作…...
DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI
前一阵子在百度 AI 开发者大会上,看到基于小智 AI DIY 玩具的演示,感觉有点意思,想着自己也来试试。 如果只是想烧录现成的固件,乐鑫官方除了提供了 Windows 版本的 Flash 下载工具 之外,还提供了基于网页版的 ESP LA…...
C++中string流知识详解和示例
一、概览与类体系 C 提供三种基于内存字符串的流,定义在 <sstream> 中: std::istringstream:输入流,从已有字符串中读取并解析。std::ostringstream:输出流,向内部缓冲区写入内容,最终取…...
GitHub 趋势日报 (2025年06月08日)
📊 由 TrendForge 系统生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日获星趋势图 今日获星趋势图 884 cognee 566 dify 414 HumanSystemOptimization 414 omni-tools 321 note-gen …...
九天毕昇深度学习平台 | 如何安装库?
pip install 库名 -i https://pypi.tuna.tsinghua.edu.cn/simple --user 举个例子: 报错 ModuleNotFoundError: No module named torch 那么我需要安装 torch pip install torch -i https://pypi.tuna.tsinghua.edu.cn/simple --user pip install 库名&#x…...
AirSim/Cosys-AirSim 游戏开发(四)外部固定位置监控相机
这个博客介绍了如何通过 settings.json 文件添加一个无人机外的 固定位置监控相机,因为在使用过程中发现 Airsim 对外部监控相机的描述模糊,而 Cosys-Airsim 在官方文档中没有提供外部监控相机设置,最后在源码示例中找到了,所以感…...
HubSpot推出与ChatGPT的深度集成引发兴奋与担忧
上周三,HubSpot宣布已构建与ChatGPT的深度集成,这一消息在HubSpot用户和营销技术观察者中引发了极大的兴奋,但同时也存在一些关于数据安全的担忧。 许多网络声音声称,这对SaaS应用程序和人工智能而言是一场范式转变。 但向任何技…...
Linux系统部署KES
1、安装准备 1.版本说明V008R006C009B0014 V008:是version产品的大版本。 R006:是release产品特性版本。 C009:是通用版 B0014:是build开发过程中的构建版本2.硬件要求 #安全版和企业版 内存:1GB 以上 硬盘…...
适应性Java用于现代 API:REST、GraphQL 和事件驱动
在快速发展的软件开发领域,REST、GraphQL 和事件驱动架构等新的 API 标准对于构建可扩展、高效的系统至关重要。Java 在现代 API 方面以其在企业应用中的稳定性而闻名,不断适应这些现代范式的需求。随着不断发展的生态系统,Java 在现代 API 方…...
CVPR2025重磅突破:AnomalyAny框架实现单样本生成逼真异常数据,破解视觉检测瓶颈!
本文介绍了一种名为AnomalyAny的创新框架,该方法利用Stable Diffusion的强大生成能力,仅需单个正常样本和文本描述,即可生成逼真且多样化的异常样本,有效解决了视觉异常检测中异常样本稀缺的难题,为工业质检、医疗影像…...
Xcode 16 集成 cocoapods 报错
基于 Xcode 16 新建工程项目,集成 cocoapods 执行 pod init 报错 ### Error RuntimeError - PBXGroup attempted to initialize an object with unknown ISA PBXFileSystemSynchronizedRootGroup from attributes: {"isa">"PBXFileSystemSynchro…...
