仓酷云

标题: MSSQL网页设计数据查询--SELECT语句 [打印本页]

作者: 活着的死人    时间: 2015-1-16 22:19
标题: MSSQL网页设计数据查询--SELECT语句
刚安装好的MySql包含一个含空密码的root帐户和一个匿名帐户,这是很大的安全隐患,对于一些重要的应用我们应将安全性尽可能提高,在这里应把匿名帐户删除、root帐户设置密码数据库是为更便利无效地办理信息而存在的人们,但愿数据库能够随时供应所必要的数据信息。因而,对用户来讲,数据查询是数据
库最主要的功效。本章将报告数据查询的完成办法。

在数据库中,数据查询是经由过程SELECT语句来完成的。SELECT语句能够从数据库中按用户请求检索数据,并将查询了局以表格的情势前往。我们在“Transact-SQL言语”章节及后面的章节中已开端打仗到了SELECT语句的一些用法,在本章中将分类报告其详细用法。

本节报告SELECT语句完全的锓峁梗馐且桓龇浅H叱ぁ⒖菰锏墓獭6琳呖?以跳过本节,从第二节入手下手浏览,而将本节作为了解、编写查询语句的语法参考材料。SELECT语句完全的语法布局以下:
SELECTstatement::=
<query_expression>
[ORDERBY{order_by_expression|column_position[ASC|DESC]}[,...n]]
[COMPUTE{{AVG|COUNT|MAX|MIN|SUM}(expression)}[,...n]
[BYexpression[,...n]]]
[FOR{BROWSE|XML{RAW|AUTO|EXPLICIT}
[,XMLDATA]
[,ELEMENTS]
[,BINARYbase64]}
[OPTION(<query_hint>[,...n])]
<queryexpression>::=
{<queryspecification>|(<queryexpression>)}
[UNION[ALL]<queryspecification|(<queryexpression>)[...n]]
<queryspecification>::=
SELECT[ALL|DISTINCT]
[{TOPinteger|TOPintegerPERCENT}[WITHTIES]]
<select_list>
[INTOnew_table]
[FROM{<table_source>}[,...n]]
[WHERE<search_condition>]
[GROUPBY[ALL]group_by_expression[,...n]
[WITH{CUBE|ROLLUP}]]
[HAVING<search_condition>]
因为SELECT语句出格庞大,上述布局还不克不及完整申明其用法,因而我们将它拆分为多少部分来说述。

10.1.1SELECT子句
SELECT子句指定必要经由过程查询前往的表的列,其语法以下:
SELECT[ALL|DISTINCT]
[TOPn[PERCENT][WITHTIES]]
<select_list>
<select_list>::=
{*
|{table_name|view_name|table_alias}.*
|{column_name|expression|IDENTITYCOL|ROWGUIDCOL}
[[AS]column_alias]
|column_alias=expression
}[,...n]
各参数申明以下:<P>
10.1.2INTO子句
INTO子句用于把查询了局寄存到一个新建的表中。SELECT...INTO句式不克不及与COMPUTE子句一同利用。其语法以下:
INTOnew_table
参数new_table指定了新建的表的称号。新表的列由SELECT子句中指定的列组成,新表中的数据行是由WHERE子句指定的。但假如SELECT子句中指定了盘算列,在新表中对应的列则不是盘算列,而是一个实践存储在表中的列,个中的数据由实行SELECT...INTO语句时盘算得出。假如数据库的“Selectinto/bulkcopy”选项设置为“True/On”,则能够用INTO子句创立表和一时表,反之,则只能创立一时表。

10.1.3FROM子句
FROM子句指定必要举行数据查询的表。只需SELECT子句中有要查询的列,就必需利用FROM子句。其语法以下:
FROM{<table_source>}[,...n]
<table_source>::=
table_name[[AS]table_alias][WITH(<table_hint>[,...n])]
|view_name[[AS]table_alias]
|rowset_function[[AS]table_alias]
|OPENXML
|derived_table[AS]table_alias[(column_alias[,...n])]
|<joined_table>
<joined_table>::=
<table_source><join_type><table_source>ON<search_condition>
|<table_source>CROSSJOIN<table_source>
|<joined_table>
<join_type>::=
[INNER|{{LEFT|RIGHT|FULL}[OUTER]}]
[<join_hint>]
JOIN
各参数申明以下:<P>
10.1.4WHERE子句
WHERE子句指定命据检索的前提,以限定前往的数据行。其语法以下:
WHERE<search_condition>|<old_outer_join>
<old_outer_join>::=
column_name{*=|=*}column_name
各参数申明以下:
search_condition
经由过程由谓词组成的前提来限定前往的查询了局。
old_outer_join
指定一个外毗连。此选项是不尺度的,但利用便利。它用“*=”操纵符暗示左毗连,用“=*”操纵符暗示右毗连。此选项与在FROM子句中指定外毗连都是可行的办法,但两者只能择其一。

注重:假如在WHERE子句中指定一个值为FALSE的前提,则能够用SELECT...INTO语句来创立一个表名分歧,但布局和数据范例均和原表不异的表。

10.1.5GROUPBY子句
GROUPBY子句指定查询了局的分组前提。其语法以下;
GROUPBY[ALL]group_by_expression[,...n]
[WITH{CUBE|ROLLUP}]
各参数申明以下:
<P>

利用Distinct选项的统计函数,如AVG(DISTINCTcolumn_name)、COUNT(DISTINCTcolumn_name)、和SUM(DISTINCTcolumn_name)等,不克不及在利用CUBE或ROLLUP选项时利用。

10.1.6HAVING子句
HAVING子句指定分组搜刮前提。HAVING子句一般与GROUPBY子句一同利用。TEXT、NTEXT和IMAGE数据范例不克不及用于HAVING子句。其语法以下:
HAVING<search_condition>
HAVING子句与WHERE子句很类似,其区分在于其感化的工具分歧。WHERE子句感化于表和视图,HAVING子句感化于组。

10.1.7UNION操纵符
UNION操纵符将两个或两个以上的查询了局兼并为一个了局集。它与利用毗连查询兼并两个表的列是分歧的。利用UNION操纵切合并查询了局必要遵守两个基础划定规矩:<P>

10.1.8ORDERBY子句
ORDERBY子句指定查询了局的排序体例。其语法以下:
ORDERBY{order_by_expression[ASC|DESC]}[,...n]
各参数申明以下:<P>

10.1.9COMPUTE子句
COMPUTE子句在查询了局的开端天生一个汇总数据行。其语法以下:
COMPUTE
{{AVG|COUNT|MAX|MIN|STDEV|STDEVP|VAR|VARP|SUM}
(expression)}[,...n]
[BYexpression[,...n]]
各参数申明以下:
AVG|COUNT|MAX|MIN|STDEV|STDEVP|VAR|VARP|SUM()以上参数与对应的函数有不异的寄义。这些函数均会疏忽NULL值,且DISTINCT选项不克不及在此利用。
expression
指定必要统计的列的称号。此列必需包括于SELECT列表中,且不克不及用别号。COMPUTE子句中也不克不及利用TEXT、NTEXT和IMAGE数据范例。
BYexpression
在查询了局中天生分类统计的行。假如利用此选,项则必需同时利用ORDERBY子句。expression是对应的ORDERBY子句中的order_by_expression的子集或选集。
注重:在SELECT子句中利用统计函数,会掩盖COMPUTE子句中的响应选项。在SELECTINTO语句中不克不及利用COMPUTE子句。

10.1.10FORBROWSE子句
FORBROWSE子句用于读取别的的用户正在举行增加、删除或更新纪录的表。其语法以下:
FOR{BROWSE|XML{RAW|AUTO|EXPLICIT}
[,XMLDATA]
[,ELEMENTS]
[,BINARYbase64]
}
各参数申明以下:
BROWSE
BROWSE选项指明当检察在利用DB-Library的客户机使用程序中的数据时,能够更新数据。
利用此子句时对所操纵的表有一些限定:
表必需包括一个timestamp范例的工夫标识列;
表必需有一个唯一索引。
注重:
在SELECT语句中:FORBROWSE子句必需是SELECT语句的最初子句;FORBROWSE子句不克不及与UNION操纵符同时利用;FORBROWSE子句不克不及与表提醒HOLDLOCK选项同时利用。<P>
注重:SELECT语句中各子句的分列序次是很主要的,子句必需依响应的序次来利用。
当用SELECT命令读取TEXT和IMAGE范例数据时,一次所能读取的数据受限于@@TE-XTSIZE全局变量的值。
能够用SETTEXTSIZE命令来变动它。@@TEXTSIZE的初始值为4K,最年夜为231-1(2,147,483,647)个字节。根据Ambrose所说,Sakila来自一种叫SiSwati的斯威士兰方言,也是在Ambrose的家乡乌干达附近的坦桑尼亚的Arusha的一个小镇的名字。
作者: 活着的死人    时间: 2015-1-19 08:43
varchar(max)\\\\nvarchar(max)类型的引入大大的提高了编程的效率,可以使用字符串函数对CLOB类型进行操作,这是一个亮点。
作者: 柔情似水    时间: 2015-1-24 19:16
备份方面可能还是一个老大难的问题。不能单独备份几个表总是感觉不爽。灵活备份的问题不知道什么时候才能解决。
作者: 谁可相欹    时间: 2015-2-2 12:43
可能有的朋友会抱怨集成的orderby,其实如果使用ranking函数,Orderby是少不了的。如果担心Orderby会影响效率,可以为orderby的字段建立聚集索引,查询计划会忽略orderby操作(因为本来就是排序的嘛)。
作者: 山那边是海    时间: 2015-2-7 20:15
从底层原理到表层引用,书籍多的很。个人认为没有什么那本书好?这样的说法。主要看和个人的学习方法是否适合。
作者: 金色的骷髅    时间: 2015-2-23 10:24
从项目平台的选择上讲,我们关心的,应该是一款产品能不能满足任务需求,而不是网上怎么说。
作者: 简单生活    时间: 2015-3-7 08:05
一个是把SQL语句写到客户端,可以使用DataSet进行加工;
作者: 再见西城    时间: 2015-3-14 15:58
呵呵,这就是偶想说的
作者: 莫相离    时间: 2015-3-21 12:16
数据库物理框架没有变动undo和redo都放在数据库得transaction中,个人感觉是个败笔。如果说我们在设计数据库的时候考虑分多个数据库,可能能在一定程度上避免I/O效率问题。




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2