百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 优雅编程 > 正文

Oracle学习笔记整理手册(oracle实用教程)

sinye56 2024-09-29 21:59 2 浏览 0 评论

作者:smileNicky

文章目录

Oracle学习资源:https://edu.csdn.net/courses/o319_s322_k?utm_source=tt

(1)Oracle正则匹配使用

(2)Oracle修改有数据的数据字段类型

(3)Oracle表数据回滚语句

(4)sql筛选出记录数大于2的记录

(5)oracle同义词

(6)oracle内外连接

(7)oracle去重关键字

(8)Oracle不等于符号

(9)1=1和1=0

(10)创建表空间

(11)Oracle in关键字和等于符号

(12)NVL函数

(13)union

(14)exist和in

(15)递归查询

(16)条件sql

(17)oracle数据库还原

(18)重导dmp文件

(19)vm_concat函数

(20)replace函数

(21) instr函数

PS:本文收录自己工作中遇到学到的一些Oracle技能,有时间就更新整理一下

https://blog.csdn.net/u014427391/article/details/82317376

Oracle学习资源:https://edu.csdn.net/courses/o319_s322_k?utm_source=tt

(1)Oracle正则匹配使用

PS:这条SQL可以通过正则匹对查询一下,表A的字段a是否有非数字的数据,有时候数据表的一些字段是varchar类型的,如果sql里用to_number的话,就肯定会报无效数字的错误

select * from 表A where not regexp_like(字段a,'^[[:digit:]]+

);

1

(2)Oracle修改有数据的数据字段类型

有些时候,我们是要修改一些数据字段的类型的,mysql是可以支持的,不过Oracle对一些有数据的数据字段是不予许修改的,这时候,可以通过下面sql进行修改,大概思路就是创建一个临时的,负责转运数据,然后再切换

alter table 表A add new_temp varchar2(50);

update 表A set new_temp = a;

commit;

update 表A set a = '';

commit;

alter table 表A modify a varchar2(50);

update 表A set a = new_temp;

commit;

alter table 表A drop column new_temp;

(3)Oracle表数据回滚语句

【表数据恢复回N分钟之前】

alter table 表名 enable row movement;

flashback table 表名 to timestamp systimestamp - interval 'N' minute;

(4)sql筛选出记录数大于2的记录

select id,count(*) from A a

where a.test like '%'

group by id

having count(*)>=2

(5)oracle同义词

创建同义词:

create public synonym tablename for user.tablename;

synonyms

(6)oracle内外连接

Oracle左右连接可以使用(+),+号在左表示右外连接,在右表示左外连接

(7)oracle去重关键字

Oracle关键字:

distinct:过滤掉多余的重复记录只保留一条

(8)Oracle不等于符号

oracle不等于有下面三种表示:

!=、^=、<>

<>可移植性好

(9)1=1和1=0

select * from t where 1=1

1=1条件始终为true,是为了避免负责的条件查询出现错误

1=0条件始终未false,结果不会返回任何数据,所以可以用于建表,create table newtable as select * from oldtable where 1=0;

(10)创建表空间

–创建表空间

CREATE SMALLFILE

TABLESPACE “WORKFLOW01”

LOGGING

DATAFILE

‘D:\app\Administrator\oradata\oanet\WORKFLOW01.ora’ SIZE

245M EXTENT MANAGEMENT LOCAL SEGMENT SPACE Management AUTO

(11)Oracle in关键字和等于符号

oracle in 和 =的区别

in可以有多条记录,=只有一条记录

=性能更好,因为使用=符合能更好地使用索引

(12)NVL函数

NVL函数的格式如下:NVL(expr1,expr2)

含义是:如果oracle第一个参数为空那么显示第二个参数的值,如果第一个参数的值不为空,则显示第一个参数本来的值。

NVL2函数的格式如下:NVL2(expr1,expr2, expr3)

含义是:如果该函数的第一个参数为空那么显示第二个参数的值,如果第一个参数的值不为空,则显示第三个参数的值。SQL> select ename,NVL2(comm,-1,1) from emp;

