SQL学习总结
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1、With ties :查出与返回数据的最后一行的相同的数据
2、用法:select top(5) with ties 字段名FROM 表名
3、Over的使用
Over称为窗口函数
用法:sum(valus) over() 其是指对搜索出来的数据进行求和,不需要在进行分组,如果需要有限定条件则sum(valus) over(partition by字段名)
4、数据的计算
在进行数据与字段的乘除的时候,数字后面加一个点,(110.),这样就可以把整数字段隐式的装换为十进制数据进行乘除,否则则会使正式除法,回省略小数5、In 、like 、between的用法
In主要是指在多个数据中选择一个,进字段名的值在in之内
Like主要进行迷糊查询,例:like ‘ %as’
Between 主要是指字段值在两个值之间
6、N 的用法
N 表示国际化(national)用于表示字符串Unicode(nchar、nvarchar)
数据类型numeric是指实数例:numeric(12,2)(12指数据长度,2指小数位数)7、数据的优先级
1、()
2、x 、/、%
3、+ 、-、
4、
5、NOT
6、and
7、between 、in、like、or
8、=
8、case表达式的使用
Select 字段一,case 字段二
When‘条件’then 结果
When ‘条件’then 结果
End as 字段名from 表名
Case 与end是成对出现的
Case与case表达式的区别是,case表达式可以添加条件,但是case不可以While 语句的使用:进行1+2+3+…….+100
declare@sum int
set@sum=0
declare@I int
SET@I=0
WHILE@I<100
BEGIN
SELECT@SUM=@SUM+@I
SELECT@I=@I+1
END
SELECT (@sum)
求得日期的月份
select MESBUSINESS20.dbo.fun_GetRealYYYYMMByDate(SubmitDat e)
其中fun是函数
9、数据类型
Varchar 和char nvarchar 和nchar 前者是一个字节来保存一个字符,语言只能限定于英语,后者是用两个字节来保存一个字符,不进行语言限制
在进行查询时如果把null值当做空字符串进行连接时,则可以通过一个CONCAT_NULL_YIELDS_NULL 保持OFF状态
语法:SET CONCAT_NULL_YIELDS_NULL OFF
同时也可以使用COALESEC 函数进行转变COALESEC(字段)
Nvarchar 和varvhar的区别:
Nvarchar在分配内存是可以根结自身的大小进行调整,nvarchar(100),其中一百是自己的最大地址,varchar(100)不会根据自身大小进行调整,100就是其占用的内存,不会改变
10、函数的使用:
数据截取函数SUBSTRING
函数使用SUBSTRING(String,start,length)
Len函数和DATALENGTH函数
二者函数主要进行返回字符串的字符数,其中DATALENGTH返回字符串的字节数,用法:select len(N’字符串)/DATALENGTH(N’字符串)
区别:前者不包含尾随空格,后者包括尾随空格
Charindex函数
返回字符串中字串第一次出现的位置
用法:Charindex(substring,string,start-POS)
Substring是指字串,start-POS指开始检索的行
PATINDEX函数
PATINDEX函数主要是返回字符串中某个模式第一次出现的位置
用法:PATINDEX(pattern ,string)其中pattern和like函数相似,主要进行模糊查询PATINDEX(‘%0-9%’ ,’abcd12345’),返回5
REPLACE函数
REPLACE(string,substring1,substring2)
Substring1指要被替换的字段,substring2指替换成的字段
REPLICATE函数
REPLICATE 函数主要进行字符串的复制
用法:REPLICATE(string,n)
STUFF函数
STUFF函数选删除一个字符串再插入一个字符串
用法:STUFF(string,POS,length,insertstring)
POS是指开始插入的字符,length指长度
UPPER函数和LOWER 函数
UPPER函数和LOWER函数主要是进行字母的大小写转换的函数
RTRIM 函数和LTRIM 函数主要进行前后空格的删除
11、自定义函数的书写:
书写格式:
CREATEFUNCTION函数名(@字段,数据类型)
RETURNS
@表名TABLE(@字段,数据类型)
AS
Begin
SELECT 0
Return
End
例如:已知部门id,求其子部门
ALTERFUNCTION[dbo].[Fun_BM_GetSubDeptByID]
(@DeptID INT--指定部门的ID
)
RETURNS@SubDeptByIDTable TABLE
([ID][int]NOTNULL,
[PID][int]NULL,
cn_name[nvarchar](50)NULL,
en_name[nvarchar](50)NULL,
iscompany[smallint]NULL
)
AS
BEGIN
with SubDeptTree as(
select ID,PID,cn_Name,en_name,iscompany from V_BS_Department as a where ID=@DeptID union all
select b.ID,b.PID,_Name,b.en_name,b.iscompany from V_BS_ Department as b
join SubDeptTree on CHARINDEX(cast(SubDeptTree.id asvarchar(1