Oracle基本的SQL语句
1.最基本的增删改查
1.1.新增 insert
1.1.1.单表新增
INSERT INTO table_count_output (data_date,table_name,table_count
) VALUES ('2023-03-15','FMCUSLVL',351
);COMMIT;
1.1.2.关联新增
INSERT INTO table_count_output (data_date,table_name,table_count
)SELECTdata_date,table_name,table_countFROMtable_count_output;COMMIT;
注意:
(1)SQL1中有VALUES 关键字,SQL2中没有。
(2)执行完SQL记得提交,否则会锁表。
1.2.修改 update
1.2.1.单表更新
UPDATE table_count_outputSETtable_name = 'FMCUSLVL',table_count = 2WHEREid = 1;COMMIT;
1.2.2.多表关联更新
MERGE INTO target t
USING source s ON ( t.id = s.aid ) --用source去更新target
WHEN MATCHED THEN UPDATE --如果source中的数据在target中存在,则更新SET t.year = s.year
WHEN NOT MATCHED THEN --如果source中的数据在target中不存在,则新增
INSERT (t.id,t.name,t.year )
VALUES( s.aid,s.name,s.year );COMMIT;
1.3.删除 delete
1.3.1.删除
DELETE FROM table_count_outputWHEREid = 1;COMMIT;
优点:可以精确的指定行删除
缺点:删除慢
1.3.2.截断
TRUNCATE TABLE table_count_output;
优点:删除快
缺点:只能清空表,无法精确的行级删除
1.3.复制表
(1)复制表结构和数据
CREATE TABLE table_count_output_copASSELECT*FROMtable_count_output;
(2)只复制表结构
CREATE TABLE table_count_output_copASSELECT*FROMtable_count_outputWHERE1 = 2;
1.4.查询
1.4.1.条件查询
SELECT*FROMtable_count_outputWHEREdata_date = DATE '2023-03-15';
1.4.2.统计数据量
SELECTCOUNT(1)FROMtable_count_outputWHEREdata_date = DATE '2023-03-15';
1.4.3.去重后统计数据量
SELECTCOUNT(DISTINCT table_name)FROMtable_count_output;
1.4.4.查询字符数与字节数
SELECTtable_name, --原字段length(table_name), --字符数lengthb(table_name) --字节数FROMtable_count_output;
1.4.5.分组函数,查询某个字段是否重复
SELECTtable_name,COUNT(1)FROMtable_count_outputWHEREdata_date = DATE '2023-03-15'GROUP BYtable_name
HAVINGCOUNT(1) > 1;
1.4.6.查询交易表中每个账户最新的一条交易记录
SELECT*FROM( SELECTt.ntransaccountid, --账号IDdtexecute, --交易日期stransno, --交易号ROW_NUMBER() OVER(PARTITION BY ntransaccountidORDER BYdtexecute DESC, stransno DESC) row_noFROMsett_transaccountdetail t)WHERErow_no = 1;
1.4.7.注意
Oracle中的null既不属于in(...),也不属于not in(...)
3.SQL规范
3.1.建议用(+)代替 LEFT JOIN,RIGHT JOIN,INNER JOIN
SELECT*FROMsource.sett_account aLEFT JOIN source.sett_subaccount b ON a.id = b.naccountidWHEREa.id < 500;--可以替换为:
SELECT*FROMsource.sett_account a,source.sett_subaccount bWHEREa.id = b.naccountid (+)AND a.id < 500;
3.2.不要在select字段里面写查询语句
SELECTa.id,a.saccountno,(select 1 from dual)FROMsource.sett_account a;
--可替换为
SELECTa.id,a.saccountnoFROMsource.sett_account a,(select 1 from dual) b;
--因为表B只有一条数据,不需要加任何关联条件
3.3.查询条件中不建议写in
SELECT*FROMsett_account aWHEREid IN ( SELECTnaccountidFROMsett_subaccount);
--可以替换为: SELECT*FROMsett_account a,sett_subaccount bWHEREa.id = b.naccountid (+)AND b.naccountid IS NULL;
--或者 SELECT*FROMsett_account aWHEREEXISTS ( SELECT1FROMsett_subaccount bWHEREa.id = b.naccountid);
4.SQL优化
4.1.建索引
4.1.1.联合索引的特点
索引有序+高度较低+存储列值
4.1.2.联合索引的好处
避免回表。两个单列查询返回行较多,同时查返回行较少,联合索引更高效。
4.1.3.什么时候该用联合索引以及如何设计组合索引更高效
(1)等值查询中,查询条件a返回的条目比较多,查询条件b返回的条目比较多,而同时查询a、b返回的条目比较少,那么适合建立联合索引;
(2)对于有等值查询的列和范围查询的列,等值查询的列建在前、范围查询的列建在后比较实用;
(3)如果联合索引列的前置列与索引单列一致,那么单列查询可以用到索引,这样就避免了再建单列索引,因此联合索引的前置列应尽量与单列一致;
4.1.4.使用索引需要注意的地方
(1)超过3个列的联合索引不合适,否则虽然减少了回表动作,但索引块过多,查询时就要遍历更多的索引块了;
(2)建索引动作应谨慎,因为建索引的过程会产生锁,不是行级锁,而是锁住整个表,任何该表的DML操作都将被阻止,在生产环境中的繁忙时段建索引是一件非常危险的事情;
(3)对于某段时间内,海量数据表有频繁的更新,这时可以先删除索引,插入数据,再重新建立索引来达到高效的目的。
4.1.5.另外有些情况不适合建索引
(1)很少参与查询的列。
(2)对于增、删、改操作远大于查询的列。
(3)对于很少数据值的列,例如性别。
(4)对于那些结果集占了表数据总量很大比例的查询。
(5)对于备注、文本框等长度很大的列。
5.查询锁表并解锁
--查询被锁的表
SELECTl.session_id sid,s.serial#,l.locked_mode,l.oracle_username,s.user#,l.os_user_name,s.machine,s.terminal,a.sql_text,a.actionFROMv$sqlarea a,v$session s,v$locked_object lWHEREl.session_id = s.sidAND s.prev_sql_addr = a.addressORDER BYsid,s.serial#;--解锁
ALTER SYSTEM KILL SESSION 'sid,serial#' immediate;
6.数据泵导入与导出
6.1.创建表空间
CREATE TABLESPACE idms DATAFILE '/opt/oracle/oradata/smcw/idms.dbf' SIZE 2048M AUTOEXTEND ON NEXT 200M MAXSIZE UNLIMITED LOGGING ONLINE PERMANENT;
6.2.创建用户
CREATE USER idms PROFILE DEFAULT IDENTIFIED BY idms DEFAULT TABLESPACE idms TEMPORARY TABLESPACE TEMP ACCOUNT UNLOCK;
6.3.用户授权
1.grant resource,connect,dba to idms;
2.grant read,write on directory IDMS_DIR to idms;
6.4.导入
1.impdp idms2/idms2@10.0.11.85:1521/ora19c directory=IDMS_DIR DUMPFILE=idms_20230419.dmp REMAP_SCHEMA=idms:idms2 remap_tablespace=idms:idms2 TABLE_EXISTS_ACTION=REPLACE
2.imp target/target@10.10.2.51:1521/db file='target_20230302.dmp' fromuser='target' touser='target' ignore=y;
6.5.导出
--expdp导出
expdp idms/idms@10.0.11.85:1521/ora19c schemas=idms directory=IDMS_DIR dumpfile=idms_20230419.dmp logfile=idms_20230419.log;
--exp导出表结构和数据
exp target/target@10.10.2.51:1521/db file=E:\target_20230510.dmp owner=('target');
--exp只导出表结构 rows=n
exp target/target@10.10.2.51:1521/db file=E:\target_20230510.dmp owner=('target') rows=n;
相关文章:
Oracle基本的SQL语句
1.最基本的增删改查 1.1.新增 insert 1.1.1.单表新增 INSERT INTO table_count_output (data_date,table_name,table_count ) VALUES (2023-03-15,FMCUSLVL,351 );COMMIT; 1.1.2.关联新增 INSERT INTO table_count_output (data_date,table_name,table_count )SELECTdata_…...
golang项目目录推荐
序言 逛GitHub的时候发现有个4.5k对goalng项目结构的推荐的项目,这里就简单的推荐下 文件目录 /cmd 项目主要的应用程序。 对于每个应用程序来说这个目录的名字应该和项目可执行文件的名字相匹(例如,/cmd/myapp)。不要在这个…...
Maven scope属性解读和使用注意事项
目录 compile runtime test system provided import dependencyManagement标签介绍 maven的scope有哪些: maven的scope一共包括:compile、runtime、test、system、provided、import。 compile <dependency><groupId>org.apache.htt…...
Vue3使用 xx UI解决布局高度自适应
解决方案 在相应的Sider部分添加:height: ‘91.8vh’,即可。示例: <Layout><Sider hide-trigger :style"{background: #fff, height: 91.8vh}"> }知识补充 vw、vh、vmin、vmax是一种视窗单位,也是相对单…...

