存档

2007年12月 的存档

SEO — URL中的问号 '?'

2007年12月31日 没有评论

SEO全称Search Engine Optimization (搜索引擎最佳化),是世界上很多站长喜欢钻研的一门学问。虽说SEO是提高网站流量的一个快捷手段,但是真正掌握该技术的人并不多而且收费不菲。然而各大搜索引擎(特别是google)为了保证搜索结果的客观性会经常更改排名方法并对作弊网站进行惩罚。也就是说,作弊是万万使不得的。

任何复杂深奥的SEO方法一个基本前提:所有优化方法都必须是健康合法的,不做恶,不作弊。

URL中的问号 '?'

请大家看看这个URL http://alexhuang.org/?p=318

没错,这是个典型的Wordpress默认链接。这个URL的问题在于其中出现了?,即是所谓的动态链接。网络上一直有种说法,“google不喜欢带?的URL”。对于这个问题, WordPress support forums上有人这样解释:
[quote]Remember Google is much different than Yahoo, Msn etc.

Google does take keywords in the URL into consideration but does take much more into consideration also, when judging a website.

The other search engines on the other hand consider it much more.

So, I would say don’t bother to do it for google because there is much more that go into the Google algorithm BUT, it definately will help in the rest of the engines.[/quote]
归结起来就是两句话:

google从URL中获取关键词并且从根据URL来评判一个网站。其他搜索引擎也差不多是这样。

如果你会觉得这样的解释还是比较含糊的,说服力不强。那么建议看看webcredible.co.uk 上的这篇文章《Does a question mark in the URL affect ranking? 》。该文作者将google和yahoo对动态链接的收录等级作成了张坐标图(如下)

[quote]X轴表示网站的优先等级(非PR值),Y轴表示网站中带问号URL数所占百分比。优先等级 1>8

从表中可以看出,动态URL(带问号的)在google的优先等级非常低。而非动态URL在google和yahoo中都有比较高的优先等级。[/quote]
优化方法

非常简单-不用动态URL

WordPress用户可以到后台修改permalink(需服务器支持mod_rewrite功能),URL中应该含有文章中的关键字。

至于中文URL对搜索引擎收录优先级是否有影响这点目前尚不知晓,保险点的还是用英文URL。

其他Blog平台的朋友建议设置伪静态URL,反正就是少用很明显的动态链接形式,特别是那种带?的。

分类: 技 术 标签:

不可不提的几个国外特色Blog

2007年12月31日 没有评论

[quote]overheardinnewyork.com- 顾名思义,这个Blog就是专门收集在纽约无意听到的一些只言片语,通过S. Morgan FriedmanJenny Weiss 这两个极具恶搞精神的blogger加工而改写成一篇篇幽默小短文。

boingboing.net - 世界级的超人气Blog,专门发掘稀奇古怪和酷炫事物。

postsecret - 提供让大家说出心里话的"秘密花园"。想把自己的秘密公之于众其实很简单-把秘密写在卡片上并交给他们。当然,人家是不会公布你的个人信息的

Free Money Finance - 如果你也认为省钱容易赚钱难的话,那么别错过这个Blog,上面有很多关于省钱的绝招哦。P.S:该站拥有者是家冰其淋公司的老板,当初Blogging的目的是为了提供销售量……

Break - 一个张贴新鲜有趣、热辣时髦的照片的Blog,跟boingboing比起来似乎更侧重于搞笑和娱乐。 [/quote]
上述几个类型的Blog,除了boingboing和break被大量国内Blog模仿外,其余几个好像还没有出现中文模仿者。其中,Jason最看好的是类似Free Money Finance 那样教人省钱方法的Blog,毕竟是市场经济时代嘛,大家对那个话题也比较感兴趣。

分类: 分 享 标签:

BackupMyBlog—免费的数据备份服务&用法

2007年12月31日 没有评论

记得前几天,有个网友Blog所在的服务器因为某种原因被公安局没收(连同备份服务器),结果导致那个Blog的永久性消失。如果那个时候他使用了BackupMyBlog的数据备份服务,也许情况就不会那么糟糕了。

