-
SQLServe重复行删除方法
MicrosoftSQLServer表不应该包含重复行和非唯一主键。为简洁起见,在本文中我们有时称主键为“键”或“PK”,但这始终表示“主键”...
数据库操作教程 2022-09-23 16:54:33 -
教你几种在SQLServer中删除重复数据方法
方法一复制代码代码如下:declare@maxinteger,@idintegerdeclarecur_rowscursorlocalforselect主字段,count(*)from表名groupby主字段havingcount(*)>1opencur_rowsfetchcur_rowsinto@id,@maxwhile@@fetch_status=0beginselect@max=@max-1setrowcount@maxdeletefrom表名where主字段=@idfetchcur_rowsinto@id,@maxendclosecur_rowssetrowcount0方法二有两个意义上的重复记录,一是完全重复的记录,也即所有字段均重复的记录,二是部分关键字段重复的记录,比如Name字段重复,而其他字段不一定重复或都重复可以忽略。1、对于第一种重复,比较容易解决,使用复制代码代码如下:selectdistinct*fromtableName就可以得到无重复记录的结果集...
数据库操作教程 2022-09-23 16:52:07 -
SQLserver高级应用收藏版
一.建库,建表,加约束.1.1建库复制代码代码如下:usemastergoifexists(select*fromsysdatabaseswherename='MyDatabase')—判断master数据库sysdatagbases表中是否存在将要创建的数据库名dropdatabaseMyDatabase—如果sysdatabases表中存在该数据库名,则将它删除goexecxp_cmdshell‘mdD:/MyDatabases'—利用存储过程创建一个文件夹用于存储数据物理文件(数据文件,日志文件),DOS命令(mkdir=md)gocreatedatabaseMyDatabase—创建数据库on(name='MyDatabase_data',--指定逻辑文件名filename='D:/MyDatabases/MyDatabase_data.mdf',--指定物理文件名size=5mb,--初始大小maxsize=50mb,--指定物理文件最大容量,可选filegrowth=20%--增长量)logon(name='MyDatabase_log',--指定逻辑日志文件名filena...
数据库操作教程 2022-09-23 16:49:46 -
sql存储过程批量删除数据的语句
复制代码代码如下:CreatePROCEDUREBatch_Delete@TableNamenvarchar(100),--表名@FieldNamenvarchar(100)...
数据库操作教程 2022-09-23 16:48:31 -
SQL级联删除与级联更新的方法
复制代码代码如下:ondeletecascade当你更新或删除主键表时,那么外键表也会跟随一起更新或删除,需要在建表时设置级联属性CREATETABLECountries(CountryIdINTPRIMARYKEY)INSERTINTOCountries(CountryId)VALUES(1)INSERTINTOCountries(CountryId)VALUES(2)INSERTINTOCountries(CountryId)VALUES(3)CREATETABLECities(CityIdINTPRIMARYKEY ,CountryIdINTREFERENCESCountriesONDELETECASCADE);INSERTINTOCitiesVALUES(1,1)INSERTINTOCitiesVALUES(2,1)INSERTINTOCitiesVALUES(3,2)CREATETABLEBuyers(CustomerIdINTPRIMARYKEY,CityIdINTREFERENCESCitiesONDELETECASCADE);INSERTINTOBuyers&...
数据库操作教程 2022-09-23 16:47:39 -
SQLServer删除表及删除表中数据的方法
本文介绍SQLServer中如何删除表,如何删除表中的数据。在删除表数据时有delete和truncate两种方法,delete和truncate有什么区别呢?SQLServer,我们现在基本上使用的最古老的版本应该是SQLServer2000吧,应该没有更早的版本了吧?!从SQLServer2000开始,到SQLServer2005,2008,2012等,T-SQL的处理能力越来越强...
数据库操作教程 2022-09-23 16:44:18 -
SQLServer怎么找出一个表包含的页信息(Page)
前言在SQLServer中,如何找到一张表或某个索引拥有那些页面(page)呢?有时候,我们在分析和研究(例如,死锁分析)的时候还真有这样的需求,那么如何做呢?SQLServer2012提供了一个无文档的DMF(sys.dm_db_database_page_allocations)可以实现我们的需求,sys.dm_db_database_page_allocations有下面几个参数: @DatabaseId: 数据库的ID,可以用DB_ID()函数获取某个数据库或当前数据库的ID @TableId: 表的ID。我们可以使用OBJECT_ID()函数通过表名获取表ID...
数据库操作教程 2022-09-23 16:43:51 -
Sql中存储过程的定义、修改和删除操作
1.存储过程的分类系统存储过程本地存储过程(用户自定义)临时存储过程(局部【#】、全局【##】临时存储过程)2.创建存储过程--选出价格区间的商品信息createproceduresp_goods_price@minpricefloat,@maxpricefloatasselect*fromgoodswhereprice>=@minpriceandprice<=@maxpricego执行存储过程:executesp_goods_price20020003.修改存储过程createproceduresp_goods_betw@minpricefloat=200,@maxpricefloat=3000asselect*fromgoodswhereprice>=@minpriceandprice<=@maxpricego4.删除存储过程dropproceduresp_goods_price5.查看存储过程sp_helptextprocedureNamesp_helpprocedureName6.重命名存储过程execsp_renameoldNamenewName**局...
数据库操作教程 2022-09-23 16:43:39 -
sqlserver编写archive通用模板脚本实现自动分批删除数据
博主做过比较多项目的archive脚本编写,对于这种删除数据的脚本开发,肯定是一开始的话用最简单的一个delete语句,然后由于部分表数据量比较大啊,索引比较多啊,会发现删除数据很慢而且影响系统的正常使用。然后就对delete语句进行按均匀数据量分批delete的改写,这样的话,原来的删除一个表用一个语句,就可能变成几十行,如果archive的表有十几个甚至几十个,那我们的脚本篇幅就非常大了,增加了开发和维护的成本,不利于经验比较少的新入职同事去开发archive脚本,也容易把注意力分散到所谓分批逻辑中...
数据库操作教程 2022-09-23 16:43:38 -
SQLServer2000/2005/2008删除或压缩数据库日志的方法
由于数据库日志增长被设置为“无限制”,所以时间一长日志文件必然会很大,一个400G的数据库居然有600G的LOG文件,严重占用了磁盘空间。由于主要是做OLAP,所以数据库本身不会有大变动,所以日志也就没有多少作用了,因此想办法把数据库日志文件收缩到很小或者删除...
数据库操作教程 2022-09-23 16:42:50