九牧:科技卫浴,长期主义
“没有做错什么,但却输给了时代”,这是人们给当年手机巨头诺基亚的注解。 谁也没有想到,曾在手机行业称雄的诺基亚,最终败给了时代。当年,在2G向3G、4G跨越的时候,苹果、微软的iOS和安卓系统将手机从简单的…...

中级软件设计师-note-2
一个逆向思维的例子是 “当遇到一个问题时,通常人们会想办法解决这个问题。但逆向思维是指反过来考虑,即想办法制造更多的问题。 举个例子,假设有一个团队正在开发一款新的智能手机。传统的思维方式可能是专注于如何增加手机的功能…...
解锁商业宝藏:迅软科技答疑保护商业秘密的重要性
商业秘密指不为公众所知悉、具有商业价值并经权利人采取相应保密措施的技术信息、经营信息等商业信息,一旦泄露可能会给公司带来极大的经济损失和竞争压力,保护商业秘密既能维护企业自身合法权益,也能保障市场经济长期健康发展需求。 保护商…...
【GIT】撤销命令
git add 撤销 add 错误文件,撤销掉add列表的文件使用: git reset [文件名] 撤销单个文件 git reset . 撤销全部 git commit 撤销 commit 之后,但是还没有push 可以用撤回刚刚的commit 记录 git reset HEAD~ git log -v 查看提交记录...