BackupMyBlog是一个提供自动备份MySQL数据的网站,目前处在Beta测试阶段。根据官方网站上的说明,他们支持所有基于MySQL的Blog的数据备份,而且备份频率还不错-一天一次。唯一让人不爽的是,免费用户只能享受最大10MB的数据备份。不过据 Doug Martin 说,BackupMyBlog会运用一种高效的算法压缩数据,也就是说实际可备份数据应该在10MB以上。10MB怎么看都是小了点,但是考虑到他们现在只是做Beta测试,或许将来会逐渐增加备份数据容量(比如100MB ^_^),到时候就更实用了。

下面简单介绍一下使用方法

步骤1.到这里注册一个账号

步骤2.注册完成后会提示“数据已创建。请选择安装模式”(Account Created.Choose your setup method)。为了方便操作,Jason建议大家选择Manual Setup

步骤3.进入Setup Wizard后由上到下依次输入 MySQL的 用户名、密码、主机、端口(后两者 Host: Port: 可保持默认),然后点击那个 download 并将下载后的文件backupmyblog-config.php上传到Blog所在目录。点击下方按钮进入下一步。

步骤4.点击 http://backupmyblog.com/do/getclient ,再次将下载回来的backupmyblog.php上传到Blog目录。然后在 Blog URL:之后输入Blog网址(以 http:// 开头)。点击下方按钮进入下一步。

步骤5.如果没有出错的话,会提示操作成功。

如何从BackupMyBlog上恢复数据?

进入 Manage Account ,点击Restore From Previous Where `blogid`=290 Backup 然后按提示操作……

分类: 技 术 标签:

给Blogspot做备份

2007年12月31日 没有评论

有些人不喜欢Blogspot的原因之一,就是风闻国外之前发生过的blogger账号被删事件。确实,blogspot的数据全部在google的服务器上,万一有一天,某个骇客入侵并把大家的劳动全部删除或者哪个白痴管理员看你不顺眼就把你"归零"了。虽然这些情况发生的概率极小,但防人之心不可无,多留个心眼将来搬家也方便。

现在要介绍的这个办法理论上可以备份Blogspot上所有的文章,并生成一个统一的XML格式文档,但不包括评论内容。

1.到https://www.blogger.com/atom/ ,输入用户名和密码(blogspot的用户名本是你的E-MAIL地址,但这边我却可以用E-MAIL上的用户名登陆,真奇怪)。

2.这时候你可以看到一页的html代码:
[code]

-
10158741

[/code]
3.复制title前面的URL,如Ya,I'm Yee这个Blog title之前的https://www.blogger.com/atom/31567701,并在浏览器中打开这个地址

4.这时打开的浏览器中会显示最近的100篇文章,点击"文件"-"另存为"将其备份到本地电脑。

5.超过100篇文章怎么办,比如我有101篇。方法是,删除最新的一篇文章,然后重复以上操作。(不好意思,这个傻办法就是我所说的"理论上可以备份所有文章")

Blogger的帮助文档中也有一篇题为《如何创建整个 Blog 的备份?》的文章,不过它的方法似乎还是没有安全保证。

FROM: http://iyee.cn/post/backup-for-blogspot.html

分类: 技 术 标签:

关于《10个不必经常更新Blog的理由》

2007年12月31日 没有评论

我经常在怀疑自己是否有足够的时间和精力来维持一个可以保持常新的Blog。试想,万一有一天真的碰上什么棘手的事情让我分不出心来研读来思考来写作,会不会造成读者群的大量损失,会不会让别人对我产生不良印象,会不会让之前的劳动成果付诸东流?

最近读到Eric Kintz的一篇文章,他认为必须经常更新才能维持访问量的是web1.0时代的作法,对于Blog来说经常更新并不是很重要,有时甚至是有害的。他的10大理由很值得推敲的,建议大家都去拜读一下。如果阅读英语原文有困难,也可参考林泰宏先生的译文