NULLIF(exp1,expr2)函数的作用是如果exp1和exp2相等则返回空(NULL),否则返回第一个值。

Coalese函数的作用是的NVL的函数有点相似,其优势是有更多的选项。

格式如下:

Coalesce(expr1, expr2, expr3…… exprn)

表示可以指定多个表达式的占位符。所有表达式必须是相同类型,或者可以隐性转换为相同的类型。

(13)union

union: 对两个结果集进行并集操作, 不包括重复行,相当于distinct, 同时进行默认规则的排序;

union all: 对两个结果集进行并集操作, 包括重复行, 即所有的结果全部显示, 不管是不是重复;

(14)exist和in

select a.id from A a where a.id in(select b.id from B b)

select a.id from A a where exists(select b.id from B b where a.id = b.id)

(15)递归查询

start with 子句:遍历起始条件,有个小技巧,如果要查父结点,这里可以用子结点的列,反之亦然。

connect by 子句:连接条件。关键词prior,prior跟父节点列parentid放在一起,就是往父结点方向遍历;prior跟子结点列subid放在一起,则往叶子结点方向遍历

https://www.cnblogs.com/benbenduo/p/4588612.html

(16)条件sql

case when then else end 可以理解为流程控制语句或条件控制语句。可以实现资料获取的时候,可以更多的条件和自定义逻辑

select 1 from mytable;与select anycol(目的表集合中的任意一行) from mytable;与select * from mytable 作用上来说是没有差别的,都是查看是否有记录,一般是作条件用的。select 1 from 中的1是一常量,查到的所有行的值都是它,但从效率上来说,1>anycol>*,因为不用查字典表。

(17)oracle数据库还原

1、将TESTDB.bmp放置在dpdump目录,如下路径:

E:\app\Administrator\admin\orcl\dpdump

2、创建用户

create user testdb65 identified by “testdb65”

default tablespace users temporary tablespace temp;

用户授权

grant connect,dba to testdb65;

3、创建表空间

CREATE TABLESPACE HR_DATA01 DATAFILE ‘D:\nhsj\hr_data01.dbf’ SIZE 500M AUTOEXTEND ON NEXT 50M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 256K ; 【创建表空间】

4、导入 bgyhr2是来源库

impdp testdb65/testdb65@orcl schema=testdb65 dumpfile=TESTDB65.dmp

导出 scott 是要导出的库

expdp lfwtrain/a@orcl schema=当前用户 dumpfile=expdptest.dmp

(18)重导dmp文件

Oracle保存数据时一般以DMP文件的形式进行保存

本博客记录,DMP文件的导入 先打开CMD

sqlplus /nolog

以sysdba连接

conn /as sysdba

这里创建表空间,因为表空间进行存储的话,可以提供系统性能

CREATE TABLESPACE DATA01 DATAFILE 'D:\tablespace\data01.dbf' SIZE 100M AUTOEXTEND ON NEXT 50M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 256K ;

创建用户

CREATE USER job IDENTIFIED BY job DEFAULT TABLESPACE DATA01 TEMPORARY TABLESPACE TEMP QUOTA UNLIMITED ON DATA01

授权

grant connect,dba to job;

复制dmp文件到oracle安装目录里的app\admin\orce\dpdump里,然后用以下代码导入dmp文件,要顺便导入logfile的话,加上logfile=文件名

impdp job/job@orcl schemas=job dumpfile=EXPDP160810GZ.dmp

(19)vm_concat函数

函数wm_concat(列名),该函数可以把列值以","号分隔起来,并显示成一行

(20)replace函数

REPLACE(char, search_string [, replacement_string ] )

char : 等待替换的字符串

search_string : 搜索需要替换的字符串

replacement_string : 替换字符串

如果replacement_string缺省或者为null,那么所有char中出现的search_string 都将被移除

如果search_string为null,那么结果就是char

例子:过滤某个字段的换行符

select replace(a, chr(10)) from tableA

1

(21) instr函数

