-
一个用来统计相同姓名人数的SQl语句
sql语句查询表结构是这样:ID姓名性别1张三男2王四男3丽丽女4张三男5赵柳男6高洁男7王四女8高洁女9张三女怎么能用一条SQL语句查询出如下的结果姓名人员个数男人数女人数包含ID张三3211,4,9王四2112,7丽丽1013高洁2116,8赵柳1105复制代码代码如下:SELECT*FROM(SELECTDISTINCTName,Count(ID)as人員個數,sum(casewhenSex='男'then1else0end)as男人數,sum(casewhenSex='女'then1else0end)as女人數FROMTestgroupbyName)AOUTERAPPLY(SELECT[包含ID]=STUFF(REPLACE(REPLACE((SELECTIDFROMTestNWHEREName=A.NameFORXMLAUTO),'<NID="',','),'"/>',''),1,1,''))N...
数据库操作教程 2022-09-23 20:21:23 -
将所有符合条件的结果拼接成一列并用逗号隔开的一个sql语句
复制代码代码如下:createtabletb(idint,valuevarchar(10))insertintotbvalues(1,'aa')insertintotbvalues(1,'bb')insertintotbvalues(2,'aaa')insertintotbvalues(2,'bbb')insertintotbvalues(2,'ccc')gocreatefunction[dbo].[f_str](@idint)returnsnvarchar(1000)asbegindeclare@strnvarchar(1000)set@str=''select@str=@str+','+cast(valueasnvarchar(900))fromtbwhereid=@idset@str=right(@str,len(@str)-1)return@strendgo--调用函数selectid,value=dbo.f_str(id)fromtbgroupbyid运行结果:本来在上面的函数中所有的nvarchar都是varchar类型的,并且上面函数的红色处在调用cast方法时,并未指定...
数据库操作教程 2022-09-23 20:21:15 -
分享一个简单的sql注入
所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。具体来说,它是利用现有应用程序,将(恶意)的SQL命令注入到后台数据库引擎执行的能力,它可以通过在Web表单中输入(恶意)SQL语句得到一个存在安全漏洞的网站上的数据库,而不是按照设计者意图去执行SQL语句...
数据库操作教程 2022-09-23 18:19:45 -
SQL查询中需要使用别名问题
SQL查询中什么时候需要使用表别名?今天写MySQL时遇到使用表别名的问题,这里重新总结一下。1、表名很长时select*fromwww_baidu_userwherewww_baidu_user.id=1;和select*fromwww_baidu_useruwhereu.id=1;查询的结果一样,但是第二个使用表别名时更简洁...
数据库操作教程 2022-09-23 18:15:03 -
SQLServer中的触发器基本语法与作用
什么是触发器?触发器是在对表进行插入、更新或删除操作时自动执行的存储过程。触发器对表进行插入、更新、删除的时候会自动执行的特殊存储过程...
数据库操作教程 2022-09-23 17:59:00 -
SQLSERVER数据库的作业的脚本及存储过程
IFEXISTS(SELECTnameFROMsysobjectsWHEREname=N'cg_DoBackupJob'ANDtype='P')DROPPROCEDUREcg_DoBackupJobGOCREATEPROCEDURE[cg_DoBackupJob]@DataBaseNamevarchar(100),@FileHeadvarchar(50),@isFullBackupbit,--0差量备份1完整备份@FolderPathvarchar(50)='f:db_backup',@BackNamevarchar(100)='unknown',--描述字串@isAppendMediabit=1--0覆盖媒体1追加到媒体ASdeclare@filePathvarchar(150)declare@sqlvarchar(1000)select@filePath=@FolderPath+@FileHead+'_'+case@isFullBackupwhen1then'FullBackup'when0then'DifferBackup'end+'_'+convert(nvarchar(11)...
数据库操作教程 2022-09-23 17:55:55 -
利用ROW_NUMBER()OVER函数给SQL数据库中每一条记录分配行号的方法
从SQLServer2005开始,增加了一个新的函数Row_Number(),他的一个很伟大的作用就是可以在数据表中添加一列从1开始的行号,这样大大代替所有多余的代码来产生行号。下面就教大家如何使用Row_Number()函数...
数据库操作教程 2022-09-23 17:54:56 -
CASE表达式实现基于条件逻辑来返回一个值
我们在开发过程中,经常需要针对一列,基于条件逻辑来返回一个值,那么,这时候就需要使用到CASE表达式了。例如,以下对Products表的查询就在SELECT语句中使用了CASE表达式,以生成用于描述categoryid列取值的信息...
数据库操作教程 2022-09-23 17:54:51 -
SQLServer安装完成后3个需要立即修改的配置选项
你用安装向导安装了全新的SQLServer,最后你点击了完成按钮。哇噢~~~现在我们可以把我们的服务器进入生产了!抱歉,那并不是真的,因为你的全新SQLServer默认配置是错误的...
数据库操作教程 2022-09-23 17:54:49 -
Sql存储过程游标循环的用法及sql如何使用cursor写一个简单的循环
用游标,和WHILE可以遍历您的查询中的每一条记录并将要求的字段传给变量进行相应的处理==================DECLARE@A1VARCHAR(10),@A2VARCHAR(10),@A3INTDECLARECURSORYOUCURNAMEFORSELECTA1,A2,A3FROMYOUTABLENAMEOPENYOUCURNAMEfetchnextfromyoucurnameinto@a1,@a2,@a3while@@fetch_status<>-1beginupdate…set…-a3where………您要执行的操作写在这里fetchnextfromyoucurnameinto@a1,@a2,@a3endcloseyoucurnamedeallocateyoucurname—————————————在应用程序开发的时候,我们经常可能会遇到下面的应用,我们会通过查询数据表的记录集,循环每一条记录,通过每一条的记录集对另一张表进行数据进行操作,如插入与更新,我们现在假设有一个这样的业务:老师为所在班级的学生选课,选的课程如有哲学、马克思主义政治经济学、毛泽东思想...
数据库操作教程 2022-09-23 17:53:26 -
查询Sqlserver数据库死锁的一个存储过程分享
使用sqlserver作为数据库的应用系统,都避免不了有时候会产生死锁,死锁出现以后,维护人员或者开发人员大多只会通过sp_who来查找死锁的进程,然后用sp_kill杀掉。利用sp_who_lock这个存储过程,可以很方便的知道哪个进程出现了死锁,出现死锁的问题在哪里.创建sp_who_lock存储过程CREATEproceduresp_who_lockasbegindeclare@spidintdeclare@blkintdeclare@countintdeclare@indexintdeclare@locktinyintset@lock=0createtable#temp_who_lock(idintidentity(1,1),spidint,blkint)if@@error<>0return@@errorinsertinto#temp_who_lock(spid,blk)select0,blockedfrom(select*frommaster..sysprocesseswhereblocked>0)awherenotexists(select*frommas...
数据库操作教程 2022-09-23 17:47:30 -
SQLSERVER中GO的作用详解
具体不废话了,请看下文详解。usedb_CSharpgoselect*,备注=casewhenGrade>=90then'成绩优秀'whenGrade<90andGrade>=80then'成绩良好'whenGrade<80andGrade>=70then'成绩及格'else'不及格'endfromtb_Grade如果只是执行一条语句,有没有GO都一样如果多条语句之间用GO分隔开就不一样了每个被GO分隔的语句都是一个单独的事务,一个语句执行失败不会影响其它语句执行...
数据库操作教程 2022-09-23 17:46:55