-
SQLServerEVENTDATA()函数来获取DDL触发器信息
复制代码代码如下:--CreatealogtableCREATETABLETriggerLog(LogInfoxml)--CreateadummytabletodeletelateronCREATETABLETableToDelete(IdintPRIMARYKEY)--新建一个新表,作为删除实验表INSERTINTOTableToDeleteVALUES(1)GO--创建一个DropTable的DDLCREATETRIGGERStopTableDropONDATABASEAFTERDROP_TABLEASDECLARE@EventDataASxmlSET@EventData=EVENTDATA()--必须要在rollback之前截获DDL信息ROLLBACKPRINT'DROPTABLEattemptindatabase'+DB_NAME()+'.'INSERTINTOTriggerLogVALUES(@EventData)执行如下删除操作:DROPTABLETableToDelete会触发上面的DDL,从而回滚操作。执行下面的Sql:SELECT*FROMTriggerLog查看刚...
数据库操作教程 2022-09-23 16:41:39 -
SQLserver随机数函数
不过还是希望老鸟们多多指教了,现在切入正题:随机函数:rand()在查询分析器中执行:selectrand(),可以看到结果会是类似于这样的随机小数:0.36361513486289558,像这样的小数在实际应用中用得不多,一般要取随机数都会取随机整数。那就看下面的两种随机取整数的方法:1、A:selectfloor(rand()*N)---生成的数是这样的:12.0B:selectcast(floor(rand()*N)asint)---生成的数是这样的:122、A:selectceiling(rand()*N)---生成的数是这样的:12.0B:selectcast(ceiling(rand()*N)asint)---生成的数是这样的:12其中里面的N是一个你指定的整数,如100,可以看出,两种方法的A方法是带有.0这个的小数的,而B方法就是真正的整数了...
数据库操作教程 2022-09-23 16:41:38 -
SQLServer2008的逻辑查询处理步骤
最近我则刚刚收到了微软最有价值专家项目组寄来的该书的SQLServer2008英文版本-《InsideMicrosoftSQLServer2008:T-SQLQuerying》(http://www.microsoft.com/learning/en/us/book.aspx?ID=12804&locale=en-us),大致翻了一下,发现内容变动不少,既有新增的章节,也有基于SQLServer2005或2008新技术重新书写的SQL查询示例。我先就逻辑查询处理步骤方面给大家介绍一下两本书之间的差异吧,因为我也在刚开始阅读,以后逐步给大家介绍...
数据库操作教程 2022-09-23 16:41:35 -
SQLServer排序函数ROW_NUMBER和RANK用法总结
1.ROW_NUMBER()基本用法:SELECT SalesOrderID, CustomerID, ROW_NUMBER()OVER(ORDERBYSalesOrderID)ASRowNumber FROMSales...
数据库操作教程 2022-09-23 16:41:35 -
SQLServer中查看SQL句子执行所用的时间
复制代码代码如下:setstatisticsprofileonsetstatisticsioonsetstatisticstimeongo你执行的SQL语句复制代码代码如下:gosetstatisticsprofileoffsetstatisticsiooffsetstatisticstimeoff执行完后点消息即可。...
数据库操作教程 2022-09-23 16:41:32 -
sqlserver常用的几个数据类型
Sqlserver中常用的几个数据类型:binary固定长度的二进制数据,其最大长度为8,000个字节。varbinary可变长度的二进制数据,其最大长度为8,000个字节...
数据库操作教程 2022-09-23 16:41:30 -
MySql安装时的1045错误
解决办法1.卸载重装,不设root密码,因为MySql默认密码为空。解决办法2.保持现在的密码,打开“MySQLCommandLineClient”输入你的密码(安装时设的那个,如果密码不对可以试下空密码登录,有可能安装时密码设置无效)...
数据库操作教程 2022-09-23 16:41:30 -
sql刷新视图
比如我们创建了一个表T1和一个T1的视图V1,然后更改T1,再看V1的结果:首先创建表T1:复制代码代码如下:IFOBJECT_ID('T1')ISNOTNULLDROPTABLET1CREATETABLET1(col1INT,col2INT)INSERTINTOT1(col1,col2)VALUES(1,2)GO然后创建T1的视图V1:复制代码代码如下:CREATEVIEWV1ASSELECT*FROMT1在现实实践中,要避免在视图中的SELECT语句中使用*,在这只是演示。如果你查询视图V1就会出现以下结果: 接下来,我们对表T1添加一列col3:复制代码代码如下:ALTERTABLET1ADDcol3INT然后再次查询视图V1,你想这时的结果是三列呢,还是而列呢?答案是二列...
数据库操作教程 2022-09-23 16:41:28 -
sql查询慢的原因分析
查询速度慢的原因很多,常见如下几种:1、没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷)2、I/O吞吐量小,形成了瓶颈效应。3、没有创建计算列导致查询不优化...
数据库操作教程 2022-09-23 16:41:26 -
SQLServer数据库优化
在开发工具、数据库设计、应用程序的结构、查询设计、接口选择等方面有多种选择,这取决于特定的应用需求以及开发队伍的技能。本文以SQLServer为例,从后台数据库的角度讨论应用程序性能优化技巧,并且给出了一些有益的建议...
数据库操作教程 2022-09-23 16:41:26 -
数据库Leftjoin,RightJoin,InnerJoin的相关内容,非常实用
一.先看一些最简单的例子例子TableAaid adate1 a12 a23 a3TableBbidbdate1 b12 b24 b4两个表a,b相连接,要取出id相同的字段select*fromainnerjoinbona.aid=b.bid这是仅取出匹配的数据.此时的取出的是:1a1b12a2b2那么leftjoin指:select*fromaleftjoinbona.aid=b.bid首先取出a表中所有数据,然后再加上与a,b匹配的的数据此时的取出的是:1a1b12a2b23a3空字符同样的也有rightjoin指的是首先取出b表中所有数据,然后再加上与a,b匹配的的数据此时的取出的是:1a1b12a2b24空字符b4LEFTJOIN或LEFTOUTERJOIN。左向外联接的结果集包括LEFTOUT...
数据库操作教程 2022-09-23 16:41:25 -
sql触发器使用例子
inserted,deleted是在触发器中使用的两个临时表,当执行insert操作时,在inserted中存储着当前插入的记录,在执行delete操作时,在deleted中存储着当前删除的记录,当执行update时,在inserted中存储着修改后的记录,在deleted中存储着修改前的记录。复制代码代码如下:setANSI_NULLSONsetQUOTED_IDENTIFIERONgoALTERTRIGGER[dnt_user_add]ON[dbo].[dnt_users]AFTERINSERTASBEGINSETNOCOUNTON;insertinto[dnt_userfields](uid)selectuidfrominsertedEND删除:复制代码代码如下:SETANSI_NULLSONGOSETQUOTED_IDENTIFIERONGOCREATETRIGGER[dnt_users_del]ON[dnt_users]AFTERDELETEASBEGINSETNOCOUNTON;delete[dnt_userfields]fromdeletedwhere[dnt_userf...
数据库操作教程 2022-09-23 16:40:17