开发知识点-09Rust
Rust Rust 语言通常用于编写系统级软件、网络服务器和高性能应用程序,它具有以下特点:1. 高性能和内存安全:Rust 在保证高性能的同时,利用其所有权模型和借用检查器等特性确保内存安全,避免了 C/C 等语言的内存错误和崩…...
Android开发中,百度语音集成之一
我们在开发中,用到实时语音的时候,会有讯飞、百度、阿里,今天主要讲解的是百度语音之语音合成: public class YuYinUtil { private static final Logger logger LogManager.getLogger(YuYinUtil.class); public static final St…...

nodejs连接mongodb报错SyntaxError: Unexpected token .
nodejs连接mongodb报错SyntaxError: Unexpected token 如下图 经过排查,原因是npm默认安装的mongodb插件是最新版6.3.0 ,而mongodb数据库版本是4.0.0 ,两者版本不同导致nodejs报错。 解决方法是npm卸载新版本的mongodb插件,再安…...

Ubuntu 常用命令之 gunzip 命令用法介绍
📑Linux/Ubuntu 常用命令归类整理 gunzip是一个在Ubuntu系统下用于解压缩文件的命令。它主要用于解压.gz格式的文件。这个命令是gzip命令的反向操作,gzip用于压缩文件,而gunzip则用于解压缩文件。 gunzip命令的参数有 -c 或 --stdout 或 -…...

sun.misc.BASE64Encoder 进行maven打包时报错
报错如下: 报错代码,是因为引用了sun.misc.BASE64Decoder等类不属于JDK标准库范畴,但在JDK中包含了该类,可以直接使用。在jdk1.9中就不存在了。 import sun.misc.BASE64Decoder; import sun.misc.BASE64Encoder;BASE64Encoder enc…...

[DNS网络] 网页无法打开、显示不全、加载卡顿缓慢 | 解决方案
[网络故障] 网页无法打开、显示不全、加载卡顿缓慢 | 解决方案 问题描述 最近,我在使用CSDN插件浏览 MOOC 网站时,遇到了一些网络故障。具体表现为: MOOC 中国大学慕课网:www.icourse163.org点击CSDN插件首页的 MOOC(…...

CSS设计器的使用
目录 css的概念 css的优势 css的基本语法 html中引入css样式 CSS基本选择器 选择器的使用 初级选择器: 标签选择器 类选择器 id选择器 高级选择器(结构选择器) ①后代选择器(E F) ②子选择器(E>F) ③相邻兄弟选择器(EF) ④通用兄弟选择器(…...

3d渲染太慢怎么办?2024效果图云渲染AI加速来袭
在不断变革的数码技术世界中,三维渲染技术在影视制作、游戏开发以及建筑设计等多个领域得到了广泛运用。然而,高清质量的三维项目的离线渲染时间长久一直是困扰 CG 工作者的一大难题。通常来讲,渲染一帧画面可能需要几分钟到几小时࿰…...
指针函数函数指针回调函数相关知识
指针函数: 本质上是一个函数,返回值是一个指针类型;不能返回局部变量的地址,因为其所存储在栈区,在函数调用结束时,被OS回收了;可以返回的情况:全局变量的地址、static修饰的局部变…...

软件设计模式:六大设计原则
文章目录 前言一、开闭原则二、里氏替换原则三、依赖倒转原则四、接口隔离五、迪米特法则六、合成复用原则总结 前言 在软件开发中,为了提高软件系统的可维护性和可复用性,增加软件的可扩展性和灵活性,程序员要尽量根据6条原则来开发程序&am…...
Unity闪屏Logo去除
1.新建一个C#脚本,命名为 “SkipSplashScreen” (代码如下)。 using System.Collections; using System.Collections.Generic; using System; using UnityEngine; using UnityEngine.UI;#if !UNITY_EDITOR using UnityEngine; using UnityEn…...

Git账户密码http方式的配置
Git账户密码http方式的配置 入门 git在提交时每次都需要输入密码和账号信息,可以将账号和密码进行持久化存储, 当git push的时候输入一次用户名和密码就会被记录, 不需要每次输入,提高效率,进行一下配置࿱…...
云计算——弹性云计算器(ECS)
弹性云服务器:ECS 概述 云计算重构了ICT系统,云计算平台厂商推出使得厂家能够主要关注应用管理而非平台管理的云平台,包含如下主要概念。 ECS(Elastic Cloud Server):即弹性云服务器,是云计算…...
在HarmonyOS ArkTS ArkUI-X 5.0及以上版本中,手势开发全攻略:
在 HarmonyOS 应用开发中,手势交互是连接用户与设备的核心纽带。ArkTS 框架提供了丰富的手势处理能力,既支持点击、长按、拖拽等基础单一手势的精细控制,也能通过多种绑定策略解决父子组件的手势竞争问题。本文将结合官方开发文档,…...
Leetcode 3577. Count the Number of Computer Unlocking Permutations
Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接:3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯,要想要能够将所有的电脑解锁&#x…...
全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比
目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec? IPsec VPN 5.1 IPsec传输模式(Transport Mode) 5.2 IPsec隧道模式(Tunne…...

使用 SymPy 进行向量和矩阵的高级操作
在科学计算和工程领域,向量和矩阵操作是解决问题的核心技能之一。Python 的 SymPy 库提供了强大的符号计算功能,能够高效地处理向量和矩阵的各种操作。本文将深入探讨如何使用 SymPy 进行向量和矩阵的创建、合并以及维度拓展等操作,并通过具体…...

C++:多态机制详解
目录 一. 多态的概念 1.静态多态(编译时多态) 二.动态多态的定义及实现 1.多态的构成条件 2.虚函数 3.虚函数的重写/覆盖 4.虚函数重写的一些其他问题 1).协变 2).析构函数的重写 5.override 和 final关键字 1&#…...

通过MicroSip配置自己的freeswitch服务器进行调试记录
之前用docker安装的freeswitch的,启动是正常的, 但用下面的Microsip连接不上 主要原因有可能一下几个 1、通过下面命令可以看 [rootlocalhost default]# docker exec -it freeswitch fs_cli -x "sofia status profile internal"Name …...
【WebSocket】SpringBoot项目中使用WebSocket
1. 导入坐标 如果springboot父工程没有加入websocket的起步依赖,添加它的坐标的时候需要带上版本号。 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId> </dep…...

若依登录用户名和密码加密
/*** 获取公钥:前端用来密码加密* return*/GetMapping("/getPublicKey")public RSAUtil.RSAKeyPair getPublicKey() {return RSAUtil.rsaKeyPair();}新建RSAUti.Java package com.ruoyi.common.utils;import org.apache.commons.codec.binary.Base64; im…...
Java 与 MySQL 性能优化:MySQL 慢 SQL 诊断与分析方法详解
文章目录 一、开启慢查询日志,定位耗时SQL1.1 查看慢查询日志是否开启1.2 临时开启慢查询日志1.3 永久开启慢查询日志1.4 分析慢查询日志 二、使用EXPLAIN分析SQL执行计划2.1 EXPLAIN的基本使用2.2 EXPLAIN分析案例2.3 根据EXPLAIN结果优化SQL 三、使用SHOW PROFILE…...