SQL语句集合

本文介绍了SQL中的数据管理操作,包括检查数据是否存在并进行插入或更新,使用row_number()函数生成序列号,以及STUFF函数在处理字符串时如何替换或删除部分字符。示例涉及多表连接查询,展示了在年级课程关联表中的实际应用。
摘要由CSDN通过智能技术生成

目录

一、判断表中是否存在这条数据,存在修改,不存在新增

二、查询语句生成序号(根据某一列)

三、STUFF 用法

      (1)《两张表》(年级课程两张表互相通过GradeID进行关联的)

       (2)《三张表》(年级课程和年级课程绑定表)

       (3)《共五张表》(年级课程两张表互相通过GradeID进行关联的-------年级表与课程表通过应该年级课程绑定表进行关联的)


一、判断表中是否存在这条数据,存在修改,不存在新增

INSERT INTO employee (ID, name, birthdate) VALUES (1001, '小明', '1999-01-01') 
ON DUPLICATE KEY UPDATE name='小明', birthdate='1999-01-01'

二、查询语句生成序号(根据某一列)

select  row_number() over (order by col1) as 序号,col1 as 列1, col2 as 列2 from Table1 

三、STUFF 用法

我对SQLserver 中STUFF函数的理解是在sql server中将字符串中的第一个字符串某一部分字符替换成另外一部分,组成新的字符串数据。
STUFF(character_expression,Start,Length,character_expression)
参数说明:
character_expression:字符串数据,或字符串组成的表达式。
Start:开始替换的位置,start 必须大于0,否则返回NULL.
Length,替换长度.若长度为0,则是拼接,不删除任何原字符串中的内容
character_expression:具体替换的内容,若为空的话,就是删除第一个字符串中的指定位置指定长度的数据。

例:

      (1)《两张表》(年级课程两张表互相通过GradeID进行关联的)

select distinct(g.GradeID),g.GradeName,g.GradeNumber,(SELECT STUFF(( SELECT ',' +convert(VARCHAR, ClassName) FROM Class c where c.GradeID = g.GradeID FOR XML PATH('')), 1, 1, '') AS UserName) as ClassName FROM Grade g left join Class c on g.GradeID = c.GradeID

       效果展示:

       (2)三张表》(年级课程和年级课程绑定表)

select distinct(g.GradeID),g.GradeName,g.GradeNumber,(SELECT STUFF(( SELECT ',' +convert(VARCHAR, ClassName) FROM Class c where c.GradeID = g.GradeID FOR XML PATH('')), 1, 1, '') AS UserName) as ClassName FROM Grade g left join Class c on g.GradeID = c.GradeID

       效果展示:

       (3)《共五张表》年级课程两张表互相通过GradeID进行关联的-------年级表与课程表通过应该年级课程绑定表进行关联的

select ROW_NUMBER() over(order by a.GradeID asc) as xh,a.GradeID,a.GradeName,a.GradeNumber,
(select STUFF(( SELECT ',' + CourseTitle FROM Curriculum b1 inner join GradeCurriculumBinding b2 on b1.CurriculumID = b2.CurriculumID where b2.GradeID = a.GradeID FOR XML PATH('')), 1, 1, '')) as CourseTitle,(SELECT STUFF(( SELECT ',' +convert(VARCHAR, ClassName) FROM Class c1 where c1.GradeID = a.GradeID FOR XML PATH('')), 1, 1, ''))as ClassName from Grade a order by a.GradeID

       效果展示:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值