SQL中on条件与where条件的区别 数据库在通过连接两张或多张表来返回记录时,都会生成一张中间的临时表,然后再将这张临时表返回给用户. 在使用left jion时,on和where条件的区别如下: 1. on条件是在生成临时表时使用的条件,它不管on中的条件是否为真,都会返回左边表中的记录. 2.where条件是在临时表生成好后,再对临时表进行过滤的条件.这时已经没有left join的含义(必须返回左边表的记录)了,条件不为真的就全部过滤掉. 假设有两张表: 表1:tab2 id size…
排序order by的用法: 1.order by 字段名1 asc/desc, 字段名2 asc/desc,... 先按照字段名1的升序/降续给表进行排列 然后 按照字段名2的升序/降续给表进行排列. 其中排在前面的字段名优先进行排列,排在后面的在前面的基础上在进行排列. 2. order by 字段序号 asc/desc, 字段序号 asc/desc,... 按照字段的序号进行排列,字段的序号就是表中每个字段从左到右依次排列的顺序,从1开始.字段序号对应相应的字段名. 3. asc(升序)/…
例子,相信你一看就明白,不需要多说 A表(a1,b1,c1) B表(a2,b2) a1 b1 c1 a2 b2 01 数学 95 01 张三 02 语文 90 02 李四 03 英语 80 04 王五 select A.*,B.* from A left outer join B on(A.a1=B.a2) 结果是: a1 b1 c1 a2 b2 01 数学 95 01 张三 02 语文 90 02 李四 03 英语 80 NULL NULL select A.*,B.* from A righ…
char    char是定长的,也就是当你输入的字符小于你指定的数目时,char(8),你输入的字符小于8时,它会再后面补空值.当你输入的字符大于指定的数时,它会截取超出的字符.nvarchar(n)    包含 n 个字符的可变长度 Unicode 字符数据.n 的值必须介于 1 与 4,000 之间.字节的存储大小是所输入字符个数的两倍.所输入的数据字符长度可以为零.       varchar[(n)]      长度为 n 个字节的可变长度且非 Unicode 的字符数据.n 必须是一…
转自:http://www.cnblogs.com/dyufei/archive/2009/11/12/2573974.html 不言自明,看SQL就完全理解了,不需要过多解释,不错,分享之: ROLLUP 运算符生成的结果集类似于 CUBE 运算符生成的结果集. 下面是 CUBE 和 ROLLUP 之间的具体区别: CUBE 生成的结果集显示了所选列中值的所有组合的聚合. ROLLUP 生成的结果集显示了所选列中值的某一层次结构的聚合. ROLLUP 优点: (1)ROLLUP 返回单个结果集…
1. count(1) and count(*) 当表的数据量大些时,对表作分析之后,使用count(1)还要比使用count(*)用时多了!从执行计划来看,count(1)和count(*)的效果是一样的.但是在表做过分析之后,count(1)会比count(*)的用时少些(1w以内数据量),不过差不了多少. 如果count(1)是聚索引,id,那肯定是count(1)快.但是差的很小的.因为count(),自动会优化指定到那一个字段.所以没必要去count(1),用count(),sql会帮…
char char是定长的,也就是当你输入的字符小于你指定的数目时,char(8),你输入的字符小于8时,它会再后面补空值.当你输入的字符大于指定的数时,它会截取超出的字符. nvarchar(n)  中间的 n 代表字符的个数,不是字节的个数 包含 n 个字符的可变长度 Unicode 字符数据.n 的值必须介于 1 与 4,000 之间.字节的存储大小是所输入字符个数的两倍.所输入的数据字符长度可以为零. varchar(n) 长度为 n 个字节的可变长度且非 Unicode 的字符数据.n…
1.1.1 摘要 Join是关系型数据库系统的重要操作之一,SQL Server中包含的常用Join:内联接.外联接和交叉联接等.如果我们想在两个或以上的表获取其中从一个表中的行与另一个表中的行匹配的数据,这时我们应该考虑使用Join,因为Join具体联接表或函数进行查询的特性 本文将通过具体例子介绍SQL中的各种常用Join的特性和使用场合: 目录 Inner join Outer join Cross join Cross apply Cross apply 和 Inner join的区别…
SQL 中的存储过程与函数没有本质上的区别 函数 -> 只能返回一个变量. 函数可以嵌入到sql中使用, 可以在select 中调用, 而存储过程不行.  但函数也有着更多的限制,比如不能使用临时表 存储过程 -> 可以返回多个变量. 存储过程的定义如下: 存储过程可以使得对数据库的管理.以及显示关于数据库及其用户信息的工作容易得多.存储过程是 SQL 语句和可选控制流语句的预编译集合,以一个名称存储并作为一个单元处理.存储过程存储在数据库内,可由应用程序通过一个调用执行,而且允许用户声明变量…
对于SQL中inner join.outer join和cross join的区别简介:现有两张表,Table A 是左边的表.Table B 是右边的表.其各有四条记录,其中有两条记录name是相同的: 1.INNER JOIN 产生的结果是AB的交集 SELECT * FROM TableA INNER JOIN TableB ON TableA.name = TableB.name          2.LEFT [OUTER] JOIN 产生表A的完全集,而B表中匹配的则有值,没有匹配的…