-
真正高效的SQLSERVER分页查询(多种方案)
Sqlserver数据库分页查询一直是Sqlserver的短板,闲来无事,想出几种方法,假设有表ARTICLE,字段ID、YEAR...(其他省略),数据53210条(客户真实数据,量不大),分页查询每页30条,查询第1500页(即第45001-45030条数据),字段ID聚集索引,YEAR无索引,Sqlserver版本:2008R2第一种方案、最简单、普通的方法:复制代码代码如下:SELECTTOP30*FROMARTICLEWHEREIDNOTIN(SELECTTOP45000IDFROMARTICLEORDERBYYEARDESC,IDDESC)ORDERBYYEARDESC,IDDESC平均查询100次所需时间:45s第二种方案:复制代码代码如下:SELECT*FROM( SELECTTOP30*FROM(SELECTTOP45030*FROMARTICLEORDERBYYEARDESC,IDDESC)fORDERBYf.YEARASC,f.IDDESC)sORDERBYs.YEARDESC,s.IDDESC平均查询100次所需时间:138S第三种方案:复制代码代码如下:SE...
数据库操作教程 2022-09-23 17:13:43 -
如何将sql执行的错误消息记录到本地文件中实现过程
其实大家都知道sql语句的错误信息都可以在sys.messages表里面找到如:如果在执行语句在try...catch中我们可以通过以下方法获取错误信息。sql语句如下:复制代码代码如下:BEGINTRYSELECT3/0ENDTRYBEGINCATCHDECLARE@errornumberINTDECLARE@errorseverityINTDECLARE@errorstateINTDECLARE@errormessageNVARCHAR(4000)SELECT@errornumber=ERROR_NUMBER(),@errorseverity=ERROR_SEVERITY(),@errorstate=ERROR_STATE(),@errormessage=ERROR_MESSAGE()SELECT@errornumber,@errorseverity,@errorstate,@errormessageRAISERROR(@errormessage,--Messagetext,@errorseverity,--Severity,@errorstate,--State,@errornu...
数据库操作教程 2022-09-23 17:13:40 -
SqlServer参数化查询之wherein和like实现之xml和DataTable传参介绍
方案5使用xml参数对sqlserverxml类型参数不熟悉的童鞋需要先了解下XQuery概念,这里简单提下XQuery是用来从XML文档查找和提取元素及属性的语言,简单说就是用于查询xml的语言说到这就会牵着到XPath,其实XPath是XQuery的一个子集,XQuery1.0和XPath2.0共享相同的数据模型,并支持相同的函数和运算符,XPath的方法均适用于XQuery,假如您已经学习了XPath,那么学习XQuery也不会有问题。详见https://www.jb51.net/w3school/xquery/xquery_intro.htmXQuery概念了解后需要进一步了解下SqlServer对xml的支持函数,主要为query()、nodes()、exist()、value()、modify() ,详见http://msdn.microsoft.com/zh-cn/library/ms190798.aspx使用xml方式实现wherein时有两种实现方式,使用value和exist,在这里推荐使用exist方法,msdn是这样描述的:D.使用exist()方法而...
数据库操作教程 2022-09-23 17:13:30 -
50个常用sql语句网上流行的学生选课表的例子
50个常用sql语句Student(S#,Sname,Sage,Ssex)学生表Course(C#,Cname,T#)课程表SC(S#,C#,score)成绩表Teacher(T#,Tname)教师表问题:1、查询“001”课程比“002”课程成绩高的所有学生的学号;selecta.S#from(selects#,scorefromSCwhereC#='001')a,(selects#,scorefromSCwhereC#='002')bwherea.score>b.scoreanda.s#=b.s#;2、查询平均成绩大于60分的同学的学号和平均成绩;selectS#,avg(score)fromscgroupbyS#havingavg(score)>60;3、查询所有同学的学号、姓名、选课数、总成绩;selectStudent.S#,Student.Sname,count(SC.C#),sum(score)fromStudentleftOuterjoinSConStudent.S#=SC.S#groupbyStudent.S#,Sname4、查询姓“李”的老师的个数;se...
数据库操作教程 2022-09-23 17:13:21 -
PL/SQLDEVELOPER使用的一些技巧
1,登录后默认自动选中MyObjects默认情况下,PLSQLDeveloper登录后,Brower里会选择Allobjects,如果你登录的用户是dba,要展开tables目录,正常情况都需要Wait几秒钟,而选择MyObjects后响应速率则是以毫秒计算的。Tools菜单-->ObjectBrowerFilters,会打开BrowerFolders的定单窗口,把“MyObjects”设为默认即可...
数据库操作教程 2022-09-23 17:13:11 -
通过sql存储过程发送邮件的方法
SQLServer怎样配置发送电子邮件通常大家都知道:SQLServer与MicrosoftExchangeServer集成性很好,关于这方面的配置,在SQLServer的联机帮助里有详细的说明,在此不再赘述。然而我们更关心的问题是:在没有ExchangeServer的情况下,如何配置SQLServer利用Internet邮件服务器发送邮件? 笔者曾为这问题伤透了脑筋,搜遍了互联网上的相关资料,发现仅有的几篇资料中有的是一笔带过,有的虽然介绍了操作步骤,可按照步骤一步一步操作下来,结果总是失败...
数据库操作教程 2022-09-23 17:10:42 -
关于SQL存储过程入门基础(流程控制)
这里我们讲一下存储过程的流程控制,ifelse,case,while,这里没有for循环的,这些跟c,c++,c#等语言都差不过的。一,首先来看if else使用复制代码代码如下:if条件beginsql语句endelsebeginsql语句end看个简单例子复制代码代码如下:declare@idint --声明个变量set@id=5 --设置厨初始值if(@id=1) begin print'right' endelseif(@id=0) begin &nb...
数据库操作教程 2022-09-23 17:10:40 -
Sql学习第一天——SQL将变量定义为Table类型(虚拟表)
SQL将变量定义为Table类型在平时定义sql语句中的变量时通常我们定义的都是像char,varchar,nvarchar,int........,那如何让变量作为一个像虚拟表一样呢,其实很简单。基本语法:复制代码代码如下: declare@ttable(列名1列的数据类型1,列名2列的数据类型2,...............) insertinto@t(列名1,列名2,...............)values(...............)[code]或者[code] insertinto@t(列名1,列名2,...............)(select....from....)实验用表一(PeopleInfo): id name phone XC1 李某 123333333 XC2 小小 785555555例如: 复制代码代码如下: declare@ttable(idnvarchar(3),[name]nvarchar(10))insertinto@t(id,[name])(selectid,[name]fromPeopleInfowher...
数据库操作教程 2022-09-23 17:10:36 -
SQLServer复制需要有实际的服务器名称才能连接到服务器
今天在做sqlServer2005的实验的时候碰到的问题,问题描述很清楚,怀疑是我以前给计算机修改了名称而导致的.可以用select@@servername和selectserverproperty('servername')对照一下,两个的结果是否一样,不一样就会出现问题,以下给出解决的SQL脚本复制代码代码如下:ifserverproperty('servername')<>@@servernamebegindeclare@serversysnameset@server=@@servernameexecsp_dropserver@server=@serverset@server=cast(serverproperty('servername')assysname)execsp_addserver@server=@server,@local='LOCAL'end执行之后,重新sql即可解决这个问题...
数据库操作教程 2022-09-23 17:10:31 -
sqlserverbcp(数据导入导出工具)一般用法与命令详解
bcp是SQLServer中负责导入导出数据的一个命令行工具,它是基于DB-Library的,并且能以并行的方式高效地导入导出大批量的数据。bcp可以将数据库的表或视图直接导出,也能通过SELECTFROM语句对表或视图进行过滤后导出...
数据库操作教程 2022-09-23 17:10:27 -
T-SQL问题解决集锦数据加解密全集
以下代码已经在SQLServer2008上的示例数据库测试通过问题一:如何为数据进行加密与解密,避免使用者窃取机密数据?对于一些敏感数据,如密码、卡号,一般不能使用正常数值来存储。否则会有安全隐患...
数据库操作教程 2022-09-23 17:10:23 -
sqlserver主键设计的注意点
在设计主键的时候往往需要考虑以下几点:1.无意义性:此处无意义是从用户的角度来定义的。这种无意义在一定程度上也会减少数据库的信息冗余...
数据库操作教程 2022-09-23 17:10:16