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资源和创作…...

三十八、【人工智能】【机器学习】【监督贝叶斯网络(Bayesian Networks)学习】- 算法模型
系列文章目录 第一章 【机器学习】初识机器学习 第二章 【机器学习】【监督学习】- 逻辑回归算法 (Logistic Regression) 第三章 【机器学习】【监督学习】- 支持向量机 (SVM) 第四章【机器学习】【监督学习】- K-近邻算法 (K-NN) 第五章【机器学习】【监督学习】- 决策树…...

[书生大模型实战营][L0][Task1] Linux 远程连接 InternStudio
[书生大模型实战营][Task1] Linux 远程连接 InterStudio 1. 申请 InterStudio 账号 https://studio.intern-ai.org.cn/console/dashboard 2. ssh 生成公匙与密匙 使用 ssh-gen 生成公匙与密匙 # 1. ssh-gen ssh-gen# 2. 查看生成的文件 ls ~/.ssh# 3. 打开生成的公匙&#…...

【vue教程】六. Vue 的状态管理
目录 往期列表本章涵盖知识点回顾Vuex 的基本概念什么是 Vuex?为什么需要 Vuex? Vuex 的核心概念stategettersmutationsactionsmodules Vuex 的安装和基本使用安装 Vuex创建 store在 Vue 应用中使用 store在组件中访问和修改状态 Vuex 的模块化模块化的好…...

无人机电子调速器详解!!!
电子调速器是无人机动力系统中的关键组件,主要负责将电池提供的直流电转换为交流电,并精确控制电机的转速,从而实现对无人机飞行状态的精确控制。以下是对无人机电子调速器的详细解析: 一、基本功能与原理 功能: 直…...

Clichouse数据导出导入(数据迁移)
背景:因为clickhouse数据持续增加,导致服务器磁盘不够使用,云服务器的系统盘不能扩容,所以只能进行迁移 连接clickhouse查看要迁移那些数据库 rootjcdata:~/buckup/clickhouse# clickhouse-client -udefault --password 123456…...

Java基础——IService.class 中查询数据方法list() 源码剖析及使用
下面详细介绍Mybatis-plus 的默认服务IService.class 中的查询数据的方法及使用。 方法定义及其详细介绍 default List<T> list(Wrapper<T> queryWrapper) default List<T> list(Wrapper<T> queryWrapper) {return this.getBaseMapper().selectList(q…...

MySQL库表的基本操作
目录 1.库的操作1.1 创建数据库1.2字符集和校验规则①查看系统默认字符集以及校验规则②查看数据库支持的字符集③查看数据库支持的字符集校验规则④校验规则对数据库的影响 1.3操纵数据库①查看数据库②显示创建的数据库的语句③修改数据库④数据库删除⑤备份和恢复⑥还原注意…...

基于ResNeSt50神经网络模型的蘑菇分类设计与实现,使用注意力机制,分别对应8种蘑菇进行训练预测
该项目旨在利用卷积神经网络(Convolutional Neural Networks, CNN)实现蘑菇的自动识别。通过对蘑菇图片进行分类,可以有效地将不同类型的蘑菇进行辨别,对于蘑菇的研究、食用安全及自然保护等方面具有重要意义。本文将详细描述项目…...

[论文翻译]使用 BERT 检测安卓恶意软件
Android Malware Detection Using BERT Souani B, Khanfir A, Bartel A, et al. Android malware detection using bert[C]//International Conference on Applied Cryptography and Network Security. Cham: Springer International Publishing, 2022: 575-591. 摘要 在本文…...

LabVIEW滚动轴承故障诊断系统
滚动轴承是多种机械设备中的关键组件,其性能直接影响整个机械系统的稳定性和安全性。由于轴承在运行过程中可能会遇到多种复杂的工作条件和环境因素影响,这就需要一种高效、准确的故障诊断方法来确保机械系统的可靠运行。利用LabVIEW开发的故障诊断系统&…...