数据库
xlj3
静以修身,俭以养德
展开
-
mysql group by前n条分组
具有比较值的栗子如下,如果不具有比较值,则使用统计总数,生成比较值select Person,[group],agefrom(select * ,row_number() over(partition by [group] order by age desc) rnfrom mytable) twhere rn <= 2生成比较值SELECT a.*FROM (select depart_id,bu_id,login_name, count(1) total from data i原创 2021-07-05 16:56:08 · 214 阅读 · 0 评论 -
回顾篇-mysql索引-读书笔记
事务日志事务日志可以帮助提高事务的效率。使用事务日志,存储引擎在修改表的数据时只需要修改其内存拷贝,再把该修改行为记录到持久在硬盘上的事务日志中,而不用每次都将修改的数据本身持久到磁盘。事务日志采用的是追加的方式,因此写日志的操作是磁盘上一小块区域内的顺序I/O,而不像随机I/O需要在磁盘的多个地方移动磁头,所以采用事务日志的方式相对来说要快得多。事务日志持久以后,内存中被修改的数据在后台可以慢慢地刷回到磁盘。目前大多数存储引擎都是这样实现的,我们通常称之为预写式日志(Write-Ahead Lo...原创 2020-06-20 19:45:07 · 223 阅读 · 0 评论 -
回顾篇-mysql索引
磁盘基本概念磁盘由大小相同且同轴的圆形盘片组成,磁盘的一侧有磁头支架,磁头支架固定了一组磁头,每个磁头负责存取一个磁盘的内容。磁盘块/簇(虚拟出来的)。 块是操作系统中最小的逻辑存储单位。操作系统与磁盘打交道的最小单位是磁盘块。通俗的来讲,在Windows下如NTFS等文件系统中叫做簇;在Linux下如Ext4等文件系统中叫做块(block)。每个簇或者块可以包括2、4、8、16、32、64…2的n次方个扇区。为什么存在磁盘块?读取方便:由于扇区的数量比较小,数目众多在寻址时比较困难,所以操作原创 2020-06-19 17:17:15 · 200 阅读 · 0 评论 -
查看重复数据
select * from test1 where name in (select name from test1 group by name having count(1)>3)原创 2017-02-27 11:16:38 · 252 阅读 · 0 评论 -
oracle索引(包括复合索引)
在关系数据库中,索引是一种与表有关的数据库结构,它可以使对应于表的SQL语句执行得更快。索引的作用相当于图书的目录,可以根据目录中的页码快速找到所需的内容。 对于数据库来说,索引是一个必选项,但对于现在的各种大型数据库来说,索引可以大大提高数据库的性能,以至于它变成了数据库不可缺少的一部分。 索引特点: 第一,通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。转载 2017-03-28 11:37:55 · 963 阅读 · 0 评论 -
游标循环loop,while和for的性能比较
利用游标循环取大量数据时,性能显得十分重要,现在对三种循环进行一下性能的比较:一、测试环境配置:硬件 : HP笔记本 intel core(TM)2 主频2.0GHz 3G内存 win7操作系统工具 : PL/SQL数据库 : oracle -----------------------------------------------转载 2017-03-28 17:01:05 · 4147 阅读 · 0 评论 -
不走索引的情况
1、条件字段选择性弱,查出的结果集较大,不走索引;2、where条件等号两边字段类型不同,不走索引;3、优化器分析的统计信息陈旧也可能导致不走索引;4、索引字段 is null 不走索引;5、对于count(*)当索引字段有not null约束时走索引,否则不走索引;6、like 后面的字符当首位为通配符时不走索引;7、使用不等于操作符如:8、索引字段前加了函数或参加了转载 2017-04-09 13:46:12 · 3130 阅读 · 0 评论 -
oracle字段like
oracle的sql的||代表+含义 SELECT A.TRADE_ID TRADEID,B.PROP_VALUE ORDERVALUE,B.TRADE_ID ORDERID, A.ROWID AS AROWID, B.ROWID BROWID FR原创 2017-03-28 17:03:07 · 4281 阅读 · 0 评论 -
SQL用and和or多表查询笛卡尔积
原因:and或or都要有过滤条件才行,比如SELECT T1.* from T_DC_ORDER_CENTER_DETAIL T1, TD_S_COMMPARA T2 WHERE T1.CHANNEL_CODE = T2.VALUEC1 AND T1.AUDIT_FLAG is null or (T1.AUDIT_FLAG = 2 and T1.CHANNEL_CO原创 2017-03-19 14:51:00 · 1851 阅读 · 0 评论 -
Oracle创建新用户以及导入数据表dmp文件
创建用户名之前,需要以用户管理员身份登陆数据库1、在创建用户之前,先要创建表空间:其格式为:格式: create tablespace 表间名 datafile ‘数据文件名’ size 表空间大小;例如: SQL> create tablespace mytable datafile 'd:\myoracle\mytables1.dbf' size 1024转载 2017-02-15 20:52:34 · 541 阅读 · 0 评论 -
导入数据出错With the Partitioning, OLAP and Data Mining options
因为oracle没有启动分区Partitioning;启动方法:pl/sql执行:select * from v$option where parameter = 'Partitioning';原创 2017-02-15 20:43:00 · 12847 阅读 · 3 评论 -
查询db_link - 查询所属表空间 - 赋予dba权限进行导入 - 创建用户赋予查询权限
select * from dba_db_links; --查询db_linkselect username, default_tablespace from user_users; --查询所属表空间grant dba to dzqd--赋予dba权限进行导入;--创建用户赋予查询权限create user db_dzqd identified by db_dzqd;gra原创 2017-03-02 15:13:35 · 1703 阅读 · 0 评论 -
REGEXP_SUBSTR函数,感觉像行专列
/*REGEXP_SUBSTR函数格式如下:function REGEXP_SUBSTR(String, pattern, position, occurrence, modifier)__srcstr :需要进行正则处理的字符串__pattern :进行匹配的正则表达式__position :起始位置,从第几个字符开始正则表达式匹配(默认为1)__原创 2017-02-22 11:40:01 · 1629 阅读 · 0 评论 -
存储过程中的when others then 和 raise 何意义?
EXCEPTION when others then rollback; dbms_output.put_line('code:' || sqlcode); dbms_output.put_line('errm:' || sqlerrm); raise;when others then和raise;分别是什么意思 异常分很多种类,如NO_F转载 2017-02-21 21:22:02 · 5649 阅读 · 0 评论 -
oracle正则表达式regexp_like的用法详解
ORACLE中的支持正则表达式的函数主要有下面四个:1,REGEXP_LIKE :与LIKE的功能相似2,REGEXP_INSTR :与INSTR的功能相似3,REGEXP_SUBSTR :与SUBSTR的功能相似4,REGEXP_REPLACE :与REPLACE的功能相似它们在用法上与Oracle SQL 函数LIKE、INSTR、SUBSTR 和REPLACE 用法相同,但是它们转载 2017-03-29 15:12:51 · 13368 阅读 · 1 评论 -
oracle追加内容
UPDATE TEST1 SET A = A ||',1' WHERE A=2;commit;SELECT * FROM TEST1;原创 2017-03-28 17:28:36 · 815 阅读 · 0 评论 -
select concat('a','b') from dual; select 'a'||'b' from dual;
select concat('a','b') from dual;select 'a'||'b' from dual;原创 2017-03-22 20:25:34 · 2183 阅读 · 0 评论 -
mysql小时分组
SELECT date_format(Time, '%Y-%m-%d %H:%i:%S') AS DATE, -- 日期分組 date_format(Time, '%H') AS HOUR, -- 小時分組 count(*) AS TOTAL -- 統計條數FROM timeseriesGROUP BY date_format(Time, '%H')ORDER BY date_format(Tim...原创 2018-04-12 10:32:03 · 476 阅读 · 0 评论 -
myslq服务安装启动
D:\Program Files (x86)\MySQL\MySQL Server 5.5\bin>mysqld.exe -installService successfully installed.D:\Program Files (x86)\MySQL\MySQL Server 5.5\bin>net start mysql原创 2017-11-13 17:50:18 · 268 阅读 · 0 评论 -
oracle时间获取记录
select trunc(sysdate) from dual;--2017/9/11select trunc(sysdate) + 1 from dual;--2017/9/12select sysdate from dual; --从系统获取时间2017/9/11 9:20:56原创 2017-09-11 09:22:37 · 285 阅读 · 0 评论 -
create user rm identified by rmrm;-- 创建新的用户 --grant 权限1、权限2...to 用户 给创建用户权限 --ex:grant create ses
create user rm identified by rmrm;-- 创建新的用户 --grant 权限1、权限2...to 用户 给创建用户权限 --ex:grant create session to [username] 此时只能连接到数据库 grant dba to rm;grant all privileges to rm;grant connect,reso原创 2017-09-09 15:19:40 · 479 阅读 · 0 评论 -
oracle delete了数据表,吓死我了!!
我用的是第一种方法::------------------------------华丽分割线--------------------------------一:根据时间来恢复:1、查询数据库当前时间(目的是为了检查数据库时间是否与你电脑时间相近,避免时间不同而将数据恢复到错误时间点)select to_char(sysdate,'yyyy-转载 2017-04-25 11:06:38 · 479 阅读 · 0 评论 -
PL/SQL Developer连接本地Oracle 11g 64位数据库
这里省略Oracle数据库和PL/SQL Developer的安装步骤,注意在安装PL/SQL Developer软件时,不要安装在Program Files (x86)目录下,不然无法启动PL/SQL Developer。 奇怪这里为什么选择不到数据库的TNS呢?我是先安装数据库,再安装PL/SQL Developer。按理说安装PL/SQL Developer时,就已经识别到转载 2017-04-04 10:30:59 · 621 阅读 · 0 评论 -
用PL/SQL Developer导出表数据的时候,窗口一闪而过解决办法
自己遇到的一个问题,记录下来,以防以后忘记。设置环境变量就可以了。变量名:ORACLE_HOME变量值:为ORACLE安装bin目录的上一级目录,假如你的bin目录就在d:\oracle\bin 那么变量值就设置为d:\oracle转载 2017-04-05 19:05:21 · 2710 阅读 · 0 评论 -
用PL/SQL Developer导出表数据的时候,窗口一闪而过解决办法
自己遇到的一个问题,记录下来,以防以后忘记。设置环境变量就可以了。变量名:ORACLE_HOME变量值:为ORACLE安装bin目录的上一级目录,假如你的bin目录就在d:\oracle\bin 那么变量值就设置为d:\oracle转载 2017-04-05 19:04:14 · 1237 阅读 · 0 评论 -
行转列
with temp as( select 'China' nation ,'Guangzhou' city from dual union all select 'China' nation ,'Shanghai' city from dual union all select 'China' nation ,'Beijing' city from dual union a原创 2017-03-23 22:41:27 · 509 阅读 · 0 评论 -
表逗号分隔行转列
table 1 : code wgz062 001,00023 001,0002,00003table 2:id name001 数学0002 体育00003 美术要求结果code sql_name1 数学2 数学,体育3 数学,体育,美术收起只需要查询出结果with temp1 as(select a.*,length(转载 2017-03-23 22:28:27 · 766 阅读 · 0 评论 -
oracle的引号和竖线连接符
在ORACLE中,单引号有两个作用,一是字符串是由单引号引用,二是转义。单引号的使用是就近配对,即就近原则。而在单引号充当转义角色时相对不好理解 1、从第二个单引号开始被视为转义符,如果第二个单引号后面还有单引号(哪怕只有一个)。 select '''' from dual ----output:' 解释:第二个单引号被作为转义符,第三个单引号被转义,可将sql写转载 2017-03-30 09:40:39 · 2298 阅读 · 0 评论 -
plsql定时任务执行存储过程
/*使用oracle 的 PL/Sql 定时执行一个存储过程测试目的:在表 tab 中间隔一分钟插入一条数据实现方案:1.通过 oracle 中 dbms_job 完成存储过程的定时调用2.在存储过程中完成相应的逻辑操作脚本说名:以下代码为 dbms_job 操作的基本写法,其中不包含各个系统函数参数说明,如需要了解“系统函数参数说明”请另行在网上查找转载 2017-02-21 18:02:49 · 5896 阅读 · 0 评论 -
Oracle 实例名/服务名 请问SID和Service_Name有什么区别啊?
可以简单的这样理解:一个公司比喻成一台服务器,数据库是这个公司中的一个部门。1.SID:一个数据库可以有多个实例(如RAC),SID是用来标识这个数据库内部每个实例的名字,就好像一个部门里,每个人都有一个自己的名字。2.SERVICE_NAME:是这个数据库对外宣称的名字,外面的人要想连接我这个数据库,你就在客户端的连接串里写上service_name。它就像一个部门的名字转载 2017-02-21 16:03:11 · 2320 阅读 · 0 评论 -
指定用户导入、导出
fromuser就是把当前的dmp文件中的某一个用户下的数据取出。touser就是把现在dmp文件中的数据导入到目标库的指定user下。具体命令这样。exp userid=system/manager owner=username1 file=expfile.dmp imp userid=system/manager fromuser=username1 touser=username2原创 2017-01-19 10:35:28 · 527 阅读 · 0 评论 -
悲观锁乐观锁
悲观锁:数据库机制(适用于负载均衡),乐观锁:代码标识符控制(适用于单项目部署)===================================1、悲观锁,正如其名,它指的是对数据被外界(包括本系统当前的其他事务,以及来自外部系统的事务处理)修改持保守态度,因此,在整个数据处理过程中,将数据处于锁定状态。悲观锁的实现,往往依靠数据库提供的锁机制(也只有数据库层提供的锁机制才能真正保证原创 2016-10-19 17:14:49 · 367 阅读 · 0 评论 -
行专列listagg返回的是varchar2,长度过长报错问题
select LISTAGG (a.nename,',') within group (order by a.nename) nename from (select distinct d.ne_name as nename from t_eom_alarm_define d where d.work_id=#PM_ID#) a 行专列过长,又不能改成clob类型,所以或行专原创 2016-09-30 16:54:59 · 8600 阅读 · 0 评论 -
plsql 查询结果窗口 不正常
plsql 查询结果窗口 不正常无法更新!!!!kkdengdai123 | 浏览 2446 次 2015-03-24 11:252016-06-23 16:26最佳答案你的sql语句中有全角字符的空格,你需要把它删除掉,换成半角字符的空格就好了转载 2016-10-25 14:41:15 · 8721 阅读 · 1 评论 -
有时间再看decode详解
Oracle 中 decode 函数用法含义解释:decode(条件,值1,返回值1,值2,返回值2,...值n,返回值n,缺省值)该函数的含义如下:IF 条件=值1 THEN RETURN(翻译值1)ELSIF 条件=值2 THEN RETURN(翻译值2) ......ELSIF 条件=值n THEN RETURN(翻译值转载 2016-11-04 14:41:13 · 930 阅读 · 0 评论 -
oracle 给表或字段添加备注语法
comment on column TableName.ColumnName is ‘备注名’;comment on table TableName is '备注名';原创 2016-10-21 15:55:38 · 20876 阅读 · 0 评论 -
oracle删除表字段和oracle表增加字段
添加字段的语法:alter table tablename add (column datatype [default value][null/not null],….);修改字段的语法:alter table tablename modify (column datatype [default value][null/not null],….);删除字段的语法:alter tab转载 2016-10-21 15:54:50 · 1341 阅读 · 0 评论 -
SQL语句的MINUS,INTERSECT和UNION ALL
SQL语句中的三个关键字:MINUS(减去),INTERSECT(交集)和UNION ALL(并集); 关于集合的概念,中学都应该学过,就不多说了.这三个关键字主要是对数据库的查询结果进行操作,正如其中文含义一样:两个查询,MINUS是从第一个查询结果减去第二个查询结果,如果有相交部分就减去相交部分;否则和第一个查询结果没有区别. INTERSECT是两个查询结果的交集,UNION A转载 2016-09-22 15:28:23 · 451 阅读 · 0 评论 -
sql注入
所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。具体来说,它是利用现有应用程序,将(恶意)的SQL命令注入到后台数据库引擎执行的能力,它可以通过在Web表单中输入(恶意)SQL语句得到一个存在安全漏洞的网站上的数据库,而不是按照设计者意图去执行SQL语句。[1] 比如先前的很多影视网站泄露VIP会员密码大多就是通过原创 2016-09-22 15:25:52 · 315 阅读 · 0 评论 -
动态获取规律的id:如5022001(一个优秀的程序员教会我的)
select rightnum, rownum from (select 2000 + rownum as rightnum from pim_table_dict v minus select to_number(substr(t.work_template_id, (length(t.flow_id)) + 1)) as seri原创 2016-09-21 18:03:44 · 740 阅读 · 0 评论