SQL语句的几个好习惯

1481次阅读|347次收藏|320次赞

sql 语句就是对数据库进行操作的一种语言,各种不同的数据库对SQL语言的支持与标准存在着细微的不同,SQL语言基本上独立于数据库本身、使用的机器、网络、操作系统,基于SQL的DBMS产品可以运行在从个人机、工作站到基于局域网、小型机和大型机的各种计算机系统上,具有良好的可移植性。由于SQL语句的编写多样化,那么如何写出高效、易懂、易维护的SQL语句呢?下面介绍SQL语句的几个好习惯。

SQL中in和exists的区别

3544次阅读|271次收藏|10次赞

SQL中EXISTS检查是否有结果,判断是否有记录,返回的是一个布尔型(TRUE/FALSE), IN是对结果值进行比较,判断一个字段是否存在于几个值的范围中,exists主要用于片面的,有满足一个条件的即可, in主要用于具体的集合操作,有多少满足条件. in适合内外表都很大的情况,exists适合外表结果集很小的情况。

SQL中PIVOT 行列转换

39213次阅读|174次收藏|453次赞

T-SQL语句中,Pivot运算符用于在列和行之间对数据进行旋转或透视转换,PIVOT命令可以实现数据表的列转行,同时执行聚合运算,UNPIVOT则与其相反,实现数据的行转列。

SQL Union和Union All的用法和区别

2682次阅读|474次收藏|343次赞

SQL中UNION和Union All指令的目的是将两个SQL语句的结果合并起来。union和Union All只是将两个结果联结起来一起显示,并不是联结两个表。区别是:union是集合中的并集运算,即把所有的查询结果并集处理,而union all表示无论多条结果中有无重复都将各自的结果相加,而不删除其中重复部分。

SQL中的cast和convert的用法和区别

15263次阅读|299次收藏|91次赞

SQL中的cast 和convert都是用来将一种数据类型的表达式转换为另一种数据类型的表达式。CAST 和 CONVERT 提供相似的功能,只是语法不同。在时间转化中一般用到convert,因为它比cast多加了一个style,可以转化成不同时间的格式。

SQL group by分组查询

36929次阅读|184次收藏|541次赞

在实际SQL应用中,经常需要进行分组聚合,即将查询对象按一定条件分组,然后对每一个组进行聚合分析。创建分组是通过GROUP BY子句实现的。与WHERE子句不同,GROUP BY子句用于归纳信息类型,以汇总相关数据。GROUP BY的作用是通过一定的规则将一个数据集划分成若干个小的区域,然后针对若干个小区域进行数据处理。

Sql的decimal、float、double类型的区别

49031次阅读|133次收藏|177次赞

decimal(numeric)、double、float(real) 都是SQL中的浮点类型的数据类型。FLOAT数值类型用于表示单精度浮点数值,DOUBLE数值类型用于表示双精度浮点数值,而decimal用法更灵活

SQL中Exists的用法

10678次阅读|200次收藏|240次赞

EXISTS 是SQL子查询中应用的比较多的,和SQL中的 In 子查询类似,EXISTS用于检查子查询是否至少会返回一行数据,该子查询实际上并不返回任何数据,而是返回值True或False

SQL中patindex的用法

1420次阅读|337次收藏|425次赞

SQL中的patindex 返回指定表达式中某模式第一次出现的起始位置;如果在全部有效的文本和字符数据类型中没有找到该模式,则返回零。PATINDEX函数重要特点是支持搜索字符串中使用通配符进行查找。

select into from 和 insert into select 的用法和区别

76302次阅读|453次收藏|65次赞

Insert是T-sql中常用语句,但我们在开发中经常会遇到需要表复制的情况,如将一个table1的数据的部分字段复制到table2中,或者将整个table1复制到table2中,这时候我们就要使用SELECT INTO 和 INSERT INTO SELECT 表复制语句了

SQL Server中row_number的用法

22345次阅读|422次收藏|125次赞

ROW_NUMBER()函数将针对SELECT语句返回的每一行,从1开始编号,赋予其连续的编号。在查询时应用了一个排序标准后,只有通过编号才能够保证其顺序是一致的,当使用ROW_NUMBER函数时,也需要专门一列用于预先排序以便于进行编号。

SQL Server中的临时表的用法

12898次阅读|187次收藏|373次赞

临时对象都以#或##为前缀,临时表是临时对象的一种,临时对象都存储在tempdb中。以#前缀的临时表为本地的,因此只有在当前用户会话中才可以访问,而##前缀的临时表是全局的,因此所有用户会话都可以访问。临时表以会话为边界,只要创建临时表的会话没有结束,临时表就会持续存在,当然用户在会话中可以通过DROP TABLE命令提前销毁临时表。

SQL中case when的用法

2536次阅读|137次收藏|444次赞

SQL中CASE表示计算条件列表并返回多个可能结果表达式之一。 CASE 可能是 SQL 中被误用最多的关键字之一。虽然你可能以前用过这个关键字来创建字段,但是它还具有更多用法。例如,你可以在 WHERE 子句中使用 CASE。

SQL中的@@Error的使用

1352次阅读|137次收藏|447次赞

@@error是系统函数,当没有发生错误时返回0,如果发生错误时@@error<>0,并返回错误号,每个SQL语句执行完,@@error值都会变。 @@error只记录当前错误

SQL中null空值怎么用

1991次阅读|137次收藏|444次赞

一般情况下我们查询空值或者非空值的时候,用的是is null/is not null,而很少用=/<>。当表中某列值不是“不可空”,如果不向表中填数据,则该字段以null空值保存。NULL 值的处理方式与其他值不同。NULL 用作未知的或不适用的值的占位符。无法比较 NULL 和 0;它们是不等价的。