
数据库
文章平均质量分 78
m_jack
这个作者很懒,什么都没留下…
展开
-
Oracle行转列、列转行的Sql语句总结
wm_concat函数首先让我们来看看这个神奇的函数wm_concat(列名),该函数可以把列值以","号分隔起来,并显示成一行,接下来上例子,看看这个神奇的函数如何应用准备测试数据SQL Code 1 2 3 4 5 6 createtabletest(idnumber,namevarchar2(20)); insertintotestvalues(1,'a'); insert...转载 2021-05-16 22:44:16 · 2555 阅读 · 0 评论 -
Oracle里面的外连中where和on之后and有啥区别
1、表做关联的时候有些条件写在where中,有些写在on之后关联条件的and中。那么有什么区别呢。2、我们指导,表关联一般分为两种:内联和外联。3、我们先来看内联。4、准备两个表做连接。表A:test_tb_stid;表B:test_tb_stscore;5、表A数据如下图:6、表B数据如下图:7、用红色字段stid作为关联条件8、内联,先把过滤条件放在and后: 1 2 3 4 5 selecta.*,b.转载 2021-04-20 16:26:16 · 994 阅读 · 0 评论 -
SQL行转列、列转行的简单实现
前言行列转换在做报表分析时还是经常会遇到的,今天就说一下如何实现行列转换吧。行列转换就是如下图所示两种展示形式的互相转换行转列假如我们有下表: 1 2 3 4 5 SELECT * FROM student PIVOT ( SUM(score) FOR subject IN (语文, 数学, 英语) ) 通过上面 SQL 语句即可得到下面的结果PIVOT 后跟一..转载 2021-03-19 11:12:25 · 4610 阅读 · 0 评论 -
in和exists的区别
in和exists的区别 表展示 首先,查询中涉及到的两个表,一个user和一个order表,具体表的内容如下: user表: order表: in 确定给定的值是否与子查询或列表中的值相匹配。in在查询的时候,首先查询子查询的表,然后将内表和外表做一个笛卡尔积,然后按照条件进行筛选。所以相对内表比较小的时候,in的速度较快。 具体sql语句如下: 1 SELECT 2 * 3 FROM 4.转载 2021-03-07 17:21:37 · 3455 阅读 · 0 评论 -
MySql数据库索引
https://blog.youkuaiyun.com/star1210644725/article/details/103413403https://blog.youkuaiyun.com/star1210644725/article/details/103414226https://blog.youkuaiyun.com/star1210644725/article/details/103414260转载 2021-03-04 17:44:19 · 231 阅读 · 1 评论 -
mysql组合索引没效果的原因
1.联合索引失效的条件联合索引又叫复合索引。两个或更多个列上的索引被称作复合索引。对于复合索引:Mysql从左到右的使用索引中的字段,一个查询可以只使用索引中的一部份,但只能是最左侧部分。例如索引是key index (a,b,c)。 可以支持a | a,b| a,b,c3种组合进行查找,但不支持 b,c进行查找 .当最左侧字段是常量引用时,索引就十分有效。 利用索引中的附加列,您可以缩小搜索的范围,但使用一个具有两列的索引不同于使用两个单独的索引。复合索引的结构与电话簿类似...转载 2021-03-01 17:26:26 · 1687 阅读 · 0 评论 -
Oracle中 Package与Package body的介绍
1、Oracle Package的作用: 可以简化应用设计、提高应用性能、实现信息隐藏、子程序重载2、ORACLE中的function 、package、package bodies、procedure的区别和相同: function有返回值,有参数;procedure无返回值,有参数;package、package body是同时存在的,就像.h和.cpp文件,如...转载 2019-03-07 17:40:03 · 2225 阅读 · 0 评论 -
记录处理(查找,过滤,删除)
HZT表结构ID intTitle nvarchar(50)AddDate datetime数据ID Title AddDate1 台州站长论坛1 2008-01-17 10:27:24.8272 台州站长论坛1 2008-03-17 10:27:21.7803 台州站长论坛2 2008-05-17 10:27:30.4204 台州站长论坛2 2008-09-1...转载 2019-03-19 15:39:51 · 574 阅读 · 0 评论 -
要提高SQL查询效率where语句条件的先后次序应如何写
我们要做到不但会写SQL,还要做到写出性能优良的SQL语句。(1)选择最有效率的表名顺序(只在基于规则的优化器中有效): Oracle的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表 driving table)将被最先处理,在FROM子句中包含多个表的情况下,你必须选择记录条数最少的表作为基础表。如果有3个以上的表连接查询, 那就需要选择交叉表(inte...转载 2018-11-22 22:35:35 · 753 阅读 · 0 评论 -
Oracle与PL/SQL是什么关系
ORACLE是数据库,有客户端和服务器; PLSQL Developer只是第三方工具,服务于ORACLE,类似的工具还有Toad,sqlplus,sql developer等等; 安装PLSQL Developer于安装oracle没啥关系,但是如果没有oracle客户端,你装了PLSQL Developer也没啥意SQL*Plus 是Oracle自带的数据库管理客户端,可以在这里编辑SQL...转载 2019-03-19 17:53:21 · 4395 阅读 · 1 评论 -
Oracle package包头和package body包体例子
一包的组成 包头(package):包头部分申明包内数据类型,常量,变量,游标,子程序和异常错误处理,这些元素为包的公有元素。 包主体(package body):包主体则是包定义部分的具体实现,它负责为包头中所声明子程序提供具体的实现,在包主体中还可以声明包的私有元素。 包头和包主体分开编译,并作为两个分开的对象分别存放在数据库字典中。 二 包的语法规则包头的语...转载 2019-03-07 20:15:19 · 1328 阅读 · 0 评论 -
PL/SQL设置快捷键
快速学会怎么自己设置快捷键,不需要总是看着别人输入SF,立马出现SELECT * FROM ...工具/原料 PL/SQL软件 方法/步骤 打开: Tools-->Preferences-->UserInterface-->Editor-->AutoReplace 将enable按钮勾选上,点击那个文件路径按钮 ...转载 2019-03-20 18:12:12 · 324 阅读 · 0 评论 -
看懂Oracle执行计划
最近一直在跟Oracle打交道,从最初的一脸懵逼到现在的略有所知,也来总结一下自己最近所学,不定时更新ing…一:什么是Oracle执行计划?执行计划是一条查询语句在Oracle中的执行过程或访问路径的描述二:怎样查看Oracle执行计划?因为我一直用的PLSQL远程连接的公司数据库,所以这里以PLSQL为例:①:配置执行计划需要显示的项:工具 —>...转载 2019-03-21 18:21:22 · 350 阅读 · 0 评论 -
oracle 进阶 connect by 和level 的用法
Oracle中start with…connect by prior子句用法connect by 是结构化查询中用到的,其基本语法是:1 select … from tablename2 start with 条件13 connect by 条件24 where 条件3;例:1 select * from table2 start with org_id = ‘HBHq...转载 2019-03-19 11:11:23 · 5916 阅读 · 0 评论 -
oracle的分组查询和连接查询
分组函数:六个常用的分组函数:AVG,SUM,MIN,MAX,COUNT,WM_CONCAT: 行转列PS:分组函数默认会自动过滤控制,可以使用NVL函数使分组函数无法忽略空值:未使用NVL函数: select sum(comm)/count(*) 一,sum(comm)/count(comm) 二,avg(comm) 三 from emp; --若有空记录,第一个结果和二三结...转载 2019-03-19 14:24:26 · 494 阅读 · 0 评论 -
PLSQL Developer使用技巧整理
Shortcut:===============================================================================Edit/Undo Ctrl+ZEdit/Redo Shift+Ctrl+ZEdit/PL/SQL Beautifier Ctrl+W (自定义) Shift+Home 选择光...转载 2019-02-20 21:15:06 · 2833 阅读 · 0 评论 -
pl/sql developer 查询语句无法使用中文条件
问题:我大天朝的数据库表格字段值很多带中文的,so通过where条件可能传的是中文值,使用pl/sql developer 查询,发现带中文条件查不出记录。解决办法:1、执行SELECT userenv('language') FROM dual;2、设置(新建)系统环境变量NLS_LANG,将查询到的值填入,重启pl/sql developer ----------------...转载 2019-02-23 10:45:01 · 1210 阅读 · 0 评论 -
MySql悲观锁和乐观锁的使用
现在我有一个购买商品的需求,我们知道当我们购买商品时,后台会进行减库存和增加购买记录的操作。我们分别在无锁和乐观锁和悲观锁进行相应的代码演示来说明问题。 建表语句如下:CREATE TABLE `stock` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(50) NOT NULL DEFAU...转载 2018-12-02 00:24:31 · 302 阅读 · 0 评论 -
Mysql共享锁、排他锁、悲观锁、乐观锁及其使用场景
一、相关名词|--表级锁(锁定整个表)|--页级锁(锁定一页)|--行级锁(锁定一行)|--共享锁(S锁,MyISAM 叫做读锁)|--排他锁(X锁,MyISAM 叫做写锁)|--悲观锁(抽象性,不真实存在这个锁)|--乐观锁(抽象性,不真实存在这个锁)二、InnoDB与MyISAMMysql 在5.5之前默认使用 MyISAM 存储引擎,之后使用 InnoDB 。查看当前存储...转载 2018-12-02 00:34:37 · 1863 阅读 · 0 评论 -
MySQL与Oracle的数据类型对照表
MySQL与Oracle两种数据库在工作中,都是用的比较多的数据库,由于MySQL与Oracle在数据类型上有部分差异,在我们迁移数据库时,会遇上一定的麻烦,下面介绍MySQL与Oracle数据库数据类型的对应关系。一、常见数据类型在MySQL与Oracle数据库中的表现形式 说明 mysql oracle 变长字...转载 2018-12-02 01:36:32 · 765 阅读 · 0 评论 -
MySQL与Oracle的区别之我见
1. 大的方面(宏观)Oracle为商用数据库,行业中占据相当的地位:市场占比2012年为40%。开发、管理资源相当丰富,有自己的metalink,我也曾用过,有什么问题,都能在那里得到较快速度的解决。开发用了近10年,虽然有些功能用起来挺鸡肋的(像分页),但它在OLTP/OLAP等方面确实都非常出色。我们一般项目中至少有两个Oracle数据库:联机事务处理(OLTP)数据库,联机分析处理数据...转载 2018-12-02 01:38:06 · 199 阅读 · 0 评论 -
mysql与Oracle的区别
一、并发性 并发性是oltp数据库最重要的特性,但并发涉及到资源的获取、共享与锁定。 mysql:mysql以表级锁为主,对资源锁定的粒度很大,如果一个session对一个表加锁时间过长,会让其他session无法更新此表中的数据。虽然InnoDB引擎的表可以用行级锁,但这个行级锁的机制依赖于表的索引,如果表没有索引,或者sql语句没有使用索引,那么仍然使用表级锁。 oracle:...转载 2018-12-02 01:41:57 · 189 阅读 · 1 评论 -
Mysql与Oracle的50个区别
1. 有些人说Oracle没有限制,实际上他们说得可能是Oracle不支持LIMIT语法.不过可以rownum虚列来实现,不过会更加麻烦. 2. Oracle不支持偏移(offset)语法. 3. Oracle的复制功能可能比MySQL更加健壮,不过也更加难以配置. 4. 对于多个Master类型的系统,大部分用户都希望你使用更加复杂也更加昂贵的Oracle RAC(虽然可...转载 2018-12-02 01:43:02 · 296 阅读 · 0 评论 -
mybaits存储过程oracle返回对象
存储过程在小公司用的不多,但是如果业务比较复杂或者性能要求比较苛刻的时候存储过程就派上用场了,ibatis的前期的一些版本貌似不支持存储过程因此我选择了mybatis来做实验。1.无输入和输出参数的存储过程,我写了一个比较简单的,需要注意的是Oracle无参存储过程不能写括号CREATE OR REPLACE Procedure cascadeoperationAsBegin De...转载 2018-12-08 02:03:03 · 770 阅读 · 0 评论 -
CONCAT两表关联字段
update ms_order set ms_order.note = (select CONCAT(place_id, place_name) from cm_merchant_place where id = ms_order.place_id and order_id='订单号' ) ,place_id = '指定的场所id' where order_id = '订单...原创 2018-12-28 17:23:03 · 682 阅读 · 0 评论 -
索引失效的若干种情况
0. 建表 上图首先建了一个staffs表,然后插入了三条数据,最后建立在一个组合索引2.索引优化 我们把组合索引比作成一辆火车,第一个字段为火车头,其他的字段比作一节车厢,火车能运行的前提条件是火车头不能断掉,如果中间车厢断了,那么后续车厢也不能跑了.总之能够跑动的车厢所代表的索引都有效.也就是说组合索引只有一部分索引字段被使用.一部分失效.2.1 全值匹配我...转载 2019-01-17 23:11:27 · 530 阅读 · 0 评论 -
SQL FROM大表和小表的顺序, %位置的性能影响
ORACLE 的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表 drivingtable)将被最先处理,在FROM子句中包含多个表的情况下,你必须选择记录条数最少的表作为基础表。如果有3个以上的表连接查询, 那就需要选择交叉表 (intersection table)作为基础表, 交叉表是指那个被其他表所引用的表....转载 2019-03-22 20:18:25 · 3538 阅读 · 0 评论 -
Oracle多表连接,提高效率,性能优化
执行路径:ORACLE的这个功能大大地提高了SQL的执行性能并节省了内存的使用:我们发现,单表数据的统计比多表统计的速度完全是两个概念.单表统计可能只要0.02秒,但是2张表联合统计就可能要几十表了.这是因为ORACLE只对简单的表提供高速缓冲(cache buffering) ,这个功能并不适用于多表连接查询..数据库管理员必须在init.ora中为这个区域设置合适的参数,当这个内存区域越大,就...转载 2019-03-22 20:21:04 · 1097 阅读 · 0 评论 -
那些字段适不适合建索引
数据库建立索引常用的规则如下:1、表的主键、外键必须有索引;2、数据量超过300的表应该有索引;3、经常与其他表进行连接的表,在连接字段上应该建立索引;4、经常出现在Where子句中的字段,特别是大表的字段,应该建立索引;5、索引应该建在选择性高的字段上;6、索引应该建在小字段上,对于大的文本字段甚至超长字段,不要建索引;7、复合索引的建立需要进行仔细分析;尽量考虑用单字段...转载 2019-05-28 11:30:19 · 4363 阅读 · 0 评论 -
oracle 自定义类型
例1:批量 查询部门号为"10"号的并把它们打印出来.DECLARE TYPE emp_table_type IS TABLE OF my_emp%ROWTYPE INDEX BY BINARY_INTEGER; v_emp_table emp_table_type;BEGIN SELECT * BULK COLLECT INTO v_emp_table ...转载 2019-06-05 14:36:00 · 904 阅读 · 0 评论 -
深入浅出分析MySQL索引设计背后的数据结构
在我们公司的DB规范中,明确规定: 1 2 1、建表语句必须明确指定主键 2、无特殊情况,主键必须单调递增 对于这项规定,很多研发小伙伴不理解。本文就来深入简出地分析MySQL索引设计背后的数据结构和算法,从而可以帮你释疑如下问题:1、为什么innodb表需要主键?2、为什么建议innodb表主键是单调递增?3、为什么不建议in...转载 2019-05-28 17:55:40 · 205 阅读 · 0 评论 -
面试问题:有没有用过分布式锁,怎么实现的
很多小伙伴在学习Java的时候,总是感觉Java多线程在实际的业务中很少使用,以至于不会花太多的时间去学习,技术债不断累积!等到了一定程度的时候对于与Java多线程相关的东西就很难理解,今天需要探讨的东西也是一样的和Java多线程相关的!做好准备,马上开车!学过Java多线程的应该都知道什么是锁,没学过的也不用担心,Java中的锁可以简单的理解为多线程情况下访问临界资源的一种线程同步机制。...转载 2019-05-29 17:24:59 · 296 阅读 · 0 评论 -
Index Full Scan && Index Range Scan
Index Full Scan reads the whole index, in an ordered manner (i.e. it "walks" the index from the lowest value to the highest value).(Index Fast Full Scan reads the whole index, without bothering about...转载 2019-08-02 16:29:20 · 1342 阅读 · 0 评论 -
一个sql窗口的调试
declare-- v_policy_id number:= 22841;--22841(L) 22815(T)-- v_NB_install_times number:= 1;-- v_charge_period number :=1;--T_CHARGE_PERIOD 1:Single 2: Year-- v_charge_mode number :=1;--T_CHARGE_...原创 2019-08-28 11:48:49 · 623 阅读 · 0 评论 -
Oracle10g 数据类型
Oracle数据类型定义了:1.标量(SCALAR)、2.复合(COMPOSITE)、3.引用(REFERENCE)4.LOBl标量(SCALAR)合法的标量类型与数据库的列所使用的类型相同,此外它还有一些扩展。它又分为七个组:数字、字符、行、日期、行标识、布尔和可信。n数...转载 2019-09-07 11:26:26 · 458 阅读 · 0 评论 -
如何防止建立的索引失效?
(一)在使用索引的时候,需要注意的几个地方来防止索引的失效当你使用索引的时候,最好能够把你建立的索引的字段都给用到。不仅可以提供查询的效率最佳左前缀法则,意思就是当你如果有建立过多个字段索引的组合索引的时候,最要遵循最左前缀法则,就是指当MySQL在使用索引查询的时候不会跳过中间已经建立好的索引列不能在索引列上做任何操作(比如使用函数、计算、类型转换),这样也会导致索引失效然后进行全表扫描。...转载 2019-05-27 15:45:20 · 283 阅读 · 0 评论 -
脏读,不可重复读,幻读
脏读,不可重复读,幻读是由于数据库事务的隔离性导致的问题。脏读:一个事务读取到了其它未提交事务操作的记录。不可重复读:一个事务A内,首次查询到一条相同记录,然后事务B修改该条记录并提交,事务A再次执行相同查询,得到了事务B更新后的结果,事务A两次相同的查询,却得到了不同的结果,这个叫做不可重复读。是由于已提交事务B对事务A造成了影响(对于查询操作)。幻读:一个事务A内,先查询某条不存在...转载 2019-05-27 14:04:05 · 172 阅读 · 0 评论 -
oracle中的会话与事务的区别
oracle中有两个概念,会话与事务。很多朋友可能还不是很明白这二者到底有什么区别。会话,即session,当你使用工具如sqlplus或者toad执行连接,连接到某个数据库的时候,就开启了一个会话,直到你关闭这次连接,这个会话才算结束。事务,即transaction,是一个由多条SQL语句组成的工作逻辑单元,这些语句要么全部执行成功,要么全部不执行。只有commit,rollback,或...转载 2019-05-13 14:59:43 · 1585 阅读 · 0 评论 -
coalesce---一个很有用的函数
在sql中,其实有不少方法和函数是很有用的,一个叫coalesce的,作用是将返回传入的参数中第一个非null的值,比如SELECT COALESCE(NULL, NULL, 1);-- Return 1SELECT COALESCE(NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 1);-- Return 1如果传入的...转载 2019-04-04 20:04:27 · 1078 阅读 · 0 评论 -
Oracle中组合索引
INDEX SKIP SCAN是9i之后提供的新功能,实现了即使WHERE条件中不存在索引的前导列也可以使用索引。但是INDEX SKIP SCAN是需要下面几个条件的:1,版本9i及以后2,CBO(表和索引都经过分析)3,索引的前导列重复值很少(选择性低)4,WHERE条件中不存在索引前导列举例:1,建立测试环境Sql>select * from v$version;...转载 2019-05-24 14:28:27 · 1274 阅读 · 0 评论