一.TOP 筛选 如果有 ORDER BY 子句,TOP 筛选将根据排序的结果返回指定的行数.如果没有 ORDER BY 子句,TOP 筛选将按照行的物理顺序返回指定的行数. 1. 返回指定数目的行 TOP 用于指示从查询结果集返回指定数目的行. 例如,返回前2行记录 SELECT TOP (2) ColumnA, ColumnB FROM Table1 2. 返回指定百分比的行 可以使用百分比,如果遇到百分比的计算结果不是整数,将向上舍入(即“进一法”,而不是“四舍五入”或“截尾取整”).例如…
SQL Server 分组后取Top N(转) 近日,工作中突遇一需求:将一数据表分组,而后取出每组内按一定规则排列的前N条数据.乍想来,这本是寻常查询,无甚难处.可提笔写来,终究是困住了笔者好一会儿.冥思苦想,遍查网络,不曾想这竟然是SQL界的一个经典话题.今日将我得来的若干方法列出,抛砖引玉,以期与众位探讨. 正文之前,对示例表结构加以说明. 表SectionTransactionLog,用来记录各部门各项活动的日志表 SectionId,部门Id SectionTransactionTyp…
oracle .mysql. sql server使用记录 mysql常用命令: mysqld --启动mysql数据库 show databases; -- 查看数据库 use database; -- 选择数据库 show tables; -- 查看表 desc tableName; -- 查看表结构 show processlists; --如果查询慢,可以查看是否锁表 exit --退出mysql service mysqld restart; --重启mysql服务 mysql声明过程…
SQL server经典电子书.工具和视频教程汇总 SQL server经典电子书.工具和视频教程汇总 SQL Server是高校计算机专业的一门必修课程,同时众多企业采用SQL Server作为数据库系统,学习这门知识非常重要.网上SQL server的资料很多,这里小弟在学习中收集了一些好评较高的资料,分享给大家.资料众多,一一将资料上传上来需要时间,先将下载目录分享给大家,需要的就拿去,希望能帮助到大家~ 文档和教程 win7下安装SQL Server 2008 http://down.5…
写法: 假装有个表Shop,其中有一列ShopName,取100000到100050条数据. ROW_NUMBER 的写法 SELECT * FROM (SELECT ShopName , ROW_NUMBER() OVER(ORDER BY ShopName) as R FROM Shop) t WHERE R>100000 AND R<=100050 OFFSET,FETCH 的写法 SELECT ShopName from Shop ORDER BY ShopName OFFSET 10…
写法: 假装有个表Shop,其中有一列ShopName,取100000到100050条数据. ROW_NUMBER 的写法 SELECT * FROM ( SELECT ShopName , ROW_NUMBER() OVER(ORDER BY ShopName) as R FROM Shop ) t WHERE R>100000 AND R<=100050 OFFSET,FETCH 的写法 SELECT ShopName from Shop ORDER BY ShopName OFFSET…
    最近工作中有一个需求,就是某一个比较重要的业务表经常被莫名其妙的变更.在SQL Server中这类工作如果不事前捕获记录的话,无法做到.对于捕获变更来说,可以考虑的选择包括Trace,CDC.但Trace的成本比较大,对于负载量较高的系统并不合适,而CDC需要影响业务库,因此SQL Server Audit就是一个比较好的选择.      在SQL Server中,如果只是希望获得表的更新时间,只需要看表的聚集索引的最后更新时间即可,代码如下: SELECT OBJECT_NAME(O…
什么是转发记录指针? 转发记录指针是堆表中特有的数据存储机制. 当你修改了某个数据页中的一行时,如果该行所在的数据页已经无法存放其修改后的行, SQL Server会把这行数据移动到一个新的数据页上面去,并在原来的位置留下一个”记录转发指针”,指向到数据行新的位置. 图一 滥用记录转发指针的后果 转发记录指针是个非常麻烦的东西,对数据读取的性能百害无一利, 试想在一个满是转发指针记录的表中查找数据时,你需要根据这些转发指针记录在不同的数据页上跳来跳去,对性能的影响可想而知. 甚至连SQL Ser…
我自己的数据库表记录死锁后的 根据以下资料的 解决方案: 1. 先根据以下语句 查询 哪些表被 死锁,及 死锁的  spid SELECT request_session_id spid,OBJECT_NAME(resource_associated_entity_id)tableName FROM sys.dm_tran_locks WHERE resource_type='OBJECT ' 2. 再根据以上 语句查询出来的 spid 通过以下存储过程 查询是哪台机客户机 在操作,造成的死锁…
本文涉及的相关问题,如果你的问题或需求有与下面所述相似之处,请阅读本文 A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is c…
修改权限 打开要附加的数据库文件所在的文件夹,右键单击mdf文件,选择“属性”: 单击“安全”选项卡,给所有用户添加读写权限. 最后点击"确定"就可以了.修改权限完成后,你就可以成功的附加数据库了.这是最常用的方法,成功率也比较高,偶尔出现不成功的案例,此时请参考接下来的两种方法. 切换身份验证方式 有时不能成功附加数据库,可以用切换身份验证方式的方法解决.使用这种解决方法的前提条件是,你之前连接数据库时的身份验证方式是" SQL Server 身份验证 ”,如下图所示.如果…
[1]安装程序配置服务器失败需要修改下注册表1 打开注册表 在"开始"--"运行"键入 "regedit"  2 删除注册表如下键值: HKEY_CURRENT_USER\Software\Microsoft\Microsoft SQL Server HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server HKEY_LOCAL_MACHINE\SYSTEM\CurrentControl…
@本文来自百度 方法一:修改权限法 1 打开要附加的数据库文件所在的文件夹,即扩展名为mdf的文件所在的文件夹,如下图所示: 2 右键单击mdf文件,选择“属性”,如下图所示: 3 单击“安全”选项卡,如下图所示: 4 单击“编辑”按钮,如下图所示: 5 在弹出的对话框中的“组或用户名”中选中"Authenticated Users",如下图所示: 6 在“Authenticated Users的权限”下,勾选"完全控制",  "完全控制"被勾选…
问题一: 今天拿到一份有近百万条数据的Excel要导到数据库里面,我先在本地(2014)用自带Excel,然后生成脚本文件去服务器(2008)上执行:文件SQL打开不了. 解决方法: 用自带的sqlcmd工具 第一步:Win+R 键入:cmd 命令,开启命令行工具: 第二步:键入:cd C:\Program Files\Microsoft SQL Server\100\Tools\Binn (具体目录路径跟你安装的SQL位置有关) 第三步:键入:sqlcmd -S . -U sa -P 123…
delete from table1 where id in (select top 100 id from table1)…
在T-Sql中,一般top数据不确定的情况下,都是拼sql,这样无论是效率还是可读性都不好.应该使用下面参数化Top方式:declare @TopCount int set @TopCount = 100 select top (@TopCount) * from AdventureWorks.HumanResources.Employee如果有Like等字句,一定要拼Sql的话,也应该使用sp_executesql来执行,示例如下:declare @TopCount int --定义top 数…
语法   [ TOP (expression) [PERCENT] [ WITH TIES ] ] 注意:expression 是在一对圆括号内的,而之后又有如下的例子 在 TOP 中使用变量 以下示例使用变量获得 AdventureWorks 数据库的 dbo.Employee 表中列出的前 10 个雇员.   复制代码 USE AdventureWorks ; GO DECLARE @p AS int SET @p='10' SELECT TOP(@p)* FROM HumanResourc…
DECLARE @page INT, @size INT;select @page = 300, @size = 10 SELECT *FROM gpcomp1.GPCUSTWHERE company like 'a%'ORDER BY CUSTNOOFFSET (@page -1) * @size ROWSFETCH NEXT @size ROWS ONLY;…
主键(PrimaryKey):主键就是每个数据行(记录)的唯一标识,不会有重复值的列(字段)才能当做主键.一个表可以没有主键,但是这样会很难处理表,因此一般情况表都要设置主键. 主键有两张选用策略,分为业务主键和逻辑主键. 业务主键是使用有业务意义的字段做主键,例如身份证号.银行账号等. 逻辑主键是使用没有任何业务意义的字段做主键,完全用来给程序看,是业务人员不会看的数据,推荐使用逻辑主键. 逻辑主键设置方法为将设计页面中列属性栏的表示规范切换为是即可,在输入记录时,逻辑主键字段可以不输入,系统…
指定数据库,然后: select Name,Create_date,Modify_Date from sys.objects where type in ('U','P', 'V','F', 'TR', 'FN') order by Modify_Date desc…
DECLARE@dtdatetime SET@dt=GETDATE() DECLARE@numberint --1.指定日期该年的第一天或最后一天 --A. 年的第一天 SELECTCONVERT(),)+'1-1' --B. 年的最后一天 SELECTCONVERT(),)+'12-31' --2.指定日期所在季度的第一天或最后一天 --A. 季度的第一天 SELECTCONVERT(datetime, ), DATEADD(Month, , @dt), )') , ) --B. 季度的最后一…
2.4数据库结构的设计 好的性能出自好的设计 尽可能添加数据完整约束(非空约束.默认值约束.CHECK约束.唯一约束.外键约束)等,这些约束的添加将有助于数据库关系引擎分析执行计划. 尽可能小的字段类型,特别是大表,尽量小的空间将可以带来更佳的性能. 表结构的设计应考虑业务需求带来的操作(查询.更新.删除)及频率,尽可能的使业务逻辑实现简洁,使用简单的SQL语句,可避免过多的表关联. 约束对性能的影响 默认值约束:它只会影响新增的行,对数据库引擎来说,它的影响可以忽略不计. check约束:ch…
最近在网上看到不少文章介绍使用SQL Server 2012的新特性:OFFSET/FETCH NEXT 实现分页.多数文章都是引用或者翻译的这一篇<SQL Server 2012 - Server side paging demo using OFFSET/FETCH NEXT>,原文地址. 邀月对此也做了性能测,<SQL Server 2012服务端使用OFFSET/FETCH NEXT实现分页>,不过老外或者邀月的代码都并没有真正显示出OFFSET/FETCH NEXT的性能…
本文介绍了Sql Server数据库中删除数据表中重复记录的方法. [项目]数据库中users表,包含u_name,u_pwd两个字段,其中u_name存在重复项,现在要实现把重复的项删除![分析]1.生成一张临时表new_users,表结构与users表一样:2.对users表按id做一个循环,每从users表中读出一个条记录,判断new_users中是否存在有相同的u_name,如果没有,则把它插入新表:如果已经有了相同的项,则忽略此条记录:3.把users表改为其它的名称,把new_use…
简介      在SQL Server中,针对复杂查询使用TOP子句可能会出现对性能的影响,这种影响可能是好的影响,也可能是坏的影响,针对不同的情况有不同的可能性.      关系数据库中SQL语句只是一个抽象的概念,不包含任何实现.很多元数据都会影响执行计划的生成,SQL语句本身并不作为生成执行计划所参考的元数据(提示除外),但TOP关键字却是直接影响执行计划的一个关键字,因此在某些情况下使用TOP会导致性能受到影响,下面我们来看集中不同的情况.   单表情况     对于单表查询(这里的所说…
SQL Server之所以记录事务日志,首要目的是为了把失败或取消的操作还原到最原始的状态,但是,并不是所有的操作都需要完全记录事务日志,比如,在一个空表上放置排他锁,把大量的数据插入到该空表中.即使插入操作在任意时刻失败,只需要把清空表,就可以把表还原,根本不需要记录插入的详细数据.在表上放置排他锁的目的,是为了阻止其他人更新该表,当插入失败时,只需要清空表就还原到最原始的状态. 最小化日志记录仅记录恢复事务所需的信息,而不支持任意时间点恢复,也就是说,在最小化日志记录操作时,SQL Serv…
当一切正常时,没有必要特别留意什么是事务日志,它是如何工作的.你只要确保每个数据库都有正确的备份.当出现问题时,事务日志的理解对于采取修正操作是重要的,尤其在需要紧急恢复数据库到指定点时.这系列文章会告诉你每个DBA应该知道的具体细节. 这篇文章会列出导致事务日志过度增长的常见的问题和错误管理形式,包括: 在完整恢复模式里,没有进行日志备份 进行索引维护 长时间运行或未提交的事务阻止事务日志里空间重用 当然,如果增长没检查,日志文件会扩展直到吞没所有可用磁盘空间或日志文件的最大大小,在这个时候你…
在保密你的服务器和数据,防备当前复杂的攻击,SQL Server有你需要的一切.但在你能有效使用这些安全功能前,你需要理解你面对的威胁和一些基本的安全概念.这篇文章提供了基础,因此你可以对SQL Server里的安全功能充分利用,不用在面对特定威胁,不能保护你数据的功能上浪费时间. SQL Server审核 SQL Server里的审核指的是你可以在数据库或服务器实例里监控事件.审核日志包含你选择捕获的一系列事件,对于数据库和服务器对象,主体和操作,在服务器上形成活动记录.你可以捕获发生的几乎任…
sql server 会记录IO等待时间超过15 seconds的请求,这时application会有 time out 现象,dba需要判断是workload,concurrecy 所致还是sql server配置没有最优导致?二者之间的比例各占多少? 1:判断sql server的配置是否最优化,相对容易,可以有以下项目检查: a: 通过datafile/logfile放置在不同的drive上,可以分离random io 和 sequence io 操作,可以极大的缓解读写IO,对于写IO,…
今天无聊和朋友讨论分页,发现网上好多都是错的.网上经常查到的那个Top Not in 或者Max 大部分都不实用,很多都忽略了Order和性能问题.为此上网查了查,顺带把2000和2012版本的也补上了. 先说说网上常见SQL的错误或者说局限问题 select top 10 * from table1 where id not in( select top 开始的位置 id from table1) 这样的确是可以取到分页数据,但是这是默认排序的,如果要按其中一列排序呢?那order by 加在…