-
SQLSERVER 临时表和表变量的区别汇总
目录一:背景1.讲故事二:到底有什么区别1.前置思考2.如何验证都存储在tempdb中?3.不同点在哪里三:总结一:背景1.讲故事今天和大家聊一套面试中经常被问到的高频题,对,就是临时表和表变量这俩玩意,如果有朋友在面试中回答的不好,可以尝试看下这篇能不能帮你成功迈过。二:到底有什么区别1.前置思考不管是临时表还是表变量都带了表这个词,既然提到了表,按推理自然会落到某一个数据库中,如果真在一个数据库中,那自然就有它的存储文件.mdf和.ldf,那是不是如我推理的那样呢?查阅MSDN的官方文档可以发现,临时表和表变量确实都会使用tempdb这个临时存储数据库,而且tempdb也有自己的mdf,ndf,ldf文件,截图如下:有了这个大思想之后,接下来就可以进行验证了...
数据库操作教程 2023-02-25 05:42:55 -
SQLSERVER 的 truncate 和 delete 区别解析
目录一:背景1.讲故事二:区别详解1.思考2.观察delete的事务日志。3.观察truncate的事务日志...
数据库操作教程 2023-02-25 05:42:39 -
SqlServer服务中利用触发器对指定账户进行登录ip限制提升安全性操作
转眼间上次写文章已经是2022年12月15日的事情啦,本来从2022年7月份开始写作之后保持着每周一篇,然而从12月15日后断更了这么久,经历了,隔离、阳、过年、从今天开始继续坚持写作,本片文章给大家分享SqlServer服务中利用触发器对指定账户进行登录ip限制从而提升账户的安全性,这样可以灵活的限制每个账户的允许登录IP,类似于PostgreSQL中pg_hba.conf配置文件的功能,MySQL则是在创建账户时可以配置账户允许登录IP,下面记录一下SQLServer如何实现。在MySql数据库中我们在创建一个新的用户时是可以选择这个用户的可用连接ip的,比如localhost或者某个ip甚至不做限制直接输入%则表示这个用户运行任意IP远程连接,但是在微软的MsSqlServer中在创建用户时则没有这样的设置,但是有时候我们处于安全问题,想要限制某个账户只能通过某个IP访问,通过防火墙设置的话会直接阻断这个IP对所有账户的访问,有点一棍子打死,不是我们想要的,这种情况下可以利用MsSqlServer数据库中的触发器来实现这个目的,当用户请求连接数据库时会触发我们提前写好的规则进行验...
数据库操作教程 2023-02-25 05:42:38 -
sqlserver字符串拼接的实现
目录1.概述2.数字+字符串2.1int+varchar2.2decimal+varchar3.数字+数字4.字符串+字符串5.使用CAST和CONVERT函数进行类型转换1.概述在SQL语句中经常需要进行字符串拼接,以sqlserver,oracle,mysql三种数据库为例,因为这三种数据库具有代表性。sqlserver:select'123'+'456';oracle:select'123'||'456'fromdual;或selectconcat('123','456')fromdual;mysql:selectconcat('123','456');注意:SQLServer中没有concat函数(SQLServer2012已新增concat函数)...
数据库操作教程 2023-02-25 05:42:32 -
SqlServer字符截取的具体函数使用
目录LEN()函数SUBSTRING()函数LEFT()函数RIGHT()函数CHARINDEX()函数STUFF()函数PATINDEX()函数unionall的使用LEN()函数获取字符串的长度。LEN(<字符>)--返回整型SUBSTRING()函数截取字符内指定位置、指定内容的字符...
数据库操作教程 2023-02-25 05:42:27 -
SQLServer数据库误操作恢复的方法
目录前言一、恢复数据实例1.创建初始数据2.保证数据恢复的前提条件3.模拟不小心误操作4.开始恢复二、恢复数据原理1.数据库文件类型2.使用bak恢复数据原理总结参考前言在日常开发工作中,有可能会存在数据库的误操作,比如不小心删除了一个表或者删除了一堆数据,这个时候我们就需要将数据库进行恢复,恢复到误操作以前的状态,而这篇文章就是主要如何在误操作之后,恢复数据库的数据。一、恢复数据实例1.创建初始数据usemasterifexists(select*fromsys.databaseswherename='test')dropdatabasetest;createdatabasetest;usetestcreatetableUserInfo(idint,namevarchar(50),nicknamevarchar(50),);goinsertintoUserInfovalues(1,'张三','小张');insertintoUserInfovalues(2,'张三2','小张');insertintoUserInfovalues(3,'李四','小李');insertintoUserI...
数据库操作教程 2023-02-25 05:42:15 -
SQLSERVER调用C#的代码实现
简单例子首先写一段简单的C#代码,然后把它编译成dll。namespaceBussiness{publicclassUserFunctions{publicstaticstringUserLogin(stringusername,stringpassword){varrandom=newRandom();varisSuccess=random.Next()%2==0;returnisSuccess?"登录成功":"登录失败";}}}接下来需要做的就是数据库参数配置,开启CLR支持,并且指定某个数据库支持unsafe模式...
数据库操作教程 2023-02-25 05:42:11 -
SQLServer 清理日志的实现
本文以sql2012为例第一步,(查询日志中文件名和大小):USE数据库名GOSELECTfile_id,name,size,*FROMsys.database_files;查询结果如上图所示,可以看到其中name字段为日志文件名,size是日志大小,接下来就可以执行清理日志操作。值得注意的是,清理日志必须先将数据库转成简单模式,清理后再将数据库置为完全模式,具体的语句如下: 第二步,清理:USE[master]GOALTERDATABASE数据库名SETRECOVERYSIMPLEWITHNO_WAITGOALTERDATABASE数据库名SETRECOVERYSIMPLE--简单模式GOUSE数据库名GODBCCSHRINKFILE(N'文件名',11,TRUNCATEONLY)GOUSE[master]GOALTERDATABASE数据库名SETRECOVERYFULLWITHNO_WAITGOALTERDATABASE数据库名SETRECOVERYFULL--还原为完全模式GO其中文件名为第一步中查询出的name字段对应的内容...
数据库操作教程 2023-02-25 05:41:45 -
sqlserver 合并列数据的实现
sqlserver递归查询树型结构某节点的所有上级节点,并且把这些所有上级节点多行拼接为一行,即合并列数据witheps_root(pk_eps,pk_parent,eps_code,eps_name)as(SELECTpk_eps,pk_parent,eps_code,eps_nameFROMpm_epswhereenablestate=2andpk_eps='1001A11000000003P62E'unionallSELECTe.pk_eps,e...
数据库操作教程 2023-02-25 05:41:39 -
SQLserver中的any和all运算符的用法
目录一,SQLServerAny运算符二,SQLServerAll运算符总结:any和all的区别一,SQLServerAny运算符Any是一个逻辑运算符,它将值与子查询返回的一组进行比较。any运算符必须要结合比较运算符使用,>,>=,<,<=,=,<>开头,后面就是子查询where比较者>any(子查询)如果子查询不返回如何行,则条件计算结果为false,就是返回空的意思,进行不了比较...
数据库操作教程 2023-02-25 05:41:32