Oracle总结第一篇【基本SQL操作】

前言

在之前已经大概了解过Mysql数据库和学过相关的Oracle知识点,但是太久没用过Oracle了,就基本忘了…印象中就只有基本的SQL语句和相关一些概念….写下本博文的原因就是记载着Oracle一些以前没注意到的知识点…以后或许会有用…

实例与数据库概念

Oracle数据库服务器由两部分组成:

  • 实例:理解为对象,看不见的
  • 数据库:理解为类,看得见的

我们在安装Oracle的时候,已经填写过自己数据库的名称了,一般实例与数据库的名称是一致的…

这里写图片描述

如果还没有安装Oracle数据库的,可以看一下我其他的博文….

那么我们自带的sqlplus黑色窗口与实例,数据库之间的关系又是什么的呢???我们可以看下图:

这里写图片描述

Oracle数据库把表、视图等都看成是对象:

这里写图片描述


Oracle中的null值

Oracle中如果存在字段是null值的话,那么在sqlplus中它是不会显示出来的….如果我们使用null值的数据与其他数据进行运算…那么最终得出的结果都是null值

因此,Oracle提供了NVL(表达式1,表达式2)函数供我们使用,如果表达式1的值为null值,那么就取表达式2的值…当然了,如果表达式1不是null,取的就是表达式1的值

还有值得注意的是:null值不能参数=号运算,null能参数number/date/varchar2类型运算

Oracle提供了 is null关键字来代替=号运算的问题

Oracle中的别名

我们知道在Mysql中如果要用别名的话,需要使用as关键字 ,后面跟着别名就行了….Oracle可以省略as关键字…

并且,一般地,我们使用别名都是用双引号”“把别名括起来,Oracle也支持我们直接写别名,但是呢,如果我们不写双引号,那么我们的别名是不能有空格的

还有一点的是:Oracle的别名是不能使用单引号来括起来的,Oracle默认认为单引号是字符串类型和日期类型的。

IO输入输出SQL语句

我们可以在sqlplus中使用spool命令把SQL语句保存在硬盘中,具体的例子:


    spool e:/oracle-day01.sql;

使用spool off命令,保存SQL语句到硬盘文件e:/oracle-day01.sql,并创建sql文件,结束语句

spool off;

当然了,我们也可以把硬盘中的SQL文件在sqlplus中执行,只要以下的命令就行了:


    @ e:/crm.sql; 

转义字符

有的时候,我们可能会模糊查询一些数据,但是呢,在名称中又有一些特殊的字符。那么我们就要经过转义….当然了,如果按照Java的来,就十分简单了,就写一个”\”就可以了。

那在Oracle中是怎么样转义的呢??我们来看下面的例子:


查询员工姓名中含有'_'的员工,使用\转义符,让其后的字符回归本来意思【like '%\_%' escape '\'】

select * from emp where ename like '%\_%' escape '\';

如果名称是’单引号呢???那么两个单引号代表着一个引号


插入一个姓名叫''的员工
insert into emp(empno,ename) values(2222,'''''');

单行函数与多行函数

首先,我们要明确一个概念:

  • 单行函数:输入一个参数,返回一个结果
  • 多行函数:扫描多个参数,返回一个结果….一般地,多行函数和分组函数的概念是差不多的…

Oracle**提供了关于字符串函数、日期函数供我们对数据进行对应的操作**,这里就不一一赘述了,我们到时候有需要的时候查文档就行了。

这里写图片描述

单引号出现的地方如下:

  • 1)字符串,例如:’hello’
  • 2)日期型,例如:’17-12月-80’
  • 3)to_char/to_date(日期,’YYYY-MM-DD HH24:MI:SS’)

双引号出现的地方如下:

  • 1)列别名,例如:select ename “姓 名” from emp
  • 2)to_char/to_date(日期,’YYYY”年”MM”月”DD”日” HH24:MI:SS’)

GROUP BY 细节

group by 子句的细节:

  • 1)在select子句中出现的非多行函数的所有列,【必须】出现在group by子句中
  • 2)在group by子句中出现的所有列,【可出现可不现】在select子句中

这里写图片描述

举例子:下面这段代码是错误的!!!


    select max(avg(sal)) "部门平均工资的最大值",deptno "部门编号"
    from emp
    group by deptno;