下面简单谈谈我的看法(繁体字部分为林泰宏先生所有)

網站流量與 Blog 的成功與否是沒有關係的-这点对于中国人来讲可能不容易理解,因为中国Blogsophere的风气早就被一群无聊的人物误导到一个难以挽回的地步。理性的讲,Blog的作用应该是传达有价值的信息。可惜这种理念在徐静蕾、木子美等大流量博客面前是多么的苍白无力。

要忠實的讀者每天到你的網站閱讀文章,這是 Web 1.0 時代的做法-在我看来,这应该是Blogger个人的误解。因为真正忠实的读者会订阅你的RSS或E-MAIL、MSN通告等一切人性化的通知方式。RSS在国内没有为大多数网民所接受,正因为如此,Blogger更有义务来宣传和推广这一利器。广告怎么办?别傻了,那些整天上你网站的人点广告的概率是最低的。当你没有更新而又有大量老读者访问的话,那么尴尬的一幕就出线了:服务器负担加重、google Adsense单点击价格猛跌。别不信,可怜的幻灭就是这种情况

經常更新實際上在你讀者的忠誠度上是有負面影響的,導致內容品質低落-这个该怎么说呢,我所订阅的RSS中很少是每天更新的,因为大多数更新极高的都被删除了。理由之一当然是它们占用了大量时间,但更重要的是我觉得那些Blogger为了保证速度而降低了质量,看他们的blog如同吃美式快餐一样,除了充饥还能得到多少营养。这种情况在介绍新奇事物的Blog上比较常见,但是也不排除例外,比如我正在忧郁是否将keso的feed彻底从我的抓虾上摸去,因为我隐约可以看出他压力太大了,似乎是在逼着自己更新。

經常更新會威脅到部落圈的可靠度-当没有什么可写的时候要怎么才能保持继续更新呢?答案是转载或胡说八道。前者的威力在于转载者往往不对其真实性进行认真的研究而使得错误的咨询在网络上流传。后者的可怕之处在于容易与前者相互起作用,不论如何这两种方法都对整个产生Blogosphere有很不利的影响。

家人很重要,多留點時間給家人吧-学业、爱情也很重要^_^

分类: 我的收藏 标签:

王菲复出歌坛!

2007年12月31日 没有评论

在一个各类选秀节目庸俗泛滥,一夜间流行于大街小巷的歌曲不再的今天,无数歌迷更加想念昨天的一位巨星,也一直在期盼她的复出中真情呼唤她的名字:王菲。是的,没有王菲的歌坛,注定是一种缺憾。

而惊喜,就在这个岁末年初得到最终确认:王菲将于2008年1月10日在北京举行的《你就是火炬手》大型奥运公益晚会上登台献唱,据悉,这将是王菲自去年悄然退出娱乐圈后首次公开登台演唱。也预示着王菲将正式回归歌坛。

自从某网站推出08年十大娱乐悬念猜想后,关于王菲是否复出成为网友最关注的问题。自从李嫣诞生后,无心恋战娱乐圈的王菲干脆宣布退出。虽然甘当李亚鹏背后的女人,但王菲每每参与好友聚会以及“嫣然天使基金”相关活动都会成为头条新闻。而尽管李亚鹏、赵薇等人都亲口力证王菲不打算复出,但邀请王菲重出江湖的传闻也从未断过。

早前曾传出赵本山力邀王菲复出,此后又频传王菲即将举办世界巡演,无奈传闻最终不了了之。据唐海威援引央视方面的消息透露,王菲将在明年1月10日在首钢体育场举行的《你就是火炬手》大型公益晚会上首次公开亮相。

据透露,此次晚会以宣传奥运火炬手感人故事、传达火炬传递的神圣使命为主题,是北京奥运会火炬手选拔结束之后唯一的一台国家级大型晚会,也是以奥运火炬手为表现主题的最重要的公益晚会。演出嘉宾阵容相当庞大,除开阿杜、吕良伟等港台艺人都在邀请之列,其中近来淡出的王菲参与演出十分抢眼。

