-
sqlserver对字段的添加修改删除、以及字段的说明
复制代码代码如下:--新增表字段ALTERprocedure[dbo].[sp_Web_TableFiled_Insert](@TableNamevarchar(100),@FieldNamevarchar(100),@FieldExplainvarchar(200),@DataTypevarchar(100),@ConnectTableNamevarchar(100),@FieldLengthint,@NewsIDintoutput)asbegintransactionmytrandeclare@errorSumintifnotexists(SELECT*FROMsyscolumnswhereid=object_id(@TableName)ANDname=@FieldName)begininserttb_TableField(TableName,FieldName,FieldExplain,DataType,ConnectTableName,FieldLength,UserSetSign)values(@TableName,@FieldName,@FieldExplain,@Data...
数据库操作教程 2022-09-23 17:24:52 -
简单判断MSSQL数据库版本(2000或者2005)
最近的一次对mssql数据库迁移操作中发现一个有趣的事情,可以用一条语句判断MSSQL数据库版本(准确度不高):select*fromsys.servers如果返回如下信息,应该是2000数据库:消息208,级别16,状态1,第1行对象名'sys.servers'无效。反之返回类似如下的信息,则可能为2005数据库1www-hostSQLServerSQLNCLIwww-hostNULLNULLNULL0原因:sys.servers这个对象在2000中没有,在2005中有...
数据库操作教程 2022-09-23 17:21:02 -
SQLServer简单模式下误删除堆表记录恢复方法(绕过页眉校验)
首先,我需要强调下,这篇主旨是揭示堆表的删除记录找回的原理,我所考虑的方面并不适用于每个人的每种情况,望大家见谅~很多朋友认为数据库在简单模式下,堆表误删除一条记录,是无法找回的,因为没有日志记录。其实不然,某种意义上是可以找回的,因为堆表在删除记录时,只更改了行偏移,实际数据没有被物理删除,所以利用这点,测试了下恢复数据,果然成功了,但是还有点问题没有研究出结果:如果不关闭页面校验,除了更改偏移量,删除数据时还需要更改页眉,这点还没时间去琢磨,所以恢复数据时还要能推断出页眉的16进制对应关系,有兴趣的朋友可以分享下经验给我...
数据库操作教程 2022-09-23 17:15:45 -
SQLServer误区30日谈第18天有关FileStream的存储,垃圾回收以及其它
误区#18:如下多个有关FileStream的误区全部错误18a)FileStream数据可以在远程存储 不能,由于FileStream数据容器(指的是存放FileStream文件的NTFS文件夹,杜撰出来的术语)必须像数据文件或日志文件那样符合本地存储策略-也就是说,这个数据容器必须放在对于运行SQLServer的WindowsServer是本地存储(译者注:也就是在‘计算机'里能看到的存储,DAC当然是了,其实SAN这类不直接连接服务器的也算是)访问FileStream数据只要客户端连接到了SQLServer服务器并获取响应的事务上下文后,就可以通过UNC路径进行访问了。18b)FileStream的数据容器可以嵌套 不能,对于同一个数据库的两个不同的FileStream容器可能在同一个目录下,但是却不能嵌套...
数据库操作教程 2022-09-23 16:59:41 -
一个简单的SQL行列转换语句
一个简单的SQL行列转换Author:eaglet在数据库开发中经常会遇到行列转换的问题,比如下面的问题,部门,员工和员工类型三张表,我们要统计类似这样的列表部门编号部门名称合计正式员工临时员工辞退员工1A3020101这种问题咋一看摸不着头绪,不过把思路理顺后再看,本质就是一个行列转换的问题。下面我结合这个简单的例子来实现行列转换...
数据库操作教程 2022-09-23 16:56:59 -
使SQL用户只能看到自己拥有权限的库(图文教程)
以SQLServer2012为例上图是部分数据库的截图,我们执行复制代码代码如下:DENYVIEWanyDATABASEtoPUBLIC;然后给Best库的Best用户执行复制代码代码如下:ALTERAUTHORIZATIONONDATABASE::BestTOBest资源管理器中Best用户登陆后就只能显示Best库了,同样给Mine库的Mine用户执行相同SQL复制代码代码如下:ALTERAUTHORIZATIONONDATABASE::MineTOMineMine用户登录后也只能显示Mine数据库了,达到了咱的目的,分配权限的时候记得给对应用户映射对应数据库的权限,防止跨库操作....
数据库操作教程 2022-09-23 16:56:47 -
目前用到的两个分页存储过程代码
第一个,取得数据总行数复制代码代码如下:setANSI_NULLSONsetQUOTED_IDENTIFIERONgoALTERPROCEDURE[sq8reyoung].[fenye_num](@TableNamesNVARCHAR(200),@Filternvarchar(200))ASIF@Filter=''SET@Filter='WHERE1=1'ELSESET@Filter='WHERE'+@FilterEXECUTE('selectcount(*)from'+@TableNames+''+@Filter)第二个取得分页数据复制代码代码如下:setANSI_NULLSONsetQUOTED_IDENTIFIERONgoALTERPROCEDURE[sq8reyoung]...
数据库操作教程 2022-09-23 16:56:01 -
SQL小技巧又快又简单的得到你的数据库每个表的记录数
但是如何得到某个数据库所有的表的记录数,你要是用上面的方法估计得累死了。呵呵下面提供如何借用sysindexes和sysobjects表来得到某个数据库每个表记录数的方法:先给出SQLServer2000版本的:复制代码代码如下:SELECTo.NAME,i.rowcntFROMsysindexesASiINNERJOINsysobjectsASoONi.id=o.idWHEREi.indid<2ANDOBJECTPROPERTY(o.id,'IsMSShipped')=0ORDERBYo.NAMESQLServer2005/8版本的SQL语句:复制代码代码如下:SELECTo.name,ddps.row_countFROMsys.indexesASiINNERJOINsys.objectsASoONi.OBJECT_ID=o.OBJECT_IDINNERJOINsys.dm_db_partition_statsASddpsONi.OBJECT_ID=ddps.OBJECT_IDANDi.index_id=ddps.index_idWHEREi.index_id<2ANDo...
数据库操作教程 2022-09-23 16:55:08 -
几个简单的基本的sql语句
说明:几个简单的基本的sql语句 选择:select*fromtable1where范围 插入:insertintotable1(field1,field2)values(value1,value2) 删除:deletefromtable1where范围 更新:updatetable1setfield1=value1where范围 查找:select*fromtable1wherefield1like'%value1%'---like的语法很精妙,查资料! 排序:select*fromtable1orderbyfield1,field2[desc] 总数:selectcount*astotalcountfromtable1 求和:selectsum(field1)assumvaluefromtable1 平均:selectavg(field1)asavgvaluefromtable1 最大:selectmax(field1)asmaxvaluefromtable1 最小:selectmin(field1)asminvaluefromtable1...
数据库操作教程 2022-09-23 16:52:50 -
SqlServer中存储过程中输入和输出参数(简单实例一看就懂)
[sql]--===================【创建存储过程】=====================USE[Message]GO/******Object:StoredProcedure[dbo].[读取外部数据库查询]ScriptDate:10/24/201205:39:16******/SETANSI_NULLSONGOSETQUOTED_IDENTIFIERONGO--=============================================Working没有变1,错误码没有测试,计划时间测试,企业名称createPROCEDURE[dbo]...
数据库操作教程 2022-09-23 16:49:55 -
SQL中遇到多条相同内容只取一条的最简单实现方法
SQL中经常遇到如下情况,在一张表中有两条记录基本完全一样,某个或某几个字段有些许差别,这时候可能需要我们踢出这些有差别的数据,即两条或多条记录中只保留一项。如下:表timeand针对time字段相同时有不同total和name的情形,每当遇到相同的则只取其中一条数据,最简单的实现方法有两种1、selecttime,max(total)astotal,namefromtimeandgroupbytime;//取记录中total最大的值或selecttime,min(total)astotal,namefromtimeandgroupbytime;//取记录中total最小的值上述两种方案都有个缺点,就是无法区分name字段的内容,所以一般用于只有两条字段或其他字段内容完全一致的情况2、select*fromtimeandasawherenotexists(select1fromtimeandwherea.time=timeanda.total<total);此中方案排除了方案1中name字段不准确的问题,取的是total最大的值上面的例子中是只有一个字段不相同,假如有两个字段出现...
数据库操作教程 2022-09-23 16:43:55