为啥是错误的呢???分组中我们已经有了deptno字段了,而我们select 后面跟着也就是多行函数和该字段而已,为啥就错了呢?????我们如果在分组查询的时候,使用了多行函数嵌套的话,那么我们select字段后面只能跟随着它这么一个列,而不能再多了。max(avg(sal)) 相当于又分组了一次

当然了,如果我们仅仅是求出每个部门的平均工资,也就是下面这段代码,是完全没有问题的:

    select avg(sal) "部门平均工资的最大值",deptno "部门编号"
    from emp
    group by deptno;

这里写图片描述


多表查询、子查询

当我们一张表不能把数据查询出来的时候,就需要连接其他的表一起查询….

当我们的查询条件还没知道的时候,我们就可以使用子查询….

一般地,子查询和多表查询的功能都是差不多的….

子查询出来的数据是单行单列的时候,一般我们都是用等于、大于等于、小于等操作符去限制查询条件…

如果是单列多行的时候,我们一般都是用IN、ANY、ALL操作符去筛选条件…

如果是多行多列,我们就看成该返回查询结果是一张表【Oracle分页就是这个原理】


值得注意的是多表查询的数学基础是笛卡尔积,也就是说:如果两张实体表进行连接,那么它会构成一张笛卡尔积表…也就是说:最终就只有一张笛卡尔积表

这里写图片描述

连接

在多表查询的时候,我们由于会产生笛卡尔积,于是在笛卡尔积表中会存在很多无关的数据…为了剔除这些数据,我们将用到where字句将笛卡尔积表筛选成有用的数据表

一般地,我们有几种连接:

  • 内连接
    • 等值连接【使用=号把条件筛选出来】
    • 非等值连接【使用between and等手段把条件筛选】
  • 外连接
  • 自连接

这里写图片描述

这里写图片描述

那现在问题来了,在Oracle中有的功能我们可以使用多表查询来完成,有的时候我们又可以使用子查询来完成,那么我们一般选择哪一个呢????

我们看下图来比较一下他们的优劣:

这里写图片描述

对于索引就是一个以空间换时间的概念..在数据量很大的时候,Oracle会为我们的数据创建索引,当扫描数据的时候,就可以根据索引来直接获取值….索引的算法也有几种【二叉树、稀疏索引、位图索引….等等】

这里写图片描述

综上所述:在Oracle中使用多表查询性能可能比子查询好一些


Oracle分页

在讲解JDBC的时候,我们就已经讲过Oracle与Mysql的分页问题了….详情可以看我的博文:http://blog.youkuaiyun.com/hon_3y/article/details/53790092

我们在这里还是加深一下印象:

Oracle中的分页是依靠着rownum这个伪列来实现的,由于rownum只能使用的是<=或者<来获取数据。。。因为rownum的值可能会经常变【加入一条数据,那么rownum就+1,讲道理rownum可以是无穷大的,因此不能使用>来进行操作】….

那么Oracle分页的思路是这样子的:

  • 先在子查询中获取前n条记录
  • 由于返回的是多行多列,因此我们可以看做成一张表
  • 那么将查询出来的数据放在from字句的后边
  • 外套的查询可以通过where字句来对子查询出来的数据进行过滤
  • 那么我们就可以查询出想要的数据了…

公式:

  • Mysql从(currentPage-1)*lineSize开始取数据,取lineSize条数据
  • Oracle先获取currentPage*lineSize条数据,从(currentPage-1)*lineSize开始取数据

小面试题

笔试题:有【1000亿】条会员记录,如何用最高效的方式将薪水字段清零,其它字段内容不变?

第一:从emp表中删除sal字段

  • alter table emp
  • drop column sal;

第二:向emp表中添加sal字段,且内容默认0

  • alter table emp
  • add sal number(6) default 0;

操作表细节

进入回收站
drop table users;

查询回收站中的对象
show recyclebin;

闪回,即将回收站还原
flashback table 表名 to before drop;
flashback table 表名 to before drop rename to  新表名;

彻底删除users表
drop table users purge;

清空回收站
purge recyclebin;

为emp表增加image列,alter table 表名 add 列名 类型(宽度) 
alter table emp
add image blob;

修改ename列的长度为20个字节,alter table 表名 modify 列名 类型(宽度) 
alter table emp
modify ename varchar2(20);

删除image列,alter table 表名 drop column 列名
alter table emp
drop column image;

重名列名ename为username,alter table 表名 rename column 原列名 to 新列名
alter table emp
rename column ename to username;

