随笔分类 -  T-SQL Foundation

摘要:游标是邪恶的! 在关系数据库中,我们对于查询的思考是面向集合的。而游标打破了这一规则,游标使得我们思考方式变为逐行进行.对于类C的开发人员来着,这样的思考方式会更加舒服。 正常面向集合的思维方式是: 而对于游标来说: 这也是为什么游标是邪恶的,它会使开发人员变懒,懒得去想用面向集合的查询方式实现某些功能. 同样的,... 阅读全文
posted @ 2015-09-13 14:36 ndong 阅读(183) 评论(0) 推荐(0) 编辑
摘要:子查询有时使用起来很麻烦,因为所有的过滤和匹配逻辑都必须集成到子查询表达式中。如果只需要执行一个任务,且只需要使用一次杳询表达式,子查询是很好的选择。但子查询不能被重用,也不能很好地支持多个需求。这个问题的一个常见解决方法是用子查询的内容填充一个临时表,连接和过滤表达式可以应用于这个临时表,但性能很差,且会消耗大量的系统资源,使用临时表还需要创建和使用另一个表的权限。 CTE是这两个问题的最佳... 阅读全文
posted @ 2015-09-13 14:08 ndong 阅读(990) 评论(0) 推荐(0) 编辑
摘要:UNION 操作符用于合并两个或多个 SELECT 语句的结果集。请注意,UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同。SQL UNION 语法SELECT column_name(s) FROM tabl... 阅读全文
posted @ 2015-09-12 22:39 ndong 阅读(228) 评论(0) 推荐(0) 编辑
摘要:FULL JOIN 只要其中某个表存在匹配,FULL JOIN 关键字就会返回行。(返回JOIN 两端表的所有数据,无论其与另一张表有没有匹配。显示左连接、右连接和内连接的并集) FULL JOIN 关键字语法 SELECT column_name(s) FROM table_name1 FULL JOIN table_name2 ON table_name1.column_name=table... 阅读全文
posted @ 2015-09-12 22:26 ndong 阅读(1926) 评论(1) 推荐(1) 编辑
摘要:来源: https://msdn.microsoft.com/zh-cn/library/ms177673(v=sql.110).aspx 按 SQL Server 中一个或多个列或表达式的值将一组选定行组合成一个摘要行集。 针对每一组返回一行。 SELECT 子句 列表中的聚合函数提供有关每个组(而不是各行)的信息。 GROUP BY 子句具有符合 ISO 的语法和不符合 ISO 的语法。... 阅读全文
posted @ 2015-09-12 12:53 ndong 阅读(287) 评论(0) 推荐(0) 编辑
摘要:T-SQL函数的类别和描述: 函数类别 作用 聚合函数 返回一个标量值,表示在某个值域上的聚合,应用于特定的聚合选择或者汇总 配置变量 返回SQL Server执行环境的信息。这些信息可用于给对象编程 转换 将值从一种数据类型转换为另一种类型。也用于将字符格式化为日期、时间与数值 游标 在迭代游标时,用过程方式遍历结果集中的行 日期和时间 从日期值中解析出日期与时间部分,也用... 阅读全文
posted @ 2015-09-12 00:18 ndong 阅读(1582) 评论(0) 推荐(0) 编辑
摘要:如果想返问表中行的子集,仅需要返回特定数量的记录,而不管符合条件的行有多少。要返回排在前面的值,可以有两个选择:指定固定数量的行,或者指定总行数的百分比。SQL Server不对这些数据做任何分析,共至在截断列表时,也不会考虑这些值是不是已经排过序。 1. WITH TIES语句 用WITH TIES可以把所有和最后一行相同的己排序记录都加到结果集中。 SELECT TOP 10 WITH TIE... 阅读全文
posted @ 2015-09-08 02:48 ndong 阅读(327) 评论(0) 推荐(0) 编辑
摘要:NOT运算符不是独立的,它是一个可以放在任何逻辑表达式前面的修饰符,能得到与结果相反的结果。所以,如果一个表达式是真,就会得到假;如果是假,就会得到真。有时测试查找条件的反面更容易。不过,NOT运算符通常效率比较低,因为SQL Server实际上将首先处理基本表达式(也许先返回所有符合条件的行),然后才提取出不包含在原结果中的行。 根据语句的复杂性和表中的行数,与构建一个选择出除了要忽略的记录之外... 阅读全文
posted @ 2015-09-08 02:16 ndong 阅读(752) 评论(0) 推荐(0) 编辑
摘要:在应用程序中应避免使用 "select * from table",应明确列出列名.如果包含不需要的列,会造成不必要的磁盘I/O与网络传输。如果不明确列名的话,未经授权的用户可能接触敏感信息。在复杂的多表查询中,包含所有的列会造成冗余的列值,引起用户的误解。明确列名会使结果更容易预测和管理。 阅读全文
posted @ 2015-09-08 00:34 ndong 阅读(180) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示