SQL Union和SQL Union All用法介绍

July 1st, 2009 Tony hu No comments
今天遇到一个问题,将一个表中的两列(Column A, Column B) 数据合并一列,而且需要将Column B内容接在Column A的后面,感谢下面的博文帮我解决了这个问题,转来和大家一起分享。——Tony Hu

 

UNION 指令的目的是将两个 SQL 语句的结果合并起来。从这个角度来看, UNIONJOIN 有些许类似,因为这两个指令都可以由多个表格中撷取资料。 UNION 的一个限制是两个 SQL 语句所产生的栏位需要是同样的资料种类。另外,当我们用 UNION这个指令时,我们只会看到不同的资料值 (类似 SELECT DISTINCT)。 union只是将两个结果联结起来一起显示,并不是联结两个表…………
假设我们有以下的两个表格
Store_Information 表格

store_name Sales Date
Los Angeles $1500 Jan-05-1999
San Diego $250 Jan-07-1999
Los Angeles $300 Jan-08-1999
Boston $700 Jan-08-1999
Internet Sales 表格

Date Sales
Jan-07-1999 $250
Jan-10-1999 $535
Jan-11-1999 $320
Jan-12-1999 $750
而我们要找出来所有有营业额 (sales) 的日子。要达到这个目的,我们用以下的 SQL 语句:
SELECT Date FROM Store_Information
UNION
SELECT Date FROM Internet_Sales
结果:
Date
Jan-05-1999
Jan-07-1999
Jan-08-1999
Jan-10-1999
Jan-11-1999
Jan-12-1999
有一点值得注意的是,如果我们在任何一个 SQL 语句 (或是两句都一起) 用 “SELECT DISTINCT Date” 的话,那我们会得到完全一样的结果。

SQL Union All
UNION ALL 这个指令的目的也是要将两个 SQL 语句的结果合并在一起。 UNION ALLUNION 不同之处在于 UNION ALL 会将每一笔符合条件的资料都列出来,无论资料值有无重复。
UNION ALL
我们用和上一页同样的例子来显示出 UNION ALLUNION 的不同。同样假设我们有以下两个表格,

Store_Information 表格

store_name Sales Date
Los Angeles $1500 Jan-05-1999
San Diego $250 Jan-07-1999
Los Angeles $300 Jan-08-1999
Boston $700 Jan-08-1999
Internet Sales 表格

Date Sales
Jan-07-1999 $250
Jan-10-1999 $535
Jan-11-1999 $320
Jan-12-1999 $750
而我们要找出有店面营业额以及网络营业额的日子。要达到这个目的,我们用以下的 SQL 语句:
SELECT Date FROM Store_Information
UNION ALL
SELECT Date FROM Internet_Sales
结果:
Date
Jan-05-1999
Jan-07-1999
Jan-08-1999
Jan-08-1999
Jan-07-1999
Jan-10-1999
Jan-11-1999
Jan-12-1999

 

来源:http://brucezheng.javaeye.com/blog/70300

Categories: Database, Sql Server Tags: ,

学习Oracle的三种境界

June 28th, 2009 Tony hu No comments

其实学习任何东西都是一样,没有太多的捷径可走,必须打好了坚实的基础,才有可以在进一步学习中得到快速提高。
王国维在他的《人间词话》中曾经概括了为学的三种境界,我在这里套用一下:

古今之成大事业、大学问者,罔不经过三种之境界。
“昨夜西风凋碧树。独上高楼,望尽天涯路。”此第一境界也。
“衣带渐宽终不悔,为伊消得人憔悴。”此第二境界也。
“众里寻他千百度,蓦然回首,那人却在灯火阑珊处。”此第三境界也。

 