将emp表重命名emps,rename 原表名 to 新表名
rename emp to emps;
  • number(5):
    • 最多5位数字
  • number(6,2):
    • 其中2表示最多显示2位小数,采用四舍五入,不足位数补0,同时要设置col … for …
    • 其中6表示小数+整数不多于6位
    • 其中整数位数不得多于4位,可以等于4位
  • varchar2(8):
    • 8表示字节

值得注意的是:修改表的时候,是不能回滚的!

Oracle中的级联操作:

  • 【on delete cascade】级联删除
  • 【on delete set null】将外键一方设置为null
<script type="text/javascript"> $(function () { $('pre.prettyprint code').each(function () { var lines = $(this).text().split('\n').length; var $numbering = $('<ul/>').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i <= lines; i++) { $numbering.append($('<li/>').text(i)); }; $numbering.fadeIn(1700); }); }); </script>
Oracle SQL*Plus实用操作指南 SQLPlus是Oracle数据库中一个经典的命令行工具,它允许用户执行SQL语句和PL/SQL代码,进行数据库的管理与维护。作为数据库管理员和开发者的利器,SQLPlus以其功能丰富、操作简单而受到青睐。在SQLPlus中,我们可以设置一系列的显示参数来定制SQLPlus会话的外观和行为,以提高工作效率和可读性。这些参数主要包括页面布局、标题、行数限制等。:该命令用于设置每行字符的最大宽度,可以确保数据在输出时不被截断。例如,将使每行的宽度被限制在120个字符。 阅读详情

相关推荐

YooAsset可寻址模式避坑指南:从路径加载到Addressable的完整迁移方案

本文详细介绍了将Unity项目从传统路径加载迁移到YooAsset可寻址模式的完整方案。针对中大型项目在迁移过程中遇到的路径耦合、依赖管理、热更新等痛点,提供了从架构设计、环境配置、代码迁移到性能优化的实战指南,并分享了实际项目的改造案例与避坑经验,帮助团队高效完成资源管理系统的重构。

weixin_28304023的博客 505

Oracle 三种分页方法(rownum、offset和fetch、row_number() over())

Oracle 三种分页方法(rownum、offset和fetch、row_number() over())

林世广 5030

后仿之 SDF优先级和相关概念

综上:在后仿中,工具(vcs)看起来对于negative interconnect的处理如下:a. 查看此negative INTERCONNECT语句所对应的destination cell中是否有PORT语句:b. 如果PORT delay的值大于等于INTERCONNECT的绝对值,就从PORT中消耗掉对应的负值。c. 如果PORT delay不够用,就查看destination cell中是否有IOPATH或DEVICEm有IOPATH或DEVICE,并且够用(任意一种够用就行),就消耗掉。

qq_24434431的博客 1108

oracle分组统计group,分页查询limit

oracel分组查询、分页查询

weixin_44207827的博客 1010

2.ROS实用工具:坐标变换

本文围绕ROS坐标变换展开,介绍其在机器人系统中的关键作用,即统一不同传感器和执行器坐标系,服务数据融合等操作。基于ROS的tf库,从广播和监听TF变换两方面阐述实现过程,涵盖新建工作包、编写广播和监听代码、配置构建文件及编译等步骤。此外,介绍启动节点管理器后运行广播和监听节点的方法,并通过rqt_graph、rqt_tf_tree、tf_echo等工具可视化和获取坐标系变换信息。借助这些内容,读者不仅能掌握ROS坐标变换的实现,还能对机器人坐标变换系统的调试和理解有更深入认识 。

qq_74168740的博客 1173

VASP+机器学习快速收敛AIMD

本文介绍了如何利用VASP结合机器学习技术快速收敛AIMD(从头算分子动力学)模拟。首先,通过训练机器学习力场,生成关键文件如ML_ABN(包含结构数据集)、ML_FFN(存储回归结果)和ML_LOGFILE(记录训练日志)。接着,配置INCAR文件以设置计算参数,包括并行化、分子动力学和机器学习相关参数。KPOINTS文件用于定义K点网格。计算完成后,备份CONTCAR文件作为后续模拟的初始结构。最后,利用训练好的力场文件进行纯机器学习力场分子动力学模拟,并提交任务执行。

qq_44812865的博客 1405

ORACLE SQL分组函数

