sal

数据库进阶

和自甴很熟 提交于 2019-12-03 13:08:27
一 . rowid和rownum 1. rowid相当于对象的地址,在数据插入到表中时候已经存在,rowid不是地址,根据地址转换的. rowid是伪列. --项目数据值保留唯一的,删除重复的 --查询到要保留的数据 select deptno,dname,rowid from dept; select name,course,score,min(rowid) from tb_student group by name,course,score; --要删除的数据 select * from tb_student where not rowid in(select min(rowid) from tb_student group by name,course,score); --删除数据 delete from tb_student where not rowid in(select min(rowid) from tb_student group by name,course,score) 2.rownum rownum 是伪列 . --分页 rownum 结果集的序号 从1开始 --如果按照主键进行排序,先排序后确定rownum --如果根据非主键进行排序,先确定rownum再排序 select deptno,dname,rownum from dept order by

MySql学习笔记06

易管家 提交于 2019-12-03 11:51:09
课程回顾 一对一关联 案例1:查询每个员工的名字和主管领导的名字 select e.ename 员工姓名,m.ename 领导姓名from emp e join emp mon e.mgr=m.empno; 案例2: 查询主管领导名字为blake的所有员工名字 select e.ename 员工姓名,m.ename 领导姓名 from emp e join emp m on e.mgr=m.empno where m.ename='blake' 案例3:查询有商品的分类信息及上级分类信息 往t item category表内部插入以下数据 id 162 name 办公用品 id 229 name 文具 id 913 name 户外用品 -插入数据 insert into t item category (id,name) values(162,'办公用品'),(229,'文具'),(913,'户外用品'); -查询所有有商品的分类id SELECT DISTINCT category id FROM t item WHERE category id IS NOT NULL -查询分类详情 select * from t item category where id in (SELECT DISTINCT category id FROM t item WHERE category

Oracle Hints详解

两盒软妹~` 提交于 2019-12-03 04:33:24
在向大家详细介绍Oracle Hints之前,首先让大家了解下Oracle Hints是什么,然后全面介绍Oracle Hints,希望对大家有用。基于代价的优化器是很聪明的,在绝大多数情况下它会选择正确的优化器,减轻了DBA的负担。但有时它也聪明反被聪明误,选择了很差的执行计划,使某个语句的执行变得奇慢无比。 此时就需要DBA进行人为的干预,告诉优化器使用我们指定的存取路径或连接类型生成执行计划,从而使语句高效的运行。例如,如果我们认为对于一个特定的语句,执行全表扫描要比执行索引扫描更有效,则我们就可以指示优化器使用全表扫描。在Oracle中,是通过为语句添加 Hints(提示)来实现干预优化器优化的目的。 Oracle Hints是一种机制,用来告诉优化器按照我们的告诉它的方式生成执行计划。我们可以用Oracle Hints来实现: 1) 使用的优化器的类型 2) 基于代价的优化器的优化目标,是all_rows还是first_rows。 3) 表的访问路径,是全表扫描,还是索引扫描,还是直接利用rowid。 4) 表之间的连接类型 5) 表之间的连接顺序 6) 语句的并行程度 2、HINT可以基于以下规则产生作用 表连接的顺序、表连接的方法、访问路径、并行度 除了”RULE”提示外,一旦使用的别的提示,语句就会自动的改为使用CBO优化器,此时如果你的数据字典中没有统计数据

SQLSERVER SQL性能优化

北城以北 提交于 2019-12-03 03:35:07
SQLSERVER SQL 性能优化系列      1. 选择最有效率的表名顺序 ( 只在基于规则的优化器中有效 )       SQLSERVER 的解析器按照从右到左的顺序处理 FROM 子句中的表名,因此 FROM 子句中写在最后的表(基础表 driving table )将被最先处理,在 FROM 子句中包含多个表的情况下,必须选择记录条数最少的表作为基础表,当 SQLSERVER 处理多个表时,会运用排序及合并的方式连接它们,    首先,扫描第一个表( FROM 子句中最后的那个表 ) 并对记录进行排序;然后扫描第二个表( FROM 子句中最后第二个表 ) ;最后将所有从第二个表中检索出的记录与第一个表中合适记录进行合并    例如 : 表 TAB1 16,384 条记录表 TAB2 5 条记录,选择 TAB2 作为基础表 ( 最好的方法 ) select count(*) from tab1,tab2 执行时间 0.96 秒,选择 TAB2 作为基础表 ( 不佳的方法 ) select count(*) from tab2,tab1 执行时间 26.09 秒; 如果有 3 个以上的表连接查询,那就需要选择交叉表( intersection table )作为基础表,交叉表是指那个被其他表所引用的表      例如 :    EMP 表描述了 LOCATION 表和

How to stock and use a shiro's salt from database

匿名 (未验证) 提交于 2019-12-03 02:49:01
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试): 问题: I use shiro in application for the authenticate. I use hashed password with a salt and I store them in my database like this : private User createUserWithHashedPassword(String inName, String inFirstName, String inLastName, String inPassword){ ByteSource salt = randomNumberGenerator.nextBytes(32); byte[] byteTabSalt = salt.getBytes(); String strSalt = byteArrayToHexString(byteTabSalt); String hashedPasswordBase64 = new Sha256Hash(inPassword, salt, 1024).toBase64(); return new User(inName,inFirstName,inLastName,hashedPasswordBase64,strSalt); }

Difference between Subquery and Correlated Subquery

匿名 (未验证) 提交于 2019-12-03 02:33:02
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试): 问题: Is the following piece of SQL Query a normal query or a Correlated Subquery ?? SELECT UserID, FirstName, LastName, DOB, GFName, GLName, LoginName, LoginEffectiveDate, LoginExpiryDate, Password, Email, ReportingTo, Mobile, CommunicationPreference, IsActive FROM (SELECT row_number() OVER (ORDER BY FirstName) AS Row, UserID, FirstName, LastName, DOB, GFName, GLName, LoginName, LoginEffectiveDate, LoginExpiryDate, Password, Email, ReportingTo, Mobile, CommunicationPreference, IsActive FROM DivakarUserRegistration) T Also, can someone state the

group by 拓展

匿名 (未验证) 提交于 2019-12-03 00:41:02
Oracle的group by除了基本使用方法以外,还有3种扩展使用方法,各自是rollup、cube、grouping sets。分别介绍例如以下: 1、rollup 对数据库表emp。如果当中两个字段名为a,b,c。 假设使用group by rollup(a,b),首先会对(a,b)进行group by ,然后对 a 进行 group by 。最后对全表进行 group by 操作。 例如以下查询结果: 查询语句 Select deptno,job,sum(sal) from emp group by rollup(deptno,job); 等同于 Select deptno,job,sum(sal) from emp group by deptno,job union all Select deptno,null sum(sal) from emp group by deptno union all Select null,null,sum(sal) from emp (group by null ) 2、cube 假设使用group by cube(a,b),,则首先会对(a,b)进行group by,然后依次是(a),(b),最后对全表进行group by 操作,一共是2^2=4次grouping 例如以下查询结果。 查询语句 Select deptno,job,sum

分析函数之开窗函数over

匿名 (未验证) 提交于 2019-12-03 00:40:02
一、分析函数 -- Oracle从8.1.6开始提供分析函数,专门用于解决复杂报表统计需求的功能强大的函数, -- 它可以在数据中进行分组然后计算基于组的某种统计值,并且每一组的每一行都可以返回一个统计值。分析函数用于计算基于组的某种聚合值。 -- 它和聚合函数的不同之处是:对于每个组返回多行,而聚合函数对于每个组只返回一行。普通的聚合函数用group by分组, -- 每个分组返回一个统计值;而分析函数采用partition by分组,并且每组每行都可以返回一个统计值。 -- 1、分析函数的形式: -- 分析函数带有一个开窗函数over(),在窗口函数中包含三个分析子句:分组(partition by), 排序(order by), 窗口(rows) , -- 他们的使用形式如下:over(partition by xxx order by yyy rows between zzz)。 -- 注:窗口子句在这里我只说rows方式的窗口,range方式和滑动窗口也不提。 -- 例如:统计函数+over()、排序函数+over()、数据分布函数+over()、统计分析函数+over()。 -- 2、开窗函数: 开窗函数指定了分析函数工作的数据窗口大小,这个数据窗口大小可能 /* 会随着行的变化而变化 */ 。例如over函数 二、窗口函数 -- 窗口函数中常用的子句有:分区

Informatica_(3)组件

匿名 (未验证) 提交于 2019-12-03 00:40:02
一、Informatica介绍 Informatica PowerCenter 是Informatica公司开发的世界级的企业数据集成平台,也是业界领先的ETL工具。 Informatica PowerCenter使用户能够方便地从异构的已有系统和数据源中抽取数据, 用来建立、部署、管理企业的数据仓库,从而帮助企业做出快速、正确的决策。 此产品为满足企业级要求而设计,可以提供企业部门的数据和电子商务数据源之间的集成, 如XML,网站日志,关系型数据,主机和遗留系统等数据源。 此平台性能可以满足企业分析最严格的要求。 Informatica PowerCenter已被全球多家著名企业用来建设BI/DW系统, 它可集成和分析企业的关键商务信息,优化整个商务价值链的表现和响应速度。 Informatica PowerCenter拥有一个功能强大的数据整合引擎, 所有的数据抽取、转换、装载的功能都是在内存中执行的,不需要开发者手工编写这些过程的代码。 Informatica PowerCenter 数据整合引擎是元数据驱动的, 通过知识库和引擎的配对管理,可以保证数据整合过程能够最优化执行, 并且使数据仓库管理员比较容易对系统进行分析管理,从而适应日益增加的数据装载和用户群。 二、informatica开发步骤: 定义源: Desinger 定义目标: Desinger 创建映射: 源--

Oracle_SQL(4) DDL 表和约束

匿名 (未验证) 提交于 2019-12-03 00:40:02
数据库对象分为占存储空间的对象和不占存储存储空间的对象。 占存储空间的对象主要包括:表、索引等。 select distinct segment_type from dba_segments order by segment_type; 不占存储空间的对象主要包括:视图、序列、函数、存储过程、包、触发器等。 select distinct object_type from dba_objects order by object_type; DDL是用来创建(create)、替换(replace)、更改(alter)、 删除(drop)、重命名(rename)、截断(truncate)数据库对象的语句。 本节重点讲解表,索引、视图、序列、函数、存储过程、包、触发器等对象在后续plsql课程中逐个讲解。 一、表(Table ) 数据库中的表与我们日常生活中使用的表格类似, 它也是由行(Row) 和列(Column)组成的。 列由同类的信息组成,每列又称为一个字段,每列的标题称为字段名。 行包括了若干列信息项。 一行数据称为一个或一条记录,它表达有一定意义的信息组合。 一个数据库表由一条或多条记录组成,没有记录的表称为空表。 每个表中通常都有一个主关键字,用于唯一地确定一条记录。 1.示例 view dept; create table DEPT ( deptno NUMBER(2)