学习Oracle,这也是你必须经历的三种境界。
第一层境界是说,学习的路是漫漫的,你必须做好充分的思想准备,如果半途而废还不如不要开始。
这里,注意一个”尽”字,在开始学习的过程中,你必须充分阅读Oracle的基础文档,概念手册、管理手册、备份恢复手册等(这些你都可以在http://tahiti.oracle.com 上找到);OCP认证的教材也值得仔细阅读。打好基础之后你才具备了进一步提升的能力,万丈高楼都是由地而起。

第二层境界是说,尽管经历挫折、打击、灰心、沮丧,也都要坚持不放弃,具备了基础知识之后,你可以对自己感兴趣或者工作中遇到的问题进行深入的思考,由浅入深从来都不是轻而易举的,甚至很多时候你会感到自己停滞不前了,但是不要动摇,学习及理解上的突破也需要时间。

第三次境界是说,经历了那么多努力以后,你会发现,那苦苦思考的问题,那百思不得其解的算法原理,原来答案就在手边,你的思路豁然开朗,宛如拨云见月。这个时候,学习对你来说,不再是个难题,也许是种享受,也许成为艺术。

所以如果你想问我如何速成,那我是没有答案的。
不经一番寒彻骨,哪得梅花扑鼻香。

当然这三种境界在实际中也许是交叉的,在不断的学习中,不断有蓦然回首的收获。
我自己在学习的过程中,经常是采用”由点及面法”。
当遇到一个问题后,一定是深入下去,穷究根本,这样你会发现,一个简单的问题也必定会带起一大片的知识点,如果你能对很多问题进行深入思考和研究,那么在深处,你会发现,这些面逐渐接合,慢慢的延伸到oracle的所有层面,逐渐的你就能融会贯通。这时候,你会主动的去尝试全面学习Oracle,扫除你的知识盲点,学习已经成为一种需要。
由实践触发的学习才最有针对性,才更能让你深入的理解书本上的知识,正所谓:”纸上得来终觉浅,绝知此事要躬行“。实践的经验于我们是至为宝贵的。

如果说有,那么这,就是我的捷径。

想想自己,经常是”每有所获,便欣然忘食”,兴趣才是我们最好的老师。

Oracle的优化是一门学问,也是一门艺术,理解透彻了,你会知道,优化不过是在各种条件之下做出的均衡与折中。
内存、外存;CPU、IO…对这一切你都需要有充分的认识和相当的了解,管理数据库所需要的知识并不单纯。

作为一个数据库管理人员,你需要做的就是能够根据自己的知识以及经验在各种复杂情况下做出快速正确的判断。当问题出现时,你需要知道使用怎样的手段发现问题的根本;找到问题之后,你需要运用你的知识找到解决问题的方法。
这当然并不容易,举重若轻还是举轻若重,取决于你具备怎样的基础以及经验积累。

在网络上,Howard J. Rogers最近创造了一个新词组:Voodoo Tuning,用以形容那些没有及时更新自己的知识技能的所谓的Oracle技术专家。由于知识的陈旧或者理解的肤浅,他们提供的很多调整建议是错误的、容易使人误解的,甚至是荒诞的。他们提供的某些建议在有些情况下也许是正确的,如果你愿意回到Oracle5版或者6版的年代;但是这些建议在Oracle7.0,8.0 或者 Oracle8i以后往往是完全错误的。
后来基于类似问题触发了互联网内Oracle顶级高手的一系列深入讨论,TOM、Jonathan Lewis、HJR等人都参与其中,在我的网站上( www.eygle.com )上对这些内容及相关链接作了简要介绍,有兴趣的可以参考。

HJR给我们提了很好的一个提示:对你所需要调整的内容,你必须具有充分的认识,否则你做出的判断就有可能是错误的。
这也是我想给自己和大家的一个建议:学习和研究Oracle,严谨和认真必不可少
当然你还需要勤奋,我所熟悉的在Oracle领域有所成就的技术人员,他们共同的特点就是勤奋。
如果你觉得掌握的东西没有别人多,那么也许就是因为,你不如别人勤奋。

要是你觉得这一切过于复杂了,那我还有一句简单的话送给大家:不积跬步,无以至千里。学习正是在逐渐积累过程中的提高。

现在Itpub给我们提供了很好的交流场所,很多问题都可以在这里找到答案,互相讨论,互相学习。这是我们的幸运,我也因此非常感谢这个网络时代。

 

来源: http://www.eygle.com/archives/2005/08/ecinieoracleouo.html

Categories: Database, Oracle Tags:

What I like about You

June 24th, 2009 Tony hu No comments

I like the way you smile at me when
I give you my smile
I like your understanding look when
I look into your eyes
You make me feel easy.

I like the kindness in you when
I am in your company
I like your sense of caring and happiness which
Calms my butterflies
You make me feel amaze.

I like the way you look at me as
If I am the only one exist
I like the way you describe me as
If I am truly innocent
You make me feel pure.

I like the way you direct me how
To become a better person
I like the way you guide me how
To give without asking for returns
You make me feel joy.

I like the way you teach me that
Life is opportunity
I like the way you describe to me how
There is purpose everywhere
You make me feel knowledgably
To learn to serve and to grow.

I like the way you show love to
Those around you
I like the way you demonstrate to me how
To find gifts in life
You make me feel rejoice
Know how to love and be loved.

What I like most about you
Is what I learn from you about
The beauty of:
Humanity
Purity
Spirituality
Growth and
Love

From http://www.neworiental.org/publish/portal0/tab450/info346631.htm

Categories: English Corner Tags:

择业之路——丁健,戴鹏,许安娣毕业设计(我也是主演)

June 23rd, 2009 Tony hu No comments
Categories: Mylife, Video Tags:

DIV + CSS 和 TABLE

June 21st, 2009 Tony hu 1 comment

作为一个身处 2008 年末的 Web 设计师,你是否好意思承认自己的代码中使用了 Table,如果是,你是一个有勇气的人,Web 设计是个奇怪的行业,你可以将自己的网站设计得像晚报的分类广告,或者楼道里的开锁广告,但千万别让人知道你使用了 Table,在你的源代码中发现 Table 就像一个销售被人掀起裤脚发现穿了白袜子一样。
Table 是如此丑陋,臃肿,哪怕只显示一段简单的内容,你也需要 <table><tr><td> 这三个基本的标签,每个标签里面还要加上一堆乱七八糟的属性,不像<div>,既简单,又整洁,又时尚,它和 CSS 珠联璧合,琴瑟和谐,它们构成最完美的 Box 模型,他们象现实中的箱子,你把东西放进去,然后,很自由地对他们进行排列,厌烦了一种布局,没关系,简单地改动一下 CSS 定义,一种全新的布局便诞生了;不象 Table,Table 像食堂里的餐具柜,一排排,一列列,土里土气,油腻腻的,象我们的父辈,邋遢,什么都往家里拿,胡乱堆在角落里,如果 Div 是小资,Table 就是老三届,他们不属于这个时代。
  也就是近几年的事,至多不过三五年,W3C是一个人人都认为重要但人人都不喜欢的组织,他们的官方网站十分丑陋,我敢说平生没见过这么丑陋的网站,但他们的网站是为数不多的可以通过全部W3C标准验证的网站,这意味着,他们的网站在语法上,在结构上,在可访问性上是完美的,虽然依旧十分丑陋。不过这是笑谈,W3C非常重要,否则微软会把全体 Web 开发工程师带到万劫不复的境地,还好,Netscape 死后,涅磐出 Firefox,而 Opera 在 Firefox 横空出世之后虽然没得到任何好处,至少得到了精神上的支持,看到没,终于有大哥出来收拾你。乔布斯复出后,苹果重返昔日的光芒,这时人们才知道世界上还有一个叫做 Safari 的浏览器,所有这一切加在一起,让 W3C 真正有了存在的必要。

  W3C 说,Table 可以用来容纳文字,格式文字,图片,链接,表单,以及其它 Table … 但是,Table 不应该单纯用来做网页布局(Tables should not be used purely as a means to layout document content),理由是,当 Web 被非可视化设备渲染的时候,Table 会出现问题,他们指定是屏幕阅读器以及盲文浏览器,另外,Table 在大型显示设备上会强迫用户左右滚动,因此,Web 设计者应该使用 CSS 而不是 Table。参见 W3C HTML 4.01 关于 Table 的定义。 W3C 说这段话的时候,是1999年12月24日,那时尽管 CSS 早已诞生,但并没有多少人使用,最初的 Web 像一个在线版的文档,并没有成为现在这样的平台,不需要过多过多地考虑布局问题,随着互联网第一次泡沫的形成,涌现出大量的门户网站,门户网站是 Table 布局的始作俑者,因为他们的首页比一整份报纸的所有版面拼接在一起还复杂,Table 在这方面十分顺手,结合 colspan 和 rolspan,你几乎能够实现任何复杂的版面。

  这种布局风格在2000年代初,一直到中期仍然十分流行,尤其国内,在大为美的潜意识下,人们把所有能塞到一个页面的东西都塞进了首页,Table 就像一个旧时代的管家,把所有东西虽不能井井有序,但至少是一样不少地编排起来。然而这样的 Web 终于到了让人厌恶的地步,随着搜索,RSS 订阅,以及以博客为代表的个性化 Web 的出现,人们有更多渠道获得信息,而不必去访问那几个让人几乎要晕过去的门户的首页,于是出现了一种清新的,轻量的 Web 风,使用更简单的布局,更明快的配色,大图标,大 Banner,以及更容易阅读的大字体,同时,在这个时候,CSS 已经非常成熟,而 Firefox, Opera, Safari 为代表的浏览器,在遵守 W3C 标准方面要远远好过 IE,人们终于认识到 CSS 的威力。因为 CSS 在布局上,其核心是一个 Box 模型,人们必须为 CSS 找一个可以依附的容器对象。

  Div 成为幸运者一方面因为它天生就是 Box 的最佳原型,在语义上,Div 代表页面的一个区域,在外形上,它四四方方,更重要的是,它不像 <P> 或 <a> 那样事先已经被赋予特殊的语义(虽然它们也能用于 Box 模型);另一方面,则出于人们对 Table 统治一个臃肿时代的憎恶,一个时代的结束,继任者都会努力抹去旧时代的痕迹,那些旧时代的象征或代表的命运多半如此,人们并不是简单地忘却它们,而是断然划清界限。

  Table 的一切不公平待遇就此开始。为什么说不公平,W3C 不建议 Table 布局的时候,只说应使用 CSS 代替,这是什么意思,Table 不支持 CSS 吗?当然支持,而且,由于 Table 作为老牌的 HTML 对象,它的地位曾如此重要,任何浏览器都对 Table 提供了最完美的支持,包括 CSS 支持。当人们拥抱 Div 的时候,似乎忘记了 Table 也是 Box,而且是一个拥有多个内格的 Box,Table 作为一个整体,和 Div 在 Box 模型方面没有任何区别,而它的内格,除了 Margin 之外,仍然是一个 Box,内格不含 Margin 概念这是应该理解的。Div 很优秀这不必说,然而当人们说 Div + CSS 的时候,似乎暗示着 Table 无法 CSS,这是天大的误会。

  Div 支持的所有 CSS 属性,Table 全部支持,事实上,在 Div 大红大紫之前,那些 Div 的早期采用者曾信心不足地表示,Table 能做到,Div 都能,而他们也为自己的话付出了代价,企图在 Div 中实现垂直居中的人明白我的意思,企图在 IE6 中不经 CSS Hack 而实现 100% Div 布局的人更明白我的意思。100% Height 问题,几个 Div 之间的宽度自适应问题,相信任何从事 Div + CSS 设计的人会遇到。Table 在这方面的优势并不是因为它本身多么优秀,而是因为它老牌,没有浏览器敢忽视,也因为它的特性原本如此,人们发明表格,是因为希望数据显示得整齐,就这么简单。然而,为什么 Table 后来背上那么多的恶名?Div 拥护者对 Table 的责难不外乎以下几条。
  代码臃肿:你至少需要写下 <table><tr><td>这三个标签之后,才能开始真正的内容,另外,Table 的各种标签中还包含了复杂的属性定义,而 Div 只需 <div>一个标签。
页面渲染性能问题:浏览器需要将整个表格完全读完后才会开始渲染。
不利于搜索引擎优化:搜索引擎喜欢内容与修饰分开。
可访问性差:屏幕朗读软件和盲文浏览器无法很好地理解 Table 中的内容。
不够语义(Semantic):我们需要语义的 Web。

  第1条:代码臃肿

  首先,Table 里面唯一无法用 CSS 定义的属性只有 Cellspacing, Cellpadding 几个,其它属性都可以并且应当使用 CSS,这样,剩下的,就是 <table><tr><td> 和 <div> 的对决,我相信一个动辄几十K大小的网页,即使使用了几十个 Table,因此多出来的代码也可以忽略不计,那些埋怨 Table 代码臃肿的人其实该检查自己的编码习惯,能将 Table 写得十分臃肿的人,写 Div 相比也未必会简洁到哪里。

  第2条:页面渲染性能问题

  我使用一台2004年的笔记本电脑,1.6G 的 CPU 与 1G 内存,这种配置下,看不出 Table 布局和 Div 布局在页面渲染上有任何速度差别,其实这点差别即使有,相对网络本身的延迟也可以忽略。

  第3条:不利于搜索引擎优化

  如果你尽可能使用 CSS 而不是 Table 的属性,前面说了,产生的代码和 Div 的差别也不会很大,搜索引擎会歧视 <table> 标签吗,这种说法的依据我至今并没有找到。

  第4条:可访问性差

  这是 Table 固有的缺陷,不过多数 Div + CSS 的拥趸似乎并不是基于这个原因才排斥 Table。

  第5条:不够语义

  语义 Web 的含义要深远得多,并不是仅仅在 Table 和 Div 上纠缠,即使 W3C,也并没有规定 Table 只能用来显示表格数据,很多在 Table 的语义上进行纠缠的人,其实不妨再等等 HTML 5,那才是真正的语义。

  本文的目的不是让你丢弃 Div 投身 Table,相反,如果 Div 能满足你的设计需要,Div 仍是首选,但没必要避讳 Table,否则会走入另外一个极端。很多使用 Div 无法简单实现的设计,仍可以使用 Table,当然,不管使用什么,都应该用 CSS 将内容与修饰分离。Div + CSS 和 Table + CSS 都是合法的设计,谁更简单就用谁。根据我的经验,当你能预见你的内容的格式,对你即将加入的内容有能力完全控制其显示格式时,应当使用 Div + CSS;当你即将加入的内容是不固定的,你无法预见其格式,如果不想让页面坍塌,使用 Table + CSS 是一种保险的做法。

源文: http://hi.baidu.com/jmtbai/blog/item/ffd06ca62fc3179dd043588b.html

Categories: Web, Web standard Tags: ,