分组函数作用于一组数据,并对一组数据返回一个值,标志是 GROUP BY, MIN, MAX, AVG, COUNT, GROUP BY 子句将表中的数据分成若干组, WHERE 一定放在FROM后面,WHERE 子句不能使用子函数 在SELECT 列表中所有未包含在组函数中的列都应该包含 在 GROUP BY 子句中。 例:查询各个部门的员工数 SELECT DEPARTMENT_ID, COU...

weixin_44668234的博客 244

大模型-高通平台性能测试示例-2

在QNN中,可以使用(genis-t2t-run)和这两个工具来进行推理的性能分析。支持在QNX操作系统或Android操作系统上进行性能分析。:提供基本的性能数据,如运行时间、资源消耗等。:提供更详细的性能数据,可能包括各个操作的执行时间、资源使用情况等。:是指在性能分析的同时进行代码质量检查,以发现潜在的问题。:是指跟踪和分析神经网络中各个操作的性能,以优化网络结构或参数。

点滴的岁月 1493

SQL分组查询(Oracle)及SQL完整的查询语句

SQL分组查询(Oracle)及SQL完整的查询语句

qq_31727471的博客 2349

KUKA机器人修改机器人名称和IP地址的具体方法示例

KUKA机器人修改机器人名称和IP地址的具体方法示例

Robot_PLC_HMI_Automation 5259

实现基于 Python 和 xterm.js 的 Web 交互终端demo

前端 (HTML):使用 xterm.js 作为前端终端模拟器库。创建了一个 WebSocket 连接到 ws://localhost:8765,这与后端服务器的地址和端口匹配。监听 WebSocket 消息,并将数据写入终端。同时监听用户输入并发送到服务器。后端 (Python):使用 websockets 库来创建 WebSocket 服务器,监听端口 8765。使用 paramiko 库来创建 SSH 客户端并连接到指定的远程服务器。

u010674101的专栏 876

【Oracle】SQL查询 基本查询语句

Oracle和SQLPlus 每次启动只需启动两个服务即可: 1.OracleDbllg_home1TNSListener:监听服务,如果要通过程序或是不同的客户端链接数据库此服务必须启动否则无法链接; 2.OracleService***:数据库的实例服务,他的命名标准:OracleServiceSID,每当为系统增加一个数据库的时候都会自动的出现一个类似的服务名称。 在默认情况下,SID的名称...

qq_44753180的博客 1万+

OpenClaw 钉钉和飞书集成方案研究 & OpenClaw 研究分析报告

OpenClaw(原名 Clawdbot,曾用名 Moltbot)是一款开源的个人 AI 智能体,采用"本地优先"设计理念。与传统聊天机器人不同,OpenClaw 具备真正的系统级执行能力,能够实际操作用户的计算机系统,完成各种实际任务。核心优势本地部署:所有数据存储在用户本地设备,隐私零泄露系统级执行:具备完整的系统访问权限,可执行文件操作、命令运行等全渠道交互:支持多种即时通讯平台作为交互界面开源透明:MIT 许可证,代码完全开放,社区驱动开发应用场景个人助理:日程管理、任务提醒、邮件处理。

AI天才研究院 2341

使用Python连接Oracle数据库的基本操作

