数据库
文章平均质量分 84
菜菜的中年程序猿
热爱编程的2B小青年
展开
-
概念数据模型、逻辑数据模型、物理数据模型
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声...转载 2019-11-21 00:38:14 · 1218 阅读 · 0 评论 -
oracle sql 高级编程学习笔记(二十八)
反联结定义1.1、not in 实例演示1.2、not exists实例演示1.3、not in 空值问题1.4、反联结的其他实现形式1.4.1、minus1.4.2、利用外联结二、反联结的必要条件三、反联结的限制条件四、反联结执行计划4.1、not exists 执行计划4.2、没有空值约束的not in 执行计划4.3、空值约束的 not in 执行计划4.4、minus4.5、left o...原创 2018-09-30 09:11:42 · 1001 阅读 · 0 评论 -
oracle sql 高级编程学习笔记(二十七)
半联结定义一、半联结必要条件二、半联结执行计划1、in 执行计划2、exists执行计划三、控制半联结执行计划1、提示控制半联结执行计划2、使用always_semi_join参数控制半联结四、 半联结限制条件半联结定义当两张表进行联结的时候,如果表1中的数据行是否出现在结果集中需要根据表2中出现或不出现至少一个相匹配的数据行来判断,这种情况就会发生半联结;而反联结便是半联结的补集,它们会作...原创 2018-09-29 09:34:07 · 360 阅读 · 0 评论 -
oracle sql 高级编程学习笔记(二十六)
递归子查询因子化 recursive subquery factoring RSF在上篇文章中我们用connect by 演示了递归功能,本文将用RSF进行演示一、实例演示实现connect by同样功能with emp as (select e.last_name, e.first_name, e.employee_id, e.manager_id from employee...原创 2018-09-28 10:02:31 · 597 阅读 · 0 评论 -
oracle sql 高级编程学习笔记(二十五)
connect by 递归查询实例演示1、 connect by 演示递归查看所有员工之间组织关系select lpad(' ', level * 2 - 1, ' ') || emp.last_name emp_last_name,-- level 伪列保存了递归的深度值 level =2 表示 递归了2-1层,即只查询KING id为100的所有直接下属 见下面伪列演示--这里...原创 2018-09-27 09:40:02 · 319 阅读 · 0 评论 -
oracle sql 高级编程学习笔记(二十四)
子查询因子化实例演示1、使用子查询因子化2、使用INLINE提示,查询因子做内联处理。3、再增加一次结果集的引用4、增加一次结果集 使用内联 *+inline在oracle 官方文档中有如下一段话:注意,oracle 可能将因子化的子查询作为临时表来处理,在一个表被多次引用的查询中,这可能是独特的性能优势,因为oracle可以物化查询结果集 从而避免多次执行一些非常耗费资源的数据库运算。...原创 2018-09-20 15:03:18 · 394 阅读 · 0 评论 -
oracle sql 高级编程学习笔记(二十三)
继上一篇中讲到model子句的性能优化,本文将继续学习model子句查询重写的优化:一、谓语前推1、实例演示:select * from (select product, country, year, week, inventory, sale, receipts from sales_fact model return updated rows part...原创 2018-09-15 11:20:02 · 319 阅读 · 0 评论 -
oracle sql 高级编程学习笔记(二十二)
一、model 空值model 子句存在空值的原因有两个 1、单员格存在,但值为空 2、单元格不存在1、实例演示 navselect product, country, year, week, sale from sales_fact where country = 'Australia' and ...原创 2018-09-14 14:16:25 · 321 阅读 · 0 评论 -
oracle sql 高级编程学习笔记(二十一)
一、行求解顺序select product, country, year, week, inventory, sale, receipts from sales_fact where country = 'Australia' and product = 'Xtend Memory' model return updated rows partition by(pr...原创 2018-09-14 09:23:00 · 442 阅读 · 0 评论 -
oracle sql 高级编程学习笔记(二十)
一、Model 子句剖析:通过 model return updated rows 或者model来声明这个语句 使用model子句。一个model子句有三组列,分区列,唯独列, 以及度量值列。 分区列类似于电子表格excel中的一张工作表, 维度列类似于行标签(A,B,C……)和列标签(1,2,3……) 度量值类似于 含有公式的单元格实例演示:实现求某地区某周的库存...原创 2018-09-13 09:27:36 · 429 阅读 · 0 评论 -
oracle sql 高级编程学习笔记(十九)
继续上篇oracle sql 高级编程学习笔记(十八):https://blog.csdn.net/whandgdh/article/details/82662267 中使用cube函数的例子 我们按照大类和小类分组求销售额select t.main_type, t.small_type,sum(t.sales_mount)sales_mount from test_cube t ...原创 2018-09-12 15:35:38 · 316 阅读 · 0 评论 -
oracle sql 高级编程学习笔记(十八)
一、group by 子句优点1、使sql语句更具可读性 2、书写起来比使用很多相关子查询更简单 3、减少了重复访问同一个数据块的次数(从而也得到了更好的性能)二、group by的局限性1、LOB列,嵌套或数组不能用作group by表达式的一部分 2、标量子查询表达式是不允许的 3、如果group by 子句引用任何对象类型的列,则查询不能并行化实例演示wi...原创 2018-09-12 15:25:49 · 401 阅读 · 0 评论 -
数据库报错完美解决:ORA-01034以及ORA-00119、ORA-00132
今天学习监听时,配置监听后,重启数据库后,用sqlplus以dba连接数据库时报错, ORA-01034: ORACLE not available错误提示数据库不可以用,查看实例是否启动select status from v$instance根据上面信息 表示 实例都没有启动,数据库启动的三个阶段第一个阶段没有完成数据库启动第一个阶段:oracle 会读取一个参数文件,这...原创 2019-03-21 11:03:40 · 1532 阅读 · 0 评论 -
oracle sql 高级编程学习笔记(二十九)
DML错误日志使用语法一、实例演示1、创建错入日志表2、声明 log error子句2.1 不设置reject limit插入数据2.2 加入reject limit 再进行插入二 、使用DML错误记录注意事项三、当基表中含有不支持的数据类型列时,创建Errors表的正确语法DML错误日志这个功能提供一个机制来使得你的一百万行数据插入不会仅仅由于几行数据有问题而失败。这个特性在10gR2中引...原创 2018-10-10 13:21:11 · 1234 阅读 · 0 评论 -
Oracle 数据连接:ORA-12641: 验证服务无法初始化解决
在windows 系统下用sqlplus 链接数据库时报错ORA-12641: 验证服务无法初始化。网上说是sqlnet.ora配置问题。该配置文件在oracle_home/network/admin下本例配置如下:SQLNET.AUTHENTICATION_SERVICES这个参数表示连接数据库的认证方式,all表示所有认证都可以。既然有问题,就改成了NTS 表示操作系统身份验证...原创 2019-03-21 22:47:10 · 9545 阅读 · 0 评论 -
Oracle10046事件和10053事件实例演示
一、10046事件二、10053跟踪事件一、10046事件sql_trace(或者10046跟踪事件)sql_trace跟踪的内容由三个部分组成:执行语句时造成的等待事件(waits)、执行语句时产生的性能统计数据,以及语句执行计划和绑定变量的信息。再回话或者系统启动sql跟踪后,会话结束或者关闭sql跟踪前,会话(或系统中)所有运行的语句性能统计数据都会记录到udump目录(use...原创 2019-06-21 14:53:39 · 1465 阅读 · 0 评论 -
windows生成awr报告
1、开始压测2、 结束压测3、运行awrrpt.sql脚本4、选择生成报告格式5、选择生成报告日期6、选择snpID7、选择报告保存路径以及名字8、打开awr报告用dba账户登录1、开始压测执行如下语句 exec DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT (); 2、 结束压测执行如下语句exec DBMS_WORKLOAD_REPOS...原创 2019-05-28 09:31:43 · 1923 阅读 · 4 评论 -
ORACLE 中丢失更新以及实例演示
一、丢失更新问题二、丢失更新实例演示一、丢失更新问题丢失更新 是一个经典的数据库问题出现下面情况时就会发生丢失更新1、会话1的一个事务获取(查询)了一行数据,放入本地内存,并显示给一个最终用户user1.2、会话2 中的另一事务也获取了这一行,并将数据显示给另一个最终用户user23、user1使用应用修改了这一行数据,并让应用更新数据库并提交,会话1中的事物现在已经完成4、us...原创 2019-05-23 17:18:38 · 578 阅读 · 0 评论 -
创建外部表时,ORA-30657以及 返回0行数据
今天把数据导入另外一个库时,通过外部表的形式,具体怎么创建 见 :oracle 创建外部表实例演示https://blog.csdn.net/whandgdh/article/details/89381072创建外部表数据代码如下:create table grbillin_ext( genbillno VARCHAR2(36) not null , riskcode ...原创 2019-05-07 15:30:40 · 1656 阅读 · 2 评论 -
oracle集合类型详解
1.集合类型1.1关联数组1.2嵌套表1.3 可变长的数组2.声明集合类型2.1声明关联数组2.2声明嵌套表2.3声明VARRAY3.集合变量的声明和初始化3.1集合变量的声明3.2集合变量的初始化3.2.1通过构造函数的显示初始化3.2.2直接赋值时的隐式初始化3.2.3通过FETCH操作的隐式初始化3.2.4通过BULK COLLECT语句的隐式初始4.集合方法5.集合类型对比6.集合示例6...转载 2019-05-18 22:27:25 · 8532 阅读 · 0 评论 -
oracle进程学习
一、服务器进程oracle创建服务器进程,并用服务器进程来处理用户进程的请求。某些情况下,如果应用程序和oralce在同一台机器上,为了减少系统的负载,oracle会把用户进程和服务器进程合并在一个进程。如果应用程序和oralce在不同的机器上,则用户进程通过网络和服务器进程通信。服务器进程负责下面的工作:1、对sql进行语法解析和执行2、需要数据的时候,如果数据不在SGA中,服务器进程会...原创 2019-04-19 15:00:29 · 272 阅读 · 0 评论 -
oracle 创建外部表实例演示
一、外部表定义二、创建外部表2.1 创建外部表相关路径以及数据文件2.2创建数据库目录对象2.3 授权2.4 创建外部表2.5 查看外部表数据一、外部表定义外部表是这样的表,数据库只存放外部表的定义,外部表的数据存放在数据库之外,创建外部表的sql语句分成两部分,一分部分描述列的定义,另外一部分描述外部数据源如何映射成数据库的数据列。外部表的数据以文件的信息存放在操作中,简单地说,外部表...原创 2019-04-18 16:05:01 · 634 阅读 · 0 评论 -
oracle数据库range分区以及子分区
oracle 11g下自带样例,sh 用户下 sales 表数据 有91w条数据select count(1) from sales t;我们用sales 表数据来重新建表并进行分区,比较分区与不分区的效率,以及分区后分区局部索引与位图索引的效率比较。1、 创建包含主分区表和子分区表sales_part_test都按照time_id字段进行分区create table sales...原创 2019-04-18 14:29:52 · 10921 阅读 · 0 评论 -
oracle聚簇实例演示
一、聚簇概念定义二、创建聚簇三、创建聚簇表三、创建聚簇索引四、删除聚簇五、查看表属于哪个聚簇一、聚簇概念定义聚簇表是一种特殊的结构。一个聚簇由多个表组成,几个表共享相同的数据块。一个聚簇有一个或者多个公共的列,多表共享这些列,我们把这样的列叫聚簇关键字(Cluster key)oracle 把多个表的数据物理地址存储在一起,以加速表的连接创建聚簇后,才能在聚簇中创建表,这些表叫聚簇表,...原创 2019-04-26 00:16:33 · 509 阅读 · 0 评论 -
ORA-12154: TNS: 无法解析指定的连接标识符和TNS-03505: 无法解析名称问题解决以及监听相关错误问题解决思路
今天通过plsql 连接本地的数据库是,报如下错误ORA-12154: TNS: 无法解析指定的连接标识符先查看本地数据监听是否启动:可以通过任务管理器查看,本地数据库服务的监听也启动或者通过命令 lsnrctl 查看在cmd窗口中输入 lsnrctl然后在弹出的窗口中输入status看到本地监听启动没有问题, 查看本地服务监听配置文件:listener.ora 位置在or...原创 2019-04-03 23:48:49 · 7215 阅读 · 2 评论 -
oracle sql 高级编程学习笔记(十七)
查看任何之前已经执行过的sql语句保存在库高速缓存中的执行计划,最简单方法就是使用dbms_xplan.display_curor函数 使用 gather_plan_statistics 提示 则在sql执行后,会在v$sql_plan_statistics_all视图中查到SQL的执行统计信息,例如逻辑读,物理读取次数,物理写入次数以及每一个运算在一行数据上的运行时间。 或者也可以将stati...原创 2018-09-06 14:39:34 · 294 阅读 · 0 评论 -
oracle sql 高级编程学习笔记(十六)
使用解释执行有下面三点可能导致解释执行计划与实际执行不一致。 1、解释执行计划是基于你使用它的时候的环境来产生的 2、解释执行计划不考虑绑定变量的数据类型(所有变量都是varchar2类型) 3、解释执行计划不窥视绑定变量的值create table regions_2 (region_id varchar2(10) primary key,region_name varchar...原创 2018-09-06 14:34:47 · 295 阅读 · 0 评论 -
oracle sql 高级编程学习笔记(九)
一,高水位线定义高水位线好比水库中储水的水位线,用于描述数据库中段的扩展方式。高水位线对全表扫描方式有着至关重要的影响。当使用delete 操作 表记录时,高水位线并不会下降,随之导致的是全表扫描的实际开销并没有任何减少。下图给出高水位线的描述,如何降低高水位线,以及高水位线对全表扫描的影响。 二、实例演示创建表t1_bak 收集t1_bak表 统计信息 exec d...原创 2018-08-26 09:57:31 · 414 阅读 · 0 评论 -
oracle sql 高级编程学习笔记(八)
全扫描与多块读取全扫描运算将会进行多块读取。就是说一个单独的IO调用将会请求多个块而不是仅仅一个。所附求的数据块数目可以通过db_fi 1 c_trtultiblock_read_count 参数所指定的数目范国之间的任意个。 如果这个参数设定为16,而表中有160个块,可以只通过10次调用就可以来获取所有的数据块。我说可以仅通过10次调用就可以来获取是因为下面这些关于多块读取调用的限制...原创 2018-08-26 09:43:31 · 320 阅读 · 0 评论 -
oracle sql 高级编程学习笔记(七)
一、全表扫描实例演示--在dba 权限下创建表t1 并建索引create table t1 asselect trunc((rownum-1)/100) id,rpad(rownum,100) t_pad from dba_source twhere rownum<=10000;create index t1_idx1 on t1(id);创建表T2 create t...原创 2018-08-26 09:26:49 · 400 阅读 · 0 评论 -
mysql 下载安装教程以及密码初始化
一、mysql 下载安装 官网地址:https://dev.mysql.com/ 下载历史版本: 下载5.7.11 二、安装mysql 下载好mysql后,将软件解压自己想要的位置,不需解压,并把目录下的如下图文件改为my.ini 并在解压目录下新建文件夹data 然后用将配置文件my.ini,内容改为如下[mysqld] #设置3306端口 ...原创 2018-06-25 15:02:11 · 5946 阅读 · 2 评论 -
wm_concat 多行字符串拼接以及字符串拆分详解
一、wm_concat 多行字符串拼接 有如下员工部门表emp_dept,数据如下: ; 需要实现如下结果 就需要用到wm_concat 函数: sql如下:select dept_name 部门, wm_concat(t.emp_name) 员工 from emp_dept t group by dept_name但是这样的查询结果却是: 这里还需要to_cha...原创 2018-06-13 16:51:34 · 15357 阅读 · 1 评论 -
Oracle pivot 行转列、unpivo列转行函数使用详解
一 pivot函数表达式: 有一个职工部门工资表pivot_tmp,数据如下: 如果我们想要求各部门的工资和,很简单一个sum和group by 就满足了。select t.dept_name 部门,sum(t.salary) 工资总额 from pivot_tmp t group by t.dept_name;执行结果: 但是如果我们要求结果显示如下呢: 可以先...原创 2018-06-13 15:32:25 · 4462 阅读 · 0 评论 -
oarcle数据库怎么将大量数据导成excel文件
今天提了清单有近200万条数据,接着将数据导为xlsx格式的excel文件时报错,百度了下,是因为xlsx格式的excel最多存1048576条数据。研究了许久,终于找到答案:就是先将查询文件导为csv文件,再通过access工具转为excel文件。而且效率高。 第一步,将执行结果转为csv文件,注意的是只需要sql执行出结果即可,不必要像导excel文件那样,要等所有的数据查询出来: s...原创 2018-05-22 17:19:32 · 3089 阅读 · 1 评论 -
oracle 存储过程锁表解锁
存储过程解锁语法如下,前提是要有dba权限,不然会提示表或者视图不存在。--1.查找用户user下的被锁定的存储过程select * from V$DB_OBJECT_CACHE where owner='user' AND LOCKS!='0';--2.通过查出来的存储过程名查找sidselect sid,sql_text from v$open_cursor where UPPER(...原创 2018-04-24 10:51:37 · 2393 阅读 · 0 评论 -
Oracle trunc 函数用法详解
trunc 函数用法 用于截取时间或者数值,返回指定的值一、截取时间select trunc(to_date('2018-02-01 1:00:00','YYYY-MM-DD HH:MI:SS'),'yyyy') from dual ;--返回当年第一天select trunc(to_date('2018-02-01 1:00:00','YYYY-MM-DD HH:MI......原创 2018-03-23 10:05:49 · 110853 阅读 · 2 评论 -
oracle DbLink详解
前言 在上篇博客对于不同库创建同义词时,只是简单提了下dblink,并没有进行深入讲解,在此再对dblink进行深入学习。 一、定义 Dblink(database link),,英文翻译就是数据库连接,就是指不同数据库之间的访问。 二、语法CREATE PUBLIC DATABASE LINK db_link_name CONNECT TO username IDENTIFIE...原创 2018-02-08 10:29:17 · 26966 阅读 · 2 评论 -
Oracle数据库同义词详解
一、定义 同义词顾名思义,是数据库方案对象的一个别名。这里的数据库方案对象指表、视图、序列、存储过程、包等。 二、同义词的好处 1、不占内存空间,节省大量的数据库空间 2、简化了数据库对象的访问 3、提高了数据库对象访问的安全性 4、扩展的数据库的使用范围,能够在不同的数据库用户之间实现无缝交互;同义词可以创建在不同一个数据库服务器上,通过网络实现连接 三、创原创 2018-02-07 10:29:58 · 4789 阅读 · 3 评论 -
oracle sql 高级编程学习笔记(三)
一、优化器Oracle数据库中的优化器又叫查询优化器(Query Optimizer)。它是SQL分析和执行的优化工具,它负责生成、制定SQL的执行计划。Oracle的优化器有两种,基于规则的优化器(RBO)与基于代价的优化器(CBO) RBO: Rule-Based Optimization 基于规则的优化器 CBO: Cost-Based Optimizat...原创 2018-08-22 15:33:08 · 553 阅读 · 0 评论 -
oracle sql 高级编程学习笔记(四)
优化器确定了执行计划,并保存导库高速缓存区中以备日后使用,实际上下一步就是执行 计划并取得数据行。 执行计划就是告诉oracle对于每一个表对象如何访问以及什么联结方式和联结顺序来将多个表联结到一起的一系列指令。 执行计划的每一个步骤会产生一个行源,然后与另外一个行源联结,直到所有的对象都被访问和联结。 满足查询条件的行必须从数据库返回给应用。对于任何大小的结果集,需要返回的数据行可能不会在...原创 2018-08-22 15:49:41 · 439 阅读 · 0 评论