-
union和union all 的区别
在数据库中,union和union all关键字都是将两个结果集合并为一个,但这两者从使用和效率上来说都有所不同。
union在进行表链接后会筛选掉重复的记录,所以在表链接后会对所产生的结果集进行排序运算,删除重复的记录再返回结果。
如:
select * from test_union1
union
select * from test_union2
&nb
-
CHAR VARCHAR VARCHAR2 区别
1.CHAR的长度是固定的,而VARCHAR2的长度是可以变化的。
比如,存储字符串"abc",对于CHAR(20),表示你存储的字符将占20个字节(包括17个空字符);而同样的VARCHAR2(20)则只占用3个字节的长度,20只是最大值,当你存储的字符小于20时,按实际长度存储。
2.CHAR的效率比VARCHAR2的效率稍高。
-
Oracle数据库获取前一天日期、当月第一天日期
获取前一天日期SQL:select to_char(sysdate-1,'yyyy-mm-dd') from dual
获取当月第一天日期SQL:select to_char(sysdate-1,'yyyy-mm')||'-01' from dual
其他以此类推。。。。。。
-
区分Oracle和SQL Server常用函数
一、数学函数 1.绝对值 S:select abs(-1) value O:select abs(-1) value from dual 2.取整(大) S:select ceiling(-1.001) value O:select ceil(-1.001) value from dual 3.取整(小) S:select floor(-1.00
-
对于oracle进行简单树查询(递归查询)
对于oracle进行简单树查询(递归查询)
DEPTID
PAREDEPTID
NAME
NUMBER
NUMBER
CHAR (40 Byte)
部门id
父部门id(所属部门id)
部门名称
通过子节点向根节点追朔. select * from persons.dept start with deptid=76 connect by prior
-
每个分类取最新的几条的SQL实现
分类统计时候,我们可能经常会碰到这样的需求,每个分类按照一定顺序,取几条数据,然后在一起显示。
这个问题的解决方法,我们通过搜索引擎,可以找到很多中。但是不是SQL语句过于复杂,就是在数据量比较大时候,性能特别成问题。
今天我就碰到这样一个需求。而我自己的解决方案就是SQL过于复杂,或者性能比较差的。为此我在CSDN论坛发了个帖子,看有没有更好的解决方案。
[url]http://topic
-
SQL Server 索引基础知识(10)----Join 时的三种算法简介
我们书写查询语句的时候,Join 参数之前可以是下面三个 { LOOP | MERGE | HASH } JOIN 。 如果不使用,则系统自己分析那种方式快,使用那种方式。
这其实是SQL Server 联结时候使用的三种算法。尽管每种算法都并不是很复杂,但考虑到性能优化,在产品级的优化器实现时往往使用的是改进过的变种算法。譬如SQL Server 支持block nested lo
-
SQL Server 索引基础知识(9)----Indexing for OR
我们仍然是通过例子来理解OR运算符的特征
我们仍然使用 [url]http://blog.joycode.com/ghj/archive/2008/01/18/113870.aspx[/url] 中的 member 表,这时候,这个表的索引如下:
名字
描述
列
member_corporation_link
nonclustered located on PRIMA
-
SQL Server 索引基础知识(8)--- 数据基本格式补充
我在SQL Server 索引基础知识系列中,第一篇就讲了记录数据的基本格式。那里主要讲解的是,数据库的最小读存单元:数据页。一个数据页是8K大小。
对于数据库来说,它不会每次有一个数据页变化后,就存到硬盘。而是变化达到一定数量级后才会作这个操作。 这时候,数据库并不是以数据页来作为操作单元,而是以64k的数据(8个数据页,一个区)作为操作单元。
区是管理空间的基本单位。一个区是八个物理上连续
-
SQL Server 索引基础知识(6)----索引的代价,使用场景
前几天给同事培训了聚集索引,非聚集索引的知识后,在一个同事新作的项目中,竟然出现了滥用聚集索引的问题。看来没有培训最最基础的索引的意义,代价,使用场景,是一个非常大的失误。这篇博客就是从这个角度来罗列索引的基础知识。
使用索引的意义
索引在数据库中的作用类似于目录在书籍中的作用,用来提高查找信息的速度。
使用索引查找数据,无需对整表进行扫描,可以快速找到所需数据。
-
SQL Server 索引基础知识(5)----理解newid()和newsequentialid()
SQL Server 2005 中新增了一个函数:newsequentialid(),MSDN 中对这个函数的描述如下:
在指定计算机上创建大于先前通过该函数生成的任何 GUID 的 GUID。
NEWSEQUENTIALID() 不能在查询中引用。
NEWSEQUENTIALID() 只能与 uniqueidentifier 类型表列上的 DEFAULT 约束一起使用。
这个函数的具体用
-
SQL Server 索引基础知识(4)----主键与聚集索引
有些人可能对主键和聚集索引有所混淆,其实这两个是不同的概念,下面是一个简单的描述。不想看绕口文字者,直接看两者的对比表。尤其是最后一项的比较。
主键(PRIMARY KEY )
来自MSDN的描述:
表通常具有包含唯一标识表中每一行的值的一列或一组列。这样的一列或多列称为表的主键 (PK),用于强制表的实体完整性。在创建或修改表时,您可以通过定义 PRIMARY KEY 约束来创建主键。
-
SQL Server 索引基础知识(3)----测试中一些常看的指标和清除缓存的方法
之前的两篇博客中有2个例子,来演示要讲述的内容。其中提到了部分查看数据库状态的方法,那里并不是很全面,这篇博客罗列几个我们在后面系列博客中会用到查看这些状态,数据的地方。以及测试中清除缓存的方法。
前面两篇博客的链接地址如下:
SQL Server 索引基础知识(1)--- 记录数据的基本格式
[url]http://blog.joycode.com/ghj/archive/2008/01
-
SQL Server 索引基础知识(2)----聚集索引,非聚集索引
由于需要给同事培训数据库的索引知识,就收集整理了这个系列的博客。发表在这里,也是对索引知识的一个总结回顾吧。通过总结,我发现自己以前很多很模糊的概念都清晰了很多。
不论是 聚集索引,还是非聚集索引,都是用B+树来实现的。我们在了解这两种索引之前,需要先了解B+树。如果你对B树不了解的话,建议参看以下几篇文章:
BTree,B-Tree,B+Tree,B*Tree都是什么
[url]http
-
SQL Server 索引基础知识(1)--- 记录数据的基本格式
不论是缓存的数据信息,还是物理保存的信息,他们的基本单位都是数据页。所以理解数据页是最最基础的知识点,本篇博客就介绍跟索引有关的数据页的一些基础知识。
数据页的基础知识
SQL Server 中数据存储的基本单位是页(Page)。数据库中的数据文件(.mdf 或 .ndf)分配的磁盘空间可以从逻辑上划分成页(从 0 到 n 连续编号)。磁盘 I/O 操作在页级执行。也就是说,SQL Serve
-
聚集索引的应用
先创建一个表:ta 它有三个字段a,b,c没有主键,但是把a设为一个聚集索引 即:索引类型为:Unique
再往ta表中插入多条记录,不停的插入下面语句,看看表中的数据变化。INSERT INTO ta ( a, b, c) VALUES ( 1,2,4) ON DUPLICATE KEY UPDATE c = c+6 ; (就是这句应
-
SQL索引全攻略
一 概述
可以利用索引快速访问数据库表中的特定信息。索引是对数据库表中一个或多个列的值进行排序的结构。索引提供指针以指向存储在表中指定列的数据值,然后根据指定的排序次序排列这些指针。数据库使用索引的方式与使用书的目录很相似:通过搜索索引找到特定的值,然后跟随指针到达包含该值的行
二 索引的两种类型:
聚集索引=簇集索引
聚集索引基于数据行的键值在表内排序和存储这些数据行
-
数据库设计中的14个技巧
下述十四个技巧,是许多人在大量的数据库分析与设计实践中,逐步总结出来的。对于这些经验的运用,读者不能生帮硬套,死记硬背,而要消化理解,实事求是,灵活掌握。并逐步做到:在应用中发展,在发展中应用。1. 原始单据与实体之间的关系 可以是一对一、一对多、多对多的关系。在一般情况下,它们是一对一的关系:即一张原始单据对应且只对应一个实体。在特殊情况下,它们可能是一对多或多对一的关系,即一张原始
-
CASE When 用法
CASE 可能是 SQL 中被误用最多的关键字之一。虽然你可能以前用过这个关键字来创建字段,但是它还具有更多用法。例如,你可以在 WHERE 子句中使用 CASE。
首先让我们看一下 CASE 的语法。在一般的 SELECT 中,其语法如下:
SELECT <myColumnSpec> =
CASE