Oracle
RichardGeek
一枚普通的乐于分享的程序猿博主
展开
-
set define off 在数据库脚本中的作用
setdefineoff;在SQL*Plus中默认的"&"表示替代变量,也就是说,只要在命令中出现该符号,SQL*Plus就会要你输入替代值。这就意味着你无法将一个含有该符号的字符串输入数据库或赋给变量,如字符串“SQL&Plus”系统会理解为以“SQL”打头的字符串,它会提示你输入替代变量Plus的值,如果你输入ABC,则最终字符串转化为“SQLABC”。...原创 2020-03-16 16:23:25 · 670 阅读 · 0 评论 -
SQL语句-查询一张表中某个字段存在相同值的数据
这是查询有两条或者两条以上的数据 --先分组,在统计select a.code from ldcode a where 1=1 GROUP BY a.code HAVING COUNT(a.code)> 1这是查询有3条相同数据的情况--先分组,在统计select a.code from ldcode a where 1=1 GROUP BY a.code HAVING ...原创 2020-03-09 12:41:40 · 9813 阅读 · 0 评论 -
Oracle 查看数据表中某一字段重复的数据
1、查询字段名在该表中重复的该字段select字段名from 表名 group by 字段名 having count(字段名)>1;首先要进行group by 分组再计算其数量大于1的数据要切记你查看的内容(select字段名)这一部分不可以显示全部数据(select *);2、查询该字段重复的完整记录明细SELECT * FROM 表名 where...原创 2019-12-21 15:42:48 · 4087 阅读 · 0 评论 -
Oracle Trigger触发器
一、触发器背景简介触发器的定义就是说某个条件成立的时候,触发器里面所定义的语句就会被自动的执行。因此触发器不需要人为的去调用,也不能调用。然后,触发器的触发条件其实在你定义的时候就已经设定好了。这里面需要说明一下,触发器可以分为语句级触发器和行级触发器。简单的说就是:语句级的触发器可以在某些语句执行前或执行后被触发。而行级触发器则是在定义的了触发的表中的行数据改变时就会被触发一...原创 2019-12-20 22:05:02 · 771 阅读 · 0 评论 -
Oracle DBLink+Trigger
1、建立DBLinkA库想查B库的东西。可以在A库上建一个DBLINK,单向,不需要在B上建,除非B也想查A的东西.CREATE [SHARED] [PUBLIC] database link link_name [CONNECT TO [user] [current_user] IDENTIFIED BY password] [AUTHENTICATED BY user IDE...原创 2019-12-20 20:47:40 · 291 阅读 · 0 评论 -
Oracle 创建DBLink
背景需求:A库想查B库的东西可以在A库上建一个DBLINK,单向,不需要在B上建,除非B也想查A的东西然后只要SELECT * FROM TABLE_NAME@DBLINK_NAME就可以了步骤:一、鉴权1、鉴权首先查询当前用户是否有创建dblink的权限,如果没有,需要赋权:赋权需要在sys下执行:grant create public database link,...原创 2019-12-20 19:38:28 · 596 阅读 · 0 评论 -
Oracle 监控当前用户在当前机器下的连接信息Sql
1、select s.machine, s.username, s.status, s.prev_exec_start, s.logon_time, s.* from v$session s where s.service_name = '数据库sid' and s."USERNAME"='数据库连接用户名' and s.machine like '%当前计算机名%' order ...原创 2019-11-15 21:04:33 · 670 阅读 · 0 评论 -
Oracle:查询带有某个字段的所有表 及 存储过程的创建
SELECT DISTINCT T.TABLE_NAME FROM USER_TABLES T, USER_TAB_COLUMNS B WHERE T.table_name = B.table_name and B.COLUMN_NAME = '字段名XXX'create or replace procedure A_changeYear(Year in VARCHAR2...原创 2019-07-12 15:44:35 · 1235 阅读 · 0 评论 -
sql 的case when 使用
select t.*,case when t.is_valid=1 then t.chr_code || ' ' || t.chr_name || ' 已启用' when t.is_valid = 2 then 'hahhahhahahha' ELSE t.chr_code || ' ' || t.chr_name end as sys_na...原创 2019-07-10 15:54:24 · 154 阅读 · 0 评论 -
分页查询 模板SQL
1:Oracleselect bb.* from (select pp.*,rownum as id from ("普通sql") pp where rownum<="传入的当前页数参数"*"传入的页面大小参数") bb where bb.id>"传入的当前页数参数-1"*"传入的页面大小参数";2:MySQLSELECT bb.* FROM (SELECT pp.* ...原创 2019-06-21 10:02:32 · 239 阅读 · 0 评论 -
普通sql改造成分页查询sql
//subsql:普通的sql语句String sql = subsql;传入参数: 当前页 :currentPage 每页数据量:pageSizeOracle: select bb.* from (select pp.*,rownum as id from (subsql 【普通查询sql】) pp where rownum<= curren...原创 2019-04-13 15:30:28 · 235 阅读 · 0 评论 -
COALESCE函数常用于对sql中空值的处理
注意:连接操作符“||”是一个值得注意的例外。例如,空值加任何值都是空值,空值 乘任何值也都是空值,依此类推。 返回表达式中第一个非空表达式,如有以下语句:SELECT COALESCE(NULL,NULL,3,4,5) FROM dual其返回结果为:3如果所有自变量均为 NULL,则 COALESCE 返回 NULL 值。 例如:这个参数使用的场合为:假如...原创 2019-02-14 16:24:14 · 1553 阅读 · 0 评论 -
数据库判断是否存在某个字段,若不存在,则增加该字段。若存在,则不处理
Oracle:declarei integer;beginselect count(*) into i from user_tab_columnswhere table_name=upper('表名') and column_name=upper('字段名');if i=0 thenexecute immediate 'alter table 表名 add 字段名 VA...原创 2019-03-11 17:00:06 · 8233 阅读 · 0 评论 -
Oracle 表空间扩容
//查询表空间的磁盘路径SQLselect * from dba_data_files;//查询表空间的大小SQL M单位SELECT T.TABLESPACE_NAME, ROUND(SUM(BYTES/(1024 * 1024)), 0) TS_SIZEFROM DBA_TABLESPACES T, DBA_DATA_FILES DWHERE T.TABLESPACE_NAME...原创 2019-07-22 16:57:33 · 212 阅读 · 0 评论 -
Oracle提示TNS:无监听程序的解决办法
现象:远程请求oracle 数据库 报 无监听程序。但本机启动 发现正常。原因:ip解析问题,把localhost解析成了127.0.0.1 而不是访问的宿主机器上的ipv4地址。1.首先看一下服务中的以下的两个服务是否开启:2.修改..\app\admin\product\11.2.0\dbhome_1\NETWORK\ADMIN\listener.ora文件SID...原创 2019-08-09 10:00:41 · 1630 阅读 · 0 评论 -
Oracle 多行合并成一行: listagg within group
sql:SELECT ID, listagg(NAME, ',') within group(ORDER BY ID) AS NAMES FROM DEMO TGROUP BY ID;工作时遇到需求 : 按照某字段进行分组,并把其中一列的值合并显示在一个字段中如: 1 苹果1 鸭梨2 香蕉2 葡萄显示为 : 1 苹果\鸭梨2 香蕉\葡萄经过学习可...原创 2019-07-11 11:33:33 · 479 阅读 · 0 评论 -
Oracle恢复数据及修改日期格式方式
1,删除掉已经通过表B注入到表A中的所有数据。(对于操作数据库,混乱插入后导致的表中数据混乱,而进行恢复数据表的一种简易操作。不必进行整体的数据库恢复手段。)delete from A where chr_code in (SELECT chr_code FROM B); 2,把Oracle日期格式为timestamp修改为常用date格式:select to_char(ca...原创 2018-07-23 20:08:42 · 555 阅读 · 0 评论 -
Oracle中的虚拟表dual用法
特性:1,Oracle提供的最小的表,不论进行何种操作(不要删除记录),它都只有一条记录——'X'。例如:执行select * from dual,里面只有一条记录;执行insert into dual values('Y')后,再次查询dual表,仍然显示一条记录。dual是一个虚拟表,用来构成select的语法规则,oracle保证dual里面永远只有一条记录。2,是sys用户...原创 2018-07-24 09:17:44 · 1781 阅读 · 0 评论 -
SQL语句 怎么把一个表的数据复制到另外一个表里面
如何把一个表中的数据复制到另一个表中1,复制表结构及数据到新表select * into 目标表名 from 源表名(要求目标表不存在,因为在插入时会自动创建)2,只复制表结构到新表CREATE TABLE 新表 SELECT * FROM 旧表 WHERE 1=2 即:让WHERE条件不成立.3,复制旧表的数据到新表(假设两个表结构一样)INSERT INTO 新表 SEL...原创 2018-07-24 13:57:08 · 2581 阅读 · 0 评论 -
Oracle 中distinct 和order by 同时使用,可能出现的问题
事例在Oracle数据库中执行SQL: select distinct name from tableName order by id 原本想过滤name字段重复值,并按照id进行排序,但是SQL报错,无法执行。原因:SELECT语句中含有DISTINCT关键字或者有运算符时,排序用的字段必须与SELECT语句中出现的字段相对应。网上搜到解释如下:在 ordere b...原创 2018-07-25 20:38:43 · 7859 阅读 · 0 评论 -
Oracle数据库日期格式转换函数
把日期格式转换to_char(FZRQ,’yyyy-mm-dd hh:mi:ss’)eg:select YSZBH, CYDW, to_char(FZRQ,'yyyy-mm-dd hh:mi:ss') as FZRQ, to_char(yxrq,'yyyy-mm-dd hh:mi:ss') as yxrq,KH, PWH, to_char(hjrq,'yyyy-mm-dd ...原创 2018-07-20 12:52:59 · 24089 阅读 · 0 评论 -
Oracle数据库 导入导出常用操作命令
该命令在“开始菜单>>运行>>cmd”中执行一、数据导出(exp.exe)1、将数据库orcl完全导出,用户名system,密码accp,导出到d:\daochu.dmp文件中 exp system/accp@orcl file=d:\daochu.dmp full=y 2、将数据库orcl中scott用户的对象导出 exp scott/accp@orcl ...转载 2018-07-25 20:53:09 · 436 阅读 · 0 评论 -
coalesce函数的用法
coalesce函数的参数是列,结果是取出第一个不为空的列的数据。postgre数据库中某个视图建立时使用: '002'::text || COALESCE(parent_id, ''::character varying)::text AS parent_id把某棵树的parent_id置为002或者002+数据表.parent_id(字段)首先,建一个视图:CREATE OR...原创 2018-12-13 15:24:27 · 11311 阅读 · 0 评论 -
查询Oracle数据库锁住的表Sql
1,查询Oracle数据库锁住的表Sqlselect 'alter system kill session ''' || b.session_id || ','||c.serial#||''';'killString,a.object_name,b.session_id,c.serial#,c.program,c.username,c.command,c.machine,c.lockwai...原创 2018-12-27 16:40:41 · 1419 阅读 · 0 评论 -
ORA-02195:尝试创建的PERMANENT对象在TEMPORARY表空间中
遇到了这个情况,首先查一下你当前用户的默认表空间是否是永久的(permanent).临时表空间是不能够存储数据的。语句如下:查找某用户的默认表空间和临时表空间:Select USERNAME 用户名,default_tablespace 默认表空间,temporary_tablespace 临时表空间 from dba_users Where username = '用户名(大写)'...原创 2018-07-20 10:43:31 · 8172 阅读 · 1 评论 -
备份一张表
1,aa_bb_cc原表名2,aa_bb_cc_bak 新表名 SQL:create table aa_bb_cc_bak as select * from aa_bb_cc原创 2019-01-17 19:17:58 · 972 阅读 · 0 评论 -
查询oracle表名中包含某个字符串的表名
select table_name from user_tables where table_name LIKE '%TABLENAMESTRING%';原创 2019-03-08 11:19:08 · 5616 阅读 · 0 评论 -
Oracle复制另外一张表结构到一张新表中
oracle复制另外一张表结构到一张新表中create table newtable as select * from oldtable where 1=2原创 2019-04-24 11:09:27 · 1642 阅读 · 0 评论 -
对比两张表的数据并筛选出数据不同的
描述:表A和表B的主键A1和B1是相同的,现在需要A2和B2比较,A3和B3比较,将A2不等于B2和A3不等于B3的数据从表A中筛选出来。这样的SQL语句怎么写?SQL语句对比两张表的数据并筛选出数据不同的公式如下:select A.* from A, B where A.A1=B.B1 -- 相同主键,做表连接.and A.A2 <> B.B2 ...原创 2018-07-23 13:48:03 · 9654 阅读 · 0 评论