Python进行数据库连接基本操作 这里我们采用的是使用Oracle数据库进行相关操作在连接数据库之间,应下载相应的工具包cx_Oracle,在你安装的Python文件夹中找到script,在路径栏点击输入cmd回车进入命令行输入 pip install cx_Oracle 进行安装,工具包较小,下载较快,大概300kb。 安装好之后,打开Python,新建一个工作区。1.引入该工具包,使用import关键词,输入 import cx_Oracle 引入该工具包,运行看是否加载成功(结果区为>

qq_53174498的博客 2万+

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

14、ORACLE下的基本SQL操作

ORACLE下的基本SQL操作 1.获取表字段 select * from user_tab_columns where Table_Name='用户表' order by column_name2.获取表注释 select * from user_tab_comments where Table_Name='用户表' order by Table_Name3.获取字段注释 select * from user_col_comments where Table_Name='用户表' order by co

chaizepeng的博客 288

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

oracle之基本SQL语句

基本SQL语句 01 SQL语言基础 一、先睹为快 二、什么是SQL语言 结构化查询语言(Structured Query Language)(发音?es kju??) SQL是最重要的关系数据库操作语言,是所有关系数据库管理系统的标准语言 许多数据库厂商在使用SQL的同时,都对SQL进行了扩展,比如ORACLE的PL/SQL语言, MS SQL -Server的T-SQL语言 SQL语言是一种非过程化语言, 只需要提出"做什么”,而不需要指明“怎么做” 三、SQL可以做什么 数据库数据的增删改查操作(C

weixin_43303023的博客 4347

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Oracle之SQL操作和查询

SQL是结构化查询语言(Structured Query Language),专门用于数据存取、数据更新及数据库管理等操作。在Oracle开发中,客户端把SQL语句发送给服务器,服务器对SQL语句进行编译、执行,把执行的结果返回给客户端。Oracle SQL语句由如下命令组成:目前主流的数据库产品(比如:SQL Server、Oracle,MySQL)都支持标准的SQL语句。数据定义语言,表的增删改操作,数据的简单查询,事务的提交和回滚,权限的授权和撤销等,Oracle与MySQL在操作上基本一致。

励志成为一名优秀的全能型软件开发工程师。 2661

Oracle--SQL基本语法

本文主要介绍了Oracle数据库中SQL语句的使用。涵盖SQL语句的分类,包括数据定义语言(DDL)、数据操纵语言(DML)、数据查询语言(DQL)、事务控制语言(TCL)和数据控制语言(DCL),以及SQL编写规则和常用字段数据类型。详细讲解了表的创建、约束添加、查询语法及其实现,包括简单查询、条件查询、逻辑查询、分组排序查询、多表关联查询、子查询、集合运算等。此外,还包括数据操纵语言(DML)的插入、更新和删除操作,以及常用系统函数和分析函数的使用。最后,介绍了Oracle行转列、数据合并和递归用法。这

恐龙让Lee的博客 2181

Oracle数据库SQL基本操作

Oracle数据库SQL基本操作

程序员小王的博客 2776

Oracle SQL基本操作

Oracle SQL基本操作Oracle数据库基本操作1.概述Oracle数据库客户端一般需要安装在服务器上,可以在服务器端操作,一般我们可以用sql developer工具远程连接到数据库,先行建立数据库,然后对表进行增删改查。也可以使用MyEclispse的DB Broswer工具进行连接数据库并进行简单的增删改查。2.SQL语句Data Defini...

CoderLam的博客 271

oracle面试相关的,Oracle基本操作的SQL命令

用户对其他用户的数据对象操作的权限,insert、delete、update、select、all等对象权限,数据对象有很多,比如表,索引,视图,触发器、存储过程、包等。概述:创建的新用户是没有任何权限的,甚至连登陆的数据库的权限都没有,需要为其指定相应的权限。注意:在删除用户时,如果要删除的用户,已经创建了表,那么就需要在删除的时候带一个参数cascade,即把该用户及表一同删除;delete方式可以恢复删除的数据,但是提交了,就没办法了 delete删除的时候,会记录日志 -->删除会很慢很慢。

weixin_44797327的博客 1727

SQL语言的基本操作有哪些?

SQL语言的基本操作主要包括以下几类:数据定义语言(DDL):数据操作语言(DML):数据查询语言(DQL):数据控制语言(DCL):事务控制语言(TCL):其他操作:这些操作涵盖了SQL语言的基本功能,包括数据库和表的管理、数据的增删改查、查询优化以及权限控制等。通过这些操作,用户可以有效地管理和操作关系型数据库系统。在不同类型的数据库系统中,和操作的实现方式有所不同。以下是几种常见数据库系统的具体实现方法:1:创建数据库:使用语句创建一个新的数据库。可以指定字符集和排序规则,以更好地适应具体的数据需求。

破损的天堂鸟博客 1402

Oracle基本SQL操作-SQL语句

主键约束:能够唯一标识该字段的唯一约束+不能为空,一张表只能出现一个主键,但可以出现联合主键(一个主键包含多个字段);DML:数据操作语句,insert、update、delete、select。TCL:事务操作语句,begin,commit、rollback,savepoint;count(1) :在列后面再加一列,值用1填充,然后进行统计,也会包含空的结果。唯一约束:有值的情况下,不能重复,不包括null,字段后加unique;DCL:数据控制语句,权限控制,grant、revoke;

weixin_41992498的博客 1526

Oracle基本的SQL语句

【代码】Oracle基本的SQL语句。

流浪者的博客 1746
上一篇: Oracle卸载
下一篇: Oracle总结第二篇【视图、索引、事务、用户权限、批量操作】
Java3y
Java3y 领域专家: 后端开发技术领域 领域专家: 后端开发技术领域
博客等级 码龄9年 1万+粉丝 509原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值