《你就是火炬手》栏目组导演林航宇日前承认央视邀请王菲演唱一事,节目组已将晚会的相关文件交给李亚鹏经纪人马葭。同时,艺人统筹张霆轩透露,整台晚会分为:“外场”、“序曲”、“我们心手相联”、“我就是火炬手”、“我们整装待发”、“尾声”六个部分。王菲的出场顺序被拟定在“我就是火炬手”环节的末端。林航宇称:“由于王菲隐退后一直都从事着嫣然基金的公益活动,这正好体现了奥林匹克运动的精神,王菲的出场将是本场晚会最闪亮的一个环节,节目的设计上会给观众震撼的感觉。”

唐海威称,“王菲是个很个性的女人,别人砸两百万请她复出唱首歌,她拒绝了。因为潜心佛教的她对钱和名已经看得到很开,这次答应出来,应该是出于主办方提出的公益考虑。相信王菲一旦重新开口唱了,相信就不会停下来的,毕竟有那么多的歌迷在期待。”

是的,呼唤真切,期待很美,歌坛会因为王菲的到来,再次掀起一阵旋风,我们期待:北京,2008-1-10。

分类: News 标签:

2007年最后的网络红人—合肥八中高三学生刘磬纤!

2007年12月31日 没有评论

网络上的东西不知道是真是假, 前些日子的天涯MM王紫娇事件抄得沸沸扬扬, 最后落的个PS作品, 至于刘磬纤, 从图片看来, PS的可能性应该可以排除, 但是一个高三的女生…… 也有消息说是被人陷害, 哎~ 看来互联网又要讨论一阵子了, 关于刘磬纤的相关图片, 大家还是自己去搜吧, 百度已经封锁部分图片, 可以试试Google等其他搜索引擎吧.

百度→刘磬纤

Google→刘磬纤

分类: News 标签:

[图文]火车采集器3.0采集使用设置示例

2007年12月30日 没有评论

以采集示例详解部分功能

今天要给大家做示例的网站是163的娱乐频道这个应该是个比较通用和实用的规则,下面开始。

如果您是火车采集器的老手,那么您可以参考下,因为我要讲解的会有违传统的思维;如我您是新手那么您最好能仔细看下,因为这将加快您的入门,同时在以后给您节省很多时间。以下是一些采集的基本步骤,您可以灵活运用:

一、建立站点

1、请先打开火车采集器,新建站点,看下图:

为了方便管理您可以为您的站点取任何的您觉得易记的名称,但是我建议用目标源的名字作为站点的名称有利于日后的管理,如下图

大部分的站点,通站往往只有一套模版或者有几套类似的模版,这边所谓的类似讲的是模版中的标记很接近,那什么是模版标记?模版标记指的是某部分内容开始和结束记号。比如很多正规的网站(通常是一些站点比较大,内容比较多的网站,比如sina、163等)会在内容开始的部分用类似于或

等标志来表示内容的开始。他们这么作的原因有两个,一个是由于内容多,为了各个部门之间的配合而作了对应的标记以便于工程的交接,另一个原因就是内容控制的需要,随着xhtml的流行,用层控制越来越多,这就使得我们寻找采集标示越来越简单(这点你们以后会慢慢理解的)。上面给各位讲这些是因为接下来要我们要讲解的是整站内容规则。

2、标题标签讲解。对应的页面在这:http://ent.163.com/06/1029/11/2UJNHOS3000322EL.html

首先从“站点基本信息”切换到“整站内容规则”,然后把要采集的内容页面的网址拷贝到“典型页面”接着点击“测试”读取源码。先从标题标签开始,我们发现按默认标签采集回来的标题多了“_网易娱乐”,请双击标题标签或者选种标题标签在点击修改,把“_网易娱乐”添加到排除内容框里,标题标签完成。如图:

3、内容标签讲解。制作采集规则(任务)的任何一个标签最重要的就在于寻找开始也结束的标志。目前大部分的采集器要求开始和结束的标志必须是整个源代码的唯一标志,也就是所有的html源码里只能找到一个开始或结束的标志。但是火车采集器并不需要这么作,你要找的只需要是从上到下第一个标志就可以了,我的意思是说,html代码中允许有n个相同的开始(结束,下同)标志,但是只要这个位于我们要采集的内容的地方的标志是html从上到下的第一个就可以了。打开任何一个内容页面,这边以http://ent.163.com/06/1029/11/2UJNHOS3000322EL.html 为例,我们发现他的内容从“进入论坛”,因此双击代码测试框,查找需要的代码,如图:

我们可以用这个作为内容开始的标志,不过这样还不完美,请自己在打开几个内容页面,在网页中“右键点击”——“查看源码”,然后对比代码,并提取相同的部分,我以

作为内容开始的标志。

接下来看内容结束标志,如下两图:

下面是根据我么设置规则采集回来的内容

一般来说我们从开始标志到结束标志所采集回来的内容中都会包含有必须排除的内容或广告,或链接。这边我们需要排除的内容是“相关专题>>> 第六届金鹰电视艺术节”。排除的方法是,找到相对应的代码把代码完整的拷贝进内容排除窗口,变动的部分用“(*)”替代。由于这个是整站规则,所以必须多找几个类别,比如现在的这个163娱乐还包括了“明星 | 图片 | 电影 | 电视 | 音乐 | 论坛 | 专题 | 名人访 ”等,在这边我只抽取“明星、图片、电影”作为列子跟大家讲解。找其他的类别只是希望把规则做的通用完美,如果你只要其中的一个分类,比如“图片”那么你直接做这个的规则即可。

http://ent.163.com/06/1018/15/2TNNT7EU00031H2L.html 这个页面刚好有分页,所以就顺便讲下上下页的设置。他这边的“上一页”和“下一页”是用图片做链接的,所以只要不图片的名字(右键点击对应的图片查看属性,拷贝图片名即可)拷贝进对应的代码框即可,详细的看图片:

这边提示下,任何内容的排除你只要找到对应的代码完整的拷贝进代码排除窗并把其中可变的部分替换成"(*)"即可。由于他这边没有广告,所有整站规则就算制作完毕,点击保存进入单任务制作。好了,整站规则就讲这两个标签,其他的根据需要自己按上面的步骤添加。

二、下面讲解单任务规则制作:

1、内容规则的制作,很多人到现在可能都还不明白火车采集器好在哪,现在讲的这个绝对是火车独有的特色(至少到目前为止是这样,以后有没有人出相同的功能就不得而知了!)

火车采集器是不需要经过网址规则制作即可直接进入内容采集,这样你就可以根据站点的难易决定是否采集选定的目标源,而不必等到网址采集后才发现原来这个网站你没办法采或者根本不值得你浪费这个时间(前面的时间白搭了!)。

火车v3.0最大的功能之一既是可以继承站点的规则,只要你前面制作的规则通用,那么在接下来的所有任务都不需要再制作内容采集规则了。由于前面我们制作的内容采集规则通用,所以这边的规则我们就不用讲解了,直接继承站点的,如图:

2、网址采集规则制作

步骤:“新建”——“新建任务”,其他的操作如下图:

作规则需要善于去发现规律性的东西,作到这点采集就没什么问题了。我们要采集示例的地址在这http://ent.163.com/special/00031HI0/entnews.html

这板只采集其中的1-3页作为范例。我们发现每个叶面的网址开始前面都包含“过往娱乐热点”结束都是“第1 2……页”,所以请到html源代码里面拷贝对应的代码,到特定区域采集范围中,另外,网址中必须包含“/06/” 这样网址采集就搞定了(简单吧,自己试试看),如下图:

3、发布方式。发布方式有5种,这边以最常用的“在线发布”为例。

选定web在线发布到网站,点击“定义全局发布方式”,然后按系统提示的步骤:选定发布模块——》填写网站/cms根地址——》使用火车内置浏览器登陆——》登陆后关闭内置浏览器——》刷新列表——》测试模块,测试成功——》保存配置——》保存任务——》发表 如下图高亮的部分是你要操作的步骤,从左到右从上到下:

发布如下图操作:

下面是刚才我采集到本地论坛采集测试的两个截屏:

分类: 我的收藏 标签:

SQL查询语句使用

2007年12月30日 没有评论

SQL查询语句使用
一、 简单查询
简单的Transact-SQL查询只包括选择列表、FROM子句和Where子句。它们分别说明所查询列、查询的表或视图、以及搜索条件等。
例如,下面的语句查询testtable表中姓名为“张三”的nickname字段和email字段。
Select nickname,email
FROM testtable
Where name='张三'
(一) 选择列表
选择列表(select_list)指出所查询列,它可以是一组列名列表、星号、表达式、变量(包括局部变量和全局变量)等构成。
1、选择所有列
例如,下面语句显示testtable表中所有列的数据:
Select *
FROM testtable
2、选择部分列并指定它们的显示次序
查询结果集合中数据的排列顺序与选择列表中所指定的列名排列顺序相同。
例如:
Select nickname,email
FROM testtable
3、更改列标题
在选择列表中,可重新指定列标题。定义格式为:
列标题=列名
列名 列标题
如果指定的列标题不是标准的标识符格式时,应使用引号定界符,例如,下列语句使用汉字显示列
标题:
Select 昵称=nickname,电子邮件=email
FROM testtable
4、删除重复行
Select语句中使用ALL或DISTINCT选项来显示表中符合条件的所有行或删除其中重复的数据行,默认为ALL。使用DISTINCT选项时,对于所有重复的数据行在Select返回的结果集合中只保留一行。
5、限制返回的行数
使用TOP n [PERCENT]选项限制返回的数据行数,TOP n说明返回n行,而TOP n PERCENT时,说明n是
表示一百分数,指定返回的行数等于总行数的百分之几。
例如:
Select TOP 2 *
FROM testtable
Select TOP 20 PERCENT *
FROM testtable
(二)FROM子句
FROM子句指定Select语句查询及与查询相关的表或视图。在FROM子句中最多可指定256个表或视图,
它们之间用逗号分隔。
在FROM子句同时指定多个表或视图时,如果选择列表中存在同名列,这时应使用对象名限定这些列所属的表或视图。例如在usertable和citytable表中同时存在cityid列,在查询两个表中的cityid时应
使用下面语句格式加以限定:
Select username,citytable.cityid
FROM usertable,citytable
Where usertable.cityid=citytable.cityid
在FROM子句中可用以下两种格式为表或视图指定别名:
表名 as 别名
表名 别名
(二) FROM子句
FROM子句指定Select语句查询及与查询相关的表或视图。在FROM子句中最多可指定256个表或视图,
它们之间用逗号分隔。
在FROM子句同时指定多个表或视图时,如果选择列表中存在同名列,这时应使用对象名限定这些列所属的表或视图。例如在usertable和citytable表中同时存在cityid列,在查询两个表中的cityid时应使用下面语句格式加以限定:
Select username,citytable.cityid
FROM usertable,citytable
Where usertable.cityid=citytable.cityid
在FROM子句中可用以下两种格式为表或视图指定别名:
表名 as 别名
表名 别名
例如上面语句可用表的别名格式表示为:
Select username,b.cityid
FROM usertable a,citytable b
Where a.cityid=b.cityid
Select不仅能从表或视图中检索数据,它还能够从其它查询语句所返回的结果集合中查询数据。
例如:
Select a.au_fname+a.au_lname
FROM authors a,titleauthor ta
(Select title_id,title
FROM titles
Where ytd_sales>10000
) AS t
Where a.au_id=ta.au_id
AND ta.title_id=t.title_id
此例中,将Select返回的结果集合给予一别名t,然后再从中检索数据。
(三) 使用Where子句设置查询条件
Where子句设置查询条件,过滤掉不需要的数据行。例如下面语句查询年龄大于20的数据:
Select *
FROM usertable
Where age>20
Where子句可包括各种条件运算符:
比较运算符(大小比较):>、>=、=、<、<=、<>、!>、!<
范围运算符(表达式值是否在指定的范围):BETWEEN…AND…
NOT BETWEEN…AND…
列表运算符(判断表达式是否为列表中的指定项):IN (项1,项2……)
NOT IN (项1,项2……)
模式匹配符(判断值是否与指定的字符通配格式相符):LIKE、NOT LIKE
空值判断符(判断表达式是否为空):IS NULL、NOT IS NULL
逻辑运算符(用于多条件的逻辑连接):NOT、AND、OR
1、范围运算符例:age BETWEEN 10 AND 30相当于age>=10 AND age<=30
2、列表运算符例:country IN ('Germany','China')
3、模式匹配符例:常用于模糊查找,它判断列值是否与指定的字符串格式相匹配。可用于char、
varchar、text、ntext、datetime和smalldatetime等类型查询。
可使用以下通配字符:
百分号%:可匹配任意类型和长度的字符,如果是中文,请使用两个百分号即%%。
下划线_:匹配单个任意字符,它常用来限制表达式的字符长度。
方括号[]:指定一个字符、字符串或范围,要求所匹配对象为它们中的任一个。
[^]:其取值也[] 相同,但它要求所匹配对象为指定字符以外的任一个字符。
例如:
限制以Publishing结尾,使用LIKE '%Publishing'
限制以A开头:LIKE '[A]%'
限制以A开头外:LIKE '[^A]%'
4、空值判断符例Where age IS NULL
5、逻辑运算符:优先级为NOT、AND、OR
(四)查询结果排序
使用ORDER BY子句对查询返回的结果按一列或多列排序。ORDER BY子句的语法格式为:
orDER BY {column_name [ASC|DESC]} [,…n]
其中ASC表示升序,为默认值,DESC为降序。ORDER BY不能按ntext、text和image数据类型进行排序。
例如:
Select *
FROM usertable
orDER BY age desc,userid ASC
另外,可以根据表达式进行排序。
二、 联合查询
UNION运算符可以将两个或两个以上上Select语句的查询结果集合合并成一个结果集合显示,即执行联合查询。UNION的语法格式为:
select_statement
UNION [ALL] selectstatement
[UNION [ALL] selectstatement][…n]
其中selectstatement为待联合的Select查询语句。
ALL选项表示将所有行合并到结果集合中。不指定该项时,被联合查询结果集合中的重复行将只保留一行。
联合查询时,查询结果的列标题为第一个查询语句的列标题。因此,要定义列标题必须在第一个查询语句中定义。要对联合查询结果排序时,也必须使用第一查询语句中的列名、列标题或者列序号。
在使用UNION 运算符时,应保证每个联合查询语句的选择列表中有相同数量的表达式,并且每个查询选
择表达式应具有相同的数据类型,或是可以自动将它们转换为相同的数据类型。在自动转换时,对于数值类型,系统将低精度的数据类型转换为高精度的数据类型。
在包括多个查询的UNION语句中,其执行顺序是自左至右,使用括号可以改变这一执行顺序。例如:查询1 UNION (查询2 UNION 查询3)
三、连接查询
通过连接运算符可以实现多个表查询。连接是关系数据库模型的主要特点,也是它区别于其它类型数据库管理系统的一个标志。
在关系数据库管理系统中,表建立时各数据之间的关系不必确定,常把一个实体的所有信息存放在一个表中。当检索数据时,通过连接操作查询出存放在多个表中的不同实体的信息。连接操作给用户带来很大的灵活性,他们可以在任何时候增加新的数据类型。为不同实体创建新的表,尔后通过连接进行查询。
连接可以在Select 语句的FROM子句或Where子句中建立,似是而非在FROM子句中指出连接时有助于将连接操作与Where子句中的搜索条件区分开来。所以,在Transact-SQL中推荐使用这种方法。
SQL-92标准所定义的FROM子句的连接语法格式为:
FROM join_table join_type join_table
[ON (join_condition)]
其中join_table指出参与连接操作的表名,连接可以对同一个表操作,也可以对多表操作,对同一个表操作的连接又称做自连接。
join_type 指出连接类型,可分为三种:内连接、外连接和交叉连接。内连接(INNER JOIN)使用比较运算符进行表间某(些)列数据的比较操作,并列出这些表中与连接条件相匹配的数据行。根据所使用
的比较方式不同,内连接又分为等值连接、自然连接和不等连接三种。
外连接分为左外连接(LEFT OUTER JOIN或LEFT JOIN)、右外连接(RIGHT OUTER JOIN或RIGHT JOIN)和全外连接(FULL OUTER JOIN或FULL JOIN)三种。与内连接不同的是,外连接不只列出与连接条件相匹配的行,而是列出左表(左外连接时)、右表(右外连接时)或两个表(全外连接时)中所有符合搜索条件的数据行。
交叉连接(CROSS JOIN)没有Where 子句,它返回连接表中所有数据行的笛卡尔积,其结果集合中的数据行数等于第一个表中符合查询条件的数据行数乘以第二个表中符合查询条件的数据行数。
连接操作中的ON (join_condition) 子句指出连接条件,它由被连接表中的列和比较运算符、逻辑运算符等构成。
无论哪种连接都不能对text、ntext和image数据类型列进行直接连接,但可以对这三种列进行间接连接。例如:
Select p1.pub_id,p2.pub_id,p1.pr_info
FROM pub_info AS p1 INNER JOIN pub_info AS p2
ON DATALENGTH(p1.pr_info)=DATALENGTH(p2.pr_info)

