摘要:问题 : 1.什么是内连接(inner)和外联结(outer) 2. SQL server 表连接 (FROM--AND 法, JOIN -- ON 法)的区别. 3.表连接及多表连接的SQL语句执行顺序,和性能调优.1.第一个问题,首先要明白如何使用JOIN 和 ON 关键字作表连接。 申明:下文中所用的等价,可能指的是逻辑上的等价(即产生相同的结果集),也可能是执行顺序上的等价,甚至是所产生的执行计划或者执行效率等价。因为很多时候用户只要写普通的sql ,而sql server 会跟据自己的优化 配置和执行计划,产生执行步骤,这些步骤也许和你写的sql很符...
阅读全文
摘要:1. 用一条SQL语句查询出每门课都大于80分的学生姓名name kechengfenshu 张三 语文81张三 数学75李四 语文76李四 数学90王五 语文81王五 数学100王五 英语90 方法一: 思路:如果能获得一张表,由学生姓名,语文成绩,数学成绩,英语成绩的表,剩下的就是在WHERE条件中筛选及可以获得想要的结果。 具体办法:通过自连接的办法,以“姓名”为连接条件,自连接三次,便可以获得包含又姓名和三门课程成绩的数据行。虽然可以得到想要的数据列。但会有很多冗余重复列! 点评:此方法是根据题目,依题解题,中规中矩! 不过多张表连接非常耗费时间。而且SQL语句也比较复杂,需要...
阅读全文
摘要:今天本来是测试一段代码,然后用到Distinct关键字,查看执行计划之后,突然发现过程中有对表进行sort! 上网搜索和加之验证得出如下结果: 结论: 1.使用distinct 关键字后会对distinct后面用到的关键字进行默认的升序排序. 2.可以使用order by 来改变排序规则. 3.使用distinct后,出现在order by 中的字段必须要写在 SELECT 句中,非充要条件。 求问各大神:如何消除distinct自动排序,及为什么要进行排序,还有distinct是如何做到消除重复列的! 另: //Wrong SQLSELECT DISTINCT field_...
阅读全文
摘要:默认情况下,推荐使用 IS NOT NULL去判断因为SQL默认情况下对 != Null 的判断会永远返回0行,但没有语法错误。如果你一定想要使用!= Null来判断,需要加上这个语句:set ANSI_NULLS off这时你会发现IS NOT NULL 和 != null 是等效的。
阅读全文