格式一:instr( string1, string2 ) / instr(源字符串, 目标字符串)

格式二:instr( string1, string2 [, start_position [, nth_appearance ] ] ) / instr(源字符串, 目标字符串, 起始位置, 匹配序号)

解析:string2 的值要在string1中查找,是从start_position给出的数值(即:位置)开始在string1检索,检索第nth_appearance(几)次出现string2。

例子:查询某个数据字段是否包含换行符

select * from tableA where instr(a,chr(10))>0

Oracle学习资源:https://edu.csdn.net/courses/o319_s322_k?utm_source=tt

------------------------------------------------------------------

希望本文对大家有帮助!

相关推荐

RHEL8和CentOS8怎么重启网络

本文主要讲解如何重启RHEL8或者CentOS8网络以及如何解决RHEL8和CentOS8系统的网络管理服务报错,当我们安装好RHEL8或者CentOS8,重启启动网络时,会出现以下报错:...

Linux 内、外网双网卡路由配置

1.路由信息的影响Linux系统中如果有多张网卡的情况下,如果路由信息配置不正确,...

Linux——centos7修改网卡名

修改网卡名这个操作可能平时用不太上,可作为了解。修改网卡默认名从ens33改成eth01.首先修改网卡配置文件名(建议将原配置文件进行备份)...

CentOS7下修改网卡名称为ethX的操作方法

?Linux操作系统的网卡设备的传统命名方式是eth0、eth1、eth2等,而CentOS7提供了不同的命名规则,默认是基于固件、拓扑、位置信息来分配。这样做的优点是命名全自动的、可预知的...

Linux 网卡名称enss33修改为eth0

一、CentOS修改/etc/sysconfig/grub文件(修改前先备份)为GRUB_CMDLINE_LINUX变量增加2个参数(net.ifnames=0biosdevname=0),修改完成...

CentOS下双网卡绑定,实现带宽飞速

方式一1.新建/etc/sysconfig/network-scripts/ifcfg-bond0文件DEVICE=bond0IPADDR=191.3.60.1NETMASK=255.255.2...

linux 双网卡双网段设置路由转发

背景网络情况linux双网卡:网卡A(ens3)和网卡B(...

Linux-VMware设置网卡保持激活

Linux系统只有在激活网卡的状态下才能去连接网络,进行网络通讯。修改配置文件(永久激活网卡)...

VMware虚拟机三种网络模式

01.VMware虚拟机三种网络模式由于linux目前很热门,越来越多的人在学习linux,但是买一台服务放家里来学习,实在是很浪费。那么如何解决这个问题?虚拟机软件是很好的选择,常用的虚拟机软件有v...

Rocky Linux 9/CentOS Stream 9修改网卡配置/自动修改主机名(实操)

推荐...

2023年最新版 linux克隆虚拟机 解决网卡uuid重复问题

问题描述1、克隆了虚拟机,两台虚拟机里面的ip以及网卡的uuid都是一样的2、ip好改,但是uuid如何改呢?解决问题1、每台主机应该保证网卡的UUID是唯一的,避免后面网络通信有问题...

Linux网卡的Vlan配置,你可能不了解的玩法

如果服务器上连的交换机端口已经预先设置了TRUNK,并允许特定的VLAN可以通过,那么服务器的网卡在配置时就必须指定所属的VLAN,否则就不通了,这种情形在虚拟化部署时较常见。例如在一个办公环境中,办...

Centos7 网卡绑定

1、切换到指定目录#备份网卡数据cd/etc/sysconfig/network-scriptscpifcfg-enp5s0f0ifcfg-enp5s0f0.bak...

Linux搭建nginx+keepalived 高可用(主备+双主模式)

一:keepalived简介反向代理及负载均衡参考:...

Linux下Route 路由指令使用详解

linuxroute命令用于显示和操作IP路由表。要实现两个不同子网之间的通信,需要一台连接两个网络的路由器,或者同时位于两个网络的网关来实现。在Linux系统中,设置路由通常是为了解决以下问题:该...

取消回复欢迎 发表评论: