sql查询语句基础_第1页
sql查询语句基础_第2页
sql查询语句基础_第3页
sql查询语句基础_第4页
sql查询语句基础_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、sql查询语句基础datatrans-1500服务器是用sql server服务器作数据的底层管理,当用 户对datatrans-1500服务器进彳亍查询时,服务器通过mand命 令文件以及.from检索途径对彖来构造sql查询语句,通过此sql查询 语句来对sql server服务器发起检索。datatrans-1500服务器的系统管理员,了解、掌握sql查询语句的语法, 能更好的作好二次开发。鉴于datatrans-1500服务器系统管理员所作的 二次开发只与查询语句有关,本章只介绍sql查询语句屮与select语 句有关的一些基础知识,以方便广大不熟悉sql查询语言的datatrans-

2、1500服务器系统管理员。有关sql语言更详细的知识请查阅 有关手册。sql (struct query language)即结构化杳询语言,它是使用关系模型的 数据库应用语言,由ibm在70年代开发出来。现在sql结构化查询语 言已经成为一个工业标准,几乎所有的数据库都支持它的查询,sql server更是如此。sql server服务器中,用select语句实现数据库的查询操作。同吋, 它可以使用各种子句对查询结果进行分组统计、合计、排序等操作。 select语句还可将查询结果生成另一个表(临时表或永久表)。select语句的语法格式为:select allidistincti selec

3、tjistinto |new_table_name>from table_namelview_name (optimizer_hints)<,table_name21 vie w_name2 (optimizer_hints).,table_name 16lview_name 16 (optimizer_hints)> where clouseigroup by clausehaving clauseorder by clausecompute clausefor browse以上格式中,“r括的项表示可选项,大写的词为关键字,小写的词表示 不确定的实体名称。除第一行外,每一

4、行为一个了句,在select中了 句可以省略,但在列出时,必须按照以上顺序。11.1简单查询语句简单的sql查询只包括select子句、from子句和where子句, 它们分别说明查询列、要查询的表和搜索条件。例如:select keys, fieldsfrom keyswhere frm inc200*a')以上select语句查询keys表屮frm字段为poo躍的记录的keys和 fields 字段。其查询结果可能为:keys marc_id王德树 0000000001贺鸣 0000000001郭宏雨 0000000002郭宏雨 0000000002(4 row(s) affect

5、ed)11select条件列表1显示keys表中所有列的内容select * from keys将对keys表中每个字段的值进行显示。2按顺序显示指定列select marc_id, fileds, keys from keys在select列表中指定列名来选择不同的列,个列z间用逗号分开,结 果的显示顺序为select列表中字段的排列顺序。3更改列标题select keys ,记录号=marcjd from keys或 select keys, marc_id 记录号 from keys或 select keys, marc_id as 记录号 from keys执行结果为:keys记录号王

6、德树 0000000001贺鸣 0000000001郭宏雨 0000000002郭宏雨 0000000002(4 row(s) affected)在select语句中口j以为选择列指定列标题,其格式为: 列标题二列名或: 列名列标题4删除重复行select语句中可以使用allidistinct选项来显示所有行(all)或 删除重复的行(distinct),缺省为all,即不去重。在前面的例子屮将查语句换为:select distinct keys, marcjd from keys查询结果为:keys marcjd王德树 0000000001 贺鸣 0000000001郭宏雨 00000000

7、02(3 row(s) affected)11.1.2 from 子句from子句指定select语句查询及与查询相关的表或视图。在from 子句中最多可指定16个表或视图,它们相互之间用逗号分开,如果这些 表属于不同的数据库,可用'数据库所有者名称对象'格式加以限定。在 缺省情况下,from子句不指定数据库名称,查询的数据库为当前数据 库。11.1.3 where 子句select语句中的where子句用來指定查询条件。where子句屮包含各种查询条件,如下花运算符分类运算符意义比较运算符>>=<<= = <> !> !<大小比

8、较between. and.not between.and.innot inlikenot likeis nullnot is nullandornot在datatrans-1500服务器的检索途径对象配置文件中,经常用到的条件 运算符是:列表运算符in和模式匹配符like。列表运算符in列表运算符的格式为: 表达式|not in (列表项1,列表项2,列表项3) 它要求查询时表达式的值(不)在列表内。例如:select keys from keys where frm in (200*a, '201 *b')表示要查询的keys來源必须在c200廿,201w沖,即frm字段值

9、 为'200*a'或'201*b'。模式匹配符like模式匹配符not like常用于模糊查询,它判断列值是否与指定的字 符串格式匹配。在sql server屮可使用的匹配符有以下几种:百分号():可匹配任意类型和t度的字符。下划线(_):匹配单个任意字符。方括号小指定一个字符、字符串或范围,要求所匹配对象为它们屮的 任何一个。ri:与口取值相同,但要求所匹配的对象为指定范围以外的任何一个字 符。例如下而的语句利用通配符来查找以“王”开头的字符串:select keys from keys where keys like '赵'查询结果为:key

10、s赵宝山赵成和赵并林(3 row(s) affected)11.2用group by子句进行统计group by子句的语法格式为:group by all aggregate_free_expression,aggregate_free_expression在select语句中,group by子句和集合函数对数据库进行分组统 计,在查询结果中,每一组统计出一个结果。例如:select fields as keystring,count(fields) as hitcountfrom keys where(keys like 德')andfrm like '200*agroup

11、 by fields执行的结果为:keystring hitcount李祖德1桑关德1张京德1张冲德1(4 row(s) affected) 在上面的例了中,group by t句和集合函数count按照fields字段 对keys表进行分组统计。集合函数count对每一组的行数进行计算, 分组的标准是group by中定义的字段fieldso11.3 into子句用查询结果创建新表select语句中使用into选项可以将查询结果写进新表,新表结构与 select语句选择列表屮的字段相同。例如:select fields as keystring,count(fields) as hitcou

12、ntinto #temp/*into*/from englishbooks.keys where(keys like 鲁迅)andfrm like '24_*a'and (marc_id >= *0000000001 * and marc_id <= *9999999999')group by fields通过了句into #temp sql server将select查询结杲和count的统计 结果写入临吋表temp中,临口寸表temp结构包含keystring和hitcount两 个字段。在以后用到这些信息时,就可以从temp表中读取。11.4使用uni

13、on运算符实现多查询联合union运算符可以将两个或两个以上的查询结果合并成一个结果集合 显示。union运算符的语法格式为:查询 1 union all查询 n.order by 子句compute 子句查询1的格式为:select select_listinto子句from子句where 子句group by 了句having 子句查询n的格式为:select selectjistfrom子句where 了句group by 了句having 了句查询1与查询不同z处在于查询1多了一个用來指定新表的into 了句, 通过union子句句查询n的结果也将写进查询中into运算符定义的新 表中

14、。在使用union 了旬时,应保证每个查询语旬的选择列表中有和同数量 的表达式,并且每个查询选择列表屮的对应表达式应具冇相同或可以自 动转换成相同的数据类型。缺省情况下,union运算符将删除不同查询语句中行值相同的行,如果 要保留这些相同的行,应使用all选项。11.5 .from文件和mand文件构造sql查询语彳j在datatrans-1500服务器的检索途径对象.from文件中的毎个section小 节都是一个用来构造sql查询语句的模板。而且每个小节都有一个 /*into*/, /*into*/是into子句的插入标志。在进行多库或多途径查询时, 最后只冇一个结果集,datatran

15、s-1500服务器只插入了一个into子句。 z所以为.from文件的每个section小节都加了一个/*into*/标志,是因为 无法确定哪个小节首先被匹配,每个小节都有可能是第一个被匹配的。 而最后的结果是,只有第一个被匹配的小节中的/intow志是起作用的。要在/*into*/处插入的into运算符被定义在mand文件中的 union-into-phrase字段中。卜面一段源文件在mand中对 titlenumber结果集的定义:<recordset name=titlenumberdefinition = ".title varchar(255), _hitcount

16、intnunion-intophnise = "into #tempnsegment-phrase = "and(%segment(',%defaultsqldb%/%keys%/%recordid%,)%)hafter-union = "select top 50000 keystring, sum (hitcount) as hitnumber into %temptablename% from #temp group by keystring order by keystring drop table #temp create clustered i

17、ndex keyindex on %temptablename% (keystring)"statis = "select count(*) as totalkey , sum(hitnumber) as totalrecfrom %temptablename%"catch-key-parameter-name = "recordset,word,link,match,from,fromtitle"order-phrase = norder by keystring1'在datatrans-1500服务器中对所冇库发起一次全途径检索,由

18、 mand文件和若干个.from文件构造的sql查询语句如下所示。/kv# kv# kv# kv# kv# kv# kv# kv#ffk/*首次检索key + count (多检索词)*/select fields as keystring,count(fields) as hitcount into #temp/*into*/from englishbooks.keys where(keys like '%')and frm like '24_*a,and (marc_id >= *000000000 t and marc_id v= 9999999999)gr

19、oup by fieldsunion all/*首次检索key + count (多检索词)*/select top 50000 fields as keystring,count(fields) as hitcount/*into*/from 出版社.keys where(keys like % )andfrm = '101group by fieldsunion all/ 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 / f r?w rjw #7w r7w #7 «7w «7w «7w «7w «7w «7w

20、 «7w «7w «7w «7w «7w «7w «7w «7w «7w «7w «7w «7w «7w «7w «7w «7w «7w «7w «7w «7w «7w «7w «7w «7w «7w «7w «7w «7w «7w «7w «7w «7wr7> rj% rj% rj% rj% rj% rj% rj% rj% rj% rj% j/*首次检索key + count (多检索词)*/select top 50000 fields as keystringcount(fields) as hitcount /*into*/ from dt 1500sqldb2.keys where(keys like %)andfrm in (200pt.)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论