最近要写大量存储过程,这边就介绍下基础常用的一些关键字;
1.USE
Use:它用来只能整个存储过程中调用的数据库,,例:
USE [simpleTest]
2.GO
GO:表示一个事物结束的标识,将其GO前面的过程执行完再执行后面的,例:
USE [simpleTest]
GO
3.SET
SET::表示设置,可用于设置参数或者标识,例:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ANSI_NULLS:用来来处理与空值比较的结果
为ON:where colum=null时返回空行或零行;where colum <>null 时返回空行或零行 (注意:<> 代表sql里的不等于)
为OFF: where colum=null时返回colum中包含空值的行; where colum<>null时返回colum中包含非空值的行
QUOTED_IDENTIFIER :用来处理与关键字相同名字的自定义变量
为ON:与sql关键字重复(相同),允许用双引号括起来,便可正常使用
为OFF:与sql关键字重复(相同),不允许使用
4.declare
declare:用于设置参数类型,例:
declare @AAA varchar(10),@BBB varchar(10);
5.CREATE PROCEDURE
这边两种一起讲:
CREATE PROCEDURE 名称 AS 存储过程具体代码:用于创建一个存储过程
ALTER PROCEDURE 名称 AS 存储过程具体代码:用于修改替换存储过程
ALTER PROCEDURE [dbo].[proc_test]
AS
declare @sevenDayStart varchar(10);
......
6.convert函数
conver(值类型,值内容,值格式):用于转类型
declare @AAA varchar(10);
set @AAA=convert(varchar(10),getdate(),120);
注意:这里的120是值格式,表示yyyy-mm-dd格式;getdate()是获取当前时间。
7.dateadd函数
dateadd(日期类型,间隔数,合法的日期表达式):用于增减日期
dateadd(DD,-8,getdate());
日期类型(年:yy或yyyy 季度:qq或q 月:mm或m 年中的日:dy或y 日:dd或d )等等还有很多
前面这行的意思是当前日期-8天,就是当前的8天以前的日期。
dateadd函数通常和convert函数一起用
8.注释
sql里的注释是使用 “- -‘’符号。
9.exec或execute
exec或execute 存储过程名(参数) :用来调用其它存储过程。
10.case (变量) when A=xxx then ....
case (变量) when A=xxx then .... :这里变量可加可不加,加了变量,可以把A替换成变量来用,
case A when '沙丁鱼flat' then “AAA” Else 0 END
上面对A这个字段进行处理,如果A字段的值=“沙丁鱼flat“,那么A字段的值变为AAA,否则变为0;
个人认为相当于 switch case,if else这样的作用
这个关键字比较常用于行转列。
select
Id
,SUM(case place when '华北' then saleNumbers Else 0 END) as '华北'
,SUM(case place when '西南' then saleNumbers Else 0 END) as '西南'
,SUM(case place when '华中' then saleNumbers Else 0 END) as '华中'
,SUM(case place when '华东' then saleNumbers Else 0 END) as '华东'
,SUM(case place when '华南' then saleNumbers Else 0 END) as '华南'
这是部分sql存储过程代码,它本来列名是place,值有华北,西南,华中,华东,华南等
而这样处理后列名有华北,西南,华中,华东,华南,
然后根据在在更内层嵌套的saleNumbers这个字段,更明显地表现各地的销售量。