-
删除Table表中的重复行的方法
利用SQLServer2005的新功能NOW_NUMBER和CTE可以很好的实现.举例说明如下:建立测试数据:复制代码代码如下:createtableDup1(Col1intnull,Col2varchar(20)null)insertintoDup1values(1,'aaa'),(2,'aaa'),(2,'aaa'),(2,'aaa'),(3,'bbb'),(3,'bbb'),(4,'ccc'),(4,'ddd'),(5,'eee')select*fromDup1可以查看到重复的数据有:复制代码代码如下:SELECTCol1,Col2,COUNT(*)ASDupCountFROMDup1GROUPBYCol1,Col2HAVINGCOUNT(*)>1接下来介绍如何delete掉重复的数据:1...
数据库操作教程 2022-09-23 20:37:16 -
SQL中WHERE变量ISNULL条件导致全表扫描问题的解决方法
复制代码代码如下:SET@SQL='SELECT*FROMCommentwith(nolock)WHERE1=1 And(@ProjectIdsIsNullorProjectId=@ProjectIds) And(@ScoresisnullorScore=@Scores)'印象中记得,以前在做Oracle开发时,这种写法是会导致全表扫描的,用不上索引,不知道SqlServer里是否也是一样呢,于是做一个简单的测试1、建立测试用的表结构和索引:复制代码代码如下:CREATETABLEaaa(idintIDENTITY,NAMEVARCHAR(12),ageINT)goCREATEINDEXidx_ageONaaa(age)GO2、插入1万条测试数据:复制代码代码如下:DECLARE@iINT;SET@i=0;WHILE@i<10000BEGIN INSERTINTOaaa(name,age)VALUES(CAST(@iASVARCHAR),@i) SET@i=@i+1;ENDGO3、先开启执行计...
数据库操作教程 2022-09-23 20:36:43 -
SQL集合函数中casewhenthen使用技巧
那么在集合函数中它有什么用呢 ?假设数据库有一张表名为student的表。如果现在要你根据这张表,查出江西省男女个数,广东省男生个数,浙江省男女个数怎么写SQL语句?即要生成下结果表答案是:selectsex,count(caseprovincewhen'广东省'then'广东省'end)as广东省,count(caseprovincewhen'江西省'then'江西省'end)as江西省,count(caseprovincewhen'浙江省'then'浙江省'end)as浙江省fromstudentgroupbysexcount()函数即根据给定的范围和groupby(统计方式)而统计行数据的条数我们一步步来理解上面语句1. selectsex fromstudent(查询数据表中的存在的男女条数)2.selectsex,count(*)asnumfromstudentgroupbysex (查询表中男女数量)3.selectsex,province,count(*)asnumfromstudentgroupbysex,province(查询各...
数据库操作教程 2022-09-23 20:32:47 -
学习SQL语句(强大的groupby与selectfrom模式)
强大的groupby复制代码代码如下:selectstdname,isnull(sum(casestdsubjectwhen'化学'thenResultend),0)[化学],isnull(sum(casestdsubjectwhen'数学'thenResultend),0)[数学],isnull(sum(casestdsubjectwhen'物理'thenResultend),0)[物理],isnull(sum(casestdsubjectwhen'语文'thenResultend),0)[语文]from#studentgroupbystdnamegroupby与sum+case结合,可以将表1中的记录(行)变成表2的字段(列)。Sum里面如果没有case,那么出来的值,只能是全部科目的总和,用了case以后,就是某科的成绩;然后这里用了好几个sum,每个科目一个sum,于是表1中本来某人某科占一条记录的“行”就变成了表2里某人一条记录,每科做一个字段了利用selectfrom(selectfrom)的模式生成SQL语句复制代码代码如下:declare@sqlvarchar(4000...
数据库操作教程 2022-09-23 20:31:24 -
Oracle10g各个帐号的访问权限、登录路径、监控状态命令查询等等
1。帐号和口令设置要选择用户SYS、SYSTEM、DBSNMP、SYSMAN使用相同的口令,那就选择“所有账户使用同一口令”...
数据库操作教程 2022-09-23 20:29:58 -
SQLSELECT语句的表连接
我来给大家介绍join(连接)的概念.为此准备了两个试验用表:album(专辑表)和track(曲目表). 专辑表:包含200首来自Amazon的音乐CD的概要信息。 album(asin,title,artist,price,release,label,rank) 曲目表:每张专辑中的曲目(因为是音乐CD,所以也可叫歌曲)的详细信息...
数据库操作教程 2022-09-23 20:24:44 -
sql中casewhen语法使用方法
没有,用casewhen来代替就行了.例如,下面的语句显示中文年月复制代码代码如下:selectgetdate()as日期,casemonth(getdate())when11then'十一'when12then'十二'elsesubstring('一二三四五六七八九十',month(getdate()),1)end+'月'as月份CASE可能是SQL中被误用最多的关键字之一。虽然你可能以前用过这个关键字来创建字段,但是它还具有更多用法...
数据库操作教程 2022-09-23 20:21:02 -
SQLServer中SELECT语句的执行顺序
今天在写一条语句的时候,在查询分析器里边执行要用10s,换用另外一种写法只用少于1s的时间,同事说是因为Sql句语执行顺序的原因。之前看过一点相关的书,有一点印象,到网上找了资料,学习下...
数据库操作教程 2022-09-23 20:15:11 -
秒懂drop、truncate和delete的区别
(1)DELETE语句执行删除的过程是每次从表中删除一行,并且同时将该行的删除操作作为事务记录在日志中保存以便进行进行回滚操作。TRUNCATETABLE则一次性地从表中删除所有的数据并不把单独的删除操作记录记入日志保存,删除行是不能恢复的...
数据库操作教程 2022-09-23 18:24:42 -
table行转列的sql详解
一、要求1创建数据表CREATETABLE[dbo].[StuScore]([stuid][int]NOTNULL,[subject][nvarchar](30)NULL,[score][decimal](5,1)NULL)2插入测试数据stuidsubjectscore3chinese76.03math73.04chinese82.05chinese66.05math93.06chinese67.07math83.08chinese77.08math84.03行转列后的结果stuidchinesemath376.073.0482.00.0566.093.0667.00.070.083.0877.084.0二、分析1行转列,一个重点就是怎么样知道有多少列,怎么样创建这些列?我们可以先把这个问题搁置,而假设这些列是已知的。例如示例数据中,可以先假设subject的数据[chinese,math]是已知的,这样问题就简化了许多2当已知了chinese,math后,我们至少要先得到转换后的tabel结构如下;selectstuid,0aschinese,0asmathfromdbo.StuS...
数据库操作教程 2022-09-23 18:24:10 -
SQL删除语句DROP、TRUNCATE、DELETE的区别
DROP:DROPTABLEtest;删除表test,并释放空间,将test删除的一干二净。TRUNCATE:TRUNCATEtest;删除表test里的内容,并释放空间,但不删除表的定义,表的结构还在...
数据库操作教程 2022-09-23 18:24:10 -
SQLServerAlert发送告警邮件少了的原因
最近突然发现我们部署在数据库上面的告警(Alert),当错误日志里面出现错误时,并不是每个错误日志都会发送邮件出来。如下所示,设置了告警“SQLServerSeverityEvent14” USE[msdb]GOIFNOTEXISTS(SELECT1FROMmsdb.dbo.syscategoriesWHERENAME='DBA_MONITORING'ANDcategory_class=2)BEGINEXECmsdb.dbo.sp_add_category@class=N'ALERT',@type=N'NONE',@name=N'DBA_MONITORING';ENDGOIFEXISTS(SELECTnameFROMmsdb.dbo.sysalertsWHEREname=N'SQLServerSeverityEvent14')EXECmsdb.dbo.sp_delete_alert@name=N'SQLServerSeverityEvent14'GOEXECmsdb.dbo.sp_add_alert@name=N'SQLServerSeverityEvent14',@mess...
数据库操作教程 2022-09-23 18:22:59