上一页 1 ··· 151 152 153 154 155
摘要: TOP选项是T-SQL特有的,用于限制查询返回的行数或百分比。当在查询中指定了ORDER BY子句时,TOP将依赖该子句来定义行和逻辑优先顺序。例如,如果要从Orders表返回最近的5个订单,则可以在SELECT子句中指定TOP(5),并在ORDER BY子句中指定orderdate DESC,如以下代码:1 SELECTTOP(5) orderid,orderdate,custid,empid2 FROM Sales.Orders3 ORDERBY orderdate DESC; 从逻辑查询处理的角度来看,TOP选项是作为SELECT阶段的一部分而处理的,紧接着DISTINCT子句处理... 阅读全文
posted @ 2012-09-24 10:19 沙耶 阅读(550) 评论(0) 推荐(0)
摘要: 需要达到的几个基本特性:1)程序启动能够自动检测版本,并自动下载新版本程序;2)下载过程,应考虑中断情况,不能导致下次启动的任何无法运行的故障;3)下载要考虑自动修复模式,即用户可以点击“重新下载”,相当于覆盖安装一次。4)升级的数据最好是压缩过的,下载后解压,减少数据流量。5)文件需要MD5签名,方便比较,未改变的文件无需重复下载。6)考虑制作发布版本的方便性,应该具备一个生成发布包的工具。7)发布到服务器站点时,要考虑防止发布过程影响到正在使用中的客户。(考虑最后更改服务器上的当前版本配置文件,指向最新的发布目录)8)要考虑升级检测程序自身的更新(建议使用之前跟你讨论过的复制运行副本模式) 阅读全文
posted @ 2012-09-24 10:15 沙耶 阅读(379) 评论(0) 推荐(0)
摘要: ORDER BY子句用于展示数据时对输出结果中的行进行排序。从逻辑查询处理来看,ORDER BY是最后处理的一个子句。下面的代码按照雇员ID和订单年份对输出结果进行排序:1 SELECT empid,YEAR(orderdate) AS orderyear,COUNT(*) AS numorders2 FROM Sales.Orders3 WHERE custid =714 GROUPBY empid,YEAR(orderdate)5 HAVINGCOUNT(*) >16 ORDERBY empid,orderyear; 理解SQL最重要的一点就是要明白表不保证是有序的,因为表是为了代表 阅读全文
posted @ 2012-09-24 09:47 沙耶 阅读(1238) 评论(0) 推荐(0)
摘要: SELECT子句用于指定需要在查询返回的结果集中包含的属性(列)。SELECT列表中的表达式可以直接基于正在查询的表的各个列,也可以在此基础上做进一步的处理。例如,在前面的代码中的SELECT列表就包含以下表达式:empid、YEAR(orderdate)、COUNT(*)。如果表达式直接引用了某个列(如empid),那么目标列的名称默认与原始列的名称一样。也可以选择为目标列分配自定义的名称,为此要使用AS子句(例如,empid AS employee_id)。当在表达式中进行了一定的处理(例如,YEAR(orderdate)),或者没有基于原始表的列(如调用CURRENT_TIMESTA.. 阅读全文
posted @ 2012-09-24 09:30 沙耶 阅读(3835) 评论(0) 推荐(0)
摘要: HAVING子句用于指定对组进行过滤的谓词或逻辑表达式,这与WHERE阶段对单独的行进行过滤相对应。只有能让HAVING子句中的逻辑表达式为TRUE的组,HAVING阶段才会把这些组返回到下一个逻辑查询处理阶段。逻辑表达式计算结果为FALSE或UNKNOWN的组将被过滤掉。 因为HAVING子句是在对行进行分组后处理的,所以可以在逻辑表达式中引用聚合函数。例如,在下面所示的代码中,HAVING子句使用了逻辑表达式COUNT(*)>1,意味着HAVING阶段过滤器只保留包含多行的组(雇员和订单年份)。 SELECT empid,YEAR(orderdate) AS orderyear,CO 阅读全文
posted @ 2012-09-21 16:50 沙耶 阅读(371) 评论(0) 推荐(0)
摘要: GROUP BY阶段可以将WHERE逻辑查询处理阶段返回的行按“组”进行组合。每个组由在GROUP BY子句中指定的各元素决定。例如,以下代码所示查询的GROUP BY子句就使用了empid和YEAR(orderdate)元素: SELECT empid,YEAR(orderdate) AS orderyear,COUNT(*) AS numorders FROM Sales.Orders WHERE custid=71 GROUP BY empid,YEAR(orderdate); 这意味着对于WHERE阶段返回的数据中出现的每个雇员ID和订单年份值的唯一组合,在GROUP B... 阅读全文
posted @ 2012-09-21 16:24 沙耶 阅读(786) 评论(0) 推荐(0)
摘要: 在WHERE子句中,可以指定一个谓词或逻辑表达式,从而过滤由FROM阶段返回的行。只有能让逻辑表达式结果为TRUE的行,才能由WHERE阶段返回给后续的逻辑查询处理阶段。 SELECT orderid,custid,empid,orderdate,freight FROM Sales.Orders WHERE custid=71; 上面这段代码应用了过滤条件custid=71,WHERE阶段将只保留客户ID等于71的行。 WHERE子句对查询性能有重要影响。在过滤表达式的基础上,SQL Server会计算使用什么索引来访问请求的数据。与扫描整个表相比,通过使用索引,有时可以大幅减少... 阅读全文
posted @ 2012-09-21 16:15 沙耶 阅读(276) 评论(0) 推荐(0)
摘要: FROM子句是在逻辑处理阶段第一个要处理的查询子句。这个子句用于要查询的表名,以及对这些表进行操作的表运算符。应该总是用数据库架构来限定代码中的对象名称。即便你没有显示指定架构名称,SQL Server也一定会隐式地解析它。这样就产生了一些额外的代价,而且如果完全让SQL Server决定使用哪个对象,也容易产生歧义。通过显示指定架构名称,可以保证得到的对象的却是你原来想要的而且还不必付出任何额外的代价。 如果不用任何特殊处理而返回一个表的所有行,所有需要做的就是使用一个带有FROM子句的查询,在FROM子句中指定想要查询的表名,在SELECT子句中指定想要返回的各个属性。例如以下语句查... 阅读全文
posted @ 2012-09-21 15:29 沙耶 阅读(333) 评论(0) 推荐(0)
摘要: SELECT语句的目的是对表进行查询、应用一定的逻辑处理,并返回结果。注意,这里的“逻辑查询处理”是指ANSI SQL定义的概念模型,规定了如何处理一个查询,以及如何取得最终的结果。Microsoft SQL Server引擎并不教条地严格遵守逻辑查询处理;相反,在物理地处理一个查询时,它可以自由地调整处理阶段的顺序,只要最终的结果能够和逻辑查询处理的规定保持一致。SQL Server可以(事实上经常)在查询的物理处理中采用很多快捷方式。 我们使用以下代码来描述逻辑查询处理和各种SELECT查询字句:USE TestDB SELECT empid,YEAR(orderdate) AS ... 阅读全文
posted @ 2012-09-21 14:44 沙耶 阅读(462) 评论(0) 推荐(0)
摘要: 关系模型带来的最大优点之一就是模型本身集成了数据完整性。作为模型的一部分而实施的数据完整性(也就是说,作为表定义的一部分)称为声明式(declarative)数据完整性。用代码来实施的数据完整性(例如,用存储过程或触发器)称为过程式(procedural)数据完整性。 为属性选择的数据类型和是否允许为NULL值,甚至数据模型本身都是声明式数据完整性约束的例子。其他声明式约束包括主键、唯一约束(UNIQUE)、外键、检查约束(CHECK),以及DEFAULT约束。当用CREATE TABLE语句创建表时,可以同时定义这些约束;或者在已经创建好表之后,用ALTER TABLE语句增加这些约束... 阅读全文
posted @ 2012-09-21 09:02 沙耶 阅读(1327) 评论(0) 推荐(0)
上一页 1 ··· 151 152 153 154 155