(一)内连接
内连接查询操作列出与连接条件匹配的数据行,它使用比较运算符比较被连接列的列值。内连接分三种:
1、等值连接:在连接条件中使用等于号(=)运算符比较被连接列的列值,其查询结果中列出被连接表中的所有列,包括其中的重复列。
2、不等连接: 在连接条件使用除等于运算符以外的其它比较运算符比较被连接的列的列值。这些运算符包括>、>=、<=、<、!>、!<和<>。
3、自然连接:在连接条件中使用等于(=)运算符比较被连接列的列值,但它使用选择列表指出查询结果集合中所包括的列,并删除连接表中的重复列。
例,下面使用等值连接列出authors和publishers表中位于同一城市的作者和出版社:
Select *
FROM authors AS a INNER JOIN publishers AS p
ON a.city=p.city
又如使用自然连接,在选择列表中删除authors 和publishers 表中重复列(city和state):
Select a.*,p.pub_id,p.pub_name,p.country
FROM authors AS a INNER JOIN publishers AS p
ON a.city=p.city

(二)外连接
内连接时,返回查询结果集合中的仅是符合查询条件( Where 搜索条件或 HAVING 条件)和连接条件的行。而采用外连接时,它返回到查询结果集合中的不仅包含符合连接条件的行,而且还包括左表(左外连接时)、右表(右外连接时)或两个边接表(全外连接)中的所有数据行。
如下面使用左外连接将论坛内容和作者信息连接起来:
Select a.*,b.* FROM luntan LEFT JOIN usertable as b
ON a.username=b.username
下面使用全外连接将city表中的所有作者以及user表中的所有作者,以及他们所在的城市:
Select a.*,b.*
FROM city as a FULL OUTER JOIN user as b
ON a.username=b.username

(三)交叉连接
交叉连接不带Where 子句,它返回被连接的两个表所有数据行的笛卡尔积,返回到结果集合中的数据行数等于第一个表中符合查询条件的数据行数乘以第二个表中符合查询条件的数据行数。
例,titles表中有6类图书,而publishers表中有8家出版社,则下列交叉连接检索到的记录数将等于6*8=48行。
Select type,pub_name
FROM titles CROSS JOIN publishers
orDER BY type
[Post=0][/Post]

分类: 技 术 标签: